优化竞技场信息

This commit is contained in:
liwei1dao 2023-11-01 15:47:52 +08:00
parent cb91f98843
commit c98b05e4c6
12 changed files with 243 additions and 383 deletions

View File

@ -124,12 +124,12 @@ func (this *apiComp) Challenge(session comm.IUserSession, req *pb.ArenaChallenge
} }
} }
redplay := &pb.ArenaPlayer{ redplay := &pb.ArenaPlayer{
Uid: red.Uid, Uinfo: red.Uinfo,
Integral: red.Integral, Integral: red.Integral,
Dan: red.Dan, Dan: red.Dan,
} }
this.module.modelArena.integralCompute(redplay, &pb.ArenaPlayer{ this.module.modelArena.integralCompute(redplay, &pb.ArenaPlayer{
Uid: bule.Uid, Uinfo: bule.Uinfo,
Integral: bule.Integral, Integral: bule.Integral,
Dan: bule.Dan, Dan: bule.Dan,
}, false) }, false)
@ -146,8 +146,8 @@ func (this *apiComp) Challenge(session comm.IUserSession, req *pb.ArenaChallenge
if errdata, record = this.module.battle.CreatePvpBattle(session, &pb.BattlePVPReq{ if errdata, record = this.module.battle.CreatePvpBattle(session, &pb.BattlePVPReq{
Rulesid: 105, Rulesid: 105,
Ptype: pb.PlayType_arena, Ptype: pb.PlayType_arena,
Redformat: &pb.PVPFormation{Uid: red.Uid, Leadpos: red.Attack.Leadpos, Format: red.Attack.Formt}, Redformat: &pb.PVPFormation{Uid: red.Uinfo.Uid, Leadpos: red.Attack.Leadpos, Format: red.Attack.Formt},
Buleformat: &pb.PVPFormation{Uid: bule.Uid, Leadpos: bule.Defend.Leadpos, Format: bule.Defend.Formt}, Buleformat: &pb.PVPFormation{Uid: bule.Uinfo.Uid, Leadpos: bule.Defend.Leadpos, Format: bule.Defend.Formt},
}); errdata != nil { }); errdata != nil {
return return
} }

View File

@ -94,13 +94,10 @@ func (this *apiComp) ChallengeReward(session comm.IUserSession, req *pb.ArenaCha
} }
red = &pb.ArenaPlayer{ red = &pb.ArenaPlayer{
Uid: info.Uid, Uinfo: info.Uinfo,
Name: info.Name,
Dan: info.Dan,
Integral: info.Integral + info.Prededuction, Integral: info.Integral + info.Prededuction,
Defend: info.Defend, Defend: info.Defend,
Isai: false, Isai: false,
Lv: info.Lv,
Title: info.Title, Title: info.Title,
} }
@ -118,21 +115,21 @@ func (this *apiComp) ChallengeReward(session comm.IUserSession, req *pb.ArenaCha
return return
} }
bule = &pb.ArenaPlayer{ bule = &pb.ArenaPlayer{
Uid: rival.Uid, Uinfo: rival.Uinfo,
Name: rival.Name,
Dan: rival.Dan, Dan: rival.Dan,
Integral: rival.Integral, Integral: rival.Integral,
Defend: rival.Defend, Defend: rival.Defend,
Isai: false, Isai: false,
Lv: rival.Lv,
} }
if len(rival.Record) > 10 { if len(rival.Record) > 10 {
rival.Record = rival.Record[1:] rival.Record = rival.Record[1:]
} }
} else { } else {
bule = &pb.ArenaPlayer{ bule = &pb.ArenaPlayer{
Dan: info.Dan, Dan: info.Dan,
Name: req.Ainame, Uinfo: &pb.BaseUserInfo{
Name: req.Ainame,
},
Integral: req.Aiintegral, Integral: req.Aiintegral,
} }
} }
@ -156,8 +153,8 @@ func (this *apiComp) ChallengeReward(session comm.IUserSession, req *pb.ArenaCha
Time: configure.Now().Unix(), Time: configure.Now().Unix(),
Iswin: req.Iswin, Iswin: req.Iswin,
Isdefend: false, Isdefend: false,
Rivalid: bule.Uid, Rivalid: bule.Uinfo.Uid,
Rivalname: bule.Name, Rivalname: bule.Uinfo.Name,
Leadpos: rival.Defend.Leadpos, Leadpos: rival.Defend.Leadpos,
Formt: make([]*pb.DBHeroBase, len(rival.Defend.Formt)), Formt: make([]*pb.DBHeroBase, len(rival.Defend.Formt)),
Addintegral: red.Changeintegral, Addintegral: red.Changeintegral,
@ -188,8 +185,8 @@ func (this *apiComp) ChallengeReward(session comm.IUserSession, req *pb.ArenaCha
Time: configure.Now().Unix(), Time: configure.Now().Unix(),
Iswin: !req.Iswin, Iswin: !req.Iswin,
Isdefend: true, Isdefend: true,
Rivalid: red.Uid, Rivalid: red.Uinfo.Uid,
Rivalname: red.Name, Rivalname: red.Uinfo.Name,
Leadpos: info.Attack.Leadpos, Leadpos: info.Attack.Leadpos,
Addintegral: bule.Changeintegral, Addintegral: bule.Changeintegral,
Formt: make([]*pb.DBHeroBase, len(info.Attack.Formt)), Formt: make([]*pb.DBHeroBase, len(info.Attack.Formt)),
@ -237,8 +234,8 @@ func (this *apiComp) ChallengeReward(session comm.IUserSession, req *pb.ArenaCha
Time: configure.Now().Unix(), Time: configure.Now().Unix(),
Iswin: req.Iswin, Iswin: req.Iswin,
Isdefend: false, Isdefend: false,
Rivalid: bule.Uid, Rivalid: bule.Uinfo.Uid,
Rivalname: bule.Name, Rivalname: bule.Uinfo.Name,
Leadpos: req.Report.Info.Buleflist[0].Leadpos, Leadpos: req.Report.Info.Buleflist[0].Leadpos,
Formt: make([]*pb.DBHeroBase, len(req.Report.Info.Buleflist[0].Team)), Formt: make([]*pb.DBHeroBase, len(req.Report.Info.Buleflist[0].Team)),
Addintegral: red.Changeintegral, Addintegral: red.Changeintegral,

View File

@ -49,11 +49,7 @@ func (this *apiComp) Info(session comm.IUserSession, req *pb.ArenaInfoReq) (errd
global = this.module.ModuleTools.GetGlobalConf() global = this.module.ModuleTools.GetGlobalConf()
info = &pb.DBArenaUser{ info = &pb.DBArenaUser{
Id: primitive.NewObjectID().Hex(), Id: primitive.NewObjectID().Hex(),
Uid: session.GetUserId(), Uinfo: comm.GetUserBaseInfo(user),
Name: user.Name,
Lv: user.Lv,
Sex: user.Gender,
Skin: user.CurSkin,
Integral: global.ArenaInitiaIntegral, Integral: global.ArenaInitiaIntegral,
Streak: 0, Streak: 0,
Record: make([]*pb.DBArenaBattleRecord, 0), Record: make([]*pb.DBArenaBattleRecord, 0),
@ -75,12 +71,7 @@ func (this *apiComp) Info(session comm.IUserSession, req *pb.ArenaInfoReq) (errd
this.module.Errorln(err) this.module.Errorln(err)
} }
} else { } else {
info.Lv = user.Lv info.Uinfo = comm.GetUserBaseInfo(user)
info.Name = user.Name
// info.Avatar = user.Avatar
info.Sex = user.Gender
info.Skin = user.CurSkin
info.Title = user.Curtitle
this.module.modelArena.recoverTicket(session, info) this.module.modelArena.recoverTicket(session, info)
if err = this.module.modelArena.updateArenaUserInfo(info); err != nil { if err = this.module.modelArena.updateArenaUserInfo(info); err != nil {
errdata = &pb.ErrorData{ errdata = &pb.ErrorData{

View File

@ -37,7 +37,7 @@ func (this *apiComp) Matche(session comm.IUserSession, req *pb.ArenaMatcheReq) (
this.module.Errorln(err) this.module.Errorln(err)
return return
} }
if players, err = this.module.modelArena.matchePlayer(info.Uid, info.Dan, active.HumanNum); err != nil && err != mgo.MongodbNil { if players, err = this.module.modelArena.matchePlayer(info.Uinfo.Uid, info.Dan, active.HumanNum); err != nil && err != mgo.MongodbNil {
errdata = &pb.ErrorData{ errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError, Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(), Title: pb.ErrorCode_DBError.ToString(),

View File

@ -79,7 +79,7 @@ func (this *apiComp) PlotReward(session comm.IUserSession, req *pb.ArenaPlotRewa
} }
info.Npc[req.Pid].Cd = configure.Now().Add(time.Minute * time.Duration(npc.ReviveCd)).Unix() info.Npc[req.Pid].Cd = configure.Now().Add(time.Minute * time.Duration(npc.ReviveCd)).Unix()
if err = this.module.modelArena.Change(info.Uid, map[string]interface{}{ if err = this.module.modelArena.Change(info.Uinfo.Uid, map[string]interface{}{
"npc": info.Npc, "npc": info.Npc,
}); err != nil { }); err != nil {
this.module.Errorln(err) this.module.Errorln(err)

View File

@ -52,11 +52,7 @@ func (this *apiComp) Rank(session comm.IUserSession, req *pb.ArenaRankReq) (errd
for i, v := range ranks { for i, v := range ranks {
rank := int32(i + 1) rank := int32(i + 1)
players[i] = &pb.ArenaPlayer{ players[i] = &pb.ArenaPlayer{
Uid: v.Uid, Uinfo: v.Uinfo,
Name: v.Name,
Sex: v.Sex,
Skin: v.Skin,
Lv: v.Lv,
Dan: v.Dan, Dan: v.Dan,
Rank: rank, Rank: rank,
Integral: v.Integral, Integral: v.Integral,
@ -64,7 +60,7 @@ func (this *apiComp) Rank(session comm.IUserSession, req *pb.ArenaRankReq) (errd
Isai: false, Isai: false,
Title: v.Title, Title: v.Title,
} }
if session.GetUserId() == v.Uid && info.Rank != rank { if session.GetUserId() == v.Uinfo.Uid && info.Rank != rank {
info.Rank = rank info.Rank = rank
if err = this.module.modelArena.updateArenaUserInfo(info); err != nil { if err = this.module.modelArena.updateArenaUserInfo(info); err != nil {
errdata = &pb.ErrorData{ errdata = &pb.ErrorData{

View File

@ -7,7 +7,6 @@ import (
"go_dreamfactory/lego/core" "go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/log" "go_dreamfactory/lego/sys/log"
"go_dreamfactory/lego/sys/mgo" "go_dreamfactory/lego/sys/mgo"
"go_dreamfactory/lego/utils/container/id"
"go_dreamfactory/modules" "go_dreamfactory/modules"
"go_dreamfactory/pb" "go_dreamfactory/pb"
"go_dreamfactory/sys/configure" "go_dreamfactory/sys/configure"
@ -76,11 +75,7 @@ func (this *modelArena) queryArenaPlayer(uId string) (result *pb.ArenaPlayer, er
return return
} }
result = &pb.ArenaPlayer{ result = &pb.ArenaPlayer{
Uid: temp.Uid, Uinfo: temp.Uinfo,
Name: temp.Name,
Lv: temp.Lv,
Sex: temp.Sex,
Skin: temp.Skin,
Dan: temp.Dan, Dan: temp.Dan,
Integral: temp.Integral, Integral: temp.Integral,
Defend: temp.Defend, Defend: temp.Defend,
@ -116,7 +111,7 @@ func (this *modelArena) updateArenaUserInfo(info *pb.DBArenaUser) (err error) {
return return
} }
info.Dan = dan info.Dan = dan
this.Change(info.Uid, map[string]interface{}{ this.Change(info.Uinfo.Uid, map[string]interface{}{
"integral": info.Integral, "integral": info.Integral,
"dan": dan, "dan": dan,
"rank": info.Rank, "rank": info.Rank,
@ -132,11 +127,7 @@ func (this *modelArena) updateArenaUserInfo(info *pb.DBArenaUser) (err error) {
"defendtotaluum": info.Defendtotaluum, "defendtotaluum": info.Defendtotaluum,
"loc": []float64{float64(dan), float64(rand.Int31n(100)) / 1000.0}, "loc": []float64{float64(dan), float64(rand.Int31n(100)) / 1000.0},
"isdef": info.Isdef, "isdef": info.Isdef,
"name": info.Name, "uinfo": info.Uinfo,
"lv": info.Lv,
"sex": info.Sex,
"skin": info.Skin,
"title": info.Title,
}) })
return return
} }
@ -149,7 +140,7 @@ func (this *modelArena) modifyIntegral(uid string, integral int32) (err error) {
if dan, err = this.computedan(integral); err != nil { if dan, err = this.computedan(integral); err != nil {
return return
} }
player = &pb.ArenaPlayer{Uid: uid, Integral: integral} player = &pb.ArenaPlayer{Uinfo: &pb.BaseUserInfo{Uid: uid}, Integral: integral}
if err = this.module.modelRank.updateArenaRank(player); err != nil { if err = this.module.modelRank.updateArenaRank(player); err != nil {
this.module.Errorln(err) this.module.Errorln(err)
return return
@ -175,31 +166,6 @@ func (this *modelArena) computedan(integral int32) (dan int32, err error) {
return return
} }
//获取目标去陪数据
// func (this *modelArena) matchePlayer(integral int32) (results []*pb.DBArenaUser, err error) {
// var (
// cursor *mongo.Cursor
// )
// project := bson.M{"$project": bson.M{
// "diff": bson.M{
// "$abs": bson.M{"$subtract": bson.A{integral, "$start"}},
// },
// }}
// if cursor, err = this.DBModel.DB.Aggregate(comm.TableArena, bson.A{project}); err != nil {
// this.module.Errorln(err)
// return
// } else {
// for cursor.Next(context.Background()) {
// temp := &pb.DBArenaUser{}
// if err = cursor.Decode(temp); err != nil {
// this.module.Errorln(err)
// return
// }
// }
// }
// return
// }
// 匹配机器人 // 匹配机器人
func (this *modelArena) matcheAI(dan, num int32) (results []*pb.ArenaPlayer, err error) { func (this *modelArena) matcheAI(dan, num int32) (results []*pb.ArenaPlayer, err error) {
var ( var (
@ -239,12 +205,7 @@ func (this *modelArena) matcheAI(dan, num int32) (results []*pb.ArenaPlayer, err
} }
results[i] = &pb.ArenaPlayer{ results[i] = &pb.ArenaPlayer{
Uid: fmt.Sprintf("ai_%s", id.NewXId()), Uinfo: comm.GetRobotBaseInfo(robots[i]),
Name: robots[i].Name,
Lv: robots[i].Lvshow,
Sex: robots[i].Sex,
Skin: robots[i].Showid,
//Title: robots[i].Curtitle,
Dan: dan, Dan: dan,
Integral: int32(rand.Intn(int(active.ScoreUp)-int(active.ScoreLow))) + active.ScoreLow, Integral: int32(rand.Intn(int(active.ScoreUp)-int(active.ScoreLow))) + active.ScoreLow,
Isai: true, Isai: true,
@ -315,11 +276,7 @@ func (this *modelArena) matchePlayer(uid string, dan, num int32) (results []*pb.
return return
} }
results = append(results, &pb.ArenaPlayer{ results = append(results, &pb.ArenaPlayer{
Uid: temp.Uid, Uinfo: temp.Uinfo,
Name: temp.Name,
Sex: temp.Sex,
Skin: temp.Skin,
Lv: temp.Lv,
Dan: temp.Dan, Dan: temp.Dan,
Integral: temp.Integral, Integral: temp.Integral,
Defend: temp.Defend, Defend: temp.Defend,
@ -330,31 +287,20 @@ func (this *modelArena) matchePlayer(uid string, dan, num int32) (results []*pb.
return return
} }
// 随机用户名
func (this *modelArena) randUserName() string {
var s = []byte("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*")
r := rand.New(rand.NewSource(configure.Now().UnixNano() + rand.Int63n(10000)))
result := []byte("DWA_")
for i, v := range r.Perm(len(s)) {
result = append(result, s[v])
if i == 3 {
break
}
}
return string(result)
}
func (this *modelArena) getAI(mformatId int32) (ai *pb.ArenaPlayer, err error) { func (this *modelArena) getAI(mformatId int32) (ai *pb.ArenaPlayer, err error) {
var ( var (
robots []*cfg.GameRobotData
formats []*cfg.GameMonsterFormatData formats []*cfg.GameMonsterFormatData
// monst *cfg.GameMonsterData
) )
if robots, err = this.module.ModuleTools.RandRobotConfig(1); err != nil {
return
}
if formats, err = this.module.configure.getMonsterFormat(mformatId); err != nil { if formats, err = this.module.configure.getMonsterFormat(mformatId); err != nil {
this.module.Errorln(err) this.module.Errorln(err)
return return
} }
ai = &pb.ArenaPlayer{ ai = &pb.ArenaPlayer{
Name: this.randUserName(), Uinfo: comm.GetRobotBaseInfo(robots[0]),
Isai: true, Isai: true,
Mformatid: mformatId, Mformatid: mformatId,
Defend: &pb.DBPlayerBattleFormt{ Defend: &pb.DBPlayerBattleFormt{
@ -366,9 +312,6 @@ func (this *modelArena) getAI(mformatId int32) (ai *pb.ArenaPlayer, err error) {
if v1 == nil { if v1 == nil {
ai.Defend.Formt[i1] = nil ai.Defend.Formt[i1] = nil
} else { } else {
// if monst, err = this.module.configure.getMonster(v1.Monster); err != nil {
// this.module.Errorln(err)
// }
hero := &pb.DBHero{} hero := &pb.DBHero{}
if hero = this.module.ModuleHero.CreateMonster(fmt.Sprintf("%d", v1.Heroid), v1.Star, v1.Lv); hero == nil { if hero = this.module.ModuleHero.CreateMonster(fmt.Sprintf("%d", v1.Heroid), v1.Star, v1.Lv); hero == nil {
err = fmt.Errorf("CreateMonster 失败") err = fmt.Errorf("CreateMonster 失败")
@ -435,7 +378,7 @@ func (this *modelArena) recoverTicket(session comm.IUserSession, info *pb.DBAren
maxTick := global.ArenaTicketMax maxTick := global.ArenaTicketMax
// 竞技场最大上限 // 竞技场最大上限
maxTick += this.module.privilege.GetCountByPrivilegeId(session.GetUserId(), comm.PrivilegeType10) // 特权 maxTick += this.module.privilege.GetCountByPrivilegeId(session.GetUserId(), comm.PrivilegeType10) // 特权
ticket = int32(this.module.ModuleItems.QueryItemAmount(info.Uid, ticketitem.T)) ticket = int32(this.module.ModuleItems.QueryItemAmount(info.Uinfo.Uid, ticketitem.T))
if ticket < maxTick && info.Lastrtickettime > 0 { if ticket < maxTick && info.Lastrtickettime > 0 {
duration = configure.Now().Sub(time.Unix(info.Lastrtickettime, 0)) duration = configure.Now().Sub(time.Unix(info.Lastrtickettime, 0))
ticketNum = int32(math.Floor(duration.Minutes() / float64(global.ArenaTicketRecoveryTime))) ticketNum = int32(math.Floor(duration.Minutes() / float64(global.ArenaTicketRecoveryTime)))
@ -519,7 +462,7 @@ func (this *arenaModel) recoverTicket(session comm.IUserSession, info *pb.DBAren
maxTick := global.ArenaTicketMax maxTick := global.ArenaTicketMax
// 竞技场最大上限 // 竞技场最大上限
maxTick += this.module.privilege.GetCountByPrivilegeId(session.GetUserId(), comm.PrivilegeType10) // 特权 maxTick += this.module.privilege.GetCountByPrivilegeId(session.GetUserId(), comm.PrivilegeType10) // 特权
ticket = int32(this.module.ModuleItems.QueryItemAmount(info.Uid, ticketitem.T)) ticket = int32(this.module.ModuleItems.QueryItemAmount(info.Uinfo.Uid, ticketitem.T))
if ticket < maxTick && info.Lastrtickettime > 0 { if ticket < maxTick && info.Lastrtickettime > 0 {
duration = configure.Now().Sub(time.Unix(info.Lastrtickettime, 0)) duration = configure.Now().Sub(time.Unix(info.Lastrtickettime, 0))
ticketNum = int32(math.Floor(duration.Minutes() / float64(global.ArenaTicketRecoveryTime))) ticketNum = int32(math.Floor(duration.Minutes() / float64(global.ArenaTicketRecoveryTime)))

View File

@ -40,13 +40,13 @@ func (this *modelRank) updateArenaRank(users ...*pb.ArenaPlayer) (err error) {
) )
menbers = make([]*redis.Z, len(users)) menbers = make([]*redis.Z, len(users))
for i, v := range users { for i, v := range users {
menbers[i] = &redis.Z{Score: float64(v.Integral), Member: v.Uid} menbers[i] = &redis.Z{Score: float64(v.Integral), Member: v.Uinfo.Uid}
} }
if cmd = pipe.ZAdd(this.TableName, menbers...); err != nil { if cmd = pipe.ZAdd(this.TableName, menbers...); err != nil {
this.module.Errorln(err) this.module.Errorln(err)
} }
for i, v := range users { for i, v := range users {
menbersCmd[i] = pipe.ZRevRank(this.TableName, v.Uid) menbersCmd[i] = pipe.ZRevRank(this.TableName, v.Uinfo.Uid)
} }
if _, err = pipe.Exec(); err != nil { if _, err = pipe.Exec(); err != nil {
this.module.Errorln(err) this.module.Errorln(err)

View File

@ -191,7 +191,7 @@ func (this *Arena) GetMatcheBattleRoles(uid string) (captain int32, rules []*pb.
} }
if err == mgo.MongodbNil { if err == mgo.MongodbNil {
info = &pb.DBArenaUser{ info = &pb.DBArenaUser{
Uid: uid, Uinfo: &pb.BaseUserInfo{Uid: uid},
Integral: global.ArenaInitiaIntegral, Integral: global.ArenaInitiaIntegral,
Isdef: false, Isdef: false,
} }
@ -199,7 +199,7 @@ func (this *Arena) GetMatcheBattleRoles(uid string) (captain int32, rules []*pb.
return return
} }
} }
if players, err = this.modelArena.matchePlayer(info.Uid, info.Dan, 1); err != nil && err != mgo.MongodbNil { if players, err = this.modelArena.matchePlayer(info.Uinfo.Uid, info.Dan, 1); err != nil && err != mgo.MongodbNil {
return return
} }
if len(players) > 0 { if len(players) > 0 {

View File

@ -72,7 +72,7 @@ func (this *ModuleRobot_Arena) DoPipeline(robot IRobot) (err error) {
return return
} }
if resp, errdata = robot.SendMessage("arena", "challenge", &pb.ArenaChallengeReq{ if resp, errdata = robot.SendMessage("arena", "challenge", &pb.ArenaChallengeReq{
Playerid: player.Uid, Playerid: player.Uinfo.Uid,
Isai: player.Isai, Isai: player.Isai,
MformatId: player.Mformatid, MformatId: player.Mformatid,
Battle: &pb.BattleFormation{ Battle: &pb.BattleFormation{
@ -85,7 +85,7 @@ func (this *ModuleRobot_Arena) DoPipeline(robot IRobot) (err error) {
Iswin: true, Iswin: true,
Isai: player.Isai, Isai: player.Isai,
Aiintegral: player.Integral, Aiintegral: player.Integral,
Ainame: player.Name, Ainame: player.Uinfo.Name,
Report: &pb.BattleReport{ Report: &pb.BattleReport{
Info: resp.(*pb.ArenaChallengeResp).Info, Info: resp.(*pb.ArenaChallengeResp).Info,
WinSide: 1, WinSide: 1,
@ -125,7 +125,7 @@ func (this *ModuleRobot_Arena) DoTask(robot IRobot, taskconf *cfg.GameWorldTaskD
break break
} }
if resp, errdata = robot.SendTaskMessage(taskconf.Key, condconf.Id, "arena", "challenge", &pb.ArenaChallengeReq{ if resp, errdata = robot.SendTaskMessage(taskconf.Key, condconf.Id, "arena", "challenge", &pb.ArenaChallengeReq{
Playerid: player.Uid, Playerid: player.Uinfo.Uid,
Isai: player.Isai, Isai: player.Isai,
MformatId: player.Mformatid, MformatId: player.Mformatid,
Battle: &pb.BattleFormation{ Battle: &pb.BattleFormation{
@ -138,7 +138,7 @@ func (this *ModuleRobot_Arena) DoTask(robot IRobot, taskconf *cfg.GameWorldTaskD
Iswin: true, Iswin: true,
Isai: player.Isai, Isai: player.Isai,
Aiintegral: player.Integral, Aiintegral: player.Integral,
Ainame: player.Name, Ainame: player.Uinfo.Name,
Report: &pb.BattleReport{ Report: &pb.BattleReport{
Info: resp.(*pb.MainlineChallengeResp).Info, Info: resp.(*pb.MainlineChallengeResp).Info,
WinSide: 1, WinSide: 1,

View File

@ -146,19 +146,15 @@ type ArenaPlayer struct {
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid"` Uinfo *BaseUserInfo `protobuf:"bytes,1,opt,name=uinfo,proto3" json:"uinfo"` //用户基础
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name" bson:"avatar"` // string avatar = 3; //头像 Dan int32 `protobuf:"varint,2,opt,name=dan,proto3" json:"dan"` //段位
Lv int32 `protobuf:"varint,4,opt,name=lv,proto3" json:"lv" bson:"lv"` //等级 Integral int32 `protobuf:"varint,3,opt,name=integral,proto3" json:"integral"`
Sex int32 `protobuf:"varint,5,opt,name=sex,proto3" json:"sex"` //性别 Rank int32 `protobuf:"varint,4,opt,name=rank,proto3" json:"rank"` //排名
Skin string `protobuf:"bytes,6,opt,name=skin,proto3" json:"skin"` //时装 Defend *DBPlayerBattleFormt `protobuf:"bytes,5,opt,name=defend,proto3" json:"defend"` //防守
Dan int32 `protobuf:"varint,7,opt,name=dan,proto3" json:"dan"` //段位 Isai bool `protobuf:"varint,6,opt,name=isai,proto3" json:"isai"` //是否是ai
Integral int32 `protobuf:"varint,8,opt,name=integral,proto3" json:"integral"` Mformatid int32 `protobuf:"varint,7,opt,name=mformatid,proto3" json:"mformatid"` // AIId
Rank int32 `protobuf:"varint,9,opt,name=rank,proto3" json:"rank"` //排名 Changeintegral int32 `protobuf:"varint,8,opt,name=changeintegral,proto3" json:"changeintegral"` //变化积分
Defend *DBPlayerBattleFormt `protobuf:"bytes,10,opt,name=defend,proto3" json:"defend"` //防守 Title string `protobuf:"bytes,9,opt,name=title,proto3" json:"title"`
Isai bool `protobuf:"varint,11,opt,name=isai,proto3" json:"isai"` //是否是ai
Mformatid int32 `protobuf:"varint,12,opt,name=mformatid,proto3" json:"mformatid"` // AIId
Changeintegral int32 `protobuf:"varint,13,opt,name=changeintegral,proto3" json:"changeintegral"` //变化积分
Title string `protobuf:"bytes,14,opt,name=title,proto3" json:"title"`
} }
func (x *ArenaPlayer) Reset() { func (x *ArenaPlayer) Reset() {
@ -193,39 +189,11 @@ func (*ArenaPlayer) Descriptor() ([]byte, []int) {
return file_arena_arena_db_proto_rawDescGZIP(), []int{1} return file_arena_arena_db_proto_rawDescGZIP(), []int{1}
} }
func (x *ArenaPlayer) GetUid() string { func (x *ArenaPlayer) GetUinfo() *BaseUserInfo {
if x != nil { if x != nil {
return x.Uid return x.Uinfo
} }
return "" return nil
}
func (x *ArenaPlayer) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *ArenaPlayer) GetLv() int32 {
if x != nil {
return x.Lv
}
return 0
}
func (x *ArenaPlayer) GetSex() int32 {
if x != nil {
return x.Sex
}
return 0
}
func (x *ArenaPlayer) GetSkin() string {
if x != nil {
return x.Skin
}
return ""
} }
func (x *ArenaPlayer) GetDan() int32 { func (x *ArenaPlayer) GetDan() int32 {
@ -538,12 +506,8 @@ type DBArenaUser struct {
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" bson:"_id"` //ID Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" bson:"_id"` //ID
Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid"` //用户id Uinfo *BaseUserInfo `protobuf:"bytes,2,opt,name=uinfo,proto3" json:"uinfo"` //用户基础
Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name"` //玩家名称
Lv int32 `protobuf:"varint,4,opt,name=lv,proto3" json:"lv" bson:"lv"` //等级
Integral int32 `protobuf:"varint,5,opt,name=integral,proto3" json:"integral"` //积分 Integral int32 `protobuf:"varint,5,opt,name=integral,proto3" json:"integral"` //积分
Sex int32 `protobuf:"varint,6,opt,name=sex,proto3" json:"sex"` //性别
Skin string `protobuf:"bytes,7,opt,name=skin,proto3" json:"skin"` //时装
Dan int32 `protobuf:"varint,8,opt,name=dan,proto3" json:"dan"` //段位 Dan int32 `protobuf:"varint,8,opt,name=dan,proto3" json:"dan"` //段位
Attack *DBPlayerBattleFormt `protobuf:"bytes,9,opt,name=attack,proto3" json:"attack"` //进攻阵型 Attack *DBPlayerBattleFormt `protobuf:"bytes,9,opt,name=attack,proto3" json:"attack"` //进攻阵型
Defend *DBPlayerBattleFormt `protobuf:"bytes,10,opt,name=defend,proto3" json:"defend"` //防守阵型 Defend *DBPlayerBattleFormt `protobuf:"bytes,10,opt,name=defend,proto3" json:"defend"` //防守阵型
@ -604,25 +568,11 @@ func (x *DBArenaUser) GetId() string {
return "" return ""
} }
func (x *DBArenaUser) GetUid() string { func (x *DBArenaUser) GetUinfo() *BaseUserInfo {
if x != nil { if x != nil {
return x.Uid return x.Uinfo
} }
return "" return nil
}
func (x *DBArenaUser) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *DBArenaUser) GetLv() int32 {
if x != nil {
return x.Lv
}
return 0
} }
func (x *DBArenaUser) GetIntegral() int32 { func (x *DBArenaUser) GetIntegral() int32 {
@ -632,20 +582,6 @@ func (x *DBArenaUser) GetIntegral() int32 {
return 0 return 0
} }
func (x *DBArenaUser) GetSex() int32 {
if x != nil {
return x.Sex
}
return 0
}
func (x *DBArenaUser) GetSkin() string {
if x != nil {
return x.Skin
}
return ""
}
func (x *DBArenaUser) GetDan() int32 { func (x *DBArenaUser) GetDan() int32 {
if x != nil { if x != nil {
return x.Dan return x.Dan
@ -910,175 +846,169 @@ var file_arena_arena_db_proto_rawDesc = []byte{
0x07, 0x6c, 0x65, 0x61, 0x64, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x07, 0x6c, 0x65, 0x61, 0x64, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07,
0x6c, 0x65, 0x61, 0x64, 0x70, 0x6f, 0x73, 0x12, 0x1d, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x6d, 0x74, 0x6c, 0x65, 0x61, 0x64, 0x70, 0x6f, 0x73, 0x12, 0x1d, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x6d, 0x74,
0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x07, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52,
0x05, 0x66, 0x6f, 0x72, 0x6d, 0x74, 0x22, 0xc9, 0x02, 0x0a, 0x0b, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x05, 0x66, 0x6f, 0x72, 0x6d, 0x74, 0x22, 0x92, 0x02, 0x0a, 0x0b, 0x41, 0x72, 0x65, 0x6e, 0x61,
0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x05, 0x75, 0x69, 0x6e, 0x66, 0x6f, 0x18,
0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x55, 0x73, 0x65, 0x72,
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x75, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x64,
0x6c, 0x76, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x6c, 0x76, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x64, 0x61, 0x6e, 0x12, 0x1a, 0x0a,
0x73, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x73, 0x65, 0x78, 0x12, 0x12, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
0x0a, 0x04, 0x73, 0x6b, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6b, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e,
0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x61, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x12, 0x2c, 0x0a,
0x03, 0x64, 0x61, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x06, 0x64, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e,
0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x44, 0x42, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x46, 0x6f,
0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x72, 0x6d, 0x74, 0x52, 0x06, 0x64, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x69,
0x72, 0x61, 0x6e, 0x6b, 0x12, 0x2c, 0x0a, 0x06, 0x64, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x18, 0x0a, 0x73, 0x61, 0x69, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x61, 0x69, 0x12,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x44, 0x42, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x42, 0x1c, 0x0a, 0x09, 0x6d, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01,
0x61, 0x74, 0x74, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x74, 0x52, 0x06, 0x64, 0x65, 0x66, 0x65, 0x28, 0x05, 0x52, 0x09, 0x6d, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x64, 0x12, 0x26, 0x0a,
0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x61, 0x69, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x0e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x18,
0x52, 0x04, 0x69, 0x73, 0x61, 0x69, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x69, 0x6e, 0x74,
0x74, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6d, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x09,
0x61, 0x74, 0x69, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x69, 0x6e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x22, 0x8e, 0x07, 0x0a, 0x0a,
0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x63, 0x68, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x42, 0x61, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69,
0x61, 0x6e, 0x67, 0x65, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03,
0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x63, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x12,
0x6c, 0x65, 0x22, 0x8e, 0x07, 0x0a, 0x0a, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x42, 0x61, 0x73, 0x0a, 0x04, 0x73, 0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x74,
0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x6c, 0x76, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02,
0x6f, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x6c, 0x76, 0x12, 0x35, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x05,
0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x42, 0x61, 0x73,
0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x74, 0x61, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x6c, 0x76, 0x18, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x6c, 0x76, 0x12, 0x35, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x3e, 0x0a, 0x0b, 0x61, 0x64, 0x64,
0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x44, 0x42, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c,
0x48, 0x65, 0x72, 0x6f, 0x42, 0x61, 0x73, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x42, 0x61, 0x73, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x50,
0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x64,
0x12, 0x3e, 0x0a, 0x0b, 0x61, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x41, 0x0a, 0x0c, 0x6a, 0x75, 0x65,
0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x42, 0x61, 0x78, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x73, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x1d, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x42, 0x61, 0x73, 0x65, 0x2e, 0x4a, 0x75, 0x65,
0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x78, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c,
0x12, 0x41, 0x0a, 0x0c, 0x6a, 0x75, 0x65, 0x78, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x6a, 0x75, 0x65, 0x78, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x47, 0x0a, 0x0e,
0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x42, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x08,
0x61, 0x73, 0x65, 0x2e, 0x4a, 0x75, 0x65, 0x78, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x42, 0x61, 0x73,
0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x6a, 0x75, 0x65, 0x78, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x65, 0x2e, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79,
0x72, 0x74, 0x79, 0x12, 0x47, 0x0a, 0x0e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f,
0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x44, 0x42, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x50, 0x0a, 0x11, 0x68, 0x6f, 0x72, 0x6f, 0x73, 0x63, 0x6f,
0x48, 0x65, 0x72, 0x6f, 0x42, 0x61, 0x73, 0x65, 0x2e, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x50, 0x70, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b,
0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x74, 0x61, 0x32, 0x22, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x42, 0x61, 0x73, 0x65, 0x2e, 0x48, 0x6f,
0x6c, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x50, 0x0a, 0x11, 0x72, 0x6f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45,
0x68, 0x6f, 0x72, 0x6f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x68, 0x6f, 0x72, 0x6f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x50,
0x79, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x32, 0x0a, 0x07, 0x66, 0x65, 0x74, 0x74, 0x65,
0x42, 0x61, 0x73, 0x65, 0x2e, 0x48, 0x6f, 0x72, 0x6f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x50, 0x72, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72,
0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x68, 0x6f, 0x72, 0x6f, 0x42, 0x61, 0x73, 0x65, 0x2e, 0x46, 0x65, 0x74, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74,
0x6f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x32, 0x72, 0x79, 0x52, 0x07, 0x66, 0x65, 0x74, 0x74, 0x65, 0x72, 0x73, 0x12, 0x2c, 0x0a, 0x0b, 0x6e,
0x0a, 0x07, 0x66, 0x65, 0x74, 0x74, 0x65, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b,
0x18, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x42, 0x61, 0x73, 0x65, 0x2e, 0x46, 0x65, 0x74, 0x32, 0x0a, 0x2e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x6e, 0x6f,
0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x66, 0x65, 0x74, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x6c, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x1a, 0x3b, 0x0a, 0x0d, 0x50, 0x72, 0x6f,
0x72, 0x73, 0x12, 0x2c, 0x0a, 0x0b, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x53, 0x6b, 0x69, 0x6c, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
0x6c, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
0x61, 0x74, 0x61, 0x52, 0x0b, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c,
0x1a, 0x3b, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f,
0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c,
0x10, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3f, 0x0a, 0x11, 0x4a, 0x75, 0x65, 0x78, 0x50, 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, 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, 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, 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, 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, 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, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 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, 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, 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, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x54, 0x61, 0x6c, 0x65, 0x6e,
0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
0x02, 0x38, 0x01, 0x22, 0xae, 0x02, 0x0a, 0x13, 0x44, 0x42, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x42, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x48, 0x6f,
0x61, 0x74, 0x74, 0x6c, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x72, 0x6f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45,
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x62, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x73, 0x77, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
0x52, 0x05, 0x69, 0x73, 0x77, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x64, 0x65, 0x66, 0x1a, 0x3a, 0x0a, 0x0c, 0x46, 0x65, 0x74, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
0x65, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x64, 0x65, 0x66, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
0x65, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x69, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x18, 0x05, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x69, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xae, 0x02, 0x0a,
0x09, 0x72, 0x69, 0x76, 0x61, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x13, 0x44, 0x42, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x52, 0x65,
0x52, 0x09, 0x72, 0x69, 0x76, 0x61, 0x6c, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x65, 0x61, 0x64, 0x70, 0x6f, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6c, 0x65, 0x09, 0x52, 0x03, 0x62, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02,
0x61, 0x64, 0x70, 0x6f, 0x73, 0x12, 0x21, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x6d, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x73,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x42, 0x61, 0x73, 0x77, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x69, 0x73, 0x77, 0x69, 0x6e,
0x65, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x6d, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x64, 0x64, 0x69, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x64, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01,
0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x61, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x64, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07,
0x64, 0x64, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x12, 0x28, 0x0a, 0x05, 0x53, 0x74, 0x72, 0x69, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72,
0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x69, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x69, 0x76, 0x61, 0x6c, 0x6e,
0x6c, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x53, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x69, 0x76, 0x61, 0x6c,
0x74, 0x61, 0x74, 0x65, 0x22, 0xc2, 0x06, 0x0a, 0x0b, 0x44, 0x42, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x65, 0x61, 0x64, 0x70, 0x6f, 0x73, 0x18,
0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6c, 0x65, 0x61, 0x64, 0x70, 0x6f, 0x73, 0x12, 0x21,
0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x6d, 0x74, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e,
0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x42, 0x61, 0x73, 0x65, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x6d,
0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6c, 0x76, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c,
0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x6c, 0x76, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x74, 0x65, 0x67,
0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x69, 0x6e, 0x72, 0x61, 0x6c, 0x12, 0x28, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01,
0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x78, 0x18, 0x06, 0x20, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72,
0x01, 0x28, 0x05, 0x52, 0x03, 0x73, 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x8b, 0x06,
0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x0a, 0x0b, 0x44, 0x42, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0e, 0x0a,
0x64, 0x61, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x64, 0x61, 0x6e, 0x12, 0x2c, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a,
0x0a, 0x06, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x05, 0x75, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x42,
0x61, 0x73, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x75, 0x69, 0x6e,
0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x18, 0x05,
0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x12, 0x10,
0x0a, 0x03, 0x64, 0x61, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x64, 0x61, 0x6e,
0x12, 0x2c, 0x0a, 0x06, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x14, 0x2e, 0x44, 0x42, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x42, 0x61, 0x74, 0x74, 0x6c,
0x65, 0x46, 0x6f, 0x72, 0x6d, 0x74, 0x52, 0x06, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x2c,
0x0a, 0x06, 0x64, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14,
0x2e, 0x44, 0x42, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x46, 0x2e, 0x44, 0x42, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x46,
0x6f, 0x72, 0x6d, 0x74, 0x52, 0x06, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x2c, 0x0a, 0x06, 0x6f, 0x72, 0x6d, 0x74, 0x52, 0x06, 0x64, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06,
0x64, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x44, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74,
0x42, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x72, 0x65, 0x61, 0x6b, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x72, 0x61,
0x6d, 0x74, 0x52, 0x06, 0x64, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b,
0x72, 0x65, 0x61, 0x6b, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x72, 0x65, 0x72, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x72, 0x61,
0x61, 0x6b, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x72, 0x61, 0x74, 0x65, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x64, 0x65, 0x66, 0x65, 0x6e, 0x64,
0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x72, 0x61, 0x72, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x0e, 0x20, 0x01,
0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x72, 0x61, 0x74, 0x65, 0x28, 0x05, 0x52, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x79, 0x6e,
0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x64, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x72, 0x61, 0x75, 0x6d, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x62, 0x75, 0x79, 0x6e, 0x75, 0x6d,
0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x12, 0x2c, 0x0a, 0x06, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b,
0x52, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x79, 0x6e, 0x75, 0x6d, 0x32, 0x14, 0x2e, 0x44, 0x42, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65,
0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x62, 0x75, 0x79, 0x6e, 0x75, 0x6d, 0x12, 0x2c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x28,
0x0a, 0x06, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x0a, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x72, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x74, 0x69, 0x6d,
0x2e, 0x44, 0x42, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x52, 0x65, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x72, 0x74, 0x69,
0x63, 0x6f, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x6b, 0x65, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x61,
0x6c, 0x61, 0x73, 0x74, 0x72, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x63, 0x6b, 0x77, 0x69, 0x6e, 0x75, 0x75, 0x6d, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c,
0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x72, 0x74, 0x69, 0x63, 0x6b, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x77, 0x69, 0x6e, 0x75, 0x75, 0x6d, 0x12, 0x26, 0x0a, 0x0e,
0x65, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x75, 0x75, 0x6d, 0x18, 0x13,
0x77, 0x69, 0x6e, 0x75, 0x75, 0x6d, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x61, 0x74, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x74, 0x6f, 0x74, 0x61,
0x74, 0x61, 0x63, 0x6b, 0x77, 0x69, 0x6e, 0x75, 0x75, 0x6d, 0x12, 0x26, 0x0a, 0x0e, 0x61, 0x74, 0x6c, 0x75, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x77, 0x69,
0x74, 0x61, 0x63, 0x6b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x75, 0x75, 0x6d, 0x18, 0x13, 0x20, 0x01, 0x6e, 0x75, 0x75, 0x6d, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x65,
0x28, 0x05, 0x52, 0x0e, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x75, 0x6e, 0x64, 0x77, 0x69, 0x6e, 0x75, 0x75, 0x6d, 0x12, 0x26, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x65,
0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x77, 0x69, 0x6e, 0x75, 0x6e, 0x64, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x75, 0x75, 0x6d, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05,
0x75, 0x6d, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x75, 0x75, 0x6d,
0x77, 0x69, 0x6e, 0x75, 0x75, 0x6d, 0x12, 0x26, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x63, 0x18, 0x16, 0x20, 0x03, 0x28, 0x01, 0x52, 0x03, 0x6c,
0x74, 0x6f, 0x74, 0x61, 0x6c, 0x75, 0x75, 0x6d, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6f, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x73, 0x64, 0x65, 0x66, 0x18, 0x17, 0x20, 0x01, 0x28,
0x64, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x75, 0x75, 0x6d, 0x12, 0x10, 0x08, 0x52, 0x05, 0x69, 0x73, 0x64, 0x65, 0x66, 0x12, 0x27, 0x0a, 0x03, 0x6e, 0x70, 0x63, 0x18,
0x0a, 0x03, 0x6c, 0x6f, 0x63, 0x18, 0x16, 0x20, 0x03, 0x28, 0x01, 0x52, 0x03, 0x6c, 0x6f, 0x63, 0x18, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x44, 0x42, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x55,
0x12, 0x14, 0x0a, 0x05, 0x69, 0x73, 0x64, 0x65, 0x66, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x73, 0x65, 0x72, 0x2e, 0x4e, 0x70, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x6e, 0x70,
0x05, 0x69, 0x73, 0x64, 0x65, 0x66, 0x12, 0x27, 0x0a, 0x03, 0x6e, 0x70, 0x63, 0x18, 0x18, 0x20, 0x63, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x64, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f,
0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x44, 0x42, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x55, 0x73, 0x65, 0x6e, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x64, 0x65, 0x64, 0x75,
0x72, 0x2e, 0x4e, 0x70, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x6e, 0x70, 0x63, 0x12, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x1a,
0x22, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x64, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x1a, 0x3e, 0x0a, 0x08, 0x4e,
0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x64, 0x65, 0x64, 0x75, 0x63, 0x74, 0x70, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x05, 0x76, 0x61, 0x6c,
0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x1a, 0x3e, 0x0a, 0x08, 0x4e, 0x70, 0x63, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x44, 0x42, 0x4e, 0x70, 0x63,
0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x05, 0x44,
0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x4e, 0x70, 0x63, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x44, 0x42, 0x4e, 0x70, 0x63, 0x52, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x63, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x05, 0x44, 0x42, 0x4e, 0x52, 0x02, 0x63, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20,
0x70, 0x63, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x44, 0x0a, 0x14, 0x52, 0x50,
0x69, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x63, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x43, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x52,
0x63, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x44, 0x0a, 0x14, 0x52, 0x50, 0x43, 0x4d, 0x03, 0x75, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c,
0x6f, 0x64, 0x69, 0x66, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c,
0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x2a, 0x9f, 0x01, 0x0a, 0x11, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72,
0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x18, 0x02, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b,
0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x2a, 0x9f, 0x57, 0x69, 0x6e, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x4c,
0x01, 0x0a, 0x11, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x53, 0x6f, 0x73, 0x74, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x6b,
0x74, 0x61, 0x74, 0x65, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x57, 0x69, 0x57, 0x69, 0x6e, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x4c,
0x6e, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x4c, 0x6f, 0x73, 0x6f, 0x73, 0x74, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x57, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67,
0x74, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x6b, 0x57, 0x69, 0x52, 0x65, 0x76, 0x65, 0x6e, 0x67, 0x65, 0x10, 0x04, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x65, 0x76,
0x6e, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x65, 0x66, 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x73, 0x65, 0x6e, 0x67, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10,
0x74, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x57, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x52, 0x65, 0x76, 0x65, 0x6e, 0x67, 0x65, 0x53, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64,
0x76, 0x65, 0x6e, 0x67, 0x65, 0x10, 0x04, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x65, 0x76, 0x65, 0x6e, 0x10, 0x06, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x65, 0x76, 0x65, 0x6e, 0x67, 0x65, 0x45, 0x6e, 0x64,
0x67, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x65, 0x10, 0x07, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
0x76, 0x65, 0x6e, 0x67, 0x65, 0x53, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x10, 0x06, 0x6f, 0x33,
0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x65, 0x76, 0x65, 0x6e, 0x67, 0x65, 0x45, 0x6e, 0x64, 0x10, 0x07,
0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (
@ -1112,30 +1042,33 @@ var file_arena_arena_db_proto_goTypes = []interface{}{
nil, // 13: DBHeroBase.FettersEntry nil, // 13: DBHeroBase.FettersEntry
nil, // 14: DBArenaUser.NpcEntry nil, // 14: DBArenaUser.NpcEntry
(*DBHero)(nil), // 15: DBHero (*DBHero)(nil), // 15: DBHero
(*SkillData)(nil), // 16: SkillData (*BaseUserInfo)(nil), // 16: BaseUserInfo
(*SkillData)(nil), // 17: SkillData
} }
var file_arena_arena_db_proto_depIdxs = []int32{ var file_arena_arena_db_proto_depIdxs = []int32{
15, // 0: DBPlayerBattleFormt.formt:type_name -> DBHero 15, // 0: DBPlayerBattleFormt.formt:type_name -> DBHero
1, // 1: ArenaPlayer.defend:type_name -> DBPlayerBattleFormt 16, // 1: ArenaPlayer.uinfo:type_name -> BaseUserInfo
8, // 2: DBHeroBase.property:type_name -> DBHeroBase.PropertyEntry 1, // 2: ArenaPlayer.defend:type_name -> DBPlayerBattleFormt
9, // 3: DBHeroBase.addProperty:type_name -> DBHeroBase.AddPropertyEntry 8, // 3: DBHeroBase.property:type_name -> DBHeroBase.PropertyEntry
10, // 4: DBHeroBase.juexProperty:type_name -> DBHeroBase.JuexPropertyEntry 9, // 4: DBHeroBase.addProperty:type_name -> DBHeroBase.AddPropertyEntry
11, // 5: DBHeroBase.talentProperty:type_name -> DBHeroBase.TalentPropertyEntry 10, // 5: DBHeroBase.juexProperty:type_name -> DBHeroBase.JuexPropertyEntry
12, // 6: DBHeroBase.horoscopeProperty:type_name -> DBHeroBase.HoroscopePropertyEntry 11, // 6: DBHeroBase.talentProperty:type_name -> DBHeroBase.TalentPropertyEntry
13, // 7: DBHeroBase.fetters:type_name -> DBHeroBase.FettersEntry 12, // 7: DBHeroBase.horoscopeProperty:type_name -> DBHeroBase.HoroscopePropertyEntry
16, // 8: DBHeroBase.normalSkill:type_name -> SkillData 13, // 8: DBHeroBase.fetters:type_name -> DBHeroBase.FettersEntry
3, // 9: DBArenaBattleRecord.formt:type_name -> DBHeroBase 17, // 9: DBHeroBase.normalSkill:type_name -> SkillData
0, // 10: DBArenaBattleRecord.State:type_name -> BattleRecordState 3, // 10: DBArenaBattleRecord.formt:type_name -> DBHeroBase
1, // 11: DBArenaUser.attack:type_name -> DBPlayerBattleFormt 0, // 11: DBArenaBattleRecord.State:type_name -> BattleRecordState
1, // 12: DBArenaUser.defend:type_name -> DBPlayerBattleFormt 16, // 12: DBArenaUser.uinfo:type_name -> BaseUserInfo
4, // 13: DBArenaUser.record:type_name -> DBArenaBattleRecord 1, // 13: DBArenaUser.attack:type_name -> DBPlayerBattleFormt
14, // 14: DBArenaUser.npc:type_name -> DBArenaUser.NpcEntry 1, // 14: DBArenaUser.defend:type_name -> DBPlayerBattleFormt
6, // 15: DBArenaUser.NpcEntry.value:type_name -> DBNpc 4, // 15: DBArenaUser.record:type_name -> DBArenaBattleRecord
16, // [16:16] is the sub-list for method output_type 14, // 16: DBArenaUser.npc:type_name -> DBArenaUser.NpcEntry
16, // [16:16] is the sub-list for method input_type 6, // 17: DBArenaUser.NpcEntry.value:type_name -> DBNpc
16, // [16:16] is the sub-list for extension type_name 18, // [18:18] is the sub-list for method output_type
16, // [16:16] is the sub-list for extension extendee 18, // [18:18] is the sub-list for method input_type
0, // [0:16] is the sub-list for field type_name 18, // [18:18] is the sub-list for extension type_name
18, // [18:18] is the sub-list for extension extendee
0, // [0:18] is the sub-list for field type_name
} }
func init() { file_arena_arena_db_proto_init() } func init() { file_arena_arena_db_proto_init() }

View File

@ -78,7 +78,7 @@ func Test_2D(t *testing.T) {
fmt.Printf("err:%v", err) fmt.Printf("err:%v", err)
return return
} }
fmt.Printf("temp:%v\n", temp.Uid) fmt.Printf("temp:%v\n", temp.Uinfo.Uid)
} }
} }
} }