Commit b0e5082c3b70077eb49c09f616c70e9ca860e25f

Authored by zhangqijia
1 parent c8e2cc53

fix: 英雄升级函数优化

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
... ... @@ -57,3 +57,5 @@ func EquipmentDelRsp(role *models.RoleTestModel, msg components.IMessage) {
57 57  
58 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 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 }
... ...