Commit c99d59cc6f619ed6acbb609d0db9b69120e43052

Authored by zhangqijia
1 parent f74e34e3

fix: 批量删除物品

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,
... ...