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,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 +}
@@ -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
@@ -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 }