Commit 92256e324771fac8fc6a43b486706237e425a755
1 parent
8db23cb6
fix: 结束战斗的协议加上队伍id
Showing
6 changed files
with
117 additions
and
26 deletions
Show diff stats
cmd/gameserver/action/RoleAction.go
... | ... | @@ -221,6 +221,13 @@ func RoleEndBattleRpc(role *models.RoleModel, msg components.IMessage) (int32, i |
221 | 221 | return 2, nil |
222 | 222 | } |
223 | 223 | |
224 | + //team | |
225 | + team, ok := role.Teams[req.TeamId] | |
226 | + if !ok { | |
227 | + logger.Error("team not exists") | |
228 | + return 3, nil | |
229 | + } | |
230 | + | |
224 | 231 | reward := make(common.IMapStringNum) |
225 | 232 | if !first { |
226 | 233 | role.Role.PassChapters[req.ChapterId] = 1 |
... | ... | @@ -252,12 +259,40 @@ func RoleEndBattleRpc(role *models.RoleModel, msg components.IMessage) (int32, i |
252 | 259 | level, exp := role.UpLevel(amount) |
253 | 260 | role.UpdateProperties(map[string]interface{}{"level": level, "exp": exp}, true) |
254 | 261 | |
262 | + //team exp | |
263 | + heros := make([]*pb.Hero, 4) | |
264 | + t := team.(*models.TeamModel).Team | |
265 | + h1, ok := role.Heros[t.HeroId1] | |
266 | + if ok { | |
267 | + level, exp := h1.(*models.HeroModel).UpLevel(amount) | |
268 | + h1.SetProperty("level", level) | |
269 | + h1.SetProperty("exp", exp) | |
270 | + heros = append(heros, h1.(*models.HeroModel).Hero) | |
271 | + } | |
272 | + | |
273 | + h2, ok := role.Heros[t.HeroId2] | |
274 | + if ok { | |
275 | + level, exp := h2.(*models.HeroModel).UpLevel(amount) | |
276 | + h2.SetProperty("level", level) | |
277 | + h2.SetProperty("exp", exp) | |
278 | + heros = append(heros, h2.(*models.HeroModel).Hero) | |
279 | + } | |
280 | + | |
281 | + h3, ok := role.Heros[t.HeroId3] | |
282 | + if ok { | |
283 | + level, exp := h3.(*models.HeroModel).UpLevel(amount) | |
284 | + h3.SetProperty("level", level) | |
285 | + h3.SetProperty("exp", exp) | |
286 | + heros = append(heros, h3.(*models.HeroModel).Hero) | |
287 | + } | |
288 | + | |
255 | 289 | rsp := &pb.RoleEndBattleRsp{ |
256 | 290 | RoleLevel: level, |
257 | 291 | RoleExp: exp, |
258 | 292 | RoleExpamount: amount, |
259 | 293 | Pass: req.Pass, |
260 | 294 | Reward: common.MapNumToString(reward), |
295 | + Hero: heros, | |
261 | 296 | } |
262 | 297 | return 0, rsp |
263 | 298 | } | ... | ... |
cmd/gameserver/action/protocode.go
models/hero.go
... | ... | @@ -3,6 +3,7 @@ package models |
3 | 3 | import ( |
4 | 4 | "pro2d/common" |
5 | 5 | "pro2d/common/components" |
6 | + "pro2d/csvdata" | |
6 | 7 | "pro2d/pb" |
7 | 8 | ) |
8 | 9 | |
... | ... | @@ -30,3 +31,33 @@ func (m *HeroModel) UpdateEquipment(key string, typ string) { |
30 | 31 | |
31 | 32 | m.SetProperty("equipments", common.MapToString(m.Equipments)) |
32 | 33 | } |
34 | +func (m *HeroModel) UpLevel(exp int32) (int32, int32) { | |
35 | + level := m.Hero.Level | |
36 | + oldLevelExp := csvdata.Get().TbHeroLevelExp.Get(level) | |
37 | + if oldLevelExp == nil { | |
38 | + return level, m.Hero.Exp | |
39 | + } | |
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 | + } | |
57 | + } | |
58 | + | |
59 | + } else { | |
60 | + exp = exp + m.Hero.Exp | |
61 | + } | |
62 | + return level, exp | |
63 | +} | ... | ... |
models/rolePlugin.go
models/team.go
... | ... | @@ -2,6 +2,8 @@ package models |
2 | 2 | |
3 | 3 | import ( |
4 | 4 | "pro2d/common/components" |
5 | + "pro2d/common/db/mongoproxy" | |
6 | + "pro2d/common/logger" | |
5 | 7 | "pro2d/pb" |
6 | 8 | ) |
7 | 9 | |
... | ... | @@ -19,3 +21,16 @@ func NewTeam(data *pb.Team) *TeamModel { |
19 | 21 | |
20 | 22 | return m |
21 | 23 | } |
24 | + | |
25 | +func TeamExistsByID(id string) *TeamModel { | |
26 | + data := &pb.Team{Id: id} | |
27 | + if err := mongoproxy.FindOne(mongoproxy.GetCollName(data), mongoproxy.GetBsonM("id", id), data); err != nil { | |
28 | + logger.Error("Role not exist err: %v", err) | |
29 | + return nil | |
30 | + } | |
31 | + r := &TeamModel{ | |
32 | + ISchema: NewSchema(data.Id, data), | |
33 | + Team: data, | |
34 | + } | |
35 | + return r | |
36 | +} | ... | ... |
pb/game.pb.go
... | ... | @@ -661,9 +661,10 @@ type RoleEndBattleReq struct { |
661 | 661 | sizeCache protoimpl.SizeCache |
662 | 662 | unknownFields protoimpl.UnknownFields |
663 | 663 | |
664 | - ChapterId int32 `protobuf:"varint,1,opt,name=chapter_id,json=chapterId,proto3" json:"chapter_id,omitempty"` | |
665 | - CarbonId int32 `protobuf:"varint,2,opt,name=carbon_id,json=carbonId,proto3" json:"carbon_id,omitempty"` | |
666 | - Pass bool `protobuf:"varint,3,opt,name=pass,proto3" json:"pass,omitempty"` | |
664 | + ChapterId int32 `protobuf:"varint,1,opt,name=chapter_id,json=chapterId,proto3" json:"chapter_id,omitempty"` | |
665 | + CarbonId int32 `protobuf:"varint,2,opt,name=carbon_id,json=carbonId,proto3" json:"carbon_id,omitempty"` | |
666 | + Pass bool `protobuf:"varint,3,opt,name=pass,proto3" json:"pass,omitempty"` | |
667 | + TeamId string `protobuf:"bytes,4,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` | |
667 | 668 | } |
668 | 669 | |
669 | 670 | func (x *RoleEndBattleReq) Reset() { |
... | ... | @@ -719,6 +720,14 @@ func (x *RoleEndBattleReq) GetPass() bool { |
719 | 720 | return false |
720 | 721 | } |
721 | 722 | |
723 | +func (x *RoleEndBattleReq) GetTeamId() string { | |
724 | + if x != nil { | |
725 | + return x.TeamId | |
726 | + } | |
727 | + return "" | |
728 | +} | |
729 | + | |
730 | +//ResponseCmd RoleEndBattleRsp | |
722 | 731 | type RoleEndBattleRsp struct { |
723 | 732 | state protoimpl.MessageState |
724 | 733 | sizeCache protoimpl.SizeCache |
... | ... | @@ -954,32 +963,34 @@ var file_game_proto_rawDesc = []byte{ |
954 | 963 | 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x68, 0x61, 0x70, 0x74, 0x65, |
955 | 964 | 0x72, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x61, 0x72, 0x62, 0x6f, 0x6e, 0x5f, 0x69, 0x64, |
956 | 965 | 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x61, 0x72, 0x62, 0x6f, 0x6e, 0x49, 0x64, |
957 | - 0x22, 0x62, 0x0a, 0x10, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x6e, 0x64, 0x42, 0x61, 0x74, 0x74, 0x6c, | |
966 | + 0x22, 0x7b, 0x0a, 0x10, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x6e, 0x64, 0x42, 0x61, 0x74, 0x74, 0x6c, | |
958 | 967 | 0x65, 0x52, 0x65, 0x71, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x5f, |
959 | 968 | 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x68, 0x61, 0x70, 0x74, 0x65, |
960 | 969 | 0x72, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x61, 0x72, 0x62, 0x6f, 0x6e, 0x5f, 0x69, 0x64, |
961 | 970 | 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x61, 0x72, 0x62, 0x6f, 0x6e, 0x49, 0x64, |
962 | 971 | 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, |
963 | - 0x70, 0x61, 0x73, 0x73, 0x22, 0xc1, 0x01, 0x0a, 0x10, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x6e, 0x64, | |
964 | - 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x52, 0x73, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x6f, 0x6c, | |
965 | - 0x65, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, | |
966 | - 0x6f, 0x6c, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, | |
967 | - 0x5f, 0x65, 0x78, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x6f, 0x6c, 0x65, | |
968 | - 0x45, 0x78, 0x70, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x61, | |
969 | - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x6f, 0x6c, | |
970 | - 0x65, 0x45, 0x78, 0x70, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, | |
971 | - 0x77, 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, | |
972 | - 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, | |
973 | - 0x52, 0x04, 0x70, 0x61, 0x73, 0x73, 0x12, 0x20, 0x0a, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x18, 0x06, | |
974 | - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x48, 0x65, | |
975 | - 0x72, 0x6f, 0x52, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x22, 0x21, 0x0a, 0x0f, 0x45, 0x71, 0x75, 0x69, | |
976 | - 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, | |
977 | - 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x3a, 0x0a, 0x0f, 0x45, | |
978 | - 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x52, 0x73, 0x70, 0x12, 0x27, | |
979 | - 0x0a, 0x05, 0x65, 0x71, 0x75, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, | |
980 | - 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, | |
981 | - 0x52, 0x05, 0x65, 0x71, 0x75, 0x69, 0x70, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2e, 0x2f, 0x70, 0x62, | |
982 | - 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, | |
972 | + 0x70, 0x61, 0x73, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, | |
973 | + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0xc1, 0x01, | |
974 | + 0x0a, 0x10, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x6e, 0x64, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x52, | |
975 | + 0x73, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, | |
976 | + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x4c, 0x65, 0x76, 0x65, | |
977 | + 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x18, 0x02, 0x20, | |
978 | + 0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x78, 0x70, 0x12, 0x25, 0x0a, 0x0e, | |
979 | + 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, | |
980 | + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x78, 0x70, 0x61, 0x6d, 0x6f, | |
981 | + 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, | |
982 | + 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, | |
983 | + 0x61, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x70, 0x61, 0x73, 0x73, 0x12, | |
984 | + 0x20, 0x0a, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, | |
985 | + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x04, 0x68, 0x65, 0x72, | |
986 | + 0x6f, 0x22, 0x21, 0x0a, 0x0f, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x65, | |
987 | + 0x6c, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, | |
988 | + 0x52, 0x02, 0x69, 0x64, 0x22, 0x3a, 0x0a, 0x0f, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, | |
989 | + 0x74, 0x41, 0x64, 0x64, 0x52, 0x73, 0x70, 0x12, 0x27, 0x0a, 0x05, 0x65, 0x71, 0x75, 0x69, 0x70, | |
990 | + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, | |
991 | + 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x71, 0x75, 0x69, 0x70, | |
992 | + 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2e, 0x2f, 0x70, 0x62, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, | |
993 | + 0x6f, 0x74, 0x6f, 0x33, | |
983 | 994 | } |
984 | 995 | |
985 | 996 | var ( | ... | ... |