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 ( |