上传专属武器代码

This commit is contained in:
liwei1dao 2024-02-26 18:41:09 +08:00
parent 74d8f1e2a8
commit 5f54f23130
28 changed files with 1733 additions and 506 deletions

View File

@ -0,0 +1,18 @@
[
{
"itemid": "10000044",
"exp": 1
},
{
"itemid": "10000045",
"exp": 500
},
{
"itemid": "10000046",
"exp": 1000
},
{
"itemid": "10000047",
"exp": 2000
}
]

View File

@ -5,11 +5,7 @@
"star": 1,
"commonskill": 10001,
"exclusiveskill": 20001,
"cost1": {
"a": "exw",
"t": "100001",
"n": 0
}
"cost1": []
},
{
"id": 2,
@ -17,11 +13,7 @@
"star": 2,
"commonskill": 10002,
"exclusiveskill": 20002,
"cost1": {
"a": "exw",
"t": "100001",
"n": 1
}
"cost1": []
},
{
"id": 3,
@ -29,11 +21,7 @@
"star": 3,
"commonskill": 10003,
"exclusiveskill": 20003,
"cost1": {
"a": "exw",
"t": "100001",
"n": 1
}
"cost1": []
},
{
"id": 4,
@ -41,11 +29,7 @@
"star": 4,
"commonskill": 10004,
"exclusiveskill": 20004,
"cost1": {
"a": "exw",
"t": "100001",
"n": 1
}
"cost1": []
},
{
"id": 5,
@ -53,10 +37,6 @@
"star": 5,
"commonskill": 10005,
"exclusiveskill": 20005,
"cost1": {
"a": "exw",
"t": "100001",
"n": 1
}
"cost1": []
}
]

View File

@ -1270,6 +1270,170 @@
"sale": [],
"gm": 0
},
{
"id": "10000044",
"name": {
"key": "item_item_name_10000044",
"text": "1点专武升级经验"
},
"usetype": 1,
"color": 1,
"bagtype": 3,
"index": 99,
"special_type": 0,
"hold": 0,
"time": 0,
"reddottype": 0,
"effects": "",
"modelName": "",
"box_id": 0,
"synthetize_num": 0,
"synthetize_deplete": [],
"synthetize_get": [],
"decompose_deplete": [],
"decompose_get": [],
"access": [],
"use_skip": 0,
"upper_limit": 2000,
"img": "item_10000041",
"intr": {
"key": "item_item_intr_10000044",
"text": "锻造中的遗落的碎屑提供1点专属武器升级经验"
},
"describe": {
"key": "item_item_describe_10000044",
"text": "专属武器升级材料,闪着淬火的光芒,看起来很有经验的样子"
},
"dialogue": {
"key": "item_item_dialogue_10000044",
"text": ""
},
"sale": [],
"gm": 0
},
{
"id": "10000045",
"name": {
"key": "item_item_name_10000045",
"text": "500点专武升级经验"
},
"usetype": 1,
"color": 2,
"bagtype": 3,
"index": 99,
"special_type": 0,
"hold": 0,
"time": 0,
"reddottype": 0,
"effects": "",
"modelName": "",
"box_id": 0,
"synthetize_num": 0,
"synthetize_deplete": [],
"synthetize_get": [],
"decompose_deplete": [],
"decompose_get": [],
"access": [],
"use_skip": 0,
"upper_limit": 2000,
"img": "item_10000041",
"intr": {
"key": "item_item_intr_10000045",
"text": "普通的材料提供500点专属武器升级经验"
},
"describe": {
"key": "item_item_describe_10000045",
"text": "专属武器升级材料,闪着淬火的光芒,看起来很有经验的样子"
},
"dialogue": {
"key": "item_item_dialogue_10000045",
"text": ""
},
"sale": [],
"gm": 0
},
{
"id": "10000046",
"name": {
"key": "item_item_name_10000046",
"text": "1000点专武升级经验"
},
"usetype": 1,
"color": 3,
"bagtype": 3,
"index": 99,
"special_type": 0,
"hold": 0,
"time": 0,
"reddottype": 0,
"effects": "",
"modelName": "",
"box_id": 0,
"synthetize_num": 0,
"synthetize_deplete": [],
"synthetize_get": [],
"decompose_deplete": [],
"decompose_get": [],
"access": [],
"use_skip": 0,
"upper_limit": 2000,
"img": "item_10000041",
"intr": {
"key": "item_item_intr_10000046",
"text": "稀有的材料提供1000点专属武器升级经验"
},
"describe": {
"key": "item_item_describe_10000046",
"text": "专属武器升级材料,闪着淬火的光芒,看起来很有经验的样子"
},
"dialogue": {
"key": "item_item_dialogue_10000046",
"text": ""
},
"sale": [],
"gm": 0
},
{
"id": "10000047",
"name": {
"key": "item_item_name_10000047",
"text": "2000点专武升级经验"
},
"usetype": 1,
"color": 4,
"bagtype": 3,
"index": 99,
"special_type": 0,
"hold": 0,
"time": 0,
"reddottype": 0,
"effects": "",
"modelName": "",
"box_id": 0,
"synthetize_num": 0,
"synthetize_deplete": [],
"synthetize_get": [],
"decompose_deplete": [],
"decompose_get": [],
"access": [],
"use_skip": 0,
"upper_limit": 2000,
"img": "item_10000041",
"intr": {
"key": "item_item_intr_10000047",
"text": "高级的材料提供2000点专属武器升级经验"
},
"describe": {
"key": "item_item_describe_10000047",
"text": "专属武器升级材料,闪着淬火的光芒,看起来很有经验的样子"
},
"dialogue": {
"key": "item_item_dialogue_10000047",
"text": ""
},
"sale": [],
"gm": 0
},
{
"id": "11013001",
"name": {

View File

@ -525,26 +525,6 @@
"path": "Root|KungFu|Pillar",
"header": ""
},
{
"id": 18102,
"msg_type": 0,
"show_type": 0,
"count_type": 0,
"opencond_id": "",
"opencond": [],
"path": "",
"header": ""
},
{
"id": 18103,
"msg_type": 0,
"show_type": 0,
"count_type": 0,
"opencond_id": "",
"opencond": [],
"path": "",
"header": ""
},
{
"id": 18104,
"msg_type": 0,

View File

@ -46,6 +46,7 @@ const (
TitleType = "title" //称号资源
XxlType = "xxl" //三消卡片资源
XxlSkill = "xxlskill" //三消技能资源
ExclusiveType = "exw" //专属武器
)
type Autogenerated struct {

View File

@ -157,6 +157,8 @@ type (
// 通过卡池随机获取指定数量的英雄卡
GetRandomCardByCardPool(uid string, count int32) (cards []string, err error)
//佩戴专属武器
UpdateExclusive(session IUserSession, hero *pb.DBHero, exw *pb.DB_Exclusive) (errdata *pb.ErrorData)
}
//玩家
@ -748,4 +750,9 @@ type (
IPlunder interface {
InitPlunderByUser(session IUserSession)
}
//专属武器
IExclusive interface {
AddNewExclusive(session IUserSession, cIds map[string]int32, bPush bool) (change []*pb.DB_Exclusive, errdata *pb.ErrorData)
DelNewExclusive(session IUserSession, cIds []string, bPush bool) (change []*pb.DB_Exclusive, errdata *pb.ErrorData)
}
)

View File

@ -0,0 +1,57 @@
package exclusive
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs"
)
//参数校验
func (this *apiComp) AddExpCheck(session comm.IUserSession, req *pb.ExclusiveAddExpReq) (errdata *pb.ErrorData) {
return
}
///获取用户装备列表
func (this *apiComp) AddExp(session comm.IUserSession, req *pb.ExclusiveAddExpReq) (errdata *pb.ErrorData) {
var (
info *pb.DB_Exclusive
conf *cfg.GameExclusiveItemData
need []*cfg.Gameatn = make([]*cfg.Gameatn, 0)
err error
)
if info, err = this.module.model.getExclusivesById(session.GetUserId(), req.Oid); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Message: err.Error(),
}
return
}
if conf, err = this.module.configure.GetGameExclusiveItem(req.Itemid); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ConfigNoFound,
Message: err.Error(),
}
return
}
need = append(need, &cfg.Gameatn{
A: comm.ItemType,
T: req.Itemid,
N: req.Num,
})
if errdata = this.module.ConsumeRes(session, need, true); errdata != nil {
return
}
info.Exp += conf.Exp
if err = this.module.model.updateExclusive(session.GetUserId(), info); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Message: err.Error(),
}
return
}
this.module.equipmentsChangePush(session, []*pb.DB_Exclusive{info})
session.SendMsg(string(this.module.GetType()), "addExp", &pb.ExclusiveAddExpResp{Exclusives: info})
return
}

View File

@ -17,7 +17,7 @@ func (this *apiComp) Getlist(session comm.IUserSession, req *pb.ExclusiveGetList
list []*pb.DB_Exclusive
err error
)
if list, err = this.module.model.QueryUserEquipments(session.GetUserId()); err != nil {
if list, err = this.module.model.getExclusives(session.GetUserId()); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Message: err.Error(),

View File

@ -0,0 +1,53 @@
package exclusive
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs"
)
//参数校验
func (this *apiComp) RankUpCheck(session comm.IUserSession, req *pb.ExclusiveRankUpReq) (errdata *pb.ErrorData) {
return
}
///获取用户装备列表
func (this *apiComp) RankUp(session comm.IUserSession, req *pb.ExclusiveRankUpReq) (errdata *pb.ErrorData) {
var (
info *pb.DB_Exclusive
conf *cfg.GameExclusiveRankData
err error
)
if info, err = this.module.model.getExclusivesById(session.GetUserId(), req.Oid); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Message: err.Error(),
}
return
}
if conf, err = this.module.configure.GetGameExclusiveRankData(info.CId, info.Step); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ConfigNoFound,
Message: err.Error(),
}
return
}
if errdata = this.module.ConsumeRes(session, conf.Cost, true); errdata != nil {
return
}
info.Step += 1
if err = this.module.model.updateExclusive(session.GetUserId(), info); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Message: err.Error(),
}
return
}
this.module.equipmentsChangePush(session, []*pb.DB_Exclusive{info})
session.SendMsg(string(this.module.GetType()), "rankup", &pb.ExclusiveRankUpResp{Exclusives: info})
return
}

View File

@ -0,0 +1,58 @@
package exclusive
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
)
//参数校验
func (this *apiComp) StarUpCheck(session comm.IUserSession, req *pb.ExclusiveStarUpReq) (errdata *pb.ErrorData) {
return
}
///获取用户装备列表
func (this *apiComp) StarUp(session comm.IUserSession, req *pb.ExclusiveStarUpReq) (errdata *pb.ErrorData) {
var (
info *pb.DB_Exclusive
list []*pb.DB_Exclusive
change []*pb.DB_Exclusive
stars int32
err error
)
if list, err = this.module.model.getExclusivesByIds(session.GetUserId(), req.Eatid); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Message: err.Error(),
}
return
}
for _, v := range list {
if v.Id == req.Oid {
info = v
} else {
stars += v.Star
}
}
info.Star += stars
if err = this.module.model.updateExclusive(session.GetUserId(), info); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Message: err.Error(),
}
return
}
if change, err = this.module.model.delExclusives(session.GetUserId(), req.Eatid); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Message: err.Error(),
}
return
}
change = append(change, info)
this.module.equipmentsChangePush(session, change)
session.SendMsg(string(this.module.GetType()), "starup", &pb.ExclusiveStarUpResp{Exclusives: info})
return
}

View File

@ -0,0 +1,54 @@
package exclusive
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs"
)
//参数校验
func (this *apiComp) UpgradeCheck(session comm.IUserSession, req *pb.ExclusiveUpgradeReq) (errdata *pb.ErrorData) {
return
}
///获取用户装备列表
func (this *apiComp) Upgrade(session comm.IUserSession, req *pb.ExclusiveUpgradeReq) (errdata *pb.ErrorData) {
var (
info *pb.DB_Exclusive
conf *cfg.GameExclusiveUpgradeData
err error
)
if info, err = this.module.model.getExclusivesById(session.GetUserId(), req.Oid); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Message: err.Error(),
}
return
}
if conf, err = this.module.configure.GetGameExclusiveUpgradeData(info.CId, info.Lv); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ConfigNoFound,
Message: err.Error(),
}
return
}
if info.Exp < conf.Needexp {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ReqParameterError,
Message: "exp not enough!",
}
return
}
if errdata = this.module.ConsumeRes(session, conf.Cost, true); errdata != nil {
return
}
info.Lv++
info.Property = make(map[int32]int32)
for _, v := range conf.Attribute {
info.Property[v.A] = v.N
}
session.SendMsg(string(this.module.GetType()), "upgrade", &pb.ExclusiveUpgradeResp{Exclusives: info})
return
}

View File

@ -0,0 +1,59 @@
package exclusive
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
)
//参数校验
func (this *apiComp) WearCheck(session comm.IUserSession, req *pb.ExclusiveWearReq) (errdata *pb.ErrorData) {
return
}
///获取用户装备列表
func (this *apiComp) Wear(session comm.IUserSession, req *pb.ExclusiveWearReq) (errdata *pb.ErrorData) {
var (
info *pb.DB_Exclusive
hero *pb.DBHero
change []*pb.DB_Exclusive
err error
)
if hero, errdata = this.module.ModuleHero.GetHeroByObjID(session.GetUserId(), req.Heroid); err != nil {
return
}
if hero.Exclusiveid != "" {
if info, err = this.module.model.getExclusivesById(session.GetUserId(), hero.Exclusiveid); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Message: err.Error(),
}
return
}
info.Hero = ""
change = append(change, info)
}
if info, err = this.module.model.getExclusivesById(session.GetUserId(), req.Oid); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Message: err.Error(),
}
return
}
info.Hero = hero.Id
change = append(change, info)
if err = this.module.model.updateExclusive(session.GetUserId(), change...); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Message: err.Error(),
}
return
}
if errdata = this.module.ModuleHero.UpdateExclusive(session, hero, info); errdata != nil {
return
}
this.module.equipmentsChangePush(session, []*pb.DB_Exclusive{info})
session.SendMsg(string(this.module.GetType()), "wear", &pb.ExclusiveWearResp{Exclusives: info})
return
}

View File

@ -12,62 +12,108 @@ import (
)
const (
game_equip = "game_equip.json" //装备信息表
game_exclusiveweapon = "game_exclusiveweapon.json" //装备信息表
game_exclusiveupgrade = "game_exclusiveupgrade.json" //装备信息表
game_exclusivestar = "game_exclusivestar.json" //装备信息表
game_exclusiverack = "game_exclusiverank.json" //装备信息表
game_exclusiveitem = "game_exclusiveitem.json" //经验道具
)
// /背包配置管理组件
type configureComp struct {
modules.MCompConfigure
module *Exclusive
equiplock sync.RWMutex
suit map[int32][]*cfg.GameEquipData
module *Exclusive
lock sync.RWMutex
lvs map[string][]*cfg.GameExclusiveUpgradeData
stars map[string][]*cfg.GameExclusiveStarData
ranks map[string][]*cfg.GameExclusiveRankData
}
// 组件初始化接口
func (this *configureComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
this.MCompConfigure.Init(service, module, comp, options)
this.module = module.(*Exclusive)
this.LoadConfigure(game_equip, cfg.NewGameEquip)
configure.RegisterConfigure(game_equip, cfg.NewGameEquip, func() {
this.equiplock.Lock()
if v, err := this.GetConfigure(game_equip); err != nil {
this.LoadConfigure(game_exclusiveweapon, cfg.NewGameExclusiveWeapon)
this.LoadConfigure(game_exclusiveitem, cfg.NewGameExclusiveItem)
//等级
configure.RegisterConfigure(game_exclusiveupgrade, cfg.NewGameExclusiveUpgrade, func() {
this.lock.Lock()
if v, err := this.GetConfigure(game_exclusiveupgrade); err != nil {
this.module.Errorf("err:%v", err)
return
} else {
this.suit = make(map[int32][]*cfg.GameEquipData)
for _, v := range v.(*cfg.GameEquip).GetDataList() {
if this.suit[v.Suittype] == nil {
this.suit[v.Suittype] = make([]*cfg.GameEquipData, 0)
this.lvs = make(map[string][]*cfg.GameExclusiveUpgradeData)
for _, v := range v.(*cfg.GameExclusiveUpgrade).GetDataList() {
if this.lvs[v.Weaponid] == nil {
this.lvs[v.Weaponid] = make([]*cfg.GameExclusiveUpgradeData, 0)
}
this.suit[v.Suittype] = append(this.suit[v.Suittype], v)
this.lvs[v.Weaponid] = append(this.lvs[v.Weaponid], v)
}
}
this.equiplock.Unlock()
this.lock.Unlock()
})
//星级
configure.RegisterConfigure(game_exclusivestar, cfg.NewGameExclusiveStar, func() {
this.lock.Lock()
if v, err := this.GetConfigure(game_exclusivestar); err != nil {
this.module.Errorf("err:%v", err)
return
} else {
this.stars = make(map[string][]*cfg.GameExclusiveStarData)
for _, v := range v.(*cfg.GameExclusiveStar).GetDataList() {
if this.stars[v.Weaponid] == nil {
this.stars[v.Weaponid] = make([]*cfg.GameExclusiveStarData, 0)
}
this.stars[v.Weaponid] = append(this.stars[v.Weaponid], v)
}
}
this.lock.Unlock()
})
//星级
configure.RegisterConfigure(game_exclusiverack, cfg.NewGameExclusiveRank, func() {
this.lock.Lock()
if v, err := this.GetConfigure(game_exclusiverack); err != nil {
this.module.Errorf("err:%v", err)
return
} else {
this.ranks = make(map[string][]*cfg.GameExclusiveRankData)
for _, v := range v.(*cfg.GameExclusiveRank).GetDataList() {
if this.ranks[v.Weaponid] == nil {
this.ranks[v.Weaponid] = make([]*cfg.GameExclusiveRankData, 0)
}
this.ranks[v.Weaponid] = append(this.ranks[v.Weaponid], v)
}
}
this.lock.Unlock()
})
return
}
// 获取全部资源
func (this *configureComp) GetAllEquipmentConfigure() (configure []*cfg.GameEquipData) {
if v, err := this.GetConfigure(game_equip); err == nil {
configure = v.(*cfg.GameEquip).GetDataList()
//获取全部资源
func (this *configureComp) GetAllGameExclusiveWeapon() (conf *cfg.GameExclusiveWeapon, err error) {
var (
v interface{}
)
if v, err = this.GetConfigure(game_exclusiveweapon); err == nil {
conf = v.(*cfg.GameExclusiveWeapon)
return
}
return
}
// 获取装备配置数据
func (this *configureComp) GetEquipmentConfigure() (configure *cfg.GameEquip, err error) {
//获取全部资源
func (this *configureComp) GetGameExclusiveItem(id string) (conf *cfg.GameExclusiveItemData, err error) {
var (
v interface{}
ok bool
)
if v, err = this.GetConfigure(game_equip); err != nil {
if v, err = this.GetConfigure(game_exclusiveitem); err != nil {
this.module.Errorf("err:%v", err)
return
} else {
if configure, ok = v.(*cfg.GameEquip); !ok {
err = fmt.Errorf("%T no is *cfg.Game_equipment", v)
if conf, ok = v.(*cfg.GameExclusiveItem).GetDataMap()[id]; !ok {
err = comm.NewNotFoundConfErr(string(this.module.GetType()), game_exclusiveitem, id)
this.module.Errorf("err:%v", err)
return
}
@ -75,56 +121,59 @@ func (this *configureComp) GetEquipmentConfigure() (configure *cfg.GameEquip, er
return
}
// 获取装备配置数据
func (this *configureComp) GetSuitEquipmentConfigure(suitid int32) (configures []*cfg.GameEquipData, err error) {
var ok bool
this.equiplock.RLock()
configures, ok = this.suit[suitid]
this.equiplock.RUnlock()
if !ok {
err = fmt.Errorf("no found suitid:%d", suitid)
}
return
}
// 获取装备配置数据
func (this *configureComp) GetEquipmentConfigureById(equipmentId string) (configure *cfg.GameEquipData, err error) {
var (
v interface{}
ok bool
)
if v, err = this.GetConfigure(game_equip); err != nil {
this.module.Errorf("err:%v", err)
return
} else {
if configure, ok = v.(*cfg.GameEquip).GetDataMap()[equipmentId]; !ok {
// err = fmt.Errorf("EquipmentConfigure not found:%s ", equipmentId)
err = comm.NewNotFoundConfErr(string(this.module.GetType()), game_equip, equipmentId)
this.module.Errorf("err:%v", err)
return
}
}
return
}
// 获取装备配置数据
func (this *configureComp) GetEquipmentConfigureByIds(equipmentId []string) (configure []*cfg.GameEquipData, err error) {
var (
t interface{}
c *cfg.GameEquipData
ok bool
)
if t, err = this.GetConfigure(game_equip); err != nil {
this.module.Errorf("err:%v", err)
return
} else {
configure = make([]*cfg.GameEquipData, len(equipmentId))
for i, v := range equipmentId {
if c, ok = t.(*cfg.GameEquip).GetDataMap()[v]; ok {
configure[i] = c
//获取全部资源
func (this *configureComp) GetGameExclusiveUpgradeData(cid string, lv int32) (conf *cfg.GameExclusiveUpgradeData, err error) {
this.lock.RLock()
defer this.lock.RUnlock()
if _, ok := this.lvs[cid]; ok {
for _, v := range this.lvs[cid] {
if v.Lv == lv {
conf = v
return
}
}
err = comm.NewNotFoundConfErr(string(this.module.GetType()), game_exclusiveupgrade, fmt.Sprintf("%s-%d", cid, lv))
return
} else {
err = comm.NewNotFoundConfErr(string(this.module.GetType()), game_exclusiveupgrade, cid)
return
}
}
//获取全部资源
func (this *configureComp) GetGameExclusiveStarData(cid string, star int32) (conf *cfg.GameExclusiveStarData, err error) {
this.lock.RLock()
defer this.lock.RUnlock()
if _, ok := this.stars[cid]; ok {
for _, v := range this.stars[cid] {
if v.Star == star {
conf = v
return
}
}
err = comm.NewNotFoundConfErr(string(this.module.GetType()), game_exclusiveupgrade, fmt.Sprintf("%s-%d", cid, star))
return
} else {
err = comm.NewNotFoundConfErr(string(this.module.GetType()), game_exclusiveupgrade, cid)
return
}
}
//获取全部资源
func (this *configureComp) GetGameExclusiveRankData(cid string, rank int32) (conf *cfg.GameExclusiveRankData, err error) {
this.lock.RLock()
defer this.lock.RUnlock()
if _, ok := this.ranks[cid]; ok {
for _, v := range this.ranks[cid] {
if v.Rank == rank {
conf = v
return
}
}
err = comm.NewNotFoundConfErr(string(this.module.GetType()), game_exclusiveupgrade, fmt.Sprintf("%s-%d", cid, rank))
return
} else {
err = comm.NewNotFoundConfErr(string(this.module.GetType()), game_exclusiveupgrade, cid)
return
}
return
}

View File

@ -5,8 +5,10 @@ import (
"go_dreamfactory/lego/core"
"go_dreamfactory/modules"
"go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs"
"go_dreamfactory/sys/db"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/x/bsonx"
)
@ -29,91 +31,77 @@ func (this *modelComp) Init(service core.IService, module core.IModule, comp cor
return
}
// 查询用户装备数据
func (this *modelComp) QueryUserEquipmentsById(uId, id string) (equipment *pb.DB_Equipment, err error) {
equipment = &pb.DB_Equipment{}
err = this.GetListObj(uId, id, equipment)
return
}
// 查询用户装备数据
func (this *modelComp) QueryUserEquipmentsByIds(uId string, ids []string) (equipments []*pb.DB_Equipment, err error) {
equipments = []*pb.DB_Equipment{}
if err = this.GetListObjs(uId, ids, &equipments); err != nil {
this.module.Errorf("err:%v", err)
// 更新埋点数据到db中
func (this *modelComp) getburiedModel(uid string) (model *exclusiveModel, err error) {
var m *db.DBModel
if db.IsCross() {
if m, err = this.module.GetDBModelByUid(uid, this.TableName); err != nil {
return
}
model = &exclusiveModel{module: this.module, model: m}
} else {
model = &exclusiveModel{module: this.module, model: this.DBModel}
}
return
}
// /查询用户的武器背包
func (this *modelComp) QueryUserEquipments(uId string) (exclusives []*pb.DB_Exclusive, err error) {
func (this *modelComp) getExclusives(uId string) (list []*pb.DB_Exclusive, err error) {
var (
model *db.DBModel
model *exclusiveModel
)
exclusives = make([]*pb.DB_Exclusive, 0)
if this.module.IsCross() {
if model, err = this.module.GetDBModelByUid(uId, this.TableName); err != nil {
this.module.Errorln(err)
} else {
if err = model.GetList(uId, &exclusives); err != nil {
this.module.Errorf("err:%v", err)
}
}
} else {
if err = this.GetList(uId, &exclusives); err != nil {
this.module.Errorf("err:%v", err)
}
if model, err = this.getburiedModel(uId); err != nil {
return
}
list, err = model.getExclusives(uId)
return
}
func (this *modelComp) addEquipments(uid string, exclusives []*pb.DB_Exclusive) (err error) {
// /查询用户的武器背包
func (this *modelComp) getExclusivesById(uId, oid string) (info *pb.DB_Exclusive, err error) {
var (
model *db.DBModel
equipsMap map[string]*pb.DB_Exclusive = make(map[string]*pb.DB_Exclusive)
model *exclusiveModel
)
for _, v := range exclusives {
equipsMap[v.Id] = v
if model, err = this.getburiedModel(uId); err != nil {
return
}
if this.module.IsCross() {
if model, err = this.module.GetDBModelByUid(uid, this.TableName); err != nil {
this.module.Errorln(err)
} else {
if err = model.AddLists(uid, equipsMap); err != nil {
this.module.Errorf("err:%v", err)
return
}
}
} else {
if err = this.AddLists(uid, equipsMap); err != nil {
this.module.Errorf("err:%v", err)
return
}
info, err = model.getExclusivesById(uId, oid)
return
}
// /查询用户的武器背包
func (this *modelComp) getExclusivesByIds(uId string, oids []string) (list []*pb.DB_Exclusive, err error) {
var (
model *exclusiveModel
)
if model, err = this.getburiedModel(uId); err != nil {
return
}
list, err = model.getExclusivesByIds(uId, oids)
return
}
func (this *modelComp) addExclusives(uid string, cIds map[string]int32) (change []*pb.DB_Exclusive, err error) {
var (
model *exclusiveModel
)
if model, err = this.getburiedModel(uid); err != nil {
return
}
change, err = model.addExclusives(uid, cIds)
return
}
// 删除装备
func (this *modelComp) DelEquipments(uId string, eIds []string) (change []*pb.DB_Exclusive, err error) {
func (this *modelComp) delExclusives(uId string, eIds []string) (change []*pb.DB_Exclusive, err error) {
var (
model *db.DBModel
model *exclusiveModel
)
change = make([]*pb.DB_Exclusive, 0)
if this.module.IsCross() {
if model, err = this.module.GetDBModelByUid(uId, this.TableName); err != nil {
this.module.Errorln(err)
} else {
if err = model.DelListlds(uId, eIds); err != nil {
this.module.Errorln(err)
return
}
}
} else {
if err = this.DelListlds(uId, eIds); err != nil {
this.module.Errorln(err)
return
}
if model, err = this.getburiedModel(uId); err != nil {
return
}
if err = model.delExclusive(uId, eIds); err != nil {
return
}
for _, v := range eIds {
change = append(change, &pb.DB_Exclusive{
@ -125,33 +113,148 @@ func (this *modelComp) DelEquipments(uId string, eIds []string) (change []*pb.DB
}
// 更新武器挂载信息
func (this *modelComp) UpdateByHeroId(uid string, exclusives ...*pb.DB_Equipment) (err error) {
func (this *modelComp) updateExclusive(uid string, exclusives ...*pb.DB_Exclusive) (err error) {
var (
model *exclusiveModel
)
if model, err = this.getburiedModel(uid); err != nil {
return
}
err = model.updateExclusive(uid, exclusives)
return
}
// 埋点专属模型 会封装特殊的数据转换接口
type exclusiveModel struct {
module *Exclusive
model *db.DBModel
}
// /查询用户的武器背包
func (this *exclusiveModel) getExclusives(uId string) (list []*pb.DB_Exclusive, err error) {
var (
model *db.DBModel
)
if this.module.IsCross() {
if model, err = this.module.GetDBModelByUid(uid, this.TableName); err != nil {
this.module.Errorln(err)
} else {
for _, v := range exclusives {
if err = model.ChangeList(uid, v.Id, map[string]interface{}{
"heroId": v.HeroId,
}); err != nil {
this.module.Errorf("err:%v", err)
return
list = make([]*pb.DB_Exclusive, 0)
if err = model.GetList(uId, &list); err != nil {
this.module.Errorf("err:%v", err)
}
return
}
// /查询用户的武器背包
func (this *exclusiveModel) getExclusivesById(uId string, oid string) (info *pb.DB_Exclusive, err error) {
var (
model *db.DBModel
)
info = &pb.DB_Exclusive{}
if err = model.GetListObj(uId, oid, info); err != nil {
this.module.Errorf("err:%v", err)
}
return
}
// /查询用户的武器背包
func (this *exclusiveModel) getExclusivesByIds(uId string, oid []string) (list []*pb.DB_Exclusive, err error) {
var (
model *db.DBModel
)
list = make([]*pb.DB_Exclusive, 0)
if err = model.GetListObjs(uId, oid, &list); err != nil {
this.module.Errorf("err:%v", err)
}
return
}
func (this *exclusiveModel) addExclusives(uId string, cIds map[string]int32) (change []*pb.DB_Exclusive, err error) {
var (
conf *cfg.GameExclusiveWeapon
add map[string]*pb.DB_Exclusive
)
if conf, err = this.module.configure.GetAllGameExclusiveWeapon(); err != nil {
return
}
add = make(map[string]*pb.DB_Exclusive)
change = make([]*pb.DB_Exclusive, 0, 10)
for k, v := range cIds {
if c, ok := conf.GetDataMap()[k]; ok {
for i := int32(0); i < v; i++ {
if equipment, err := this.newEquipment(uId, c); err != nil {
return nil, err
} else {
add[equipment.Id] = equipment
change = append(change, equipment)
}
}
}
} else {
for _, v := range exclusives {
if err = this.ChangeList(uid, v.Id, map[string]interface{}{
"heroId": v.HeroId,
}); err != nil {
this.module.Errorf("err:%v", err)
return
}
} else {
this.module.Errorf("cfg.Game_equipment not found equip id %s", k)
}
}
if len(add) > 0 {
if err = this.model.AddLists(uId, add); err != nil {
this.module.Errorf("err:%v", err)
return
}
}
return
}
func (this *exclusiveModel) delExclusive(uId string, oid []string) (err error) {
if err = this.model.DelListlds(uId, oid); err != nil {
this.module.Errorf("err:%v", err)
return
}
return
}
func (this *exclusiveModel) updateExclusive(uid string, list []*pb.DB_Exclusive) (err error) {
var (
datas map[string]interface{} = make(map[string]interface{})
)
for _, v := range list {
datas[v.Id] = map[string]interface{}{
"hero": v.Hero,
"star": v.Star,
"lv": v.Lv,
"step": v.Step,
"exp": v.Exp,
"property": v.Property,
"commonskill": v.Commonskill,
"Exclusiveskill": v.Exclusiveskill,
}
}
err = this.model.ChangeLists(uid, datas)
return
}
func (this *exclusiveModel) newEquipment(uId string, conf *cfg.GameExclusiveWeaponData) (equipment *pb.DB_Exclusive, err error) {
var (
lvconf *cfg.GameExclusiveUpgradeData
starconf *cfg.GameExclusiveStarData
)
equipment = &pb.DB_Exclusive{
Id: primitive.NewObjectID().Hex(),
UId: uId,
CId: conf.Weaponid,
Lv: 1,
Star: 1,
Step: 1,
Property: make(map[int32]int32),
}
if lvconf, err = this.module.configure.GetGameExclusiveUpgradeData(conf.Weaponid, 1); err != nil {
return
}
if starconf, err = this.module.configure.GetGameExclusiveStarData(conf.Weaponid, 1); err != nil {
return
}
for _, v := range lvconf.Attribute {
equipment.Property[v.A] = v.N
}
equipment.Commonskill = starconf.Commonskill
equipment.Exclusiveskill = starconf.Exclusiveskill
return
}

View File

@ -5,6 +5,7 @@ import (
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/event"
"go_dreamfactory/modules"
"go_dreamfactory/pb"
)
const moduleName = "专武"
@ -60,7 +61,51 @@ func (this *Exclusive) OnInstallComp() {
this.configure = this.RegisterComp(new(configureComp)).(*configureComp)
}
// 添加武器
func (this *Exclusive) AddNewExclusive(session comm.IUserSession, cIds map[string]int32, bPush bool) (change []*pb.DB_Exclusive, errdata *pb.ErrorData) {
var (
err error
)
if change, err = this.model.addExclusives(session.GetUserId(), cIds); err != nil {
this.Errorf("err%v", err)
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Message: err.Error(),
}
return
}
if len(change) > 0 && bPush {
this.equipmentsChangePush(session, change)
}
return
}
// 添加武器
func (this *Exclusive) DelNewExclusive(session comm.IUserSession, cIds []string, bPush bool) (change []*pb.DB_Exclusive, errdata *pb.ErrorData) {
var (
err error
)
if change, err = this.model.delExclusives(session.GetUserId(), cIds); err != nil {
this.Errorf("err%v", err)
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Message: err.Error(),
}
return
}
if len(change) > 0 && bPush {
this.equipmentsChangePush(session, change)
}
return
}
// Event------------------------------------------------------------------------------------------------------------
func (this *Exclusive) EventUserOffline(uid, sessionid string) {
this.model.BatchDelLists(uid)
}
// 推送道具变化消息
func (this *Exclusive) equipmentsChangePush(session comm.IUserSession, items []*pb.DB_Exclusive) (err error) {
session.SendMsg(string(this.GetType()), "change", &pb.ExclusiveChangePush{Exclusives: items})
return
}

View File

@ -462,6 +462,40 @@ func (this *ModelHero) setEquipProperty(hero *pb.DBHero, equip []*pb.DB_Equipmen
this.mergeAddProperty(hero.Uid, hero, addProperty, equipSkill)
}
// 设置装备属性
func (this *ModelHero) setExclusiveProperty(hero *pb.DBHero, exw *pb.DB_Exclusive) {
addProperty := make(map[int32]int32) //副属性
equipSkill := make([]*pb.SkillData, 0)
hero.Exclusiveid = exw.Id
for k, v := range exw.Property {
addProperty[k] = v //附加属性
}
hero.ExclusiveProperty = addProperty
if exw.Commonskill != 0 {
equipSkill = append(equipSkill, &pb.SkillData{
SkillID: exw.Commonskill,
SkillLv: 1,
})
}
if exw.Exclusiveskill != 0 {
equipSkill = append(equipSkill, &pb.SkillData{
SkillID: exw.Exclusiveskill,
SkillLv: 1,
})
}
hero.ExclusiveSkill = equipSkill
this.calFigthValue(hero)
if err := this.ChangeList(hero.Uid, hero.Id, map[string]interface{}{
"exclusiveid": hero.Exclusiveid,
"exclusiveProperty": hero.ExclusiveProperty,
"exclusiveSkill": hero.ExclusiveSkill,
}); err != nil {
this.module.Errorf("mergeAddProperty err %v", err)
}
}
// 设置装备
func (this *ModelHero) setEquipment(uid string, hero *pb.DBHero) (newHero *pb.DBHero, err error) {
if len(hero.EquipID) == 0 {

View File

@ -134,6 +134,22 @@ func (this *Hero) UpdateEquipment(session comm.IUserSession, hero *pb.DBHero, eq
return
}
// 佩戴专属武器
func (this *Hero) UpdateExclusive(session comm.IUserSession, hero *pb.DBHero, exw *pb.DB_Exclusive) (errdata *pb.ErrorData) {
if hero == nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_HeroNoExist,
Title: pb.ErrorCode_HeroNoExist.ToString(),
}
return
}
list := make([]*pb.DBHero, 0)
list = append(list, hero)
this.modelHero.setExclusiveProperty(hero, exw)
session.SendMsg("hero", "change", &pb.HeroChangePush{List: list})
return
}
// 英雄列表
func (this *Hero) GetHeroList(uid string) []*pb.DBHero {
return this.modelHero.getHeroList(uid)

View File

@ -47,6 +47,7 @@ type ModuleBase struct {
ModuleUiGame comm.IUiGame //
ModuleDragon comm.IDragon //
ModuleEntertain comm.IEntertainment //
ModuleExclusive comm.IExclusive //专属武器
}
// 重构模块配置对象
@ -723,21 +724,23 @@ func (this *ModuleBase) Panicln(args ...interface{}) {
// 发放资源
func (this *ModuleBase) DispenseAtno(session comm.IUserSession, res []*cfg.Gameatn, bPush bool) (errdata *pb.ErrorData, atno []*pb.UserAtno) {
var (
items map[string]int32 // 道具背包 批量处理
heros map[string]int32 // 英雄
attrs map[string]int32 // 属性
equips map[string]uint32 // 装备
vip map[string]int32 // vip
atlas map[string]int32 // 铁匠铺资源
panda map[string]int32 // 熊猫武馆资源
mts map[string]int32 // 捕羊大赛资源
per map[string]int32 // 捕羊大赛资源
title map[string]int32 // 称号资源
xxl map[string]int32 // 三消资源
xxlSkill map[string]int32 // 三消资源
equipschange []*pb.DB_Equipment
heroschange []*pb.UserAtno
itemschange []*pb.UserAtno
items map[string]int32 // 道具背包 批量处理
heros map[string]int32 // 英雄
attrs map[string]int32 // 属性
equips map[string]uint32 // 装备
vip map[string]int32 // vip
atlas map[string]int32 // 铁匠铺资源
panda map[string]int32 // 熊猫武馆资源
mts map[string]int32 // 捕羊大赛资源
per map[string]int32 // 捕羊大赛资源
title map[string]int32 // 称号资源
xxl map[string]int32 // 三消资源
xxlSkill map[string]int32 // 三消资源
exw map[string]int32 // 专属武器
equipschange []*pb.DB_Equipment
heroschange []*pb.UserAtno
itemschange []*pb.UserAtno
exclusivechange []*pb.DB_Exclusive
)
items = make(map[string]int32, 0)
heros = make(map[string]int32, 0)
@ -751,6 +754,7 @@ func (this *ModuleBase) DispenseAtno(session comm.IUserSession, res []*cfg.Gamea
title = make(map[string]int32, 0)
xxl = make(map[string]int32, 0)
xxlSkill = make(map[string]int32, 0)
exw = make(map[string]int32, 0)
for _, v := range res {
switch v.A {
@ -782,6 +786,8 @@ func (this *ModuleBase) DispenseAtno(session comm.IUserSession, res []*cfg.Gamea
xxl[v.T] += v.N
case comm.XxlSkill:
xxlSkill[v.T] += v.N
case comm.ExclusiveType:
exw[v.T] += v.N
default:
this.Error("not found res type", log.Field{Key: "Type", Value: v.A}) // 找不到资源类型
}
@ -822,9 +828,9 @@ func (this *ModuleBase) DispenseAtno(session comm.IUserSession, res []*cfg.Gamea
}
for _, v := range equipschange {
atno = append(atno, &pb.UserAtno{
A: "equi",
A: comm.EquipmentType,
T: v.CId,
N: int32(len(equips)),
N: 1,
O: v.Id,
})
}
@ -936,7 +942,20 @@ func (this *ModuleBase) DispenseAtno(session comm.IUserSession, res []*cfg.Gamea
}
this.Debugf("发放三消技能卡片资源资源: %v errdata: %v", xxlSkill, errdata)
}
if len(exw) > 0 {
if exclusivechange, errdata = this.ModuleExclusive.AddNewExclusive(session, exw, bPush); errdata != nil {
return
}
for _, v := range exclusivechange {
atno = append(atno, &pb.UserAtno{
A: comm.ExclusiveType, //,
T: v.CId,
N: 1,
O: v.Id,
})
}
this.Debugf("发放三消技能卡片资源资源: %v errdata: %v", xxlSkill, errdata)
}
return
}

View File

@ -29,7 +29,7 @@ type DB_Exclusive struct {
Id string `protobuf:"bytes,1,opt,name=Id,proto3" json:"Id" bson:"_id"` // 专武id
CId string `protobuf:"bytes,2,opt,name=cId,proto3" json:"cId" bson:"cId"` // 配置Id
UId string `protobuf:"bytes,3,opt,name=uId,proto3" json:"uId" bson:"uid"` // 所属玩家Id
HeroId string `protobuf:"bytes,4,opt,name=heroId,proto3" json:"heroId" bson:"heroId"` // 挂在的英雄卡片id 未装备 填 ''
Hero string `protobuf:"bytes,4,opt,name=hero,proto3" json:"hero" bson:"heroId"` // 挂在的英雄卡片id 未装备 填 ''
Lv int32 `protobuf:"varint,5,opt,name=lv,proto3" json:"lv" bson:"lv"` //等级
Star int32 `protobuf:"varint,6,opt,name=star,proto3" json:"star" bson:"star"` //星级
Step int32 `protobuf:"varint,7,opt,name=step,proto3" json:"step"` // 阶
@ -92,9 +92,9 @@ func (x *DB_Exclusive) GetUId() string {
return ""
}
func (x *DB_Exclusive) GetHeroId() string {
func (x *DB_Exclusive) GetHero() string {
if x != nil {
return x.HeroId
return x.Hero
}
return ""
}
@ -152,31 +152,31 @@ var File_exclusive_exclusive_db_proto protoreflect.FileDescriptor
var file_exclusive_exclusive_db_proto_rawDesc = []byte{
0x0a, 0x1c, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x2f, 0x65, 0x78, 0x63, 0x6c,
0x75, 0x73, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe4,
0x75, 0x73, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe0,
0x02, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x12,
0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, 0x12,
0x10, 0x0a, 0x03, 0x63, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x49,
0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
0x75, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x18, 0x04, 0x20,
0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x6c,
0x76, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x6c, 0x76, 0x12, 0x12, 0x0a, 0x04, 0x73,
0x74, 0x61, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x74, 0x61, 0x72, 0x12,
0x12, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73,
0x74, 0x65, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x78, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05,
0x52, 0x03, 0x65, 0x78, 0x70, 0x12, 0x37, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74,
0x79, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x44, 0x42, 0x5f, 0x45, 0x78, 0x63,
0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45,
0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x20,
0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x18, 0x0a, 0x20,
0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x73, 0x6b, 0x69, 0x6c, 0x6c,
0x12, 0x26, 0x0a, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x73, 0x6b, 0x69,
0x6c, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73,
0x69, 0x76, 0x65, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x1a, 0x3b, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x70,
0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x33,
0x75, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28,
0x09, 0x52, 0x04, 0x68, 0x65, 0x72, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x6c, 0x76, 0x18, 0x05, 0x20,
0x01, 0x28, 0x05, 0x52, 0x02, 0x6c, 0x76, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x74, 0x61, 0x72, 0x18,
0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x74, 0x61, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x73,
0x74, 0x65, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x12,
0x10, 0x0a, 0x03, 0x65, 0x78, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x78,
0x70, 0x12, 0x37, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x09, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x44, 0x42, 0x5f, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69,
0x76, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79,
0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f,
0x6d, 0x6d, 0x6f, 0x6e, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52,
0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x12, 0x26, 0x0a, 0x0e,
0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x18, 0x0b,
0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x73,
0x6b, 0x69, 0x6c, 0x6c, 0x1a, 0x3b, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79,
0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
0x01, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x33,
}
var (

View File

@ -107,20 +107,130 @@ func (x *ExclusiveGetListResp) GetExclusives() []*DB_Exclusive {
return nil
}
// 升级
type ExclusiveUpgradeReq struct {
// 加经验
type ExclusiveAddExpReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Oid string `protobuf:"bytes,1,opt,name=oid,proto3" json:"oid"`
Itemid string `protobuf:"bytes,2,opt,name=itemid,proto3" json:"itemid"`
Num int32 `protobuf:"varint,3,opt,name=num,proto3" json:"num"`
}
func (x *ExclusiveAddExpReq) Reset() {
*x = ExclusiveAddExpReq{}
if protoimpl.UnsafeEnabled {
mi := &file_exclusive_exclusive_msg_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ExclusiveAddExpReq) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ExclusiveAddExpReq) ProtoMessage() {}
func (x *ExclusiveAddExpReq) ProtoReflect() protoreflect.Message {
mi := &file_exclusive_exclusive_msg_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ExclusiveAddExpReq.ProtoReflect.Descriptor instead.
func (*ExclusiveAddExpReq) Descriptor() ([]byte, []int) {
return file_exclusive_exclusive_msg_proto_rawDescGZIP(), []int{2}
}
func (x *ExclusiveAddExpReq) GetOid() string {
if x != nil {
return x.Oid
}
return ""
}
func (x *ExclusiveAddExpReq) GetItemid() string {
if x != nil {
return x.Itemid
}
return ""
}
func (x *ExclusiveAddExpReq) GetNum() int32 {
if x != nil {
return x.Num
}
return 0
}
type ExclusiveAddExpResp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Exclusives *DB_Exclusive `protobuf:"bytes,1,opt,name=Exclusives,proto3" json:"Exclusives"`
}
func (x *ExclusiveAddExpResp) Reset() {
*x = ExclusiveAddExpResp{}
if protoimpl.UnsafeEnabled {
mi := &file_exclusive_exclusive_msg_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ExclusiveAddExpResp) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ExclusiveAddExpResp) ProtoMessage() {}
func (x *ExclusiveAddExpResp) ProtoReflect() protoreflect.Message {
mi := &file_exclusive_exclusive_msg_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ExclusiveAddExpResp.ProtoReflect.Descriptor instead.
func (*ExclusiveAddExpResp) Descriptor() ([]byte, []int) {
return file_exclusive_exclusive_msg_proto_rawDescGZIP(), []int{3}
}
func (x *ExclusiveAddExpResp) GetExclusives() *DB_Exclusive {
if x != nil {
return x.Exclusives
}
return nil
}
// 升级
type ExclusiveUpgradeReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Oid string `protobuf:"bytes,1,opt,name=oid,proto3" json:"oid"`
}
func (x *ExclusiveUpgradeReq) Reset() {
*x = ExclusiveUpgradeReq{}
if protoimpl.UnsafeEnabled {
mi := &file_exclusive_exclusive_msg_proto_msgTypes[2]
mi := &file_exclusive_exclusive_msg_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -133,7 +243,7 @@ func (x *ExclusiveUpgradeReq) String() string {
func (*ExclusiveUpgradeReq) ProtoMessage() {}
func (x *ExclusiveUpgradeReq) ProtoReflect() protoreflect.Message {
mi := &file_exclusive_exclusive_msg_proto_msgTypes[2]
mi := &file_exclusive_exclusive_msg_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -146,7 +256,7 @@ func (x *ExclusiveUpgradeReq) ProtoReflect() protoreflect.Message {
// Deprecated: Use ExclusiveUpgradeReq.ProtoReflect.Descriptor instead.
func (*ExclusiveUpgradeReq) Descriptor() ([]byte, []int) {
return file_exclusive_exclusive_msg_proto_rawDescGZIP(), []int{2}
return file_exclusive_exclusive_msg_proto_rawDescGZIP(), []int{4}
}
func (x *ExclusiveUpgradeReq) GetOid() string {
@ -156,13 +266,6 @@ func (x *ExclusiveUpgradeReq) GetOid() string {
return ""
}
func (x *ExclusiveUpgradeReq) GetItemid() string {
if x != nil {
return x.Itemid
}
return ""
}
type ExclusiveUpgradeResp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@ -174,7 +277,7 @@ type ExclusiveUpgradeResp struct {
func (x *ExclusiveUpgradeResp) Reset() {
*x = ExclusiveUpgradeResp{}
if protoimpl.UnsafeEnabled {
mi := &file_exclusive_exclusive_msg_proto_msgTypes[3]
mi := &file_exclusive_exclusive_msg_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -187,7 +290,7 @@ func (x *ExclusiveUpgradeResp) String() string {
func (*ExclusiveUpgradeResp) ProtoMessage() {}
func (x *ExclusiveUpgradeResp) ProtoReflect() protoreflect.Message {
mi := &file_exclusive_exclusive_msg_proto_msgTypes[3]
mi := &file_exclusive_exclusive_msg_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -200,7 +303,7 @@ func (x *ExclusiveUpgradeResp) ProtoReflect() protoreflect.Message {
// Deprecated: Use ExclusiveUpgradeResp.ProtoReflect.Descriptor instead.
func (*ExclusiveUpgradeResp) Descriptor() ([]byte, []int) {
return file_exclusive_exclusive_msg_proto_rawDescGZIP(), []int{3}
return file_exclusive_exclusive_msg_proto_rawDescGZIP(), []int{5}
}
func (x *ExclusiveUpgradeResp) GetExclusives() *DB_Exclusive {
@ -216,13 +319,14 @@ type ExclusiveStarUpReq struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Oid string `protobuf:"bytes,1,opt,name=oid,proto3" json:"oid"`
Oid string `protobuf:"bytes,1,opt,name=oid,proto3" json:"oid"`
Eatid []string `protobuf:"bytes,2,rep,name=eatid,proto3" json:"eatid"`
}
func (x *ExclusiveStarUpReq) Reset() {
*x = ExclusiveStarUpReq{}
if protoimpl.UnsafeEnabled {
mi := &file_exclusive_exclusive_msg_proto_msgTypes[4]
mi := &file_exclusive_exclusive_msg_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -235,7 +339,7 @@ func (x *ExclusiveStarUpReq) String() string {
func (*ExclusiveStarUpReq) ProtoMessage() {}
func (x *ExclusiveStarUpReq) ProtoReflect() protoreflect.Message {
mi := &file_exclusive_exclusive_msg_proto_msgTypes[4]
mi := &file_exclusive_exclusive_msg_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -248,7 +352,7 @@ func (x *ExclusiveStarUpReq) ProtoReflect() protoreflect.Message {
// Deprecated: Use ExclusiveStarUpReq.ProtoReflect.Descriptor instead.
func (*ExclusiveStarUpReq) Descriptor() ([]byte, []int) {
return file_exclusive_exclusive_msg_proto_rawDescGZIP(), []int{4}
return file_exclusive_exclusive_msg_proto_rawDescGZIP(), []int{6}
}
func (x *ExclusiveStarUpReq) GetOid() string {
@ -258,6 +362,13 @@ func (x *ExclusiveStarUpReq) GetOid() string {
return ""
}
func (x *ExclusiveStarUpReq) GetEatid() []string {
if x != nil {
return x.Eatid
}
return nil
}
type ExclusiveStarUpResp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@ -269,7 +380,7 @@ type ExclusiveStarUpResp struct {
func (x *ExclusiveStarUpResp) Reset() {
*x = ExclusiveStarUpResp{}
if protoimpl.UnsafeEnabled {
mi := &file_exclusive_exclusive_msg_proto_msgTypes[5]
mi := &file_exclusive_exclusive_msg_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -282,7 +393,7 @@ func (x *ExclusiveStarUpResp) String() string {
func (*ExclusiveStarUpResp) ProtoMessage() {}
func (x *ExclusiveStarUpResp) ProtoReflect() protoreflect.Message {
mi := &file_exclusive_exclusive_msg_proto_msgTypes[5]
mi := &file_exclusive_exclusive_msg_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -295,7 +406,7 @@ func (x *ExclusiveStarUpResp) ProtoReflect() protoreflect.Message {
// Deprecated: Use ExclusiveStarUpResp.ProtoReflect.Descriptor instead.
func (*ExclusiveStarUpResp) Descriptor() ([]byte, []int) {
return file_exclusive_exclusive_msg_proto_rawDescGZIP(), []int{5}
return file_exclusive_exclusive_msg_proto_rawDescGZIP(), []int{7}
}
func (x *ExclusiveStarUpResp) GetExclusives() *DB_Exclusive {
@ -305,6 +416,203 @@ func (x *ExclusiveStarUpResp) GetExclusives() *DB_Exclusive {
return nil
}
// 升星
type ExclusiveRankUpReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Oid string `protobuf:"bytes,1,opt,name=oid,proto3" json:"oid"`
}
func (x *ExclusiveRankUpReq) Reset() {
*x = ExclusiveRankUpReq{}
if protoimpl.UnsafeEnabled {
mi := &file_exclusive_exclusive_msg_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ExclusiveRankUpReq) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ExclusiveRankUpReq) ProtoMessage() {}
func (x *ExclusiveRankUpReq) ProtoReflect() protoreflect.Message {
mi := &file_exclusive_exclusive_msg_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ExclusiveRankUpReq.ProtoReflect.Descriptor instead.
func (*ExclusiveRankUpReq) Descriptor() ([]byte, []int) {
return file_exclusive_exclusive_msg_proto_rawDescGZIP(), []int{8}
}
func (x *ExclusiveRankUpReq) GetOid() string {
if x != nil {
return x.Oid
}
return ""
}
type ExclusiveRankUpResp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Exclusives *DB_Exclusive `protobuf:"bytes,1,opt,name=Exclusives,proto3" json:"Exclusives"`
}
func (x *ExclusiveRankUpResp) Reset() {
*x = ExclusiveRankUpResp{}
if protoimpl.UnsafeEnabled {
mi := &file_exclusive_exclusive_msg_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ExclusiveRankUpResp) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ExclusiveRankUpResp) ProtoMessage() {}
func (x *ExclusiveRankUpResp) ProtoReflect() protoreflect.Message {
mi := &file_exclusive_exclusive_msg_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ExclusiveRankUpResp.ProtoReflect.Descriptor instead.
func (*ExclusiveRankUpResp) Descriptor() ([]byte, []int) {
return file_exclusive_exclusive_msg_proto_rawDescGZIP(), []int{9}
}
func (x *ExclusiveRankUpResp) GetExclusives() *DB_Exclusive {
if x != nil {
return x.Exclusives
}
return nil
}
type ExclusiveWearReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Oid string `protobuf:"bytes,1,opt,name=oid,proto3" json:"oid"`
Heroid string `protobuf:"bytes,2,opt,name=heroid,proto3" json:"heroid"`
}
func (x *ExclusiveWearReq) Reset() {
*x = ExclusiveWearReq{}
if protoimpl.UnsafeEnabled {
mi := &file_exclusive_exclusive_msg_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ExclusiveWearReq) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ExclusiveWearReq) ProtoMessage() {}
func (x *ExclusiveWearReq) ProtoReflect() protoreflect.Message {
mi := &file_exclusive_exclusive_msg_proto_msgTypes[10]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ExclusiveWearReq.ProtoReflect.Descriptor instead.
func (*ExclusiveWearReq) Descriptor() ([]byte, []int) {
return file_exclusive_exclusive_msg_proto_rawDescGZIP(), []int{10}
}
func (x *ExclusiveWearReq) GetOid() string {
if x != nil {
return x.Oid
}
return ""
}
func (x *ExclusiveWearReq) GetHeroid() string {
if x != nil {
return x.Heroid
}
return ""
}
type ExclusiveWearResp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Exclusives *DB_Exclusive `protobuf:"bytes,1,opt,name=Exclusives,proto3" json:"Exclusives"`
}
func (x *ExclusiveWearResp) Reset() {
*x = ExclusiveWearResp{}
if protoimpl.UnsafeEnabled {
mi := &file_exclusive_exclusive_msg_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ExclusiveWearResp) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ExclusiveWearResp) ProtoMessage() {}
func (x *ExclusiveWearResp) ProtoReflect() protoreflect.Message {
mi := &file_exclusive_exclusive_msg_proto_msgTypes[11]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ExclusiveWearResp.ProtoReflect.Descriptor instead.
func (*ExclusiveWearResp) Descriptor() ([]byte, []int) {
return file_exclusive_exclusive_msg_proto_rawDescGZIP(), []int{11}
}
func (x *ExclusiveWearResp) GetExclusives() *DB_Exclusive {
if x != nil {
return x.Exclusives
}
return nil
}
//推送装备背包变化
type ExclusiveChangePush struct {
state protoimpl.MessageState
@ -317,7 +625,7 @@ type ExclusiveChangePush struct {
func (x *ExclusiveChangePush) Reset() {
*x = ExclusiveChangePush{}
if protoimpl.UnsafeEnabled {
mi := &file_exclusive_exclusive_msg_proto_msgTypes[6]
mi := &file_exclusive_exclusive_msg_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@ -330,7 +638,7 @@ func (x *ExclusiveChangePush) String() string {
func (*ExclusiveChangePush) ProtoMessage() {}
func (x *ExclusiveChangePush) ProtoReflect() protoreflect.Message {
mi := &file_exclusive_exclusive_msg_proto_msgTypes[6]
mi := &file_exclusive_exclusive_msg_proto_msgTypes[12]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@ -343,7 +651,7 @@ func (x *ExclusiveChangePush) ProtoReflect() protoreflect.Message {
// Deprecated: Use ExclusiveChangePush.ProtoReflect.Descriptor instead.
func (*ExclusiveChangePush) Descriptor() ([]byte, []int) {
return file_exclusive_exclusive_msg_proto_rawDescGZIP(), []int{6}
return file_exclusive_exclusive_msg_proto_rawDescGZIP(), []int{12}
}
func (x *ExclusiveChangePush) GetExclusives() []*DB_Exclusive {
@ -365,28 +673,52 @@ var file_exclusive_exclusive_msg_proto_rawDesc = []byte{
0x65, 0x47, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2d, 0x0a, 0x0a,
0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x0d, 0x2e, 0x44, 0x42, 0x5f, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x52,
0x0a, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x73, 0x22, 0x3f, 0x0a, 0x13, 0x45,
0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52,
0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x03, 0x6f, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x69, 0x64, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x69, 0x64, 0x22, 0x45, 0x0a, 0x14,
0x0a, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x73, 0x22, 0x50, 0x0a, 0x12, 0x45,
0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x41, 0x64, 0x64, 0x45, 0x78, 0x70, 0x52, 0x65,
0x71, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
0x6f, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x69, 0x64, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6e,
0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x22, 0x44, 0x0a,
0x13, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x41, 0x64, 0x64, 0x45, 0x78, 0x70,
0x52, 0x65, 0x73, 0x70, 0x12, 0x2d, 0x0a, 0x0a, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76,
0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x44, 0x42, 0x5f, 0x45, 0x78,
0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x52, 0x0a, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69,
0x76, 0x65, 0x73, 0x22, 0x27, 0x0a, 0x13, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65,
0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x45, 0x0a, 0x14,
0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65,
0x52, 0x65, 0x73, 0x70, 0x12, 0x2d, 0x0a, 0x0a, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76,
0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x44, 0x42, 0x5f, 0x45, 0x78,
0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x52, 0x0a, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69,
0x76, 0x65, 0x73, 0x22, 0x26, 0x0a, 0x12, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65,
0x76, 0x65, 0x73, 0x22, 0x3c, 0x0a, 0x12, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65,
0x53, 0x74, 0x61, 0x72, 0x55, 0x70, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x44, 0x0a, 0x13, 0x45,
0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x72, 0x55, 0x70, 0x52, 0x65,
0x73, 0x70, 0x12, 0x2d, 0x0a, 0x0a, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x73,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x44, 0x42, 0x5f, 0x45, 0x78, 0x63, 0x6c,
0x75, 0x73, 0x69, 0x76, 0x65, 0x52, 0x0a, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65,
0x73, 0x22, 0x44, 0x0a, 0x13, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x43, 0x68,
0x61, 0x6e, 0x67, 0x65, 0x50, 0x75, 0x73, 0x68, 0x12, 0x2d, 0x0a, 0x0a, 0x45, 0x78, 0x63, 0x6c,
0x75, 0x73, 0x69, 0x76, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x44,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65,
0x61, 0x74, 0x69, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x65, 0x61, 0x74, 0x69,
0x64, 0x22, 0x44, 0x0a, 0x13, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x53, 0x74,
0x61, 0x72, 0x55, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2d, 0x0a, 0x0a, 0x45, 0x78, 0x63, 0x6c,
0x75, 0x73, 0x69, 0x76, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x44,
0x42, 0x5f, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x52, 0x0a, 0x45, 0x78, 0x63,
0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x73, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62,
0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x73, 0x22, 0x26, 0x0a, 0x12, 0x45, 0x78, 0x63, 0x6c, 0x75,
0x73, 0x69, 0x76, 0x65, 0x52, 0x61, 0x6e, 0x6b, 0x55, 0x70, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a,
0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22,
0x44, 0x0a, 0x13, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x52, 0x61, 0x6e, 0x6b,
0x55, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2d, 0x0a, 0x0a, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73,
0x69, 0x76, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x44, 0x42, 0x5f,
0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x52, 0x0a, 0x45, 0x78, 0x63, 0x6c, 0x75,
0x73, 0x69, 0x76, 0x65, 0x73, 0x22, 0x3c, 0x0a, 0x10, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69,
0x76, 0x65, 0x57, 0x65, 0x61, 0x72, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x68,
0x65, 0x72, 0x6f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x65, 0x72,
0x6f, 0x69, 0x64, 0x22, 0x42, 0x0a, 0x11, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65,
0x57, 0x65, 0x61, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2d, 0x0a, 0x0a, 0x45, 0x78, 0x63, 0x6c,
0x75, 0x73, 0x69, 0x76, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x44,
0x42, 0x5f, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x52, 0x0a, 0x45, 0x78, 0x63,
0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x73, 0x22, 0x44, 0x0a, 0x13, 0x45, 0x78, 0x63, 0x6c, 0x75,
0x73, 0x69, 0x76, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x75, 0x73, 0x68, 0x12, 0x2d,
0x0a, 0x0a, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x44, 0x42, 0x5f, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76,
0x65, 0x52, 0x0a, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x73, 0x42, 0x06, 0x5a,
0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -401,27 +733,36 @@ func file_exclusive_exclusive_msg_proto_rawDescGZIP() []byte {
return file_exclusive_exclusive_msg_proto_rawDescData
}
var file_exclusive_exclusive_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
var file_exclusive_exclusive_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 13)
var file_exclusive_exclusive_msg_proto_goTypes = []interface{}{
(*ExclusiveGetListReq)(nil), // 0: ExclusiveGetListReq
(*ExclusiveGetListResp)(nil), // 1: ExclusiveGetListResp
(*ExclusiveUpgradeReq)(nil), // 2: ExclusiveUpgradeReq
(*ExclusiveUpgradeResp)(nil), // 3: ExclusiveUpgradeResp
(*ExclusiveStarUpReq)(nil), // 4: ExclusiveStarUpReq
(*ExclusiveStarUpResp)(nil), // 5: ExclusiveStarUpResp
(*ExclusiveChangePush)(nil), // 6: ExclusiveChangePush
(*DB_Exclusive)(nil), // 7: DB_Exclusive
(*ExclusiveAddExpReq)(nil), // 2: ExclusiveAddExpReq
(*ExclusiveAddExpResp)(nil), // 3: ExclusiveAddExpResp
(*ExclusiveUpgradeReq)(nil), // 4: ExclusiveUpgradeReq
(*ExclusiveUpgradeResp)(nil), // 5: ExclusiveUpgradeResp
(*ExclusiveStarUpReq)(nil), // 6: ExclusiveStarUpReq
(*ExclusiveStarUpResp)(nil), // 7: ExclusiveStarUpResp
(*ExclusiveRankUpReq)(nil), // 8: ExclusiveRankUpReq
(*ExclusiveRankUpResp)(nil), // 9: ExclusiveRankUpResp
(*ExclusiveWearReq)(nil), // 10: ExclusiveWearReq
(*ExclusiveWearResp)(nil), // 11: ExclusiveWearResp
(*ExclusiveChangePush)(nil), // 12: ExclusiveChangePush
(*DB_Exclusive)(nil), // 13: DB_Exclusive
}
var file_exclusive_exclusive_msg_proto_depIdxs = []int32{
7, // 0: ExclusiveGetListResp.Exclusives:type_name -> DB_Exclusive
7, // 1: ExclusiveUpgradeResp.Exclusives:type_name -> DB_Exclusive
7, // 2: ExclusiveStarUpResp.Exclusives:type_name -> DB_Exclusive
7, // 3: ExclusiveChangePush.Exclusives:type_name -> DB_Exclusive
4, // [4:4] is the sub-list for method output_type
4, // [4:4] is the sub-list for method input_type
4, // [4:4] is the sub-list for extension type_name
4, // [4:4] is the sub-list for extension extendee
0, // [0:4] is the sub-list for field type_name
13, // 0: ExclusiveGetListResp.Exclusives:type_name -> DB_Exclusive
13, // 1: ExclusiveAddExpResp.Exclusives:type_name -> DB_Exclusive
13, // 2: ExclusiveUpgradeResp.Exclusives:type_name -> DB_Exclusive
13, // 3: ExclusiveStarUpResp.Exclusives:type_name -> DB_Exclusive
13, // 4: ExclusiveRankUpResp.Exclusives:type_name -> DB_Exclusive
13, // 5: ExclusiveWearResp.Exclusives:type_name -> DB_Exclusive
13, // 6: ExclusiveChangePush.Exclusives:type_name -> DB_Exclusive
7, // [7:7] is the sub-list for method output_type
7, // [7:7] is the sub-list for method input_type
7, // [7:7] is the sub-list for extension type_name
7, // [7:7] is the sub-list for extension extendee
0, // [0:7] is the sub-list for field type_name
}
func init() { file_exclusive_exclusive_msg_proto_init() }
@ -456,7 +797,7 @@ func file_exclusive_exclusive_msg_proto_init() {
}
}
file_exclusive_exclusive_msg_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ExclusiveUpgradeReq); i {
switch v := v.(*ExclusiveAddExpReq); i {
case 0:
return &v.state
case 1:
@ -468,7 +809,7 @@ func file_exclusive_exclusive_msg_proto_init() {
}
}
file_exclusive_exclusive_msg_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ExclusiveUpgradeResp); i {
switch v := v.(*ExclusiveAddExpResp); i {
case 0:
return &v.state
case 1:
@ -480,7 +821,7 @@ func file_exclusive_exclusive_msg_proto_init() {
}
}
file_exclusive_exclusive_msg_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ExclusiveStarUpReq); i {
switch v := v.(*ExclusiveUpgradeReq); i {
case 0:
return &v.state
case 1:
@ -492,7 +833,7 @@ func file_exclusive_exclusive_msg_proto_init() {
}
}
file_exclusive_exclusive_msg_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ExclusiveStarUpResp); i {
switch v := v.(*ExclusiveUpgradeResp); i {
case 0:
return &v.state
case 1:
@ -504,6 +845,78 @@ func file_exclusive_exclusive_msg_proto_init() {
}
}
file_exclusive_exclusive_msg_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ExclusiveStarUpReq); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_exclusive_exclusive_msg_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ExclusiveStarUpResp); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_exclusive_exclusive_msg_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ExclusiveRankUpReq); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_exclusive_exclusive_msg_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ExclusiveRankUpResp); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_exclusive_exclusive_msg_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ExclusiveWearReq); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_exclusive_exclusive_msg_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ExclusiveWearResp); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_exclusive_exclusive_msg_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ExclusiveChangePush); i {
case 0:
return &v.state
@ -522,7 +935,7 @@ func file_exclusive_exclusive_msg_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_exclusive_exclusive_msg_proto_rawDesc,
NumEnums: 0,
NumMessages: 7,
NumMessages: 13,
NumExtensions: 0,
NumServices: 0,
},

View File

@ -101,6 +101,9 @@ type DBHero struct {
Awakenskill []*SkillData `protobuf:"bytes,28,rep,name=awakenskill,proto3" json:"awakenskill"` // 觉醒技能
Talentskill []*SkillData `protobuf:"bytes,29,rep,name=talentskill,proto3" json:"talentskill"` // 回响技能
Fightvalue int32 `protobuf:"varint,30,opt,name=fightvalue,proto3" json:"fightvalue"` // 战力
Exclusiveid string `protobuf:"bytes,31,opt,name=exclusiveid,proto3" json:"exclusiveid"` //专属武器id
ExclusiveProperty map[int32]int32 `protobuf:"bytes,32,rep,name=exclusiveProperty,proto3" json:"exclusiveProperty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3" bson:"exclusiveProperty"` //专属武器属性
ExclusiveSkill []*SkillData `protobuf:"bytes,33,rep,name=exclusiveSkill,proto3" json:"exclusiveSkill" bson:"exclusiveSkill"` //装备技能
}
func (x *DBHero) Reset() {
@ -345,6 +348,27 @@ func (x *DBHero) GetFightvalue() int32 {
return 0
}
func (x *DBHero) GetExclusiveid() string {
if x != nil {
return x.Exclusiveid
}
return ""
}
func (x *DBHero) GetExclusiveProperty() map[int32]int32 {
if x != nil {
return x.ExclusiveProperty
}
return nil
}
func (x *DBHero) GetExclusiveSkill() []*SkillData {
if x != nil {
return x.ExclusiveSkill
}
return nil
}
//英雄扩展数据
type DBHeroRecord struct {
state protoimpl.MessageState
@ -743,8 +767,8 @@ var file_hero_hero_db_proto_rawDesc = []byte{
0x0a, 0x12, 0x68, 0x65, 0x72, 0x6f, 0x2f, 0x68, 0x65, 0x72, 0x6f, 0x5f, 0x64, 0x62, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x1a, 0x1c, 0x65, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x65, 0x71, 0x75, 0x69,
0x70, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc2,
0x0b, 0x0a, 0x06, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
0x70, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xac,
0x0d, 0x0a, 0x06, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64,
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x68,
0x65, 0x72, 0x6f, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x65, 0x72,
@ -812,143 +836,158 @@ var file_hero_hero_db_proto_rawDesc = []byte{
0x61, 0x74, 0x61, 0x52, 0x0b, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x73, 0x6b, 0x69, 0x6c, 0x6c,
0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x67, 0x68, 0x74, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x1e,
0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x67, 0x68, 0x74, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x1a, 0x3b, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72,
0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03,
0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a,
0x10, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72,
0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03,
0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3f, 0x0a,
0x11, 0x4a, 0x75, 0x65, 0x78, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74,
0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x41,
0x0a, 0x13, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79,
0x12, 0x20, 0x0a, 0x0b, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x69, 0x64, 0x18,
0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65,
0x69, 0x64, 0x12, 0x4c, 0x0a, 0x11, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x50,
0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x20, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e,
0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x2e, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65,
0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x65,
0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79,
0x12, 0x32, 0x0a, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x53, 0x6b, 0x69,
0x6c, 0x6c, 0x18, 0x21, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x53, 0x6b, 0x69, 0x6c, 0x6c,
0x44, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x53,
0x6b, 0x69, 0x6c, 0x6c, 0x1a, 0x3b, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79,
0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
0x01, 0x1a, 0x44, 0x0a, 0x16, 0x48, 0x6f, 0x72, 0x6f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x50, 0x72,
0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61,
0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3a, 0x0a, 0x0c, 0x46, 0x65, 0x74, 0x74, 0x65,
0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
0x02, 0x38, 0x01, 0x22, 0x8e, 0x0b, 0x0a, 0x0c, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65,
0x63, 0x6f, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x74, 0x69, 0x6d, 0x65, 0x18,
0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6d, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09,
0x64, 0x72, 0x61, 0x77, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52,
0x09, 0x64, 0x72, 0x61, 0x77, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3a, 0x0a, 0x09, 0x63, 0x6f,
0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x43, 0x6f, 0x6e,
0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x63, 0x6f, 0x6e,
0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x35, 0x48,
0x65, 0x72, 0x6f, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x44, 0x42, 0x48, 0x65,
0x72, 0x6f, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x35, 0x48, 0x65,
0x72, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x35, 0x48, 0x65,
0x72, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x63, 0x6f, 0x75, 0x6e, 0x74,
0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x63, 0x6f, 0x75,
0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x79, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08,
0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x61, 0x79, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2b,
0x0a, 0x04, 0x72, 0x61, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x44,
0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x52, 0x61, 0x63, 0x65,
0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x72, 0x61, 0x63, 0x65, 0x12, 0x31, 0x0a, 0x06, 0x62,
0x61, 0x6f, 0x64, 0x69, 0x34, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x44, 0x42,
0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x42, 0x61, 0x6f, 0x64, 0x69,
0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x62, 0x61, 0x6f, 0x64, 0x69, 0x34, 0x12, 0x31,
0x0a, 0x06, 0x62, 0x61, 0x6f, 0x64, 0x69, 0x35, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19,
0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x42, 0x61,
0x6f, 0x64, 0x69, 0x35, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x62, 0x61, 0x6f, 0x64, 0x69,
0x35, 0x12, 0x2e, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x18, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e,
0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e,
0x74, 0x12, 0x2e, 0x0a, 0x05, 0x70, 0x65, 0x61, 0x63, 0x68, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x18, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e,
0x50, 0x65, 0x61, 0x63, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x70, 0x65, 0x61, 0x63,
0x68, 0x12, 0x2e, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x18, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e,
0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69,
0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x48, 0x65, 0x72, 0x6f, 0x18, 0x11,
0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x48, 0x65, 0x72, 0x6f, 0x12,
0x2b, 0x0a, 0x04, 0x77, 0x69, 0x73, 0x68, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e,
0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x57, 0x69, 0x73,
0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x77, 0x69, 0x73, 0x68, 0x12, 0x1a, 0x0a, 0x08,
0x77, 0x69, 0x73, 0x68, 0x48, 0x65, 0x72, 0x6f, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
0x77, 0x69, 0x73, 0x68, 0x48, 0x65, 0x72, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x65, 0x61, 0x63,
0x68, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70,
0x65, 0x61, 0x63, 0x68, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x65,
0x77, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52,
0x0b, 0x6e, 0x65, 0x77, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b,
0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28,
0x05, 0x52, 0x0b, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x10,
0x0a, 0x03, 0x63, 0x75, 0x72, 0x18, 0x17, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x63, 0x75, 0x72,
0x12, 0x12, 0x0a, 0x04, 0x72, 0x73, 0x74, 0x31, 0x18, 0x18, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04,
0x72, 0x73, 0x74, 0x31, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x73, 0x74, 0x32, 0x18, 0x19, 0x20, 0x03,
0x28, 0x09, 0x52, 0x04, 0x72, 0x73, 0x74, 0x32, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x70, 0x68, 0x65,
0x72, 0x6f, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x75, 0x70, 0x68, 0x65, 0x72, 0x6f,
0x12, 0x20, 0x0a, 0x0b, 0x75, 0x70, 0x68, 0x65, 0x72, 0x6f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18,
0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x75, 0x70, 0x68, 0x65, 0x72, 0x6f, 0x63, 0x6f, 0x75,
0x6e, 0x74, 0x1a, 0x3c, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45,
0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
0x1a, 0x3c, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x72, 0x35, 0x48, 0x65, 0x72, 0x6f, 0x45, 0x6e, 0x74,
0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37,
0x0a, 0x09, 0x52, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61,
0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x42, 0x61, 0x6f, 0x64, 0x69,
0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x42, 0x61, 0x6f, 0x64, 0x69, 0x35, 0x45, 0x6e, 0x74, 0x72,
0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03,
0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x38, 0x0a,
0x0a, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61,
0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x38, 0x0a, 0x0a, 0x50, 0x65, 0x61, 0x63, 0x68,
0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79,
0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
0x01, 0x1a, 0x38, 0x0a, 0x0a, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x57,
0x69, 0x73, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x3a, 0x02, 0x38, 0x01, 0x22, 0xb6, 0x01, 0x0a, 0x0c, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x54,
0x61, 0x6c, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x72, 0x6f, 0x49,
0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x12,
0x31, 0x0a, 0x06, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x19, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x54,
0x61, 0x6c, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x74, 0x61, 0x6c, 0x65,
0x6e, 0x74, 0x1a, 0x39, 0x0a, 0x0b, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72,
0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
0x01, 0x1a, 0x3f, 0x0a, 0x11, 0x4a, 0x75, 0x65, 0x78, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74,
0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x70,
0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x48, 0x6f, 0x72, 0x6f, 0x73, 0x63, 0x6f,
0x70, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65,
0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3a, 0x0a, 0x0c, 0x46,
0x65, 0x74, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61,
0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x45, 0x78, 0x63, 0x6c, 0x75,
0x73, 0x69, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72,
0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03,
0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7e, 0x0a,
0x10, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x44, 0x72, 0x61, 0x77, 0x52, 0x65, 0x63, 0x6f, 0x72,
0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
0x75, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x18, 0x03, 0x20,
0x03, 0x28, 0x09, 0x52, 0x06, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64,
0x72, 0x61, 0x77, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64,
0x72, 0x61, 0x77, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x74, 0x69, 0x6d, 0x65,
0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x74, 0x69, 0x6d, 0x65, 0x2a, 0x2f, 0x0a,
0x08, 0x48, 0x65, 0x72, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x48, 0x65, 0x72,
0x6f, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x69, 0x6c, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x48, 0x65,
0x72, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x6f, 0x6e, 0x67, 0x46, 0x75, 0x10, 0x01, 0x42, 0x06,
0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8e, 0x0b,
0x0a, 0x0c, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x0e,
0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10,
0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64,
0x12, 0x14, 0x0a, 0x05, 0x6d, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
0x05, 0x6d, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x72, 0x61, 0x77, 0x63, 0x6f,
0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x64, 0x72, 0x61, 0x77, 0x63,
0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3a, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f,
0x6e, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f,
0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
0x12, 0x3a, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x35, 0x48, 0x65, 0x72, 0x6f, 0x18, 0x06, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x63, 0x6f,
0x72, 0x64, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x35, 0x48, 0x65, 0x72, 0x6f, 0x45, 0x6e, 0x74, 0x72,
0x79, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x35, 0x48, 0x65, 0x72, 0x6f, 0x12, 0x1e, 0x0a, 0x0a,
0x74, 0x6f, 0x74, 0x61, 0x6c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05,
0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08,
0x64, 0x61, 0x79, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,
0x64, 0x61, 0x79, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x72, 0x61, 0x63, 0x65,
0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52,
0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x52, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
0x04, 0x72, 0x61, 0x63, 0x65, 0x12, 0x31, 0x0a, 0x06, 0x62, 0x61, 0x6f, 0x64, 0x69, 0x34, 0x18,
0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65,
0x63, 0x6f, 0x72, 0x64, 0x2e, 0x42, 0x61, 0x6f, 0x64, 0x69, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79,
0x52, 0x06, 0x62, 0x61, 0x6f, 0x64, 0x69, 0x34, 0x12, 0x31, 0x0a, 0x06, 0x62, 0x61, 0x6f, 0x64,
0x69, 0x35, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72,
0x6f, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x42, 0x61, 0x6f, 0x64, 0x69, 0x35, 0x45, 0x6e,
0x74, 0x72, 0x79, 0x52, 0x06, 0x62, 0x61, 0x6f, 0x64, 0x69, 0x35, 0x12, 0x2e, 0x0a, 0x05, 0x63,
0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x44, 0x42, 0x48,
0x65, 0x72, 0x6f, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45,
0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x05, 0x70,
0x65, 0x61, 0x63, 0x68, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x44, 0x42, 0x48,
0x65, 0x72, 0x6f, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x50, 0x65, 0x61, 0x63, 0x68, 0x45,
0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x70, 0x65, 0x61, 0x63, 0x68, 0x12, 0x2e, 0x0a, 0x05, 0x6c,
0x69, 0x6d, 0x69, 0x74, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x44, 0x42, 0x48,
0x65, 0x72, 0x6f, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45,
0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6c,
0x69, 0x6d, 0x69, 0x74, 0x48, 0x65, 0x72, 0x6f, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
0x6c, 0x69, 0x6d, 0x69, 0x74, 0x48, 0x65, 0x72, 0x6f, 0x12, 0x2b, 0x0a, 0x04, 0x77, 0x69, 0x73,
0x68, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f,
0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x57, 0x69, 0x73, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79,
0x52, 0x04, 0x77, 0x69, 0x73, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x69, 0x73, 0x68, 0x48, 0x65,
0x72, 0x6f, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x69, 0x73, 0x68, 0x48, 0x65,
0x72, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x65, 0x61, 0x63, 0x68, 0x72, 0x65, 0x77, 0x61, 0x72,
0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x65, 0x61, 0x63, 0x68, 0x72, 0x65,
0x77, 0x61, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x63, 0x6f, 0x6d, 0x70, 0x6c,
0x65, 0x74, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x63, 0x6f,
0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74,
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x65, 0x6c,
0x65, 0x63, 0x74, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x75, 0x72, 0x18,
0x17, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x63, 0x75, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x73,
0x74, 0x31, 0x18, 0x18, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x72, 0x73, 0x74, 0x31, 0x12, 0x12,
0x0a, 0x04, 0x72, 0x73, 0x74, 0x32, 0x18, 0x19, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x72, 0x73,
0x74, 0x32, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x70, 0x68, 0x65, 0x72, 0x6f, 0x18, 0x1a, 0x20, 0x01,
0x28, 0x08, 0x52, 0x06, 0x75, 0x70, 0x68, 0x65, 0x72, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x70,
0x68, 0x65, 0x72, 0x6f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52,
0x0b, 0x75, 0x70, 0x68, 0x65, 0x72, 0x6f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x3c, 0x0a, 0x0e,
0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3c, 0x0a, 0x0e, 0x53, 0x74,
0x61, 0x72, 0x35, 0x48, 0x65, 0x72, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76,
0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x52, 0x61, 0x63, 0x65,
0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x42, 0x61, 0x6f, 0x64, 0x69, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79,
0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b,
0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b,
0x42, 0x61, 0x6f, 0x64, 0x69, 0x35, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61,
0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x38, 0x0a, 0x0a, 0x43, 0x6f, 0x75, 0x6e, 0x74,
0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
0x01, 0x1a, 0x38, 0x0a, 0x0a, 0x50, 0x65, 0x61, 0x63, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65,
0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x38, 0x0a, 0x0a, 0x4c,
0x69, 0x6d, 0x69, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x57, 0x69, 0x73, 0x68, 0x45, 0x6e, 0x74,
0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb6,
0x01, 0x0a, 0x0c, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x12,
0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69,
0x64, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
0x09, 0x52, 0x06, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x06, 0x74, 0x61, 0x6c,
0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x44, 0x42, 0x48, 0x65,
0x72, 0x6f, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x45,
0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x1a, 0x39, 0x0a, 0x0b,
0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61,
0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7e, 0x0a, 0x10, 0x44, 0x42, 0x48, 0x65, 0x72,
0x6f, 0x44, 0x72, 0x61, 0x77, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75,
0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x16, 0x0a,
0x06, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x68,
0x65, 0x72, 0x6f, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x72, 0x61, 0x77, 0x74, 0x79, 0x70,
0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x72, 0x61, 0x77, 0x74, 0x79, 0x70,
0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03,
0x52, 0x05, 0x63, 0x74, 0x69, 0x6d, 0x65, 0x2a, 0x2f, 0x0a, 0x08, 0x48, 0x65, 0x72, 0x6f, 0x54,
0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x48, 0x65, 0x72, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x4e,
0x69, 0x6c, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x48, 0x65, 0x72, 0x6f, 0x54, 0x79, 0x70, 0x65,
0x4b, 0x6f, 0x6e, 0x67, 0x46, 0x75, 0x10, 0x01, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62,
0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -964,7 +1003,7 @@ func file_hero_hero_db_proto_rawDescGZIP() []byte {
}
var file_hero_hero_db_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_hero_hero_db_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
var file_hero_hero_db_proto_msgTypes = make([]protoimpl.MessageInfo, 21)
var file_hero_hero_db_proto_goTypes = []interface{}{
(HeroType)(0), // 0: HeroType
(*DBHero)(nil), // 1: DBHero
@ -977,47 +1016,50 @@ var file_hero_hero_db_proto_goTypes = []interface{}{
nil, // 8: DBHero.TalentPropertyEntry
nil, // 9: DBHero.HoroscopePropertyEntry
nil, // 10: DBHero.FettersEntry
nil, // 11: DBHeroRecord.ConditionEntry
nil, // 12: DBHeroRecord.Star5HeroEntry
nil, // 13: DBHeroRecord.RaceEntry
nil, // 14: DBHeroRecord.Baodi4Entry
nil, // 15: DBHeroRecord.Baodi5Entry
nil, // 16: DBHeroRecord.CountEntry
nil, // 17: DBHeroRecord.PeachEntry
nil, // 18: DBHeroRecord.LimitEntry
nil, // 19: DBHeroRecord.WishEntry
nil, // 20: DBHeroTalent.TalentEntry
(*SkillData)(nil), // 21: SkillData
(*DB_EquipmentSuit)(nil), // 22: DB_EquipmentSuit
nil, // 11: DBHero.ExclusivePropertyEntry
nil, // 12: DBHeroRecord.ConditionEntry
nil, // 13: DBHeroRecord.Star5HeroEntry
nil, // 14: DBHeroRecord.RaceEntry
nil, // 15: DBHeroRecord.Baodi4Entry
nil, // 16: DBHeroRecord.Baodi5Entry
nil, // 17: DBHeroRecord.CountEntry
nil, // 18: DBHeroRecord.PeachEntry
nil, // 19: DBHeroRecord.LimitEntry
nil, // 20: DBHeroRecord.WishEntry
nil, // 21: DBHeroTalent.TalentEntry
(*SkillData)(nil), // 22: SkillData
(*DB_EquipmentSuit)(nil), // 23: DB_EquipmentSuit
}
var file_hero_hero_db_proto_depIdxs = []int32{
21, // 0: DBHero.normalSkill:type_name -> SkillData
22, // 0: DBHero.normalSkill:type_name -> SkillData
5, // 1: DBHero.property:type_name -> DBHero.PropertyEntry
6, // 2: DBHero.addProperty:type_name -> DBHero.AddPropertyEntry
7, // 3: DBHero.juexProperty:type_name -> DBHero.JuexPropertyEntry
0, // 4: DBHero.status:type_name -> HeroType
22, // 5: DBHero.suits:type_name -> DB_EquipmentSuit
23, // 5: DBHero.suits:type_name -> DB_EquipmentSuit
8, // 6: DBHero.talentProperty:type_name -> DBHero.TalentPropertyEntry
21, // 7: DBHero.equipSkill:type_name -> SkillData
22, // 7: DBHero.equipSkill:type_name -> SkillData
9, // 8: DBHero.horoscopeProperty:type_name -> DBHero.HoroscopePropertyEntry
10, // 9: DBHero.fetters:type_name -> DBHero.FettersEntry
21, // 10: DBHero.awakenskill:type_name -> SkillData
21, // 11: DBHero.talentskill:type_name -> SkillData
11, // 12: DBHeroRecord.condition:type_name -> DBHeroRecord.ConditionEntry
12, // 13: DBHeroRecord.star5Hero:type_name -> DBHeroRecord.Star5HeroEntry
13, // 14: DBHeroRecord.race:type_name -> DBHeroRecord.RaceEntry
14, // 15: DBHeroRecord.baodi4:type_name -> DBHeroRecord.Baodi4Entry
15, // 16: DBHeroRecord.baodi5:type_name -> DBHeroRecord.Baodi5Entry
16, // 17: DBHeroRecord.count:type_name -> DBHeroRecord.CountEntry
17, // 18: DBHeroRecord.peach:type_name -> DBHeroRecord.PeachEntry
18, // 19: DBHeroRecord.limit:type_name -> DBHeroRecord.LimitEntry
19, // 20: DBHeroRecord.wish:type_name -> DBHeroRecord.WishEntry
20, // 21: DBHeroTalent.talent:type_name -> DBHeroTalent.TalentEntry
22, // [22:22] is the sub-list for method output_type
22, // [22:22] is the sub-list for method input_type
22, // [22:22] is the sub-list for extension type_name
22, // [22:22] is the sub-list for extension extendee
0, // [0:22] is the sub-list for field type_name
22, // 10: DBHero.awakenskill:type_name -> SkillData
22, // 11: DBHero.talentskill:type_name -> SkillData
11, // 12: DBHero.exclusiveProperty:type_name -> DBHero.ExclusivePropertyEntry
22, // 13: DBHero.exclusiveSkill:type_name -> SkillData
12, // 14: DBHeroRecord.condition:type_name -> DBHeroRecord.ConditionEntry
13, // 15: DBHeroRecord.star5Hero:type_name -> DBHeroRecord.Star5HeroEntry
14, // 16: DBHeroRecord.race:type_name -> DBHeroRecord.RaceEntry
15, // 17: DBHeroRecord.baodi4:type_name -> DBHeroRecord.Baodi4Entry
16, // 18: DBHeroRecord.baodi5:type_name -> DBHeroRecord.Baodi5Entry
17, // 19: DBHeroRecord.count:type_name -> DBHeroRecord.CountEntry
18, // 20: DBHeroRecord.peach:type_name -> DBHeroRecord.PeachEntry
19, // 21: DBHeroRecord.limit:type_name -> DBHeroRecord.LimitEntry
20, // 22: DBHeroRecord.wish:type_name -> DBHeroRecord.WishEntry
21, // 23: DBHeroTalent.talent:type_name -> DBHeroTalent.TalentEntry
24, // [24:24] is the sub-list for method output_type
24, // [24:24] is the sub-list for method input_type
24, // [24:24] is the sub-list for extension type_name
24, // [24:24] is the sub-list for extension extendee
0, // [0:24] is the sub-list for field type_name
}
func init() { file_hero_hero_db_proto_init() }
@ -1083,7 +1125,7 @@ func file_hero_hero_db_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_hero_hero_db_proto_rawDesc,
NumEnums: 1,
NumMessages: 20,
NumMessages: 21,
NumExtensions: 0,
NumServices: 0,
},

View File

@ -0,0 +1,42 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
type GameExclusiveItem struct {
_dataMap map[string]*GameExclusiveItemData
_dataList []*GameExclusiveItemData
}
func NewGameExclusiveItem(_buf []map[string]interface{}) (*GameExclusiveItem, error) {
_dataList := make([]*GameExclusiveItemData, 0, len(_buf))
dataMap := make(map[string]*GameExclusiveItemData)
for _, _ele_ := range _buf {
if _v, err2 := DeserializeGameExclusiveItemData(_ele_); err2 != nil {
return nil, err2
} else {
_dataList = append(_dataList, _v)
dataMap[_v.Itemid] = _v
}
}
return &GameExclusiveItem{_dataList:_dataList, _dataMap:dataMap}, nil
}
func (table *GameExclusiveItem) GetDataMap() map[string]*GameExclusiveItemData {
return table._dataMap
}
func (table *GameExclusiveItem) GetDataList() []*GameExclusiveItemData {
return table._dataList
}
func (table *GameExclusiveItem) Get(key string) *GameExclusiveItemData {
return table._dataMap[key]
}

View File

@ -0,0 +1,37 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
import "errors"
type GameExclusiveItemData struct {
Itemid string
Exp int32
}
const TypeId_GameExclusiveItemData = -1706015969
func (*GameExclusiveItemData) GetTypeId() int32 {
return -1706015969
}
func (_v *GameExclusiveItemData)Deserialize(_buf map[string]interface{}) (err error) {
{ var _ok_ bool; if _v.Itemid, _ok_ = _buf["itemid"].(string); !_ok_ { err = errors.New("itemid error"); return } }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["exp"].(float64); !_ok_ { err = errors.New("exp error"); return }; _v.Exp = int32(_tempNum_) }
return
}
func DeserializeGameExclusiveItemData(_buf map[string]interface{}) (*GameExclusiveItemData, error) {
v := &GameExclusiveItemData{}
if err := v.Deserialize(_buf); err == nil {
return v, nil
} else {
return nil, err
}
}

View File

@ -9,34 +9,26 @@
package cfg
type GameExclusiveRank struct {
_dataMap map[int32]*GameExclusiveRankData
_dataList []*GameExclusiveRankData
}
func NewGameExclusiveRank(_buf []map[string]interface{}) (*GameExclusiveRank, error) {
_dataList := make([]*GameExclusiveRankData, 0, len(_buf))
dataMap := make(map[int32]*GameExclusiveRankData)
for _, _ele_ := range _buf {
if _v, err2 := DeserializeGameExclusiveRankData(_ele_); err2 != nil {
return nil, err2
} else {
_dataList = append(_dataList, _v)
dataMap[_v.Id] = _v
}
}
return &GameExclusiveRank{_dataList:_dataList, _dataMap:dataMap}, nil
}
func (table *GameExclusiveRank) GetDataMap() map[int32]*GameExclusiveRankData {
return table._dataMap
return &GameExclusiveRank{_dataList:_dataList}, nil
}
func (table *GameExclusiveRank) GetDataList() []*GameExclusiveRankData {
return table._dataList
}
func (table *GameExclusiveRank) Get(key int32) *GameExclusiveRankData {
return table._dataMap[key]
func (table *GameExclusiveRank) Get(index int) *GameExclusiveRankData {
return table._dataList[index]
}

View File

@ -9,34 +9,26 @@
package cfg
type GameExclusiveStar struct {
_dataMap map[int32]*GameExclusiveStarData
_dataList []*GameExclusiveStarData
}
func NewGameExclusiveStar(_buf []map[string]interface{}) (*GameExclusiveStar, error) {
_dataList := make([]*GameExclusiveStarData, 0, len(_buf))
dataMap := make(map[int32]*GameExclusiveStarData)
for _, _ele_ := range _buf {
if _v, err2 := DeserializeGameExclusiveStarData(_ele_); err2 != nil {
return nil, err2
} else {
_dataList = append(_dataList, _v)
dataMap[_v.Id] = _v
}
}
return &GameExclusiveStar{_dataList:_dataList, _dataMap:dataMap}, nil
}
func (table *GameExclusiveStar) GetDataMap() map[int32]*GameExclusiveStarData {
return table._dataMap
return &GameExclusiveStar{_dataList:_dataList}, nil
}
func (table *GameExclusiveStar) GetDataList() []*GameExclusiveStarData {
return table._dataList
}
func (table *GameExclusiveStar) Get(key int32) *GameExclusiveStarData {
return table._dataMap[key]
func (table *GameExclusiveStar) Get(index int) *GameExclusiveStarData {
return table._dataList[index]
}

View File

@ -16,7 +16,7 @@ type GameExclusiveStarData struct {
Star int32
Commonskill int32
Exclusiveskill int32
Cost1 *Gameatn
Cost1 []*Gameatn
}
const TypeId_GameExclusiveStarData = -1567680802
@ -31,7 +31,20 @@ func (_v *GameExclusiveStarData)Deserialize(_buf map[string]interface{}) (err er
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["star"].(float64); !_ok_ { err = errors.New("star error"); return }; _v.Star = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["commonskill"].(float64); !_ok_ { err = errors.New("commonskill error"); return }; _v.Commonskill = int32(_tempNum_) }
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["exclusiveskill"].(float64); !_ok_ { err = errors.New("exclusiveskill error"); return }; _v.Exclusiveskill = int32(_tempNum_) }
{ var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _buf["cost1"].(map[string]interface{}); !_ok_ { err = errors.New("cost1 error"); return }; if _v.Cost1, err = DeserializeGameatn(_x_); err != nil { return } }
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["cost1"].([]interface{}); !_ok_ { err = errors.New("cost1 error"); return }
_v.Cost1 = make([]*Gameatn, 0, len(_arr_))
for _, _e_ := range _arr_ {
var _list_v_ *Gameatn
{ var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _e_.(map[string]interface{}); !_ok_ { err = errors.New("_list_v_ error"); return }; if _list_v_, err = DeserializeGameatn(_x_); err != nil { return } }
_v.Cost1 = append(_v.Cost1, _list_v_)
}
}
return
}

View File

@ -9,34 +9,26 @@
package cfg
type GameExclusiveUpgrade struct {
_dataMap map[int32]*GameExclusiveUpgradeData
_dataList []*GameExclusiveUpgradeData
}
func NewGameExclusiveUpgrade(_buf []map[string]interface{}) (*GameExclusiveUpgrade, error) {
_dataList := make([]*GameExclusiveUpgradeData, 0, len(_buf))
dataMap := make(map[int32]*GameExclusiveUpgradeData)
for _, _ele_ := range _buf {
if _v, err2 := DeserializeGameExclusiveUpgradeData(_ele_); err2 != nil {
return nil, err2
} else {
_dataList = append(_dataList, _v)
dataMap[_v.Id] = _v
}
}
return &GameExclusiveUpgrade{_dataList:_dataList, _dataMap:dataMap}, nil
}
func (table *GameExclusiveUpgrade) GetDataMap() map[int32]*GameExclusiveUpgradeData {
return table._dataMap
return &GameExclusiveUpgrade{_dataList:_dataList}, nil
}
func (table *GameExclusiveUpgrade) GetDataList() []*GameExclusiveUpgradeData {
return table._dataList
}
func (table *GameExclusiveUpgrade) Get(key int32) *GameExclusiveUpgradeData {
return table._dataMap[key]
func (table *GameExclusiveUpgrade) Get(index int) *GameExclusiveUpgradeData {
return table._dataList[index]
}

View File

@ -362,6 +362,7 @@ type Tables struct {
ExclusiveUpgrade *GameExclusiveUpgrade
ExclusiveRank *GameExclusiveRank
ExclusiveStar *GameExclusiveStar
ExclusiveItem *GameExclusiveItem
}
func NewTables(loader JsonLoader) (*Tables, error) {
@ -2475,5 +2476,11 @@ func NewTables(loader JsonLoader) (*Tables, error) {
if tables.ExclusiveStar, err = NewGameExclusiveStar(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_exclusiveitem") ; err != nil {
return nil, err
}
if tables.ExclusiveItem, err = NewGameExclusiveItem(buf) ; err != nil {
return nil, err
}
return tables, nil
}