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 | 82 | } |
83 | 83 | |
84 | 84 | hero = h.(*models.HeroModel) |
85 | - level, exp := hero.UpLevel(itemExp.Exp) | |
85 | + level, exp := hero.UpLevel(itemExp.Exp * count) | |
86 | 86 | h.SetProperty("level", level) |
87 | 87 | h.SetProperty("exp", exp) |
88 | 88 | } | ... | ... |
cmd/test/action/TestAction.go
cmd/test/main.go
... | ... | @@ -14,17 +14,19 @@ func main() { |
14 | 14 | |
15 | 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 | 26 | time.Sleep(2 * time.Second) |
25 | 27 | for { |
26 | 28 | //tc.SendPB(pb.ProtoCode_HeartReq, nil) |
27 | - tc.SendPB(pb.ProtoCode_RoleEndBattleReq, pp) | |
29 | + tc.SendPB(pb.ProtoCode_HeroUpLevelReq, pp) | |
28 | 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 | m.SetProperty("equipments", common.MapNumToString(m.Equipments)) |
33 | 33 | } |
34 | 34 | func (m *HeroModel) UpLevel(exp int32) (int32, int32) { |
35 | + exp = exp + m.Hero.Exp | |
35 | 36 | level := m.Hero.Level |
36 | 37 | oldLevelExp := csvdata.Get().TbHeroLevelExp.Get(level) |
37 | 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 | 56 | return level, exp |
63 | 57 | } | ... | ... |
models/rolePlugin.go
... | ... | @@ -133,32 +133,24 @@ func (m *RoleModel) EquipmentAddNotify(equip *pb.Equipment) { |
133 | 133 | } |
134 | 134 | |
135 | 135 | func (m *RoleModel) UpLevel(exp int32) (int32, int32) { |
136 | + exp = exp + m.Role.Exp | |
136 | 137 | level := m.Role.Level |
137 | 138 | oldLevelExp := csvdata.Get().TbAccountLevelExp.Get(level) |
138 | 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 | 155 | return level, exp |
164 | 156 | } | ... | ... |