Commit 3cd84cccda05c916a6863d5ea8a4b11dae88005a

Authored by zhangqijia
1 parent 8b8ea9a0

fix: 裝備位置修改

cmd/gameserver/action/RoleAction.go
@@ -96,13 +96,15 @@ func HeroEquipReferRpc(role *models.RoleModel, msg components.IMessage) (int32, @@ -96,13 +96,15 @@ 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 - for _, equipId := range req.EquipIds {  
100 - ret := role.EquipmentRefer(equipId, req.HeroId, req.Refer)  
101 - if ret != 0 {  
102 - return ret, nil 99 + for _, equipInfo := range req.EquipIds {
  100 + for equipId, pos := range common.StringToMapNum(equipInfo) {
  101 + ret := role.EquipmentRefer(equipId, req.HeroId, req.Refer, pos)
  102 + if ret != 0 {
  103 + logger.Error("ret: %d, equipId: %s, heroId: %s, refer: %d, pos:%d", ret, equipId, req.HeroId, req.Refer, pos)
  104 + }
103 } 105 }
104 - }  
105 106
  107 + }
106 return 0, nil 108 return 0, nil
107 } 109 }
108 110
docker/portforward.sh
1 -#ssh -N -f -R 120.26.43.151:8080:0.0.0.0:8080 dangge@120.26.43.151  
2 - 1 +# https://cloud.tencent.com/developer/article/1722055
3 account_port=8080 2 account_port=8080
4 game_port=8849 3 game_port=8849
5 gm_port=8880 4 gm_port=8880
@@ -7,6 +6,8 @@ local_ip=192.168.0.100 @@ -7,6 +6,8 @@ local_ip=192.168.0.100
7 remote_ip=47.118.38.251 6 remote_ip=47.118.38.251
8 remote_user=root 7 remote_user=root
9 8
  9 +arg='-o ServerAliveInterval=60 -o ServerAliveCountMax=2'
  10 +
10 ssh -N -f -R ${remote_ip}:${account_port}:${local_ip}:${account_port} ${remote_user}@${remote_ip} 11 ssh -N -f -R ${remote_ip}:${account_port}:${local_ip}:${account_port} ${remote_user}@${remote_ip}
11 ssh -N -f -R ${remote_ip}:${game_port}:${local_ip}:${game_port} ${remote_user}@${remote_ip} 12 ssh -N -f -R ${remote_ip}:${game_port}:${local_ip}:${game_port} ${remote_user}@${remote_ip}
12 ssh -N -f -R ${remote_ip}:${gm_port}:${local_ip}:${gm_port} ${remote_user}@${remote_ip} 13 ssh -N -f -R ${remote_ip}:${gm_port}:${local_ip}:${gm_port} ${remote_user}@${remote_ip}
13 \ No newline at end of file 14 \ No newline at end of file
@@ -22,13 +22,13 @@ func NewHero(hero *pb.Hero) *HeroModel { @@ -22,13 +22,13 @@ func NewHero(hero *pb.Hero) *HeroModel {
22 return m 22 return m
23 } 23 }
24 24
25 -func (m *HeroModel) UpdateEquipment(key string, typ int32) {  
26 - if typ == 0 {  
27 - delete(m.Equipments, key)  
28 - } else {  
29 - m.Equipments[key] = typ  
30 - } 25 +func (m *HeroModel) DelEquipment(key string) {
  26 + delete(m.Equipments, key)
  27 + m.SetProperty("equipments", common.MapNumToString(m.Equipments))
  28 +}
31 29
  30 +func (m *HeroModel) AddEquipment(key string, pos int32) {
  31 + m.Equipments[key] = pos
32 m.SetProperty("equipments", common.MapNumToString(m.Equipments)) 32 m.SetProperty("equipments", common.MapNumToString(m.Equipments))
33 } 33 }
34 func (m *HeroModel) UpLevel(exp int32) (int32, int32) { 34 func (m *HeroModel) UpLevel(exp int32) (int32, int32) {
models/rolePlugin.go
@@ -7,6 +7,8 @@ import ( @@ -7,6 +7,8 @@ import (
7 "pro2d/common/logger" 7 "pro2d/common/logger"
8 "pro2d/csvdata" 8 "pro2d/csvdata"
9 "pro2d/pb" 9 "pro2d/pb"
  10 + "strconv"
  11 + "strings"
10 ) 12 )
11 13
12 //背包系统 14 //背包系统
@@ -168,7 +170,7 @@ func (m *RoleModel) Award(award common.IMapStringNum) common.IMapStringNum { @@ -168,7 +170,7 @@ func (m *RoleModel) Award(award common.IMapStringNum) common.IMapStringNum {
168 return award 170 return award
169 } 171 }
170 172
171 -func (m *RoleModel) EquipmentRefer(equipId, heroId string, refer bool) int32 { 173 +func (m *RoleModel) EquipmentRefer(equipId, heroId string, refer bool, pos int32) int32 {
172 e, ok := m.Equipments[equipId] 174 e, ok := m.Equipments[equipId]
173 if !ok { 175 if !ok {
174 return 2 176 return 2
@@ -179,21 +181,23 @@ func (m *RoleModel) EquipmentRefer(equipId, heroId string, refer bool) int32 { @@ -179,21 +181,23 @@ func (m *RoleModel) EquipmentRefer(equipId, heroId string, refer bool) int32 {
179 // 1 脱 181 // 1 脱
180 // 1.1 装备直接脱掉 182 // 1.1 装备直接脱掉
181 // 2 戴 183 // 2 戴
182 - // 2.1装备未被其他英雄穿戴直接穿, 如果其他英雄已经被穿戴,则脱了再穿  
183 - // 2.2同类型装备是否穿戴, 已经被穿戴,则脱了再穿 184 + // 2.0 判断是否能装上该位置
  185 + // 2.1装备未被其他英雄穿戴直接穿,同位置装备是否穿戴, 已经被穿戴,则脱了再穿
  186 + // 2.2 如果其他英雄已经被穿戴,则脱了再穿, 同位置装备是否穿戴, 已经被穿戴,则脱了再穿
184 h1 := m.Heros[heroId] 187 h1 := m.Heros[heroId]
185 h2 := m.Heros[equip.Equip.HeroId] 188 h2 := m.Heros[equip.Equip.HeroId]
186 189
187 var outHero, inHero *HeroModel 190 var outHero, inHero *HeroModel
188 inEquip := csvdata.Get().TbEquipmentData.Get(equip.Equip.GetTbId()) 191 inEquip := csvdata.Get().TbEquipmentData.Get(equip.Equip.GetTbId())
189 if !refer { 192 if !refer {
  193 + // 1
190 if h1 != nil { 194 if h1 != nil {
191 outHero = h1.(*HeroModel) 195 outHero = h1.(*HeroModel)
192 - outHero.UpdateEquipment(equip.Equip.Id, 0) 196 + outHero.DelEquipment(equip.Equip.Id)
193 } 197 }
194 if h2 != nil { 198 if h2 != nil {
195 outHero = h2.(*HeroModel) 199 outHero = h2.(*HeroModel)
196 - outHero.UpdateEquipment(equip.Equip.Id, 0) 200 + outHero.DelEquipment(equip.Equip.Id)
197 } 201 }
198 equip.SetProperty("heroid", "") 202 equip.SetProperty("heroid", "")
199 203
@@ -203,11 +207,23 @@ func (m *RoleModel) EquipmentRefer(equipId, heroId string, refer bool) int32 { @@ -203,11 +207,23 @@ func (m *RoleModel) EquipmentRefer(equipId, heroId string, refer bool) int32 {
203 } 207 }
204 inHero = h1.(*HeroModel) 208 inHero = h1.(*HeroModel)
205 209
  210 + // 2.0
  211 + insert := false
  212 + for _, p := range strings.Split(inEquip.EquipPoz, "=") {
  213 + tpos, _ := strconv.Atoi(p)
  214 + if int32(tpos) == pos {
  215 + insert = true
  216 + }
  217 + }
  218 + if !insert {
  219 + return 4
  220 + }
  221 +
  222 + // 2.1
206 if equip.Equip.HeroId == "" { 223 if equip.Equip.HeroId == "" {
207 var outEquipID string 224 var outEquipID string
208 - for id, tbId := range inHero.Equipments {  
209 - tmpEquip := csvdata.Get().TbEquipmentData.Get(tbId)  
210 - if tmpEquip.EquipType == inEquip.EquipType { 225 + for id, tpos := range inHero.Equipments {
  226 + if tpos == pos {
211 outEquipID = id 227 outEquipID = id
212 break 228 break
213 } 229 }
@@ -218,23 +234,24 @@ func (m *RoleModel) EquipmentRefer(equipId, heroId string, refer bool) int32 { @@ -218,23 +234,24 @@ func (m *RoleModel) EquipmentRefer(equipId, heroId string, refer bool) int32 {
218 if ok { 234 if ok {
219 outEquip := tmpEuqip.(*EquipModel) 235 outEquip := tmpEuqip.(*EquipModel)
220 outEquip.SetProperty("heroid", "") 236 outEquip.SetProperty("heroid", "")
221 - inHero.UpdateEquipment(outEquipID, 0) 237 + inHero.DelEquipment(outEquipID)
222 } 238 }
223 } 239 }
224 240
225 - inHero.UpdateEquipment(equip.Equip.Id, inEquip.EquipID) 241 + inHero.AddEquipment(equip.Equip.Id, pos)
226 equip.SetProperty("heroid", inHero.Hero.Id) 242 equip.SetProperty("heroid", inHero.Hero.Id)
  243 + equip.SetProperty("pos", pos)
227 244
228 - } else if equip.Equip.HeroId != heroId { 245 + } else {
229 if h2 == nil { 246 if h2 == nil {
230 return 4 247 return 4
231 } 248 }
232 249
  250 + // 2.2
233 outHero = h2.(*HeroModel) 251 outHero = h2.(*HeroModel)
234 var outEquipID string 252 var outEquipID string
235 - for id, tbId := range inHero.Equipments {  
236 - tmpEquip := csvdata.Get().TbEquipmentData.Get(tbId)  
237 - if tmpEquip.EquipType == inEquip.EquipType { 253 + for id, tpos := range inHero.Equipments {
  254 + if tpos == pos {
238 outEquipID = id 255 outEquipID = id
239 break 256 break
240 } 257 }
@@ -245,13 +262,14 @@ func (m *RoleModel) EquipmentRefer(equipId, heroId string, refer bool) int32 { @@ -245,13 +262,14 @@ func (m *RoleModel) EquipmentRefer(equipId, heroId string, refer bool) int32 {
245 if ok { 262 if ok {
246 outEquip := tmpEquip.(*EquipModel) 263 outEquip := tmpEquip.(*EquipModel)
247 outEquip.SetProperty("heroid", "") 264 outEquip.SetProperty("heroid", "")
248 - inHero.UpdateEquipment(outEquipID, 0) 265 + inHero.DelEquipment(outEquipID)
249 } 266 }
250 } 267 }
251 268
252 - outHero.UpdateEquipment(equip.Equip.Id, 0)  
253 - inHero.UpdateEquipment(equip.Equip.Id, inEquip.EquipType) 269 + outHero.DelEquipment(equip.Equip.Id)
  270 + inHero.AddEquipment(equip.Equip.Id, pos)
254 equip.SetProperty("heroid", inHero.Hero.Id) 271 equip.SetProperty("heroid", inHero.Hero.Id)
  272 + equip.SetProperty("pos", pos)
255 } 273 }
256 } 274 }
257 return 0 275 return 0
@@ -319,7 +319,7 @@ type HeroEquipReferReq struct { @@ -319,7 +319,7 @@ type HeroEquipReferReq struct {
319 sizeCache protoimpl.SizeCache 319 sizeCache protoimpl.SizeCache
320 unknownFields protoimpl.UnknownFields 320 unknownFields protoimpl.UnknownFields
321 321
322 - EquipIds []string `protobuf:"bytes,1,rep,name=equipIds,proto3" json:"equipIds,omitempty"` 322 + EquipIds []string `protobuf:"bytes,1,rep,name=equipIds,proto3" json:"equipIds,omitempty"` //[id=pos, id2=pos2]
323 HeroId string `protobuf:"bytes,2,opt,name=hero_id,json=heroId,proto3" json:"hero_id,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 脱下 324 Refer bool `protobuf:"varint,3,opt,name=refer,proto3" json:"refer,omitempty"` //true 穿戴, false 脱下
325 } 325 }
@@ -94,7 +94,7 @@ type Hero struct { @@ -94,7 +94,7 @@ type Hero struct {
94 Level int32 `protobuf:"varint,4,opt,name=level,proto3" json:"level,omitempty"` 94 Level int32 `protobuf:"varint,4,opt,name=level,proto3" json:"level,omitempty"`
95 ReinCount int32 `protobuf:"varint,5,opt,name=rein_count,json=reinCount,proto3" json:"rein_count,omitempty"` 95 ReinCount int32 `protobuf:"varint,5,opt,name=rein_count,json=reinCount,proto3" json:"rein_count,omitempty"`
96 ReinPoint int32 `protobuf:"varint,6,opt,name=rein_point,json=reinPoint,proto3" json:"rein_point,omitempty"` 96 ReinPoint int32 `protobuf:"varint,6,opt,name=rein_point,json=reinPoint,proto3" json:"rein_point,omitempty"`
97 - Equipments string `protobuf:"bytes,7,opt,name=equipments,proto3" json:"equipments,omitempty"` //"id=tb_id id1=tb_id1" 97 + Equipments string `protobuf:"bytes,7,opt,name=equipments,proto3" json:"equipments,omitempty"` //"id=pos id1=pos1"
98 Exp int32 `protobuf:"varint,8,opt,name=exp,proto3" json:"exp,omitempty"` 98 Exp int32 `protobuf:"varint,8,opt,name=exp,proto3" json:"exp,omitempty"`
99 } 99 }
100 100
@@ -197,6 +197,7 @@ type Equipment struct { @@ -197,6 +197,7 @@ type Equipment struct {
197 EnhanceLevel int32 `protobuf:"varint,4,opt,name=enhance_level,json=enhanceLevel,proto3" json:"enhance_level,omitempty"` 197 EnhanceLevel int32 `protobuf:"varint,4,opt,name=enhance_level,json=enhanceLevel,proto3" json:"enhance_level,omitempty"`
198 HeroId string `protobuf:"bytes,5,opt,name=hero_id,json=heroId,proto3" json:"hero_id,omitempty"` 198 HeroId string `protobuf:"bytes,5,opt,name=hero_id,json=heroId,proto3" json:"hero_id,omitempty"`
199 Quality int32 `protobuf:"varint,6,opt,name=quality,proto3" json:"quality,omitempty"` 199 Quality int32 `protobuf:"varint,6,opt,name=quality,proto3" json:"quality,omitempty"`
  200 + Pos int32 `protobuf:"varint,7,opt,name=pos,proto3" json:"pos,omitempty"`
200 } 201 }
201 202
202 func (x *Equipment) Reset() { 203 func (x *Equipment) Reset() {
@@ -273,6 +274,13 @@ func (x *Equipment) GetQuality() int32 { @@ -273,6 +274,13 @@ func (x *Equipment) GetQuality() int32 {
273 return 0 274 return 0
274 } 275 }
275 276
  277 +func (x *Equipment) GetPos() int32 {
  278 + if x != nil {
  279 + return x.Pos
  280 + }
  281 + return 0
  282 +}
  283 +
276 type Prop struct { 284 type Prop struct {
277 state protoimpl.MessageState 285 state protoimpl.MessageState
278 sizeCache protoimpl.SizeCache 286 sizeCache protoimpl.SizeCache
@@ -675,7 +683,7 @@ var file_models_proto_rawDesc = []byte{ @@ -675,7 +683,7 @@ var file_models_proto_rawDesc = []byte{
675 0x1e, 0x0a, 0x0a, 0x65, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20, 683 0x1e, 0x0a, 0x0a, 0x65, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20,
676 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 684 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12,
677 0x10, 0x0a, 0x03, 0x65, 0x78, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x78, 685 0x10, 0x0a, 0x03, 0x65, 0x78, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x78,
678 - 0x70, 0x22, 0xa1, 0x01, 0x0a, 0x09, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x12, 686 + 0x70, 0x22, 0xb3, 0x01, 0x0a, 0x09, 0x45, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x12,
679 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 687 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
680 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 688 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
681 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x62, 0x5f, 0x69, 689 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x62, 0x5f, 0x69,
@@ -685,64 +693,65 @@ var file_models_proto_rawDesc = []byte{ @@ -685,64 +693,65 @@ var file_models_proto_rawDesc = []byte{
685 0x65, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x65, 0x72, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 693 0x65, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x65, 0x72, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20,
686 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x71, 694 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x71,
687 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x71, 0x75, 695 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x71, 0x75,
688 - 0x61, 0x6c, 0x69, 0x74, 0x79, 0x22, 0x2c, 0x0a, 0x04, 0x50, 0x72, 0x6f, 0x70, 0x12, 0x0e, 0x0a,  
689 - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a,  
690 - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f,  
691 - 0x75, 0x6e, 0x74, 0x22, 0x80, 0x01, 0x0a, 0x04, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02,  
692 - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07,  
693 - 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72,  
694 - 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x68, 0x65, 0x72, 0x6f, 0x5f, 0x69, 0x64,  
695 - 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x31,  
696 - 0x12, 0x19, 0x0a, 0x08, 0x68, 0x65, 0x72, 0x6f, 0x5f, 0x69, 0x64, 0x32, 0x18, 0x04, 0x20, 0x01,  
697 - 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x32, 0x12, 0x19, 0x0a, 0x08, 0x68,  
698 - 0x65, 0x72, 0x6f, 0x5f, 0x69, 0x64, 0x33, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x68,  
699 - 0x65, 0x72, 0x6f, 0x49, 0x64, 0x33, 0x22, 0x2f, 0x0a, 0x09, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d,  
700 - 0x65, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,  
701 - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01,  
702 - 0x28, 0x03, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x9a, 0x05, 0x0a, 0x04, 0x52, 0x6f, 0x6c, 0x65,  
703 - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,  
704 - 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75,  
705 - 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01,  
706 - 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x69,  
707 - 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x69, 0x63, 0x6b, 0x12, 0x14,  
708 - 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c,  
709 - 0x65, 0x76, 0x65, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x78, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28,  
710 - 0x05, 0x52, 0x03, 0x65, 0x78, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x68, 0x70, 0x18, 0x07, 0x20, 0x01,  
711 - 0x28, 0x03, 0x52, 0x02, 0x68, 0x70, 0x12, 0x15, 0x0a, 0x06, 0x68, 0x70, 0x5f, 0x6d, 0x61, 0x78,  
712 - 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x68, 0x70, 0x4d, 0x61, 0x78, 0x12, 0x13, 0x0a,  
713 - 0x05, 0x62, 0x75, 0x79, 0x5f, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x75,  
714 - 0x79, 0x52, 0x12, 0x13, 0x0a, 0x05, 0x70, 0x61, 0x79, 0x5f, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28,  
715 - 0x09, 0x52, 0x04, 0x70, 0x61, 0x79, 0x52, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x65, 0x6c, 0x18, 0x0d,  
716 - 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x64, 0x65, 0x6c, 0x12, 0x30, 0x0a, 0x06, 0x69, 0x6e, 0x63,  
717 - 0x72, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x6f, 0x64, 0x65,  
718 - 0x6c, 0x73, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x2e, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x73, 0x45, 0x6e,  
719 - 0x74, 0x72, 0x79, 0x52, 0x06, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x69,  
720 - 0x74, 0x65, 0x6d, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d,  
721 - 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6c, 0x6f, 0x74, 0x68, 0x65, 0x73, 0x6c, 0x69, 0x6d, 0x69,  
722 - 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x63, 0x6c, 0x6f, 0x74, 0x68, 0x65, 0x73,  
723 - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x65, 0x61, 0x70, 0x6f, 0x6e, 0x73,  
724 - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x77, 0x65, 0x61,  
725 - 0x70, 0x6f, 0x6e, 0x73, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x74, 0x68,  
726 - 0x65, 0x72, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6f,  
727 - 0x74, 0x68, 0x65, 0x72, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6a, 0x65, 0x77,  
728 - 0x65, 0x6c, 0x72, 0x79, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0d, 0x52,  
729 - 0x0c, 0x6a, 0x65, 0x77, 0x65, 0x6c, 0x72, 0x79, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x24, 0x0a,  
730 - 0x0d, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x14,  
731 - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x6c, 0x69,  
732 - 0x6d, 0x69, 0x74, 0x12, 0x43, 0x0a, 0x0d, 0x70, 0x61, 0x73, 0x73, 0x5f, 0x63, 0x68, 0x61, 0x70,  
733 - 0x74, 0x65, 0x72, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x6f, 0x64,  
734 - 0x65, 0x6c, 0x73, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x2e, 0x50, 0x61, 0x73, 0x73, 0x43, 0x68, 0x61,  
735 - 0x70, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x70, 0x61, 0x73, 0x73,  
736 - 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x49, 0x6e, 0x63, 0x72,  
737 - 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,  
738 - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,  
739 - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,  
740 - 0x02, 0x38, 0x01, 0x1a, 0x3f, 0x0a, 0x11, 0x50, 0x61, 0x73, 0x73, 0x43, 0x68, 0x61, 0x70, 0x74,  
741 - 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,  
742 - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,  
743 - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,  
744 - 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2e, 0x2f, 0x70, 0x62, 0x3b, 0x70, 0x62,  
745 - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 696 + 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, 0x07, 0x20, 0x01,
  697 + 0x28, 0x05, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x22, 0x2c, 0x0a, 0x04, 0x50, 0x72, 0x6f, 0x70, 0x12,
  698 + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
  699 + 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05,
  700 + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x80, 0x01, 0x0a, 0x04, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x0e,
  701 + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17,
  702 + 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
  703 + 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x68, 0x65, 0x72, 0x6f, 0x5f,
  704 + 0x69, 0x64, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x72, 0x6f, 0x49,
  705 + 0x64, 0x31, 0x12, 0x19, 0x0a, 0x08, 0x68, 0x65, 0x72, 0x6f, 0x5f, 0x69, 0x64, 0x32, 0x18, 0x04,
  706 + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x32, 0x12, 0x19, 0x0a,
  707 + 0x08, 0x68, 0x65, 0x72, 0x6f, 0x5f, 0x69, 0x64, 0x33, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
  708 + 0x07, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x33, 0x22, 0x2f, 0x0a, 0x09, 0x49, 0x6e, 0x63, 0x72,
  709 + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
  710 + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x02,
  711 + 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x9a, 0x05, 0x0a, 0x04, 0x52, 0x6f,
  712 + 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
  713 + 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
  714 + 0x03, 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x03,
  715 + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04,
  716 + 0x6e, 0x69, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x69, 0x63, 0x6b,
  717 + 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52,
  718 + 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x78, 0x70, 0x18, 0x06, 0x20,
  719 + 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x78, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x68, 0x70, 0x18, 0x07,
  720 + 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x68, 0x70, 0x12, 0x15, 0x0a, 0x06, 0x68, 0x70, 0x5f, 0x6d,
  721 + 0x61, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x68, 0x70, 0x4d, 0x61, 0x78, 0x12,
  722 + 0x13, 0x0a, 0x05, 0x62, 0x75, 0x79, 0x5f, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
  723 + 0x62, 0x75, 0x79, 0x52, 0x12, 0x13, 0x0a, 0x05, 0x70, 0x61, 0x79, 0x5f, 0x72, 0x18, 0x0c, 0x20,
  724 + 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x79, 0x52, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x65, 0x6c,
  725 + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x64, 0x65, 0x6c, 0x12, 0x30, 0x0a, 0x06, 0x69,
  726 + 0x6e, 0x63, 0x72, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x6f,
  727 + 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x2e, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x73,
  728 + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x73, 0x12, 0x14, 0x0a,
  729 + 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x74,
  730 + 0x65, 0x6d, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6c, 0x6f, 0x74, 0x68, 0x65, 0x73, 0x6c, 0x69,
  731 + 0x6d, 0x69, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x63, 0x6c, 0x6f, 0x74, 0x68,
  732 + 0x65, 0x73, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x65, 0x61, 0x70, 0x6f,
  733 + 0x6e, 0x73, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x77,
  734 + 0x65, 0x61, 0x70, 0x6f, 0x6e, 0x73, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6f,
  735 + 0x74, 0x68, 0x65, 0x72, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0d, 0x52,
  736 + 0x0a, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6a,
  737 + 0x65, 0x77, 0x65, 0x6c, 0x72, 0x79, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28,
  738 + 0x0d, 0x52, 0x0c, 0x6a, 0x65, 0x77, 0x65, 0x6c, 0x72, 0x79, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12,
  739 + 0x24, 0x0a, 0x0d, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x6c, 0x69, 0x6d, 0x69, 0x74,
  740 + 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c,
  741 + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x43, 0x0a, 0x0d, 0x70, 0x61, 0x73, 0x73, 0x5f, 0x63, 0x68,
  742 + 0x61, 0x70, 0x74, 0x65, 0x72, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d,
  743 + 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x2e, 0x50, 0x61, 0x73, 0x73, 0x43,
  744 + 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x70, 0x61,
  745 + 0x73, 0x73, 0x43, 0x68, 0x61, 0x70, 0x74, 0x65, 0x72, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x49, 0x6e,
  746 + 0x63, 0x72, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
  747 + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
  748 + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
  749 + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3f, 0x0a, 0x11, 0x50, 0x61, 0x73, 0x73, 0x43, 0x68, 0x61,
  750 + 0x70, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
  751 + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
  752 + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c,
  753 + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2e, 0x2f, 0x70, 0x62, 0x3b,
  754 + 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
746 } 755 }
747 756
748 var ( 757 var (