diff --git a/cmd/gameserver/action/HeroAction.go b/cmd/gameserver/action/HeroAction.go index 70b1d95..25fc796 100644 --- a/cmd/gameserver/action/HeroAction.go +++ b/cmd/gameserver/action/HeroAction.go @@ -82,7 +82,7 @@ func HeroUpLevelRpc(role *models.RoleModel, msg components.IMessage) (int32, int } hero = h.(*models.HeroModel) - level, exp := hero.UpLevel(itemExp.Exp) + level, exp := hero.UpLevel(itemExp.Exp * count) h.SetProperty("level", level) h.SetProperty("exp", exp) } diff --git a/cmd/test/action/TestAction.go b/cmd/test/action/TestAction.go index e189d22..f552f16 100644 --- a/cmd/test/action/TestAction.go +++ b/cmd/test/action/TestAction.go @@ -57,3 +57,5 @@ func EquipmentDelRsp(role *models.RoleTestModel, msg components.IMessage) { func EquipmentAddRsp(role *models.RoleTestModel, msg components.IMessage) { } +func HeroUpLevelRsp(role *models.RoleTestModel, msg components.IMessage) { +} diff --git a/cmd/test/main.go b/cmd/test/main.go index 96af54f..c34bcad 100644 --- a/cmd/test/main.go +++ b/cmd/test/main.go @@ -14,17 +14,19 @@ func main() { tc.Login("90007") - pp := &pb.RoleEndBattleReq{ - ChapterId: 1, - CarbonId: 1, - Pass: true, - TeamId: "10000011000002", - } + //pp := &pb.RoleEndBattleReq{ + // ChapterId: 1, + // CarbonId: 1, + // Pass: true, + // TeamId: "10000011000002", + //} + + pp := &pb.HeroUpLevelReq{HeroId: "10000011000001", Items: "5002=97"} time.Sleep(2 * time.Second) for { //tc.SendPB(pb.ProtoCode_HeartReq, nil) - tc.SendPB(pb.ProtoCode_RoleEndBattleReq, pp) + tc.SendPB(pb.ProtoCode_HeroUpLevelReq, pp) time.Sleep(5 * time.Second) } diff --git a/models/hero.go b/models/hero.go index 97e89c2..a237850 100644 --- a/models/hero.go +++ b/models/hero.go @@ -32,32 +32,26 @@ func (m *HeroModel) AddEquipment(key string, pos int32) { m.SetProperty("equipments", common.MapNumToString(m.Equipments)) } func (m *HeroModel) UpLevel(exp int32) (int32, int32) { + exp = exp + m.Hero.Exp level := m.Hero.Level oldLevelExp := csvdata.Get().TbHeroLevelExp.Get(level) if oldLevelExp == nil { - return level, m.Hero.Exp + return level, exp } - if exp >= oldLevelExp.NeedExp-m.Hero.Exp { - exp = exp - (oldLevelExp.NeedExp - m.Hero.Exp) - level++ - - for exp > 0 { - oldLevelExp = csvdata.Get().TbHeroLevelExp.Get(level) - if oldLevelExp == nil { - return level, exp - } - - if exp >= oldLevelExp.NeedExp { - exp = exp - oldLevelExp.NeedExp - level++ - } else { - exp = exp + m.Hero.Exp - break - } + + for exp > 0 { + if exp >= oldLevelExp.NeedExp { + exp = exp - oldLevelExp.NeedExp + level++ + } else { + break } - } else { - exp = exp + m.Hero.Exp + oldLevelExp = csvdata.Get().TbHeroLevelExp.Get(level) + if oldLevelExp == nil { + return level, exp + } } + return level, exp } diff --git a/models/rolePlugin.go b/models/rolePlugin.go index df1d0b8..4dbc738 100644 --- a/models/rolePlugin.go +++ b/models/rolePlugin.go @@ -133,32 +133,24 @@ func (m *RoleModel) EquipmentAddNotify(equip *pb.Equipment) { } func (m *RoleModel) UpLevel(exp int32) (int32, int32) { + exp = exp + m.Role.Exp level := m.Role.Level oldLevelExp := csvdata.Get().TbAccountLevelExp.Get(level) if oldLevelExp == nil { - return level, m.Role.Level + return level, exp } - if exp >= oldLevelExp.NeedExp-m.Role.Exp { - exp = exp - (oldLevelExp.NeedExp - m.Role.Exp) - level++ - - for exp > 0 { - oldLevelExp = csvdata.Get().TbAccountLevelExp.Get(level) - if oldLevelExp == nil { - return level, exp - } - if exp >= oldLevelExp.NeedExp { - exp = exp - oldLevelExp.NeedExp - level++ - } else { - exp = exp + m.Role.Exp - break - } + for exp > 0 { + if exp >= oldLevelExp.NeedExp { + exp = exp - oldLevelExp.NeedExp + level++ + } else { + break + } + oldLevelExp = csvdata.Get().TbAccountLevelExp.Get(level) + if oldLevelExp == nil { + return level, exp } - - } else { - exp = exp + m.Role.Exp } return level, exp } -- libgit2 0.21.2