Commit c99d59cc6f619ed6acbb609d0db9b69120e43052
1 parent
f74e34e3
fix: 批量删除物品
Showing
3 changed files
with
25 additions
and
21 deletions
Show diff stats
cmd/gameserver/action/RoleAction.go
... | ... | @@ -145,8 +145,19 @@ func RoleClearItemsRpc(role *models.RoleModel, msg components.IMessage) (int32, |
145 | 145 | return 1, nil |
146 | 146 | } |
147 | 147 | |
148 | - if !role.CostItem(req.Id, req.Count) { | |
149 | - logger.Error("cost err: %s, %d", req.Id, req.Count) | |
148 | + bkup := make(common.IMapStringNum) | |
149 | + for _, item := range req.Items { | |
150 | + for k, v := range common.StringToMapNum(item) { | |
151 | + tmp, ok := bkup[k] | |
152 | + if !ok { | |
153 | + tmp = 0 | |
154 | + } | |
155 | + bkup[k] = v + tmp | |
156 | + } | |
157 | + } | |
158 | + | |
159 | + if !role.CostItems(bkup) { | |
160 | + logger.Error("cost err: %s", common.MapNumToString(bkup)) | |
150 | 161 | return 2, nil |
151 | 162 | } |
152 | 163 | return 0, nil | ... | ... |
models/rolePlugin.go
... | ... | @@ -31,9 +31,10 @@ func (m *RoleModel) CostItems(params common.IMapStringNum) bool { |
31 | 31 | return false |
32 | 32 | } |
33 | 33 | |
34 | - m.AddItem(k, -v) | |
34 | + params[k] = -v | |
35 | 35 | } |
36 | - return true | |
36 | + | |
37 | + return m.AddItems(params) | |
37 | 38 | } |
38 | 39 | |
39 | 40 | func (m *RoleModel) AddItem(key string, count int32) bool { |
... | ... | @@ -67,10 +68,11 @@ func (m *RoleModel) AddItems(params common.IMapStringNum) bool { |
67 | 68 | num := c + v |
68 | 69 | if num > 0 { |
69 | 70 | m.Items[k] = num |
70 | - tmp[k] = num | |
71 | 71 | } else { |
72 | + num = 0 | |
72 | 73 | delete(m.Items, k) |
73 | 74 | } |
75 | + tmp[k] = num | |
74 | 76 | } |
75 | 77 | |
76 | 78 | m.SetProperty("items", common.MapNumToString(m.Items)) | ... | ... |
pb/game.pb.go
... | ... | @@ -558,8 +558,7 @@ type RoleClearItemsReq struct { |
558 | 558 | sizeCache protoimpl.SizeCache |
559 | 559 | unknownFields protoimpl.UnknownFields |
560 | 560 | |
561 | - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` | |
562 | - Count int32 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"` | |
561 | + Items []string `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` | |
563 | 562 | } |
564 | 563 | |
565 | 564 | func (x *RoleClearItemsReq) Reset() { |
... | ... | @@ -594,18 +593,11 @@ func (*RoleClearItemsReq) Descriptor() ([]byte, []int) { |
594 | 593 | return file_game_proto_rawDescGZIP(), []int{10} |
595 | 594 | } |
596 | 595 | |
597 | -func (x *RoleClearItemsReq) GetId() string { | |
596 | +func (x *RoleClearItemsReq) GetItems() []string { | |
598 | 597 | if x != nil { |
599 | - return x.Id | |
600 | - } | |
601 | - return "" | |
602 | -} | |
603 | - | |
604 | -func (x *RoleClearItemsReq) GetCount() int32 { | |
605 | - if x != nil { | |
606 | - return x.Count | |
598 | + return x.Items | |
607 | 599 | } |
608 | - return 0 | |
600 | + return nil | |
609 | 601 | } |
610 | 602 | |
611 | 603 | type RoleStartBattleReq struct { |
... | ... | @@ -954,10 +946,9 @@ var file_game_proto_rawDesc = []byte{ |
954 | 946 | 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x2a, 0x0a, 0x12, 0x52, 0x6f, 0x6c, 0x65, 0x55, |
955 | 947 | 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x73, 0x70, 0x12, 0x14, 0x0a, |
956 | 948 | 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x74, |
957 | - 0x65, 0x6d, 0x73, 0x22, 0x39, 0x0a, 0x11, 0x52, 0x6f, 0x6c, 0x65, 0x43, 0x6c, 0x65, 0x61, 0x72, | |
958 | - 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, | |
959 | - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, | |
960 | - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x50, | |
949 | + 0x65, 0x6d, 0x73, 0x22, 0x29, 0x0a, 0x11, 0x52, 0x6f, 0x6c, 0x65, 0x43, 0x6c, 0x65, 0x61, 0x72, | |
950 | + 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, | |
951 | + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x50, | |
961 | 952 | 0x0a, 0x12, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x42, 0x61, 0x74, 0x74, 0x6c, |
962 | 953 | 0x65, 0x52, 0x65, 0x71, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x5f, |
963 | 954 | 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x68, 0x61, 0x70, 0x74, 0x65, | ... | ... |