Commit 98cfa13af4029c53fb99f03119e591be65e455a1

Authored by zhangqijia
1 parent 601ab22b

fix: 批量穿戴裝備

cmd/gameserver/action/RoleAction.go
@@ -96,90 +96,10 @@ func HeroEquipReferRpc(role *models.RoleModel, msg components.IMessage) (int32, @@ -96,90 +96,10 @@ func HeroEquipReferRpc(role *models.RoleModel, msg components.IMessage) (int32,
96 logger.Error("loginRpc err: %v", err) 96 logger.Error("loginRpc err: %v", err)
97 return 1, nil 97 return 1, nil
98 } 98 }
99 -  
100 - e, ok := role.Equipments[req.EquipId]  
101 - if !ok {  
102 - return 2, nil  
103 - }  
104 -  
105 - equip := e.(*models.EquipModel)  
106 -  
107 - // 1 脱  
108 - // 1.1 装备直接脱掉  
109 - // 2 戴  
110 - // 2.1装备未被其他英雄穿戴直接穿, 如果其他英雄已经被穿戴,则脱了再穿  
111 - // 2.2同类型装备是否穿戴, 已经被穿戴,则脱了再穿  
112 - h1 := role.Heros[req.HeroId]  
113 - h2 := role.Heros[equip.Equip.HeroId]  
114 -  
115 - var outHero, inHero *models.HeroModel  
116 - inEquip := csvdata.Get().TbEquipmentData.Get(equip.Equip.GetTbId())  
117 - if !req.Refer {  
118 - if h1 != nil {  
119 - outHero = h1.(*models.HeroModel)  
120 - outHero.UpdateEquipment(equip.Equip.Id, 0)  
121 - }  
122 - if h2 != nil {  
123 - outHero = h2.(*models.HeroModel)  
124 - outHero.UpdateEquipment(equip.Equip.Id, 0)  
125 - }  
126 - equip.SetProperty("heroid", "")  
127 -  
128 - } else {  
129 - if h1 == nil {  
130 - return 3, nil  
131 - }  
132 - inHero = h1.(*models.HeroModel)  
133 -  
134 - if equip.Equip.HeroId == "" {  
135 - var outEquipID string  
136 - for id, tbId := range inHero.Equipments {  
137 - tmpEquip := csvdata.Get().TbEquipmentData.Get(tbId)  
138 - if tmpEquip.EquipType == inEquip.EquipType {  
139 - outEquipID = id  
140 - break  
141 - }  
142 - }  
143 -  
144 - if outEquipID != "" {  
145 - tmpEuqip, ok := role.Equipments[outEquipID]  
146 - if ok {  
147 - outEquip := tmpEuqip.(*models.EquipModel)  
148 - outEquip.SetProperty("heroid", "")  
149 - inHero.UpdateEquipment(outEquipID, 0)  
150 - }  
151 - }  
152 -  
153 - inHero.UpdateEquipment(equip.Equip.Id, inEquip.EquipID)  
154 - equip.SetProperty("heroid", inHero.Hero.Id)  
155 -  
156 - } else if equip.Equip.HeroId != req.HeroId {  
157 - if h2 == nil {  
158 - return 4, nil  
159 - }  
160 -  
161 - outHero = h2.(*models.HeroModel)  
162 - var outEquipID string  
163 - for id, tbId := range inHero.Equipments {  
164 - tmpEquip := csvdata.Get().TbEquipmentData.Get(tbId)  
165 - if tmpEquip.EquipType == inEquip.EquipType {  
166 - outEquipID = id  
167 - break  
168 - }  
169 - }  
170 -  
171 - if outEquipID != "" {  
172 - tmpEquip, ok := role.Equipments[outEquipID]  
173 - if ok {  
174 - outEquip := tmpEquip.(*models.EquipModel)  
175 - outEquip.SetProperty("heroid", "")  
176 - inHero.UpdateEquipment(outEquipID, 0)  
177 - }  
178 - }  
179 -  
180 - outHero.UpdateEquipment(equip.Equip.Id, 0)  
181 - inHero.UpdateEquipment(equip.Equip.Id, inEquip.EquipType)  
182 - equip.SetProperty("heroid", inHero.Hero.Id) 99 + for _, equipId := range req.EquipIds {
  100 + ret := role.EquipmentRefer(equipId, req.HeroId, req.Refer)
  101 + if ret != 0 {
  102 + return ret, nil
183 } 103 }
184 } 104 }
185 105
@@ -3,4 +3,5 @@ @@ -3,4 +3,5 @@
3 /usr/local/bin/docker-compose -f /Users/zhaolu/Documents/pro2d/docker-compose.yml down 3 /usr/local/bin/docker-compose -f /Users/zhaolu/Documents/pro2d/docker-compose.yml down
4 /usr/local/bin/docker load < /Users/zhaolu/Documents/pro2d/pro2d.tar 4 /usr/local/bin/docker load < /Users/zhaolu/Documents/pro2d/pro2d.tar
5 /usr/local/bin/docker-compose -f /Users/zhaolu/Documents/pro2d/docker-compose.yml up -d 5 /usr/local/bin/docker-compose -f /Users/zhaolu/Documents/pro2d/docker-compose.yml up -d
6 -/usr/local/bin/docker ps -a  
7 \ No newline at end of file 6 \ No newline at end of file
  7 +/usr/local/bin/docker rmi $(/usr/local/bin/docker images -f "dangling=true" -q)
  8 +/usr/local/bin/docker ps -a
models/rolePlugin.go
@@ -167,3 +167,92 @@ func (m *RoleModel) Award(award common.IMapStringNum) common.IMapStringNum { @@ -167,3 +167,92 @@ func (m *RoleModel) Award(award common.IMapStringNum) common.IMapStringNum {
167 m.AddItems(award) 167 m.AddItems(award)
168 return award 168 return award
169 } 169 }
  170 +
  171 +func (m *RoleModel) EquipmentRefer(equipId, heroId string, refer bool) int32 {
  172 + e, ok := m.Equipments[equipId]
  173 + if !ok {
  174 + return 2
  175 + }
  176 +
  177 + equip := e.(*EquipModel)
  178 +
  179 + // 1 脱
  180 + // 1.1 装备直接脱掉
  181 + // 2 戴
  182 + // 2.1装备未被其他英雄穿戴直接穿, 如果其他英雄已经被穿戴,则脱了再穿
  183 + // 2.2同类型装备是否穿戴, 已经被穿戴,则脱了再穿
  184 + h1 := m.Heros[heroId]
  185 + h2 := m.Heros[equip.Equip.HeroId]
  186 +
  187 + var outHero, inHero *HeroModel
  188 + inEquip := csvdata.Get().TbEquipmentData.Get(equip.Equip.GetTbId())
  189 + if !refer {
  190 + if h1 != nil {
  191 + outHero = h1.(*HeroModel)
  192 + outHero.UpdateEquipment(equip.Equip.Id, 0)
  193 + }
  194 + if h2 != nil {
  195 + outHero = h2.(*HeroModel)
  196 + outHero.UpdateEquipment(equip.Equip.Id, 0)
  197 + }
  198 + equip.SetProperty("heroid", "")
  199 +
  200 + } else {
  201 + if h1 == nil {
  202 + return 3
  203 + }
  204 + inHero = h1.(*HeroModel)
  205 +
  206 + if equip.Equip.HeroId == "" {
  207 + var outEquipID string
  208 + for id, tbId := range inHero.Equipments {
  209 + tmpEquip := csvdata.Get().TbEquipmentData.Get(tbId)
  210 + if tmpEquip.EquipType == inEquip.EquipType {
  211 + outEquipID = id
  212 + break
  213 + }
  214 + }
  215 +
  216 + if outEquipID != "" {
  217 + tmpEuqip, ok := m.Equipments[outEquipID]
  218 + if ok {
  219 + outEquip := tmpEuqip.(*EquipModel)
  220 + outEquip.SetProperty("heroid", "")
  221 + inHero.UpdateEquipment(outEquipID, 0)
  222 + }
  223 + }
  224 +
  225 + inHero.UpdateEquipment(equip.Equip.Id, inEquip.EquipID)
  226 + equip.SetProperty("heroid", inHero.Hero.Id)
  227 +
  228 + } else if equip.Equip.HeroId != heroId {
  229 + if h2 == nil {
  230 + return 4
  231 + }
  232 +
  233 + outHero = h2.(*HeroModel)
  234 + var outEquipID string
  235 + for id, tbId := range inHero.Equipments {
  236 + tmpEquip := csvdata.Get().TbEquipmentData.Get(tbId)
  237 + if tmpEquip.EquipType == inEquip.EquipType {
  238 + outEquipID = id
  239 + break
  240 + }
  241 + }
  242 +
  243 + if outEquipID != "" {
  244 + tmpEquip, ok := m.Equipments[outEquipID]
  245 + if ok {
  246 + outEquip := tmpEquip.(*EquipModel)
  247 + outEquip.SetProperty("heroid", "")
  248 + inHero.UpdateEquipment(outEquipID, 0)
  249 + }
  250 + }
  251 +
  252 + outHero.UpdateEquipment(equip.Equip.Id, 0)
  253 + inHero.UpdateEquipment(equip.Equip.Id, inEquip.EquipType)
  254 + equip.SetProperty("heroid", inHero.Hero.Id)
  255 + }
  256 + }
  257 + return 0
  258 +}
@@ -319,9 +319,9 @@ type HeroEquipReferReq struct { @@ -319,9 +319,9 @@ type HeroEquipReferReq struct {
319 sizeCache protoimpl.SizeCache 319 sizeCache protoimpl.SizeCache
320 unknownFields protoimpl.UnknownFields 320 unknownFields protoimpl.UnknownFields
321 321
322 - EquipId string `protobuf:"bytes,1,opt,name=equipId,proto3" json:"equipId,omitempty"`  
323 - HeroId string `protobuf:"bytes,2,opt,name=hero_id,json=heroId,proto3" json:"hero_id,omitempty"`  
324 - Refer bool `protobuf:"varint,3,opt,name=refer,proto3" json:"refer,omitempty"` //true 穿戴, false 脱下 322 + EquipIds []string `protobuf:"bytes,1,rep,name=equipIds,proto3" json:"equipIds,omitempty"`
  323 + HeroId string `protobuf:"bytes,2,opt,name=hero_id,json=heroId,proto3" json:"hero_id,omitempty"`
  324 + Refer bool `protobuf:"varint,3,opt,name=refer,proto3" json:"refer,omitempty"` //true 穿戴, false 脱下
325 } 325 }
326 326
327 func (x *HeroEquipReferReq) Reset() { 327 func (x *HeroEquipReferReq) Reset() {
@@ -356,11 +356,11 @@ func (*HeroEquipReferReq) Descriptor() ([]byte, []int) { @@ -356,11 +356,11 @@ func (*HeroEquipReferReq) Descriptor() ([]byte, []int) {
356 return file_game_proto_rawDescGZIP(), []int{6} 356 return file_game_proto_rawDescGZIP(), []int{6}
357 } 357 }
358 358
359 -func (x *HeroEquipReferReq) GetEquipId() string { 359 +func (x *HeroEquipReferReq) GetEquipIds() []string {
360 if x != nil { 360 if x != nil {
361 - return x.EquipId 361 + return x.EquipIds
362 } 362 }
363 - return "" 363 + return nil
364 } 364 }
365 365
366 func (x *HeroEquipReferReq) GetHeroId() string { 366 func (x *HeroEquipReferReq) GetHeroId() string {
@@ -931,66 +931,66 @@ var file_game_proto_rawDesc = []byte{ @@ -931,66 +931,66 @@ var file_game_proto_rawDesc = []byte{
931 0x65, 0x63, 0x74, 0x52, 0x73, 0x70, 0x22, 0x31, 0x0a, 0x0d, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 931 0x65, 0x63, 0x74, 0x52, 0x73, 0x70, 0x22, 0x31, 0x0a, 0x0d, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
932 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x18, 932 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x18,
933 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x54, 933 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x54,
934 - 0x65, 0x61, 0x6d, 0x52, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x22, 0x5c, 0x0a, 0x11, 0x48, 0x65, 0x72,  
935 - 0x6f, 0x45, 0x71, 0x75, 0x69, 0x70, 0x52, 0x65, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x18,  
936 - 0x0a, 0x07, 0x65, 0x71, 0x75, 0x69, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,  
937 - 0x07, 0x65, 0x71, 0x75, 0x69, 0x70, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x65, 0x72, 0x6f,  
938 - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x65, 0x72, 0x6f, 0x49,  
939 - 0x64, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x66, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,  
940 - 0x52, 0x05, 0x72, 0x65, 0x66, 0x65, 0x72, 0x22, 0xa2, 0x01, 0x0a, 0x07, 0x52, 0x6f, 0x6c, 0x65,  
941 - 0x52, 0x73, 0x70, 0x12, 0x20, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,  
942 - 0x0b, 0x32, 0x0c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52,  
943 - 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x18, 0x03, 0x20,  
944 - 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x48, 0x65, 0x72,  
945 - 0x6f, 0x52, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x12, 0x20, 0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x18,  
946 - 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x54,  
947 - 0x65, 0x61, 0x6d, 0x52, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x12, 0x31, 0x0a, 0x0a, 0x65, 0x71, 0x75,  
948 - 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e,  
949 - 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74,  
950 - 0x52, 0x0a, 0x65, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x49, 0x0a, 0x15,  
951 - 0x52, 0x6f, 0x6c, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72,  
952 - 0x74, 0x79, 0x52, 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28,  
953 - 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 934 + 0x65, 0x61, 0x6d, 0x52, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x22, 0x5e, 0x0a, 0x11, 0x48, 0x65, 0x72,
  935 + 0x6f, 0x45, 0x71, 0x75, 0x69, 0x70, 0x52, 0x65, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x1a,
  936 + 0x0a, 0x08, 0x65, 0x71, 0x75, 0x69, 0x70, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09,
  937 + 0x52, 0x08, 0x65, 0x71, 0x75, 0x69, 0x70, 0x49, 0x64, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x65,
  938 + 0x72, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x65, 0x72,
  939 + 0x6f, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x66, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01,
  940 + 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x66, 0x65, 0x72, 0x22, 0xa2, 0x01, 0x0a, 0x07, 0x52, 0x6f,
  941 + 0x6c, 0x65, 0x52, 0x73, 0x70, 0x12, 0x20, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20,
954 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x52, 0x6f, 0x6c, 942 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x52, 0x6f, 0x6c,
955 - 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x2a, 0x0a, 0x12, 0x52, 0x6f, 0x6c, 0x65, 0x55,  
956 - 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x73, 0x70, 0x12, 0x14, 0x0a,  
957 - 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x74,  
958 - 0x65, 0x6d, 0x73, 0x22, 0x29, 0x0a, 0x11, 0x52, 0x6f, 0x6c, 0x65, 0x43, 0x6c, 0x65, 0x61, 0x72,  
959 - 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d,  
960 - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x50,  
961 - 0x0a, 0x12, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x42, 0x61, 0x74, 0x74, 0x6c,  
962 - 0x65, 0x52, 0x65, 0x71, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x5f,  
963 - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x68, 0x61, 0x70, 0x74, 0x65,  
964 - 0x72, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x61, 0x72, 0x62, 0x6f, 0x6e, 0x5f, 0x69, 0x64,  
965 - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x61, 0x72, 0x62, 0x6f, 0x6e, 0x49, 0x64,  
966 - 0x22, 0x7b, 0x0a, 0x10, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x6e, 0x64, 0x42, 0x61, 0x74, 0x74, 0x6c,  
967 - 0x65, 0x52, 0x65, 0x71, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x5f,  
968 - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x68, 0x61, 0x70, 0x74, 0x65,  
969 - 0x72, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x61, 0x72, 0x62, 0x6f, 0x6e, 0x5f, 0x69, 0x64,  
970 - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x61, 0x72, 0x62, 0x6f, 0x6e, 0x49, 0x64,  
971 - 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04,  
972 - 0x70, 0x61, 0x73, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18,  
973 - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0xc1, 0x01,  
974 - 0x0a, 0x10, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x6e, 0x64, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x52,  
975 - 0x73, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c,  
976 - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x4c, 0x65, 0x76, 0x65,  
977 - 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x18, 0x02, 0x20,  
978 - 0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x78, 0x70, 0x12, 0x25, 0x0a, 0x0e,  
979 - 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03,  
980 - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x78, 0x70, 0x61, 0x6d, 0x6f,  
981 - 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x04, 0x20,  
982 - 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70,  
983 - 0x61, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x70, 0x61, 0x73, 0x73, 0x12,  
984 - 0x20, 0x0a, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e,  
985 - 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x04, 0x68, 0x65, 0x72,  
986 - 0x6f, 0x22, 0x21, 0x0a, 0x0f, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x65,  
987 - 0x6c, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09,  
988 - 0x52, 0x02, 0x69, 0x64, 0x22, 0x3a, 0x0a, 0x0f, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e,  
989 - 0x74, 0x41, 0x64, 0x64, 0x52, 0x73, 0x70, 0x12, 0x27, 0x0a, 0x05, 0x65, 0x71, 0x75, 0x69, 0x70,  
990 - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e,  
991 - 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x71, 0x75, 0x69, 0x70,  
992 - 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2e, 0x2f, 0x70, 0x62, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72,  
993 - 0x6f, 0x74, 0x6f, 0x33, 943 + 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x18,
  944 + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x48,
  945 + 0x65, 0x72, 0x6f, 0x52, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x12, 0x20, 0x0a, 0x04, 0x74, 0x65, 0x61,
  946 + 0x6d, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73,
  947 + 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x12, 0x31, 0x0a, 0x0a, 0x65,
  948 + 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32,
  949 + 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65,
  950 + 0x6e, 0x74, 0x52, 0x0a, 0x65, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x49,
  951 + 0x0a, 0x15, 0x52, 0x6f, 0x6c, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x70,
  952 + 0x65, 0x72, 0x74, 0x79, 0x52, 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
  953 + 0x03, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18,
  954 + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x52,
  955 + 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x2a, 0x0a, 0x12, 0x52, 0x6f, 0x6c,
  956 + 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x73, 0x70, 0x12,
  957 + 0x14, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
  958 + 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x29, 0x0a, 0x11, 0x52, 0x6f, 0x6c, 0x65, 0x43, 0x6c, 0x65,
  959 + 0x61, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x74,
  960 + 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73,
  961 + 0x22, 0x50, 0x0a, 0x12, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x42, 0x61, 0x74,
  962 + 0x74, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x70, 0x74, 0x65,
  963 + 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x68, 0x61, 0x70,
  964 + 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x61, 0x72, 0x62, 0x6f, 0x6e, 0x5f,
  965 + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x61, 0x72, 0x62, 0x6f, 0x6e,
  966 + 0x49, 0x64, 0x22, 0x7b, 0x0a, 0x10, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x6e, 0x64, 0x42, 0x61, 0x74,
  967 + 0x74, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x70, 0x74, 0x65,
  968 + 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x68, 0x61, 0x70,
  969 + 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x61, 0x72, 0x62, 0x6f, 0x6e, 0x5f,
  970 + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x61, 0x72, 0x62, 0x6f, 0x6e,
  971 + 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,
  972 + 0x52, 0x04, 0x70, 0x61, 0x73, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69,
  973 + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22,
  974 + 0xc1, 0x01, 0x0a, 0x10, 0x52, 0x6f, 0x6c, 0x65, 0x45, 0x6e, 0x64, 0x42, 0x61, 0x74, 0x74, 0x6c,
  975 + 0x65, 0x52, 0x73, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6c, 0x65, 0x76,
  976 + 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x4c, 0x65,
  977 + 0x76, 0x65, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x18,
  978 + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x78, 0x70, 0x12, 0x25,
  979 + 0x0a, 0x0e, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74,
  980 + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x6f, 0x6c, 0x65, 0x45, 0x78, 0x70, 0x61,
  981 + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18,
  982 + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x12, 0x0a,
  983 + 0x04, 0x70, 0x61, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x70, 0x61, 0x73,
  984 + 0x73, 0x12, 0x20, 0x0a, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32,
  985 + 0x0c, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x04, 0x68,
  986 + 0x65, 0x72, 0x6f, 0x22, 0x21, 0x0a, 0x0f, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74,
  987 + 0x44, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03,
  988 + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x3a, 0x0a, 0x0f, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d,
  989 + 0x65, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x52, 0x73, 0x70, 0x12, 0x27, 0x0a, 0x05, 0x65, 0x71, 0x75,
  990 + 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c,
  991 + 0x73, 0x2e, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x71, 0x75,
  992 + 0x69, 0x70, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2e, 0x2f, 0x70, 0x62, 0x3b, 0x70, 0x62, 0x62, 0x06,
  993 + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
994 } 994 }
995 995
996 var ( 996 var (