Commit b0e5082c3b70077eb49c09f616c70e9ca860e25f
1 parent
c8e2cc53
fix: 英雄升级函数优化
Showing
5 changed files
with
38 additions
and
48 deletions
Show diff stats
cmd/gameserver/action/HeroAction.go
| @@ -82,7 +82,7 @@ func HeroUpLevelRpc(role *models.RoleModel, msg components.IMessage) (int32, int | @@ -82,7 +82,7 @@ func HeroUpLevelRpc(role *models.RoleModel, msg components.IMessage) (int32, int | ||
| 82 | } | 82 | } |
| 83 | 83 | ||
| 84 | hero = h.(*models.HeroModel) | 84 | hero = h.(*models.HeroModel) |
| 85 | - level, exp := hero.UpLevel(itemExp.Exp) | 85 | + level, exp := hero.UpLevel(itemExp.Exp * count) |
| 86 | h.SetProperty("level", level) | 86 | h.SetProperty("level", level) |
| 87 | h.SetProperty("exp", exp) | 87 | h.SetProperty("exp", exp) |
| 88 | } | 88 | } |
cmd/test/action/TestAction.go
| @@ -57,3 +57,5 @@ func EquipmentDelRsp(role *models.RoleTestModel, msg components.IMessage) { | @@ -57,3 +57,5 @@ func EquipmentDelRsp(role *models.RoleTestModel, msg components.IMessage) { | ||
| 57 | 57 | ||
| 58 | func EquipmentAddRsp(role *models.RoleTestModel, msg components.IMessage) { | 58 | func EquipmentAddRsp(role *models.RoleTestModel, msg components.IMessage) { |
| 59 | } | 59 | } |
| 60 | +func HeroUpLevelRsp(role *models.RoleTestModel, msg components.IMessage) { | ||
| 61 | +} |
cmd/test/main.go
| @@ -14,17 +14,19 @@ func main() { | @@ -14,17 +14,19 @@ func main() { | ||
| 14 | 14 | ||
| 15 | tc.Login("90007") | 15 | tc.Login("90007") |
| 16 | 16 | ||
| 17 | - pp := &pb.RoleEndBattleReq{ | ||
| 18 | - ChapterId: 1, | ||
| 19 | - CarbonId: 1, | ||
| 20 | - Pass: true, | ||
| 21 | - TeamId: "10000011000002", | ||
| 22 | - } | 17 | + //pp := &pb.RoleEndBattleReq{ |
| 18 | + // ChapterId: 1, | ||
| 19 | + // CarbonId: 1, | ||
| 20 | + // Pass: true, | ||
| 21 | + // TeamId: "10000011000002", | ||
| 22 | + //} | ||
| 23 | + | ||
| 24 | + pp := &pb.HeroUpLevelReq{HeroId: "10000011000001", Items: "5002=97"} | ||
| 23 | 25 | ||
| 24 | time.Sleep(2 * time.Second) | 26 | time.Sleep(2 * time.Second) |
| 25 | for { | 27 | for { |
| 26 | //tc.SendPB(pb.ProtoCode_HeartReq, nil) | 28 | //tc.SendPB(pb.ProtoCode_HeartReq, nil) |
| 27 | - tc.SendPB(pb.ProtoCode_RoleEndBattleReq, pp) | 29 | + tc.SendPB(pb.ProtoCode_HeroUpLevelReq, pp) |
| 28 | time.Sleep(5 * time.Second) | 30 | time.Sleep(5 * time.Second) |
| 29 | } | 31 | } |
| 30 | 32 |
models/hero.go
| @@ -32,32 +32,26 @@ func (m *HeroModel) AddEquipment(key string, pos int32) { | @@ -32,32 +32,26 @@ func (m *HeroModel) AddEquipment(key string, pos int32) { | ||
| 32 | m.SetProperty("equipments", common.MapNumToString(m.Equipments)) | 32 | m.SetProperty("equipments", common.MapNumToString(m.Equipments)) |
| 33 | } | 33 | } |
| 34 | func (m *HeroModel) UpLevel(exp int32) (int32, int32) { | 34 | func (m *HeroModel) UpLevel(exp int32) (int32, int32) { |
| 35 | + exp = exp + m.Hero.Exp | ||
| 35 | level := m.Hero.Level | 36 | level := m.Hero.Level |
| 36 | oldLevelExp := csvdata.Get().TbHeroLevelExp.Get(level) | 37 | oldLevelExp := csvdata.Get().TbHeroLevelExp.Get(level) |
| 37 | if oldLevelExp == nil { | 38 | if oldLevelExp == nil { |
| 38 | - return level, m.Hero.Exp | 39 | + return level, exp |
| 39 | } | 40 | } |
| 40 | - if exp >= oldLevelExp.NeedExp-m.Hero.Exp { | ||
| 41 | - exp = exp - (oldLevelExp.NeedExp - m.Hero.Exp) | ||
| 42 | - level++ | ||
| 43 | - | ||
| 44 | - for exp > 0 { | ||
| 45 | - oldLevelExp = csvdata.Get().TbHeroLevelExp.Get(level) | ||
| 46 | - if oldLevelExp == nil { | ||
| 47 | - return level, exp | ||
| 48 | - } | ||
| 49 | - | ||
| 50 | - if exp >= oldLevelExp.NeedExp { | ||
| 51 | - exp = exp - oldLevelExp.NeedExp | ||
| 52 | - level++ | ||
| 53 | - } else { | ||
| 54 | - exp = exp + m.Hero.Exp | ||
| 55 | - break | ||
| 56 | - } | 41 | + |
| 42 | + for exp > 0 { | ||
| 43 | + if exp >= oldLevelExp.NeedExp { | ||
| 44 | + exp = exp - oldLevelExp.NeedExp | ||
| 45 | + level++ | ||
| 46 | + } else { | ||
| 47 | + break | ||
| 57 | } | 48 | } |
| 58 | 49 | ||
| 59 | - } else { | ||
| 60 | - exp = exp + m.Hero.Exp | 50 | + oldLevelExp = csvdata.Get().TbHeroLevelExp.Get(level) |
| 51 | + if oldLevelExp == nil { | ||
| 52 | + return level, exp | ||
| 53 | + } | ||
| 61 | } | 54 | } |
| 55 | + | ||
| 62 | return level, exp | 56 | return level, exp |
| 63 | } | 57 | } |
models/rolePlugin.go
| @@ -133,32 +133,24 @@ func (m *RoleModel) EquipmentAddNotify(equip *pb.Equipment) { | @@ -133,32 +133,24 @@ func (m *RoleModel) EquipmentAddNotify(equip *pb.Equipment) { | ||
| 133 | } | 133 | } |
| 134 | 134 | ||
| 135 | func (m *RoleModel) UpLevel(exp int32) (int32, int32) { | 135 | func (m *RoleModel) UpLevel(exp int32) (int32, int32) { |
| 136 | + exp = exp + m.Role.Exp | ||
| 136 | level := m.Role.Level | 137 | level := m.Role.Level |
| 137 | oldLevelExp := csvdata.Get().TbAccountLevelExp.Get(level) | 138 | oldLevelExp := csvdata.Get().TbAccountLevelExp.Get(level) |
| 138 | if oldLevelExp == nil { | 139 | if oldLevelExp == nil { |
| 139 | - return level, m.Role.Level | 140 | + return level, exp |
| 140 | } | 141 | } |
| 141 | - if exp >= oldLevelExp.NeedExp-m.Role.Exp { | ||
| 142 | - exp = exp - (oldLevelExp.NeedExp - m.Role.Exp) | ||
| 143 | - level++ | ||
| 144 | - | ||
| 145 | - for exp > 0 { | ||
| 146 | - oldLevelExp = csvdata.Get().TbAccountLevelExp.Get(level) | ||
| 147 | - if oldLevelExp == nil { | ||
| 148 | - return level, exp | ||
| 149 | - } | ||
| 150 | 142 | ||
| 151 | - if exp >= oldLevelExp.NeedExp { | ||
| 152 | - exp = exp - oldLevelExp.NeedExp | ||
| 153 | - level++ | ||
| 154 | - } else { | ||
| 155 | - exp = exp + m.Role.Exp | ||
| 156 | - break | ||
| 157 | - } | 143 | + for exp > 0 { |
| 144 | + if exp >= oldLevelExp.NeedExp { | ||
| 145 | + exp = exp - oldLevelExp.NeedExp | ||
| 146 | + level++ | ||
| 147 | + } else { | ||
| 148 | + break | ||
| 149 | + } | ||
| 150 | + oldLevelExp = csvdata.Get().TbAccountLevelExp.Get(level) | ||
| 151 | + if oldLevelExp == nil { | ||
| 152 | + return level, exp | ||
| 158 | } | 153 | } |
| 159 | - | ||
| 160 | - } else { | ||
| 161 | - exp = exp + m.Role.Exp | ||
| 162 | } | 154 | } |
| 163 | return level, exp | 155 | return level, exp |
| 164 | } | 156 | } |