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,12 +4,14 @@ import ( | ||
| 4 | "fmt" | 4 | "fmt" |
| 5 | "github.com/golang/protobuf/proto" | 5 | "github.com/golang/protobuf/proto" |
| 6 | "go.mongodb.org/mongo-driver/bson" | 6 | "go.mongodb.org/mongo-driver/bson" |
| 7 | + "pro2d/common" | ||
| 7 | "pro2d/common/components" | 8 | "pro2d/common/components" |
| 8 | "pro2d/common/db/mongoproxy" | 9 | "pro2d/common/db/mongoproxy" |
| 9 | "pro2d/common/logger" | 10 | "pro2d/common/logger" |
| 10 | "pro2d/csvdata" | 11 | "pro2d/csvdata" |
| 11 | "pro2d/models" | 12 | "pro2d/models" |
| 12 | "pro2d/pb" | 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,35 +51,41 @@ func HeroUpLevelRpc(role *models.RoleModel, msg components.IMessage) (int32, int | ||
| 49 | logger.Error("loginRpc err: %v", err) | 51 | logger.Error("loginRpc err: %v", err) |
| 50 | return 1, nil | 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,8 +972,7 @@ type HeroUpLevelReq struct { | ||
| 972 | unknownFields protoimpl.UnknownFields | 972 | unknownFields protoimpl.UnknownFields |
| 973 | 973 | ||
| 974 | HeroId string `protobuf:"bytes,1,opt,name=heroId,proto3" json:"heroId,omitempty"` | 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 | func (x *HeroUpLevelReq) Reset() { | 978 | func (x *HeroUpLevelReq) Reset() { |
| @@ -1015,18 +1014,11 @@ func (x *HeroUpLevelReq) GetHeroId() string { | @@ -1015,18 +1014,11 @@ func (x *HeroUpLevelReq) GetHeroId() string { | ||
| 1015 | return "" | 1014 | return "" |
| 1016 | } | 1015 | } |
| 1017 | 1016 | ||
| 1018 | -func (x *HeroUpLevelReq) GetItemId() int32 { | 1017 | +func (x *HeroUpLevelReq) GetItems() string { |
| 1019 | if x != nil { | 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 | var File_game_proto protoreflect.FileDescriptor | 1024 | var File_game_proto protoreflect.FileDescriptor |
| @@ -1111,14 +1103,12 @@ var file_game_proto_rawDesc = []byte{ | @@ -1111,14 +1103,12 @@ var file_game_proto_rawDesc = []byte{ | ||
| 1111 | 0x22, 0x3a, 0x0a, 0x0f, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x64, 0x64, | 1103 | 0x22, 0x3a, 0x0a, 0x0f, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x64, 0x64, |
| 1112 | 0x52, 0x73, 0x70, 0x12, 0x27, 0x0a, 0x05, 0x65, 0x71, 0x75, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, | 1104 | 0x52, 0x73, 0x70, 0x12, 0x27, 0x0a, 0x05, 0x65, 0x71, 0x75, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, |
| 1113 | 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x45, 0x71, 0x75, 0x69, | 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 | 0x48, 0x65, 0x72, 0x6f, 0x55, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x16, | 1107 | 0x48, 0x65, 0x72, 0x6f, 0x55, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x16, |
| 1116 | 0x0a, 0x06, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, | 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 | var ( | 1114 | var ( |