Commit c8e2cc53d60df67c042e85fe099858f2717916aa
1 parent
24283e5d
fix: 英雄升级,经验书批量操作
Showing
3 changed files
with
42 additions
and
44 deletions
Show diff stats
cmd/gameserver/action/HeroAction.go
| ... | ... | @@ -4,12 +4,14 @@ import ( |
| 4 | 4 | "fmt" |
| 5 | 5 | "github.com/golang/protobuf/proto" |
| 6 | 6 | "go.mongodb.org/mongo-driver/bson" |
| 7 | + "pro2d/common" | |
| 7 | 8 | "pro2d/common/components" |
| 8 | 9 | "pro2d/common/db/mongoproxy" |
| 9 | 10 | "pro2d/common/logger" |
| 10 | 11 | "pro2d/csvdata" |
| 11 | 12 | "pro2d/models" |
| 12 | 13 | "pro2d/pb" |
| 14 | + "strconv" | |
| 13 | 15 | ) |
| 14 | 16 | |
| 15 | 17 | /* |
| ... | ... | @@ -49,35 +51,41 @@ func HeroUpLevelRpc(role *models.RoleModel, msg components.IMessage) (int32, int |
| 49 | 51 | logger.Error("loginRpc err: %v", err) |
| 50 | 52 | return 1, nil |
| 51 | 53 | } |
| 52 | - if req.Count <= 0 { | |
| 53 | - req.Count = 1 | |
| 54 | - } | |
| 54 | + items := common.StringToMapNum(req.Items) | |
| 55 | + var hero *models.HeroModel | |
| 56 | + for id, count := range items { | |
| 57 | + itemId, err := strconv.Atoi(id) | |
| 58 | + if err != nil { | |
| 59 | + continue | |
| 60 | + } | |
| 55 | 61 | |
| 56 | - item := csvdata.Get().TbItemData.Get(req.ItemId) | |
| 57 | - if item == nil { | |
| 58 | - return 2, nil | |
| 59 | - } | |
| 60 | - if item.Type != 2003 { | |
| 61 | - return 3, nil | |
| 62 | - } | |
| 62 | + item := csvdata.Get().TbItemData.Get(int32(itemId)) | |
| 63 | + if item == nil { | |
| 64 | + return 2, nil | |
| 65 | + } | |
| 66 | + if item.Type != 2003 { | |
| 67 | + return 3, nil | |
| 68 | + } | |
| 63 | 69 | |
| 64 | - itemExp := csvdata.Get().TbExpItemData.Get(item.ID) | |
| 65 | - if itemExp == nil { | |
| 66 | - return 4, nil | |
| 67 | - } | |
| 70 | + itemExp := csvdata.Get().TbExpItemData.Get(item.ID) | |
| 71 | + if itemExp == nil { | |
| 72 | + return 4, nil | |
| 73 | + } | |
| 68 | 74 | |
| 69 | - hero, ok := role.Heros[req.HeroId] | |
| 70 | - if !ok { | |
| 71 | - return 5, nil | |
| 72 | - } | |
| 75 | + h := role.Heros[req.HeroId] | |
| 76 | + if h == nil { | |
| 77 | + return 5, nil | |
| 78 | + } | |
| 79 | + | |
| 80 | + if !role.CostItem(fmt.Sprintf("%d", item.ID), count) { | |
| 81 | + return 6, nil | |
| 82 | + } | |
| 73 | 83 | |
| 74 | - if !role.CostItem(fmt.Sprintf("%d", item.ID), req.Count) { | |
| 75 | - return 6, nil | |
| 84 | + hero = h.(*models.HeroModel) | |
| 85 | + level, exp := hero.UpLevel(itemExp.Exp) | |
| 86 | + h.SetProperty("level", level) | |
| 87 | + h.SetProperty("exp", exp) | |
| 76 | 88 | } |
| 77 | 89 | |
| 78 | - h := hero.(*models.HeroModel) | |
| 79 | - level, exp := h.UpLevel(itemExp.Exp) | |
| 80 | - h.SetProperty("level", level) | |
| 81 | - h.SetProperty("exp", exp) | |
| 82 | - return 0, h.Hero | |
| 90 | + return 0, hero.Hero | |
| 83 | 91 | } | ... | ... |
pb/game.pb.go
| ... | ... | @@ -972,8 +972,7 @@ type HeroUpLevelReq struct { |
| 972 | 972 | unknownFields protoimpl.UnknownFields |
| 973 | 973 | |
| 974 | 974 | HeroId string `protobuf:"bytes,1,opt,name=heroId,proto3" json:"heroId,omitempty"` |
| 975 | - ItemId int32 `protobuf:"varint,2,opt,name=itemId,proto3" json:"itemId,omitempty"` | |
| 976 | - Count int32 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"` | |
| 975 | + Items string `protobuf:"bytes,2,opt,name=items,proto3" json:"items,omitempty"` // [itemId1=count1, itemId2=count2] | |
| 977 | 976 | } |
| 978 | 977 | |
| 979 | 978 | func (x *HeroUpLevelReq) Reset() { |
| ... | ... | @@ -1015,18 +1014,11 @@ func (x *HeroUpLevelReq) GetHeroId() string { |
| 1015 | 1014 | return "" |
| 1016 | 1015 | } |
| 1017 | 1016 | |
| 1018 | -func (x *HeroUpLevelReq) GetItemId() int32 { | |
| 1017 | +func (x *HeroUpLevelReq) GetItems() string { | |
| 1019 | 1018 | if x != nil { |
| 1020 | - return x.ItemId | |
| 1021 | - } | |
| 1022 | - return 0 | |
| 1023 | -} | |
| 1024 | - | |
| 1025 | -func (x *HeroUpLevelReq) GetCount() int32 { | |
| 1026 | - if x != nil { | |
| 1027 | - return x.Count | |
| 1019 | + return x.Items | |
| 1028 | 1020 | } |
| 1029 | - return 0 | |
| 1021 | + return "" | |
| 1030 | 1022 | } |
| 1031 | 1023 | |
| 1032 | 1024 | var File_game_proto protoreflect.FileDescriptor |
| ... | ... | @@ -1111,14 +1103,12 @@ var file_game_proto_rawDesc = []byte{ |
| 1111 | 1103 | 0x22, 0x3a, 0x0a, 0x0f, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x64, 0x64, |
| 1112 | 1104 | 0x52, 0x73, 0x70, 0x12, 0x27, 0x0a, 0x05, 0x65, 0x71, 0x75, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, |
| 1113 | 1105 | 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x45, 0x71, 0x75, 0x69, |
| 1114 | - 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x71, 0x75, 0x69, 0x70, 0x22, 0x56, 0x0a, 0x0e, | |
| 1106 | + 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x71, 0x75, 0x69, 0x70, 0x22, 0x3e, 0x0a, 0x0e, | |
| 1115 | 1107 | 0x48, 0x65, 0x72, 0x6f, 0x55, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x16, |
| 1116 | 1108 | 0x0a, 0x06, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, |
| 1117 | - 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, | |
| 1118 | - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x14, | |
| 1119 | - 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, | |
| 1120 | - 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2e, 0x2f, 0x70, 0x62, 0x3b, 0x70, 0x62, | |
| 1121 | - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, | |
| 1109 | + 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, | |
| 1110 | + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x42, 0x0a, 0x5a, 0x08, | |
| 1111 | + 0x2e, 0x2e, 0x2f, 0x70, 0x62, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, | |
| 1122 | 1112 | } |
| 1123 | 1113 | |
| 1124 | 1114 | var ( | ... | ... |