From e5a7ae7182b543bdc39f074e91528a5919ae9d2b Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 10 Dec 2024 17:56:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0playroom?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/GoUtil/GoUtil.go | 24 + src/server/GoUtil/randUtil.go | 21 + src/server/GoUtil/sliceUtil.go | 14 + src/server/conf/champship/ChampshipCfg.go | 2 +- src/server/conf/json.go | 10 +- src/server/conf/mergeData/MergeDataCfg.go | 16 +- src/server/conf/playroom/playroomCfg.go | 127 + src/server/conf/server.json | 6 +- src/server/game/ChampshipMgr.go | 3 +- src/server/game/ChargeFunc.go | 11 + src/server/game/FriendMgr.go | 5 +- src/server/game/GameLogic.go | 18 +- src/server/game/Gm.go | 17 +- src/server/game/LimitedTimeTrigger.go | 32 +- src/server/game/Player.go | 87 +- src/server/game/PlayerBaseMod.go | 59 +- src/server/game/PlayerFunc.go | 178 +- src/server/game/PlayerMod.go | 57 +- src/server/game/RankMgr.go | 7 + src/server/game/RegisterNetworkFunc.go | 411 ++- src/server/game/ServerMod.go | 9 +- src/server/game/Type.go | 3 + src/server/game/UnitTest.go | 15 +- src/server/game/VarMgr.go | 5 +- src/server/game/mod/charge/Charge.go | 15 +- src/server/game/mod/friend/Friend.go | 4 + src/server/game/mod/item/Item.go | 1 + .../mod/limitedTimeEvent/LimitedTimeEvent.go | 1 + src/server/game/mod/msg/Msg.go | 67 +- src/server/game/mod/order/Order.go | 294 +- src/server/game/mod/order/OrderFunc.go | 129 +- src/server/game/mod/playroom/playroom.go | 310 ++ src/server/game/mod/quest/Quest.go | 18 +- src/server/gamedata/reader.go | 11 +- src/server/msg/Gameapi.pb.go | 3259 +++++++++++++---- 35 files changed, 4187 insertions(+), 1059 deletions(-) create mode 100644 src/server/conf/playroom/playroomCfg.go create mode 100644 src/server/game/mod/playroom/playroom.go diff --git a/src/server/GoUtil/GoUtil.go b/src/server/GoUtil/GoUtil.go index 6fa932d3..de44074a 100644 --- a/src/server/GoUtil/GoUtil.go +++ b/src/server/GoUtil/GoUtil.go @@ -183,3 +183,27 @@ func RandString(n int) string { func CreateCardId(From, To, CardId int) string { return fmt.Sprintf("%d_%d_%d_%d_%s", From, To, CardId, Now(), RandString(3)) } + +func PlayroomTrigger(Time int64, Num int) (int64, int) { + if Num == 0 { + return 0, 0 + } + Now := Now() + var Duration int64 + for { + if Num > 50 { + Duration = 1200 + + } else { + Duration = 3600 + } + if Time+Duration > Now { + return Time, Num + } + Time += Duration + Num -= 10 + if Num <= 0 { + return 0, 0 + } + } +} diff --git a/src/server/GoUtil/randUtil.go b/src/server/GoUtil/randUtil.go index c8399e78..dc11842c 100644 --- a/src/server/GoUtil/randUtil.go +++ b/src/server/GoUtil/randUtil.go @@ -26,6 +26,27 @@ func RandMap(d map[int]int) int { return -1 } +func RandStringMap(d map[string]int) string { + total := 0 + for _, v := range d { + total += v + } + + // 生成一个 [0, total) 范围内的随机数 + r := rand.Intn(total) + + // 根据随机数选择一个键 + for k, v := range d { + if r < v { + return k + } + r -= v + } + + // 如果没有找到,返回一个默认值 + return "" +} + // 从d中随机选取n个元素 不放回 func RandMapNum(d map[int]int, n int) []int { if n <= 0 || n > len(d) { diff --git a/src/server/GoUtil/sliceUtil.go b/src/server/GoUtil/sliceUtil.go index f7ba557b..1c9e8d02 100644 --- a/src/server/GoUtil/sliceUtil.go +++ b/src/server/GoUtil/sliceUtil.go @@ -182,3 +182,17 @@ func PopSlice(s []int) (int, []int) { } return s[0], s[1:] } + +func SliceEqual(a, b []int) bool { + if len(a) != len(b) { + return false + } + sort.Ints(a) + sort.Ints(b) + for k, v := range a { + if v != b[k] { + return false + } + } + return true +} diff --git a/src/server/conf/champship/ChampshipCfg.go b/src/server/conf/champship/ChampshipCfg.go index d074ce58..c488d1a5 100644 --- a/src/server/conf/champship/ChampshipCfg.go +++ b/src/server/conf/champship/ChampshipCfg.go @@ -69,7 +69,7 @@ func GetRankReward(Rank int) []*item.Item { } for _, v := range data { if Rank >= gamedata.GetIntValue(v, "Min") && Rank <= gamedata.GetIntValue(v, "Max") { - return item.ParseItem(gamedata.GetStringValue(v, "Items")) + return gamedata.GetItemList(v, "Items") } } return nil diff --git a/src/server/conf/json.go b/src/server/conf/json.go index 4f5c4b41..643309ed 100644 --- a/src/server/conf/json.go +++ b/src/server/conf/json.go @@ -40,14 +40,14 @@ var Server struct { ListenAddr string CenterAddr string - RemoteAddr string - - TELOGDIR string + RemoteAddr string + GameConfPath string + TELOGDIR string } func init() { - // data, err := ioutil.ReadFile("conf/server.json") - file, err := os.Open("conf/server.json") + filePath := "conf/server.json" + file, err := os.Open(filePath) if err != nil { panic(err) } diff --git a/src/server/conf/mergeData/MergeDataCfg.go b/src/server/conf/mergeData/MergeDataCfg.go index 3f1871a6..4dabee8f 100644 --- a/src/server/conf/mergeData/MergeDataCfg.go +++ b/src/server/conf/mergeData/MergeDataCfg.go @@ -82,6 +82,7 @@ func GetChessIdByLvAndColor(Lv int, Color string) int { return Id } } + log.Debug("MergeDataCfg GetChessIdByLvAndColor lv:%v Color:%v not found", Lv, Color) return 0 } @@ -105,6 +106,15 @@ func GetMaxLvById(Id int) int { return gamedata.ParseInt(data["MaxLv"]) } +func GetEmitMinLvById(Id int) int { + data, err := gamedata.GetDataByIntKey(CFG_NAME, Id) + if err != nil { + log.Debug("GetMaxLvById GetOne Id:%v not found", Id) + return 0 + } + return gamedata.ParseInt(data["Emit_Min_Lv"]) +} + func GetMaxLvByColor(Color string) int { data, err := gamedata.GetData(CFG_NAME) if err != nil { @@ -157,7 +167,11 @@ func GetEmitProduceChessType(Id int) []string { log.Debug("GetTypeById GetOne Id:%v not found", Id) return []string{} } - return strings.Split(gamedata.ParseString(data["Product_Type"]), ",") + value := gamedata.ParseString(data["Product_Type"]) + if value == "" { + return []string{} + } + return strings.Split(value, ",") } // 根据Id获取发射器Id diff --git a/src/server/conf/playroom/playroomCfg.go b/src/server/conf/playroom/playroomCfg.go new file mode 100644 index 00000000..1669a860 --- /dev/null +++ b/src/server/conf/playroom/playroomCfg.go @@ -0,0 +1,127 @@ +package playroomCfg + +import ( + "server/GoUtil" + "server/game/mod/item" + "server/gamedata" +) + +const ( + CFG_PLAYROOM_CONST = "PlayroomConst" + CFG_PLAYROOM_DECORATE = "PlayroomDecorate" + CFG_PLAYROOM_MOOD = "PlayroomMood" +) + +func init() { + gamedata.InitCfg(CFG_PLAYROOM_CONST) + gamedata.InitCfg(CFG_PLAYROOM_DECORATE) + gamedata.InitCfg(CFG_PLAYROOM_MOOD) +} + +func GetUnLockLv() int { + data, err := gamedata.GetDataByKey(CFG_PLAYROOM_CONST, "Lv") + if err != nil { + return 999 + } + return gamedata.GetIntValue(data, "Value") +} + +func GetOrderStar() int { + data, err := gamedata.GetDataByKey(CFG_PLAYROOM_CONST, "Star") + if err != nil { + return 1000 + } + return gamedata.GetIntValue(data, "Value") +} + +func GetRewardStar() int { + data, err := gamedata.GetDataByKey(CFG_PLAYROOM_CONST, "RewardStar") + if err != nil { + return 1000 + } + return gamedata.GetIntValue(data, "Value") +} + +func GetNormalItem() (int, int) { + data1, err := gamedata.GetDataByKey(CFG_PLAYROOM_CONST, "NormalFoodId") + if err != nil { + return 0, 0 + } + data2, err := gamedata.GetDataByKey(CFG_PLAYROOM_CONST, "NormalCleanId") + if err != nil { + return 0, 0 + } + return gamedata.GetIntValue(data1, "Value"), gamedata.GetIntValue(data2, "Value") +} + +func GetPremiumItem() (int, int) { + data1, err := gamedata.GetDataByKey(CFG_PLAYROOM_CONST, "PremiumFoodId") + if err != nil { + return 0, 0 + } + data2, err := gamedata.GetDataByKey(CFG_PLAYROOM_CONST, "PremiumCleanId") + if err != nil { + return 0, 0 + } + return gamedata.GetIntValue(data1, "Value"), gamedata.GetIntValue(data2, "Value") +} + +func GetVisitorItem() int { + data, err := gamedata.GetDataByKey(CFG_PLAYROOM_CONST, "VisitorItem") + if err != nil { + return 0 + } + return gamedata.GetIntValue(data, "Value") +} +func GetWorkItem() int { + data, err := gamedata.GetDataByKey(CFG_PLAYROOM_CONST, "WorkItem") + if err != nil { + return 0 + } + return gamedata.GetIntValue(data, "Value") +} + +func GetWorkChargeId() int { + data, err := gamedata.GetDataByKey(CFG_PLAYROOM_CONST, "WorkChargeId") + if err != nil { + return 0 + } + return gamedata.GetIntValue(data, "Value") +} + +func GetInteract(Id, Type int) (int, []*item.Item, int) { + data, err := gamedata.GetDataByIntKey(CFG_PLAYROOM_MOOD, Id) + if err != nil { + return 0, nil, 0 + } + if Type == 1 { + return gamedata.GetIntValue(data, "Type"), gamedata.GetItemList(data, "Cost"), gamedata.GetIntValue(data, "Effect") + } + return gamedata.GetIntValue(data, "Type"), gamedata.GetItemList(data, "Cost2"), gamedata.GetIntValue(data, "Effect") +} + +func GetInitDecorate() []int { + r := make([]int, 0) + data, err := gamedata.GetData(CFG_PLAYROOM_DECORATE) + if err != nil { + return []int{} + } + for k, v := range data { + if gamedata.GetIntValue(v, "Init") == 1 { + r = append(r, GoUtil.Int(k)) + } + } + return r +} + +func GetDecorateList() []int { + r := make([]int, 0) + data, err := gamedata.GetData(CFG_PLAYROOM_DECORATE) + if err != nil { + return []int{} + } + for k := range data { + r = append(r, GoUtil.Int(k)) + } + return r +} diff --git a/src/server/conf/server.json b/src/server/conf/server.json index 4931e68f..4de64506 100644 --- a/src/server/conf/server.json +++ b/src/server/conf/server.json @@ -10,7 +10,6 @@ "MaxConnNum": 20000, "DbName": "Merge_Pet", "HttpPort": ":8081", - "RemoteAddr":"host.docker.internal:9001", "TELOGDIR" : "./teLog/", @@ -28,7 +27,8 @@ "RedisAddr":"127.0.0.1", "RedisPort" :"6379", "RedisPwd" :"", - + + "RemoteAddr":"host.docker.internal:9001", "ListenAddr": ":9001", - "CenterAddr": ":3560" + "CenterAddr": ":9000" } diff --git a/src/server/game/ChampshipMgr.go b/src/server/game/ChampshipMgr.go index c80a5efb..9ff57073 100644 --- a/src/server/game/ChampshipMgr.go +++ b/src/server/game/ChampshipMgr.go @@ -107,10 +107,11 @@ func (c *ChampshipMgr) Init() { }) } -func (c *ChampshipMgr) NotifyAll() { +func (c *ChampshipMgr) NotifyAll(m *msg.Msg) (interface{}, error) { G_GameLogicPtr.NotifyAll(&msg.Msg{ Type: msg.HANDLE_TYPE_CHAMPSHIP_NOTIFY, }) + return nil, nil } func (c *ChampshipMgr) ZeroUpdate(m *msg.Msg) (interface{}, error) { diff --git a/src/server/game/ChargeFunc.go b/src/server/game/ChargeFunc.go index 71fa4a7a..8d6d4485 100644 --- a/src/server/game/ChargeFunc.go +++ b/src/server/game/ChargeFunc.go @@ -9,6 +9,17 @@ func Charge(p *Player, ChargeId int) { ChargeFire(p, ChargeId) // 充值 EndlessFire(p, ChargeId) // 无尽礼包 PiggyBankFire(p, ChargeId) // 猪猪银行 + PlayroomFire(p, ChargeId) // 游乐场 +} + +func PlayroomFire(p *Player, ChargeId int) { + PlayroomMod := p.PlayMod.getPlayroomMod() + Item := PlayroomMod.Fire(ChargeId) + err := p.HandleItem(Item, "Playroom") + if err != nil { + log.Debug("ChargeFire err : %s", err) + } + p.PlayMod.save() } func PiggyBankFire(p *Player, ChargeId int) { diff --git a/src/server/game/FriendMgr.go b/src/server/game/FriendMgr.go index 44534c83..918b035b 100644 --- a/src/server/game/FriendMgr.go +++ b/src/server/game/FriendMgr.go @@ -39,7 +39,7 @@ func (f *FriendMgr) Init() { f.RegisterHandler(msg.HADNLE_TYPE_AGREE, f.sendToPlayer) f.RegisterHandler(msg.HANDLE_TYPE_DEL, f.sendToPlayer) f.RegisterHandler(msg.HANDLE_TYPE_SYNC, f.sync) - f.RegisterHandler(msg.HANDLE_TYPE_REFUSE, f.sync) + f.RegisterHandler(msg.HANDLE_TYPE_REFUSE, f.sendToPlayer) f.RegisterHandler(msg.HANDLE_TYPE_INVITE_ADD_FRIEND, f.sendToPlayer) f.RegisterHandler(msg.HANDLE_TYPE_INVITE_FRIEND, f.sendToPlayer) @@ -84,6 +84,7 @@ func (f *FriendMgr) sendToPlayer(m *msg.Msg) (interface{}, error) { func (f *FriendMgr) sync(m *msg.Msg) (interface{}, error) { data := f.getData().List[m.From] f.getData().List[m.From] = make([]*msg.Msg, 0) + log.Debug("sync friendMgr msg to player success") return data, nil } @@ -93,7 +94,7 @@ func sendToPlayer(m *msg.Msg) error { if p == nil || p.stop { return fmt.Errorf("player %d not online", m.To) } - p.SendMsg(m) + p.Send(m) return nil } diff --git a/src/server/game/GameLogic.go b/src/server/game/GameLogic.go index deaf9b57..52892dbf 100644 --- a/src/server/game/GameLogic.go +++ b/src/server/game/GameLogic.go @@ -371,6 +371,9 @@ func (ad *GameLogic) VarMgrCall(m *MsgMod.Msg) interface{} { } func (ad *GameLogic) GetSimplePlayerByUid(Id int) *PlayerSimpleData { + if Id == 0 { + return nil + } Idstr := strconv.Itoa(Id) Value, _ := db.RedisGetKey(Idstr) player := &PlayerSimpleData{} @@ -774,6 +777,7 @@ func (ad *GameLogic) RegisterNetWorkFunc() { // 商店 RegisterMsgProcessFunc("ReqFreeShop", ReqFreeShop) // 领取商店免费奖励 RegisterMsgProcessFunc("ReqBuyChessShop", ReqBuyChessShop) // 购买商店棋子 + RegisterMsgProcessFunc("ReqBuyChessShop2", ReqBuyChessShop2) // 购买商店棋子直接加入棋盘 RegisterMsgProcessFunc("ReqRefreshChessShop", ReqRefreshChessShop) // 刷新棋子商店 // 无尽礼包 @@ -803,6 +807,18 @@ func (ad *GameLogic) RegisterNetWorkFunc() { RegisterMsgProcessFunc("ReqRaceReward", ReqRaceReward) RegisterMsgProcessFunc("ReqRaceStart", ReqRaceStart) + // playroom + RegisterMsgProcessFunc("ReqPlayroom", ReqPlayroom) // 请求playroom数据 + RegisterMsgProcessFunc("ReqPlayroomInfo", ReqPlayroomInfo) // 请求playroom拜访信息 + RegisterMsgProcessFunc("ReqPlayroomGame", ReqPlayroomGame) // 游戏结果 + RegisterMsgProcessFunc("ReqPlayroomInteract", ReqPlayroomInteract) // 宠物交互 + RegisterMsgProcessFunc("ReqPlayroomSetRoom", ReqPlayroomSetRoom) // playroom装饰 + RegisterMsgProcessFunc("ReqPlayroomSelectReward", ReqPlayroomSelectReward) // playroom选择奖励 + RegisterMsgProcessFunc("ReqPlayroomLose", ReqPlayroomLose) // 处理偷取的棋子 + RegisterMsgProcessFunc("ReqPlayroomWork", ReqPlayroomWork) // 宠物工作 + RegisterMsgProcessFunc("ReqPlayroomRest", ReqPlayroomRest) // 宠物休息 + RegisterMsgProcessFunc("ReqPlayroomDraw", ReqPlayroomDraw) // 转盘 + RegisterMsgProcessFunc("ReqPlayroomChip", ReqPlayroomChip) // 消除碎片 } func (ad *GameLogic) CreateHttpManager() { @@ -842,7 +858,7 @@ func NotifyPlayer(Uid int, m *MsgMod.Msg) { if p == nil || p.stop { return } - p.SendMsg(m) + p.Send(m) } func setRedisLock(key, value string, Duration time.Duration) bool { diff --git a/src/server/game/Gm.go b/src/server/game/Gm.go index 54cecea9..56f4e167 100644 --- a/src/server/game/Gm.go +++ b/src/server/game/Gm.go @@ -1,9 +1,11 @@ package game import ( + playroomCfg "server/conf/playroom" "server/game/mod/card" "server/game/mod/item" MsgMod "server/game/mod/msg" + "server/game/mod/playroom" "server/msg" "strconv" "strings" @@ -72,7 +74,8 @@ func ReqGmCommand(args []interface{}) error { case "createOrder": Lv := player.GetPlayerBaseMod().GetLevel() EmitList := player.PlayMod.getChessMod().GetEmitList() - player.PlayMod.getOrderMod().CreateOrder(Lv, EmitList) + EnergyMul := player.PlayMod.getBaseMod().GetEnergyMul() + player.PlayMod.getOrderMod().CreateOrder(Lv, EmitList, EnergyMul) player.PushClientRes(player.PlayMod.getOrderMod().BackData()) case "resetCardReq": CardMod := player.PlayMod.getCardMod() @@ -140,6 +143,18 @@ func ReqGmCommand(args []interface{}) error { RaceMod.ZeroUpdate(-1) ActivityInfo := GetActivityInfo(player, ACT_TYPE_RACE) RaceMod.ZeroUpdate(ActivityInfo.Id) + case "playroomTrigger": + PlayroomOrderTrigger(player) + case "playroomReset": + PlayroomMod := playroom.PlayroomMod{} + PlayroomMod.InitData() + player.PlayMod.mod_list.Playroom = PlayroomMod + case "playroomCollect": + CollectList := playroomCfg.GetDecorateList() + PlayroomMod := playroom.PlayroomMod{} + for _, v := range CollectList { + PlayroomMod.AddCollect(v) + } } player.PlayMod.save() return nil diff --git a/src/server/game/LimitedTimeTrigger.go b/src/server/game/LimitedTimeTrigger.go index 50ab769c..acb0d074 100644 --- a/src/server/game/LimitedTimeTrigger.go +++ b/src/server/game/LimitedTimeTrigger.go @@ -39,7 +39,12 @@ func LimitedTimeEventTrigger(p *Player, AddEventId int) { MaxEnergyMul := p.GetPlayerBaseMod().GetMaxEnergyMul() p.PlayMod.getBaseMod().ResetEnergyMul(MaxEnergyMul) NewEnergyMul := p.PlayMod.getBaseMod().GetEnergyMul() - + OrderMod := p.PlayMod.getOrderMod() + Lv := p.GetPlayerBaseMod().GetLevel() + Emit := p.PlayMod.getChessMod().GetEmitList() + ChessList := p.PlayMod.getChessMod().GetChessList() + OrderMod.ChangeEnergyMul(Lv, Emit, NewEnergyMul, ChessList) + p.PushClientRes(OrderMod.BackData()) p.TeLog("mutil_merge_change", map[string]interface{}{ "change_from": math.Pow(2, float64(EnergyMul)), "change_to": math.Pow(2, float64(NewEnergyMul)), @@ -62,7 +67,8 @@ func LimitedTimeEventTrigger(p *Player, AddEventId int) { case limitedTimeEvent.EVENT_TYPE_SUPER_ORDER: Emit := p.PlayMod.getChessMod().GetEmitList() Lv := p.GetPlayerBaseMod().GetLevel() - p.PlayMod.getOrderMod().CreateSuperOrder(Lv, Emit) + EnergyMul := p.PlayMod.getBaseMod().GetEnergyMul() + p.PlayMod.getOrderMod().CreateSuperOrder(Lv, Emit, EnergyMul) p.PushClientRes(p.PlayMod.getOrderMod().BackData()) case limitedTimeEvent.EVENT_TYPE_CARD_FESTIVAL: p.PlayMod.getCardMod().CreateCardFestival() @@ -124,3 +130,25 @@ func LimitedTimeCardTrigger(p *Player) { }, "LimitedTimeCard") } } + +func LimitedTimePlayroomTrigger(p *Player, Id int) { + PlayroomMod := p.PlayMod.getPlayroomMod() + Now := GoUtil.Now() + MoodInfo := PlayroomMod.GetMoodInfo(Id) + if MoodInfo == nil { + return + } + NewTime, Num := GoUtil.PlayroomTrigger(MoodInfo.Time, MoodInfo.Num) + MoodInfo.Time = NewTime + MoodInfo.Num = Num + p.PlayMod.save() + PlayroomBackData(p) + if NewTime > 0 { + NextSecond := NewTime + 1200 - Now + p.CallEvent(time.Duration(NextSecond)*time.Second, func() { + LimitedTimePlayroomTrigger(p, Id) + p.SendClientRes() + }, "Playroom") + } + +} diff --git a/src/server/game/Player.go b/src/server/game/Player.go index 39fa7e96..0713f77b 100644 --- a/src/server/game/Player.go +++ b/src/server/game/Player.go @@ -20,6 +20,7 @@ import ( "server/game/mod/item" "server/game/mod/limitedTimeEvent" MsgMod "server/game/mod/msg" + "server/game/mod/playroom" "server/game/mod/quest" "server/msg" telog "server/thinkdata" @@ -41,28 +42,28 @@ import ( //"fmt" type Player struct { - playerdata map[string]PlayerDataModule - playerdataIF map[string]interface{} - PlayMod PlayerMod - M_DwUin int32 - agent gate.Agent - lock sync.Mutex - stopSignal chan bool - Msg map[string]PlayerMsg - Trigger []*quest.Trigger - MDispatr *timer.Dispatcher - McronSave *cron.Cron - McronSaveID cron.EntryID - msgChan chan *MsgMod.Msg - args map[string]interface{} - timerList map[string]*timer.Timer - activity map[int]*ActivityInfo - stop bool + playerdata map[string]PlayerDataModule + PlayMod PlayerMod + M_DwUin int32 + agent gate.Agent + lock sync.Mutex + stopSignal chan bool + Msg map[string]PlayerMsg + Trigger []*quest.Trigger + MDispatr *timer.Dispatcher + McronSave *cron.Cron + McronSaveID cron.EntryID + msgChan chan *MsgMod.Msg + args map[string]interface{} + timerList map[string]*timer.Timer + activity map[int]*ActivityInfo + stop bool + wg sync.WaitGroup } type PlayerBackUp struct { - PlayerBaseData *PlayerBaseData - PlayMod []byte + Data msg.ResPlayerBaseInfo + PlayMod []byte } type PlayerMsg struct { @@ -76,6 +77,7 @@ func (p *Player) Stop() { // 通道已经关闭 return default: + p.wg.Wait() close(p.stopSignal) close(p.msgChan) } @@ -97,6 +99,10 @@ func (p *Player) CallEvent(Duration time.Duration, F func(), Label string) { // 异步请求 func (p *Player) Send(m *MsgMod.Msg) { + if m == nil { + return + } + p.wg.Add(1) p.msgChan <- m } @@ -160,15 +166,13 @@ func (p *Player) ProcessTrigger() { func (p *Player) BackUp() *PlayerBackUp { BackUp := PlayerBackUp{} p.PlayMod.BackUp(&BackUp) - BackUp.PlayerBaseData = p.GetPlayerBaseMod().BackUp() + BackUp.Data = p.GetPlayerBaseMod().BackUp() return &BackUp } // 接口发生错误时 还原数据 func (p *Player) Recover(backUp *PlayerBackUp) { - backUp.PlayerBaseData.PlayerData = NewPlayerData(PLAYER_BASE_DATA, p) - p.playerdata[PLAYER_BASE_DATA] = backUp.PlayerBaseData - p.playerdataIF[PLAYER_BASE_DATA] = backUp.PlayerBaseData + p.GetPlayerBaseMod().Data = backUp.Data p.PlayMod.Recover(backUp) p.Msg = make(map[string]PlayerMsg) } @@ -183,10 +187,8 @@ func (p *Player) InitPlayer(UserName string) error { p.MDispatr = timer.NewDispatcher(10) p.stopSignal = make(chan bool) p.playerdata = make(map[string]PlayerDataModule) - p.playerdataIF = make(map[string]interface{}) Base := &PlayerBaseData{PlayerData: NewPlayerData(PLAYER_BASE_DATA, p)} p.playerdata[PLAYER_BASE_DATA] = Base - p.playerdataIF[PLAYER_BASE_DATA] = Base // 玩家基础数据 ok := Base.LoadDataFromDB(UserName) @@ -195,7 +197,6 @@ func (p *Player) InitPlayer(UserName string) error { return errors.New("load PlayerBaseData failed") } p.playerdata[PLAYER_BASE_DATA] = Base - p.playerdataIF[PLAYER_BASE_DATA] = Base p.M_DwUin = Base.Data.DwUin // 棋盘数据 @@ -206,7 +207,6 @@ func (p *Player) InitPlayer(UserName string) error { return errors.New("load PlayerChessData failed") } p.playerdata["PlayerChessData"] = Chess - p.playerdataIF["PlayerChessData"] = Chess // 玩家模块数据 modData := &PlayerModData{PlayerData: NewPlayerData("PlayerModData", p)} @@ -236,8 +236,11 @@ func (p *Player) InitPlayer(UserName string) error { log.Debug("Timer callback or Timer is nil") } case msg := <-p.msgChan: - log.Debug("player recive msg:", msg) - go HandleMsg(p, msg) + if msg != nil { + p.wg.Done() + log.Debug("player %d recive msg %v", p.M_DwUin, msg) + go HandleMsg(p, msg) + } } } }() @@ -258,11 +261,6 @@ func (p *Player) InitPlayer(UserName string) error { return nil } -// 异步发送消息 -func (p *Player) SendMsg(m *MsgMod.Msg) { - p.msgChan <- m -} - func (p *Player) Test() { p.PlayMod.getBaseMod().EnergyMul = 100 } @@ -342,13 +340,16 @@ func (p *Player) Login() { LimitedTimeEventTrigger(p, 0) // 猪猪银行触发 LimitedTimePiggyBankTrigger(p) + // playroom触发 + LimitedTimePlayroomTrigger(p, playroom.MOOD_TYPE_ENTER) + LimitedTimePlayroomTrigger(p, playroom.MOOD_TYPE_FOOD) + LimitedTimePlayroomTrigger(p, playroom.MOOD_TYPE_CLEAN) ActivityLogin(p) p.PlayMod.getCardMod().Login(G_GameLogicPtr.SeverInfo.OpenTime) } // 离线 保存数据 func (p *Player) ClearData() { - log.Release("uid: %d, outline save data", p.M_DwUin) ctx := context.Background() txOptions := &sql.TxOptions{} @@ -404,8 +405,7 @@ func (p *Player) SetAgent(a gate.Agent) { } func (p *Player) GetIFGameData(key string) interface{} { - - v, ok := p.playerdataIF[key] + v, ok := p.playerdata[key] if ok { return v } @@ -413,7 +413,7 @@ func (p *Player) GetIFGameData(key string) interface{} { } func (p *Player) GetPlayerBaseMod() *PlayerBaseData { - v, ok := p.playerdataIF[PLAYER_BASE_DATA] + v, ok := p.playerdata[PLAYER_BASE_DATA] if ok { return v.(*PlayerBaseData) } @@ -610,9 +610,13 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { "avatar_id": Effect[0], "income_from": Label, }) - case item.ITEM_TYPE_ACTIVITY_RACE: + case item.ITEM_TYPE_ACTIVITY_RACE: // 活动竞速 RaceMod := p.PlayMod.getRaceMod() RaceMod.AddCoin(v.Num) + case item.ITEM_TYPE_PLAYROOM_VISIT: // 拜访玩家 + Target := GetVisitorPlayer(p) + PlayroomVisit(p, Target) + PlayroomBackData(p) default: err := ItemMod.AddItem(v.Id, v.Num) if err != nil { @@ -674,10 +678,8 @@ func (p *Player) GetSimpleData(Uid int, simple *PlayerSimpleData) error { p.MDispatr = timer.NewDispatcher(10) p.stopSignal = make(chan bool) p.playerdata = make(map[string]PlayerDataModule) - p.playerdataIF = make(map[string]interface{}) Base := &PlayerBaseData{PlayerData: NewPlayerData(PLAYER_BASE_DATA, p)} p.playerdata[PLAYER_BASE_DATA] = Base - p.playerdataIF[PLAYER_BASE_DATA] = Base // 玩家基础数据 ok := Base.GetDataByUid(Uid) @@ -685,7 +687,6 @@ func (p *Player) GetSimpleData(Uid int, simple *PlayerSimpleData) error { return errors.New("load PlayerBaseData failed") } p.playerdata[PLAYER_BASE_DATA] = Base - p.playerdataIF[PLAYER_BASE_DATA] = Base p.M_DwUin = Base.Data.DwUin // 玩家模块数据 @@ -720,6 +721,8 @@ func (p *Player) UpdateUserInfo() { simple.Loginout = int64(Base.Data.LogoutTime) simple.FaceBook = Base.Data.FaceBookId simple.FaceBookPic = p.PlayMod.getBaseMod().FacebookUrl + simple.Playroom = p.PlayMod.getPlayroomMod().Room + simple.Chess = p.PlayMod.getChessMod().GetChessList() value, _ := json.Marshal(simple) IdStr := strconv.Itoa(int(p.M_DwUin)) db.RedisSetKey(IdStr, string(value), 0) diff --git a/src/server/game/PlayerBaseMod.go b/src/server/game/PlayerBaseMod.go index 4930c957..e63a9331 100644 --- a/src/server/game/PlayerBaseMod.go +++ b/src/server/game/PlayerBaseMod.go @@ -40,39 +40,30 @@ func (p *PlayerBaseData) GetData() interface{} { return &p.Data } -func (p *PlayerBaseData) BackUp() *PlayerBaseData { - return &PlayerBaseData{ - Data: msg.ResPlayerBaseInfo{ - Diamond: p.Data.Diamond, - DwUin: p.Data.DwUin, - Energy: p.Data.Energy, - Star: p.Data.Star, - RecoverTime: p.Data.RecoverTime, - Level: p.Data.Level, - Exp: p.Data.Exp, - StartOrderId: p.Data.StartOrderId, - MusicCode: p.Data.MusicCode, - Guild: p.Data.Guild, - PackUnlockCount: p.Data.PackUnlockCount, - LastPlayTime: p.Data.LastPlayTime, - EnergyBuyCount: p.Data.EnergyBuyCount, - LoginTime: p.Data.LoginTime, - UserName: p.Data.UserName, - LogoutTime: p.Data.LogoutTime, - Todayolinetime: p.Data.Todayolinetime, - Rolecreatetime: p.Data.Rolecreatetime, - LastChampGroupID: p.Data.LastChampGroupID, - ChampshipsGroupID: p.Data.ChampshipsGroupID, - NoAd: p.Data.NoAd, - FaceBookId: p.Data.FaceBookId, - }, - MLeafTimer: p.MLeafTimer, - MTicker: p.MTicker, - McronSave: p.McronSave, - McronSaveID: p.McronSaveID, - Mdispatr: p.Mdispatr, - DailyRenewTime: p.DailyRenewTime, - isKeyValueDb: p.isKeyValueDb, +func (p *PlayerBaseData) BackUp() msg.ResPlayerBaseInfo { + return msg.ResPlayerBaseInfo{ + Diamond: p.Data.Diamond, + DwUin: p.Data.DwUin, + Energy: p.Data.Energy, + Star: p.Data.Star, + RecoverTime: p.Data.RecoverTime, + Level: p.Data.Level, + Exp: p.Data.Exp, + StartOrderId: p.Data.StartOrderId, + MusicCode: p.Data.MusicCode, + Guild: p.Data.Guild, + PackUnlockCount: p.Data.PackUnlockCount, + LastPlayTime: p.Data.LastPlayTime, + EnergyBuyCount: p.Data.EnergyBuyCount, + LoginTime: p.Data.LoginTime, + UserName: p.Data.UserName, + LogoutTime: p.Data.LogoutTime, + Todayolinetime: p.Data.Todayolinetime, + Rolecreatetime: p.Data.Rolecreatetime, + LastChampGroupID: p.Data.LastChampGroupID, + ChampshipsGroupID: p.Data.ChampshipsGroupID, + NoAd: p.Data.NoAd, + FaceBookId: p.Data.FaceBookId, } } @@ -609,8 +600,8 @@ func (p *PlayerBaseData) AddStar(cnt int) error { if NewStar < 0 { return errors.New("星星不足") } - p.Data.Star = NewStar + p.M_Player.UpdateUserInfo() return nil } diff --git a/src/server/game/PlayerFunc.go b/src/server/game/PlayerFunc.go index 9443eab9..64f4ce13 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/PlayerFunc.go @@ -10,7 +10,9 @@ import ( "server/db" "server/game/mod/card" "server/game/mod/friend" + "server/game/mod/item" "server/game/mod/msg" + "server/game/mod/playroom" proto "server/msg" "server/pkg/github.com/name5566/leaf/log" "sort" @@ -174,7 +176,7 @@ func handle(p *Player, m *msg.Msg) error { } p.PlayMod.save() p.PushClientRes(CardMod.NotifyCard()) - case msg.HANDLE_TYPE_CHAMPSHIP_NOTIFY: // 锦标赛排名变动通知 + case msg.HANDLE_TYPE_CHAMPSHIP_NOTIFY: // # 锦标赛排名变动通知 BackChampship(p) case msg.HANDLE_TYPE_MAIL: // 邮件操作 MailMod := p.PlayMod.getMailMod() @@ -199,6 +201,25 @@ func handle(p *Player, m *msg.Msg) error { p.PushClientRes(MailMod.NotifyMail(MailId)) } } + case msg.HANDLE_TYPE_PLAYROOM_LOSE: // # 玩家输了 + PlayroomMod := p.PlayMod.getPlayroomMod() + Items := m.Extra.([]*item.Item) + if len(Items) == 0 { + return nil + } + PlayroomMod.AddChip() + PlayroomMod.AddMood(playroom.MOOD_TYPE_FOOD, -50) + PlayroomMod.AddMood(playroom.MOOD_TYPE_CLEAN, -50) + PlayroomMod.AddVisitor(m.From, m.SendT) + p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_VISIT, fmt.Sprintf("%d,%d", Items[0].Id, Items[0].Num)) + if Items[0].Id == item.ITEM_STAR_ID { + ItemMod := p.PlayMod.getItemMod() + StarNum := ItemMod.GetItem(item.ITEM_STAR_ID) + Items[0].Num = min(Items[0].Num, StarNum) + p.HandleLoseItem(Items, "") + } else { + PlayroomMod.Lose(Items) + } } return nil } @@ -440,3 +461,158 @@ func BackChampship(p *Player) { MyPreRank := G_GameLogicPtr.ChampshipMgr.getLastMyRank(int(p.M_DwUin)) p.PushClientRes(ChampshipMod.BackData(MyRank, MyPreRank)) } + +func PlayroomOrderTrigger(p *Player) error { + OrderMod := p.PlayMod.getOrderMod() + Lv := p.GetPlayerBaseMod().GetLevel() + Emit := p.PlayMod.getChessMod().GetEmitList() + EnergyMul := p.PlayMod.getBaseMod().GetEnergyMul() + Star, err := OrderMod.CreateTriggerOrder(Lv, Emit, EnergyMul) + if err != nil { + log.Debug("uid : %d, PlayroomOrderTrigger, err : %s", p.M_DwUin, err) + return err + } + PlayroomMod := p.PlayMod.getPlayroomMod() + PlayroomMod.CreateOrderReward(Star, p.PlayMod.getItemMod()) + p.PlayMod.save() + return nil +} + +func PlayroomBackData(p *Player) { + r := &proto.ResPlayroom{} + PlayroomMod := p.PlayMod.getPlayroomMod() + FriendMod := p.PlayMod.getFriendMod() + r.Status = int32(PlayroomMod.Status) + r.Items = item.ItemToMsg(PlayroomMod.Reward) + Opponent := make([]*proto.RoomOpponent, 0) + FriendList := make([]*proto.FriendRoom, 0) + for k, v := range PlayroomMod.Visitor { + ps := G_GameLogicPtr.GetSimplePlayerByUid(k) + if ps == nil { + continue + } + if FriendMod.CheckFriend(k) { + FriendList = append(FriendList, &proto.FriendRoom{ + Uid: int32(k), + Name: ps.Name, + Face: int32(ps.Face), + Avatar: int32(ps.Avatar), + Times: int32(v.Times), + }) + } else { + Opponent = append(Opponent, &proto.RoomOpponent{ + Uid: int32(k), + Name: ps.Name, + Face: int32(ps.Face), + Avatar: int32(ps.Avatar), + LastTime: int32(v.Time), + }) + } + } + r.Opponent = Opponent + r.Friend = FriendList + Collect := make([]int32, 0) + for k, v := range PlayroomMod.GetCollect() { + if v > 0 { + Collect = append(Collect, int32(k)) + } + } + r.Collect = Collect + r.Playroom = GoUtil.MapIntToInt32(PlayroomMod.GetRoom()) + r.Mood = GoUtil.MapIntToInt32(PlayroomMod.GetMood()) + p.PushClientRes(r) +} + +func PlayroomVisit(p *Player, Uid int) { + if Uid == 0 { + return + } + PlayroomMod := p.PlayMod.getPlayroomMod() + r := &proto.ResPlayroomInfo{} + PlayerData := G_GameLogicPtr.GetSimplePlayerByUid(Uid) + r.Uid = int32(Uid) + r.Name = PlayerData.Name + r.Face = int32(PlayerData.Face) + r.Avatar = int32(PlayerData.Avatar) + r.Playroom = GoUtil.MapIntToInt32(PlayerData.Playroom) + r.GameId = int32(PlayroomMod.GameId) + Items := make(map[int32]*proto.ItemInfo, 0) + for k, v := range PlayroomMod.GameReward { + Items[int32(k)] = &proto.ItemInfo{ + Id: int32(k), + Num: int32(v.Num), + } + } + r.Items = Items + r.Status = int32(PlayroomMod.GameStatus) + p.PushClientRes(r) +} + +func GetVisitorPlayer(p *Player) int { + PlayroomMod := p.PlayMod.getPlayroomMod() + VisitorList := PlayroomMod.GetVisitor() + HasVisit := PlayroomMod.GetHasVisit() + type sortData struct { + Uid int + Time int64 + } + PlayerList := make([]sortData, 0) + + Now := GoUtil.Now() + for k, v := range VisitorList { + if _, ok := HasVisit[k]; ok { + continue + } + if v.Time < Now-86400 { + continue + } + PlayerList = append(PlayerList, sortData{k, v.Time}) + } + if len(PlayerList) != 0 { + sort.Slice(PlayerList, func(i, j int) bool { + return PlayerList[i].Time < PlayerList[j].Time + }) + return PlayerList[0].Uid + } + FriendMod := p.PlayMod.getFriendMod() + PlayerList2 := make([]sortData, 0) + for _, v := range PlayerList { + if FriendMod.CheckFriend(v.Uid) { + continue + } + } + if len(PlayerList2) != 0 { + sort.Slice(PlayerList2, func(i, j int) bool { + return PlayerList2[i].Time < PlayerList2[j].Time + }) + return PlayerList2[0].Uid + } + + return GetRecommendPlayer(p, 1)[0] +} + +func GetRecommendPlayer(p *Player, Num int) []int { + PlayerList := G_GameLogicPtr.RankMgr.getAllRank(RANK_TYPE_USER) + PlayerList1 := make([]int, 0) + FriendMod := p.PlayMod.getFriendMod() + for _, v := range PlayerList { + if v.Score < 15 { + continue + } + if v.Uid == int(p.M_DwUin) { + continue + } + if FriendMod.CheckApply(v.Uid) { + continue + } + if FriendMod.CheckFriend(v.Uid) { + continue + } + PlayerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(v.Uid) + if GoUtil.Now()-PlayerSimpleData.Loginout > 86400 { + continue + } + PlayerList1 = append(PlayerList1, v.Uid) + } + return GoUtil.RandSliceNum(PlayerList1, Num) +} diff --git a/src/server/game/PlayerMod.go b/src/server/game/PlayerMod.go index 6c619234..b9e41539 100644 --- a/src/server/game/PlayerMod.go +++ b/src/server/game/PlayerMod.go @@ -28,6 +28,7 @@ import ( "server/game/mod/mining" "server/game/mod/order" "server/game/mod/piggyBank" + "server/game/mod/playroom" "server/game/mod/race" "server/game/mod/sevenLogin" Var "server/game/mod/var" @@ -43,31 +44,32 @@ type PlayerModData struct { // PlayerModList 玩家模块列表 type PlayerModList struct { - Base base.Base - Chess chess.ChessBorad - Handbook handbook.Handbook - Order order.OrderMod - Decorate decorate.Decorate - Card card.CardMod - Var Var.Var - Guild guild.Guild - DailyTask dailyTask.DailyTaskMod - Face face.FaceMod - Avatar avatar.AvatarMod - SevenLogin sevenLogin.SevenLoginMod - LimitedTimeEvent limitedTimeEvent.LimitedTimeEventMod - Friend friend.FriendMod - Mail mail.MailMod - Charge charge.ChargeMod - Endless endless.EndlessMod - PiggyBank piggyBank.PiggyBankMod - Champship champship.ChampshipMod - Invite invite.InviteMod - Kv kv.KvMod - Mining mining.MiningMod - Item item.ItemMod - GuessColor guesscolor.GuessColorMod - Race race.RaceMod + Base base.Base // 基础信息 + Chess chess.ChessBorad // 棋盘 + Handbook handbook.Handbook // 图鉴 + Order order.OrderMod //订单 + Decorate decorate.Decorate //装饰 + Card card.CardMod //卡牌 + Var Var.Var // 变量 + Guild guild.Guild // 引导 + DailyTask dailyTask.DailyTaskMod // 每日任务 + Face face.FaceMod // 头像 + Avatar avatar.AvatarMod // 头像框 + SevenLogin sevenLogin.SevenLoginMod // 七天签到 + LimitedTimeEvent limitedTimeEvent.LimitedTimeEventMod // 限时事件 + Friend friend.FriendMod // 好友 + Mail mail.MailMod // 邮件 + Charge charge.ChargeMod // 商店充值 + Endless endless.EndlessMod // 无尽礼包 + PiggyBank piggyBank.PiggyBankMod // 小猪存钱 + Champship champship.ChampshipMod // 锦标赛 + Invite invite.InviteMod // 邀请 + Kv kv.KvMod // 客户端数据 + Mining mining.MiningMod // 挖矿活动 + Item item.ItemMod // 道具 + GuessColor guesscolor.GuessColorMod // 猜颜色活动 + Race race.RaceMod // 竞赛活动 + Playroom playroom.PlayroomMod // 玩家小屋 } func (p *PlayerModData) LoadDataFromDB(dwUin interface{}) bool { @@ -148,6 +150,7 @@ func (p *PlayerModData) InitMod() (bool, error) { p.ModList.Mining.InitData() p.ModList.Item.InitData() p.ModList.GuessColor.InitData() + p.ModList.Playroom.InitData() return is_update, nil } @@ -298,3 +301,7 @@ func (p *PlayerMod) getGuessColorMod() *guesscolor.GuessColorMod { func (p *PlayerMod) getRaceMod() *race.RaceMod { return &p.mod_list.Race } + +func (p *PlayerMod) getPlayroomMod() *playroom.PlayroomMod { + return &p.mod_list.Playroom +} diff --git a/src/server/game/RankMgr.go b/src/server/game/RankMgr.go index 5830decd..ba3acf1e 100644 --- a/src/server/game/RankMgr.go +++ b/src/server/game/RankMgr.go @@ -78,6 +78,13 @@ func (r *RankMgr) getRank(RankType int) []*Rank { return []*Rank{} } +func (r *RankMgr) getAllRank(RankType int) []*Rank { + if v, ok := r.getData().List[RankType]; ok { + return v + } + return []*Rank{} +} + func (r *RankMgr) getMyRank(Uid, RankType int) (int, float64) { if d, ok := r.getData().List[RankType]; ok { for k, v := range d { diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index 30bddc1d..b4241dd5 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -17,6 +17,7 @@ import ( "server/game/mod/limitedTimeEvent" MsqMod "server/game/mod/msg" "server/game/mod/piggyBank" + "server/game/mod/quest" "server/msg" "strconv" @@ -37,7 +38,6 @@ func ReqPlayerBaseInfofunction(args []interface{}) error { ok := data.LoadDataFromDB(player.M_DwUin) if ok { player.playerdata["PlayerBaseData"] = data - player.playerdataIF["PlayerBaseData"] = data } } player.GetIFGameData("PlayerBaseData").(*PlayerBaseData).ResPlayerBaseInfo(player) @@ -88,7 +88,6 @@ func ReqPlayerChessDataFunc(args []interface{}) error { ok := data.LoadDataFromDB(player.M_DwUin) if ok { player.playerdata["PlayerChessData"] = data - player.playerdataIF["PlayerChessData"] = data } } player.GetIFGameData("PlayerChessData").(*PlayerChessData).ResPlayerChessData(player) @@ -103,7 +102,6 @@ func ReqBindFacebookAccount(args []interface{}) error { ok := data.LoadDataFromDB(player.M_DwUin) if ok { player.playerdata["PlayerBaseData"] = data - player.playerdataIF["PlayerBaseData"] = data } } player.GetIFGameData("PlayerBaseData").(*PlayerBaseData).ReqBindFacebookAccount(buf) @@ -118,7 +116,6 @@ func ReqUnBindFacebook(args []interface{}) error { ok := data.LoadDataFromDB(player.M_DwUin) if ok { player.playerdata["PlayerBaseData"] = data - player.playerdataIF["PlayerBaseData"] = data } } player.GetIFGameData("PlayerBaseData").(*PlayerBaseData).ReqUnBindFacebook(buf) @@ -133,7 +130,6 @@ func ReqOnlyBindFacebook(args []interface{}) error { ok := data.LoadDataFromDB(player.M_DwUin) if ok { player.playerdata["PlayerBaseData"] = data - player.playerdataIF["PlayerBaseData"] = data } } player.GetIFGameData("PlayerBaseData").(*PlayerBaseData).ReqOnlyBindFacebook(buf) @@ -148,7 +144,6 @@ func ReqSynGameData(args []interface{}) error { ok := data.LoadDataFromDB(player.M_DwUin) if ok { player.playerdata["PlayerBaseData"] = data - player.playerdataIF["PlayerBaseData"] = data } } player.GetIFGameData("PlayerBaseData").(*PlayerBaseData).ReqSynGameData(buf) @@ -172,8 +167,13 @@ func RegSetEneryFunc(args []interface{}) error { "change_to": math.Pow(2, float64(req.EnergyMul)), "is_auto": false, }) - player.PlayMod.getBaseMod().SetEnergyMul(int(req.EnergyMul)) + OrderMod := player.PlayMod.getOrderMod() + Lv := player.GetPlayerBaseMod().GetLevel() + Emit := player.PlayMod.getChessMod().GetEmitList() + ChessList := player.PlayMod.getChessMod().GetChessList() + OrderMod.ChangeEnergyMul(Lv, Emit, int(req.EnergyMul), ChessList) + player.PushClientRes(OrderMod.BackData()) player.PushClientRes(player.PlayMod.getBaseMod().BackData()) return nil } @@ -192,7 +192,7 @@ func ReqGetHandbookReward(args []interface{}) error { return err } var itemList []*item.Item - itemList = append(itemList, &item.Item{Id: item.ITEM_DIAMOND_ID, Num: 1}) + itemList = append(itemList, &item.Item{Id: item.ITEM_ENERGY_ID, Num: 5}) err = player.HandleItem(itemList, "HandbookReward") if err != nil { player.SendErrClienRes(&msg.ResGetHandbookReward{ @@ -289,6 +289,8 @@ func ReqRewardOrder(args []interface{}) error { return err } + // 每日任务 + player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_FINISHORDER}) player.TeLog("order_finish", map[string]interface{}{ "order_id": int(req.OrderId), "order_item_id": mergeList, @@ -297,8 +299,9 @@ func ReqRewardOrder(args []interface{}) error { }) Lv := player.GetPlayerBaseMod().GetLevel() + EnergyMul := player.PlayMod.getBaseMod().GetEnergyMul() Emit := ChessMod.GetEmitList() - OrderMod.CreateOrder(Lv, Emit) + OrderMod.CreateOrder(Lv, Emit, EnergyMul) // 存钱罐增加钻石 PiggyBankMod := player.PlayMod.getPiggyBankMod() @@ -309,6 +312,15 @@ func ReqRewardOrder(args []interface{}) error { ChampshipMod := player.PlayMod.getChampshipMod() ChampshipMod.AddScore(mergeList) } + // playroom 触发式订单 + err = PlayroomOrderTrigger(player) + if err != nil { + player.SendErrClienRes(&msg.ResRewardOrder{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } // 限时事件增加进度 LimitedTimeEventMod.AddProgress(player.GetPlayerBaseMod().GetLevel()) @@ -472,6 +484,7 @@ func UpdatePlayerChessDataFunc(args []interface{}) error { data := player.GetIFGameData("PlayerChessData") err := data.(*PlayerChessData).UpdatePlayerChessData(buf) RedBackData(player) + player.UpdateUserInfo() return err } @@ -516,6 +529,7 @@ func ReqGetChessFromBuff(args []interface{}) error { player.PushClientRes(&msg.ResGetChessFromBuff{ Code: msg.RES_CODE_SUCCESS, }) + player.UpdateUserInfo() return nil } @@ -547,6 +561,7 @@ func ReqPutChessInBag(args []interface{}) error { player.PushClientRes(&msg.ResPutChessInBag{ Code: msg.RES_CODE_SUCCESS, }) + player.UpdateUserInfo() return nil } @@ -577,6 +592,7 @@ func ReqTakeChessOutBag(args []interface{}) error { player.PushClientRes(&msg.ResTakeChessOutBag{ Code: msg.RES_CODE_SUCCESS, }) + player.UpdateUserInfo() return nil } @@ -643,6 +659,8 @@ func ReqChessEx(args []interface{}) error { }) return err } + HandbookMod := player.PlayMod.getHandbookMod() + HandbookMod.SetHandbook(int(req.NewChessId)) data := player.GetIFGameData("PlayerChessData") err = data.(*PlayerChessData).UpdateChessData(req.MChessData) if err != nil { @@ -1902,7 +1920,7 @@ func ReqBuyChessShop(args []interface{}) error { req := &msg.ReqBuyChessShop{} proto.Unmarshal(buf, req) ChargeMod := player.PlayMod.getChargeMod() - Item, err := ChargeMod.BuyChess(int(req.Id)) + LostItem, Item, _, err := ChargeMod.BuyChess(int(req.Id)) if err != nil { player.SendErrClienRes(&msg.ResBuyChessShop{ Code: msg.RES_CODE_FAIL, @@ -1910,6 +1928,14 @@ func ReqBuyChessShop(args []interface{}) error { }) return err } + err = player.HandleLoseItem(LostItem, "ChessShop") + if err != nil { + player.SendErrClienRes(&msg.ResBuyChessShop2{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } err = player.HandleItem(Item, "ChessShop") if err != nil { player.SendErrClienRes(&msg.ResBuyChessShop{ @@ -1937,6 +1963,65 @@ func ReqBuyChessShop(args []interface{}) error { return nil } +// 购买棋子商店物品 +func ReqBuyChessShop2(args []interface{}) error { + _, player, buf := ParseArgs(args) + req := &msg.ReqBuyChessShop2{} + proto.Unmarshal(buf, req) + ChargeMod := player.PlayMod.getChargeMod() + LostItem, _, ChessId, err := ChargeMod.BuyChess(int(req.Id)) + if err != nil { + player.SendErrClienRes(&msg.ResBuyChessShop2{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } + err = player.HandleLoseItem(LostItem, "ChessShop") + if err != nil { + player.SendErrClienRes(&msg.ResBuyChessShop2{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } + ChessMod := player.PlayMod.getChessMod() + err = ChessMod.AddChess(ChessId) + if err != nil { + player.SendErrClienRes(&msg.ResBuyChessShop2{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } + data := player.GetIFGameData("PlayerChessData") + err = data.(*PlayerChessData).UpdateChessData(req.MChessData) + if err != nil { + player.SendErrClienRes(&msg.ResBuyChessShop2{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } + player.TeLog("store_buy", map[string]interface{}{ + "item_id": int(req.Id), + "change_num": 1, + "cost_type": "diamond", + "cost_num": LostItem[0].Num, + }) + player.PlayMod.save() + player.PushClientRes(ChargeMod.BackData()) + player.PushClientRes(&msg.ResBuyChessShop2{ + Code: msg.RES_CODE_SUCCESS, + }) + player.TeLog("buy_product_diamond", map[string]interface{}{ + "diamond_cost": LostItem[0].Num, + "product_id": int(req.Id), + "product_name": mergeDataCfg.GetNameById(int(req.Id)), + }) + return nil +} + // 刷新棋子商店 func ReqRefreshChessShop(args []interface{}) error { _, player, _ := ParseArgs(args) @@ -2146,25 +2231,26 @@ func ReqKv(args []interface{}) error { func ReqFriendRecommend(args []interface{}) error { _, player, _ := ParseArgs(args) FriendMod := player.PlayMod.getFriendMod() - List := G_GameLogicPtr.RankMgr.getRank(RANK_TYPE_USER) RecommendList := make([]*msg.ResPlayerSimple, 0) - n := 0 - for _, v := range List { - if n > 3 { - break - } - PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(v.Uid) - if v.Uid == int(player.M_DwUin) { - continue - } - if FriendMod.CheckFriend(v.Uid) { - continue - } - if FriendMod.CheckApply(v.Uid) { - continue + FriendNum := FriendMod.GetFriendNum() + var n int + if FriendNum < 10 { + n = 3 + } else { + Active := 0 + for k := range FriendMod.FriendList { + PlayerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(k) + if PlayerSimpleData.Login > GoUtil.Now()-86400 { + Active++ + } } + n = max(0, 3-(Active/10)) + } + PlayerList := GetRecommendPlayer(player, n) + + for _, v := range PlayerList { + PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(v) RecommendList = append(RecommendList, PlayerSimpleData) - n++ } player.PushClientRes(&msg.ResFriendRecommend{ List: RecommendList, @@ -2627,3 +2713,276 @@ func ReqRaceReward(args []interface{}) error { }) return nil } + +// 请求playroom基础数据 +func ReqPlayroom(args []interface{}) error { + _, player, _ := ParseArgs(args) + PlayroomBackData(player) + return nil +} + +// 请求playroom拜访信息 +func ReqPlayroomInfo(args []interface{}) error { + _, player, buf := ParseArgs(args) + req := &msg.ReqPlayroomInfo{} + proto.Unmarshal(buf, req) + PlayroomMod := player.PlayMod.getPlayroomMod() + Targer := int(req.Uid) + if req.Uid == 0 { + Targer = PlayroomMod.GetTarget() + } + PlayerData := G_GameLogicPtr.GetSimplePlayerByUid(Targer) + PlayroomMod.SetTarget(Targer) + if PlayerData.Loginout < GoUtil.Now()-300 { + PlayroomMod.SetGameId(1) + } else { + PlayroomMod.SetGameId(2) + } + PlayroomVisit(player, Targer) + return nil +} + +// 请求playroom交互 +func ReqPlayroomInteract(args []interface{}) error { + _, player, buf := ParseArgs(args) + req := &msg.ReqPlayroomInteract{} + proto.Unmarshal(buf, req) + PlayroomMod := player.PlayMod.getPlayroomMod() + Items, err := PlayroomMod.Interact(int(req.Id), int(req.Type)) + if err != nil { + player.SendErrClienRes(&msg.ResPlayroomInteract{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } + err = player.HandleItem(Items, "PlayroomInteract") + if err != nil { + player.SendErrClienRes(&msg.ResPlayroomInteract{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } + player.PlayMod.save() + PlayroomBackData(player) + player.PushClientRes(&msg.ResPlayroomInteract{ + Code: msg.RES_CODE_SUCCESS, + }) + return nil +} + +// 请求playroom设置房间 +func ReqPlayroomSetRoom(args []interface{}) error { + _, player, buf := ParseArgs(args) + req := &msg.ReqPlayroomSetRoom{} + proto.Unmarshal(buf, req) + PlayroomMod := player.PlayMod.getPlayroomMod() + err := PlayroomMod.SetRoom(int(req.Id), int(req.Pos)) + if err != nil { + player.SendErrClienRes(&msg.ResPlayroomSetRoom{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } + player.PlayMod.save() + PlayroomBackData(player) + player.PushClientRes(&msg.ResPlayroomSetRoom{ + Code: msg.RES_CODE_SUCCESS, + }) + return nil +} + +func ReqPlayroomGame(args []interface{}) error { + _, player, buf := ParseArgs(args) + req := &msg.ReqPlayroomGame{} + proto.Unmarshal(buf, req) + PlayroomMod := player.PlayMod.getPlayroomMod() + Target := PlayroomMod.GetTarget() + if Target == 0 { + player.SendErrClienRes(&msg.ResPlayroomGame{ + Code: msg.RES_CODE_FAIL, + Msg: "no target", + }) + return fmt.Errorf("no target") + } + PlayerData := G_GameLogicPtr.GetSimplePlayerByUid(Target) + Items := make([]*item.Item, 0) + if req.Type == 1 { + Items = append(Items, item.NewItem(item.ITEM_STAR_ID, PlayerData.Level*2)) + PlayroomMod.ResetGame() + } + if req.Type == 2 { + Items = append(Items, item.NewItem(item.ITEM_STAR_ID, PlayerData.Level*3)) + PlayroomMod.ResetGame() + } + if req.Type == 3 { + Star := min(500, max(PlayerData.Star/10, 10)) + ChessMod := player.PlayMod.getChessMod() + EmitList := ChessMod.GetEmitList() + ColorList := make([]string, 0) + for _, v := range EmitList { + Color := mergeDataCfg.GetEmitProduceChessType(v) + ColorList = append(ColorList, Color...) + } + RandList := make([]int, 0) + for _, v := range PlayerData.Chess { + Color := mergeDataCfg.GetColorById(v) + Lv := mergeDataCfg.GetLvById(v) + if GoUtil.InStringArray(Color, ColorList) && Lv <= 8 { + RandList = append(RandList, v) + } + } + if len(RandList) == 0 { + PlayroomMod.SetGameReward(0, 0, Star) + } else if len(RandList) == 1 { + PlayroomMod.SetGameReward(0, RandList[0], Star) + } else { + ChessList := GoUtil.RandSliceNum(RandList, 2) + PlayroomMod.SetGameReward(ChessList[0], ChessList[1], Star) + } + } + err := player.HandleItem(Items, "playroomGame") + if err != nil { + player.SendErrClienRes(&msg.ResPlayroomGame{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } + player.PlayMod.save() + PlayroomBackData(player) + PlayroomVisit(player, PlayroomMod.GetTarget()) + player.PushClientRes(&msg.ResPlayroomGame{ + Code: msg.RES_CODE_SUCCESS, + }) + return nil +} + +func ReqPlayroomSelectReward(args []interface{}) error { + _, player, buf := ParseArgs(args) + req := &msg.ReqPlayroomSelectReward{} + proto.Unmarshal(buf, req) + PlayroomMod := player.PlayMod.getPlayroomMod() + Items := PlayroomMod.SelectReward(int(req.Id)) + err := player.HandleItem(Items, "playroomGame") + if err != nil { + player.SendErrClienRes(&msg.ResPlayroomSelectReward{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } + Target := PlayroomMod.GetTarget() + G_GameLogicPtr.FriendMgrSend(&MsqMod.Msg{ + From: int(player.M_DwUin), + To: Target, + Type: MsqMod.HANDLE_TYPE_DEL, + SendT: GoUtil.Now(), + }) + PlayroomMod.ResetGame() + player.PlayMod.save() + PlayroomBackData(player) + PlayroomVisit(player, PlayroomMod.GetTarget()) + player.PushClientRes(&msg.ResPlayroomSelectReward{ + Code: msg.RES_CODE_SUCCESS, + }) + return nil +} + +func ReqPlayroomLose(args []interface{}) error { + _, player, _ := ParseArgs(args) + PlayroomMod := player.PlayMod.getPlayroomMod() + PlayroomMod.ResetGame() + return nil +} + +func ReqPlayroomWork(args []interface{}) error { + _, player, buf := ParseArgs(args) + req := &msg.ReqPlayroomWork{} + proto.Unmarshal(buf, req) + PlayroomMod := player.PlayMod.getPlayroomMod() + Items, err := PlayroomMod.Work() + if err != nil { + player.SendErrClienRes(&msg.ResPlayroomWork{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } + err = player.HandleItem(Items, "playroomWork") + if err != nil { + player.SendErrClienRes(&msg.ResPlayroomWork{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } + player.PlayMod.save() + player.PushClientRes(PlayroomMod.NotifyWork()) + // PlayroomBackData(player) + player.PushClientRes(&msg.ResPlayroomWork{ + Code: msg.RES_CODE_SUCCESS, + }) + return nil +} + +func ReqPlayroomRest(args []interface{}) error { + _, player, _ := ParseArgs(args) + PlayroomMod := player.PlayMod.getPlayroomMod() + PlayroomMod.Rest() + player.PlayMod.save() + player.PushClientRes(PlayroomMod.NotifyWork()) + return nil +} + +func ReqPlayroomDraw(args []interface{}) error { + _, player, _ := ParseArgs(args) + PlayroomMod := player.PlayMod.getPlayroomMod() + Id, Items, err := PlayroomMod.Draw() + if err != nil { + player.SendErrClienRes(&msg.ResPlayroomDraw{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } + err = player.HandleItem(Items, "playroomDraw") + if err != nil { + player.SendErrClienRes(&msg.ResPlayroomDraw{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } + player.PlayMod.save() + PlayroomBackData(player) + player.PushClientRes(&msg.ResPlayroomDraw{ + Code: msg.RES_CODE_SUCCESS, + Id: int32(Id), + }) + return nil +} + +func ReqPlayroomChip(args []interface{}) error { + _, player, buf := ParseArgs(args) + req := &msg.ReqPlayroomChip{} + proto.Unmarshal(buf, req) + PlayroomMod := player.PlayMod.getPlayroomMod() + Items := PlayroomMod.RemoveChip(int(req.Num)) + err := player.HandleItem(Items, "playroomChip") + if err != nil { + player.SendErrClienRes(&msg.ResPlayroomChip{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } + player.PlayMod.save() + PlayroomBackData(player) + player.PushClientRes(&msg.ResPlayroomChip{ + Code: msg.RES_CODE_SUCCESS, + }) + return nil +} diff --git a/src/server/game/ServerMod.go b/src/server/game/ServerMod.go index 4f342057..84e86a1b 100644 --- a/src/server/game/ServerMod.go +++ b/src/server/game/ServerMod.go @@ -1,6 +1,8 @@ package game import ( + "context" + "database/sql" "fmt" "server/GoUtil" "server/db" @@ -45,7 +47,7 @@ func (s *ServerMod) init() { go func() { defer func() { if r := recover(); r != nil { - log.Debug("FriendMgr panic: %s", r) + log.Debug("%s panic: %s", s.key, r) s.lock.Unlock() } }() @@ -137,10 +139,15 @@ func (s *ServerMod) SaveData() { log.Debug("SaveData Marshal failed,Mod Key: %s err:%v", s.key, err) } // log.Debug("SaveData Marshal success,Mod Key: %s", s.key) + ctx := context.Background() + txOptions := &sql.TxOptions{} + tx, err := db.SqlDb.BeginTx(ctx, txOptions) err = db.SaveServerData(&DbData) if err != nil { + tx.Rollback() log.Debug("SaveData sql exec ,Mod Key: %s err:%v", s.key, err) } + tx.Commit() } func (s *ServerMod) LoadData() { diff --git a/src/server/game/Type.go b/src/server/game/Type.go index 78b5422d..b03ec8a0 100644 --- a/src/server/game/Type.go +++ b/src/server/game/Type.go @@ -7,10 +7,13 @@ type PlayerSimpleData struct { Level int Face int Decorate int + Star int Login int64 Loginout int64 FaceBook string FaceBookPic string + Playroom map[int]int + Chess []int } type VarGoldCard struct { diff --git a/src/server/game/UnitTest.go b/src/server/game/UnitTest.go index 86fb85d9..05dc87d1 100644 --- a/src/server/game/UnitTest.go +++ b/src/server/game/UnitTest.go @@ -1,6 +1,9 @@ package game -import "fmt" +import ( + "fmt" + "server/game/mod/order" +) func UnitEndlessReward(p *Player) error { EndlessMod := p.PlayMod.getEndlessMod() @@ -44,6 +47,12 @@ func UnitChessShop(p *Player) error { func UnitOrder(p *Player) error { OrderMod := p.PlayMod.getOrderMod() ChessMod := p.PlayMod.getChessMod() - err := OrderMod.CreateOrder(6, ChessMod.GetEmitList()) - return err + OrderMod.OrderList = make(map[int]order.Order) + for i := 0; i < 150; i++ { + err := OrderMod.CreateNormalOrder(6, ChessMod.GetEmitList(), 3) + if err != nil { + return err + } + } + return nil } diff --git a/src/server/game/VarMgr.go b/src/server/game/VarMgr.go index 5c5bd454..269e3038 100644 --- a/src/server/game/VarMgr.go +++ b/src/server/game/VarMgr.go @@ -27,8 +27,6 @@ func (f *VarMgr) Init() { // 注册处理函数 f.init() f.initData() - f.RegisterHandler(msg.HANDLE_TYPE_VAR_GET, f.GetVar) - f.RegisterHandler(msg.HANDLE_TYPE_VAR_SET, f.SetVar) f.RegisterHandler(msg.SERVER_ZERO_UPDATE, f.ZeroUpdate) } @@ -46,13 +44,14 @@ func (f *VarMgr) initData() { } } -func (f *VarMgr) ZeroUpdate() { +func (f *VarMgr) ZeroUpdate(m *msg.Msg) (interface{}, error) { // 随机生成两个金卡 Card1, Card2 := card.RankGoldCard() f.SetVar(VAR_GOLD_CARD, &VarGoldCard{ Four: Card1, Five: Card2, }) + return nil, nil } func (f *VarMgr) SetVar(key string, value interface{}) { diff --git a/src/server/game/mod/charge/Charge.go b/src/server/game/mod/charge/Charge.go index 483d38de..bacf37c1 100644 --- a/src/server/game/mod/charge/Charge.go +++ b/src/server/game/mod/charge/Charge.go @@ -231,7 +231,7 @@ func (c *ChargeMod) InitChessShop(Emit []int) { list := make([]int, 0) for _, v := range Emit { n := 6 - ProductColor := mergeDataCfg.GetEmitProduceType(v) + ProductColor := mergeDataCfg.GetEmitProduceChessType(v) if len(ProductColor) == 0 { continue } @@ -264,20 +264,21 @@ func (c *ChargeMod) InitChessShop(Emit []int) { } } -func (c *ChargeMod) BuyChess(Chess int) ([]*item.Item, error) { +func (c *ChargeMod) BuyChess(Chess int) ([]*item.Item, []*item.Item, int, error) { v, ok := c.ChessShop[Chess] if !ok { - return nil, fmt.Errorf("BuyChess chess id not exist id:%d", Chess) + return nil, nil, 0, fmt.Errorf("BuyChess chess id not exist id:%d", Chess) } if v.Count <= 0 { - return nil, fmt.Errorf("BuyChess chess count less zero id:%d", Chess) + return nil, nil, 0, fmt.Errorf("BuyChess chess count less zero id:%d", Chess) } v.Count-- return []*item.Item{ - item.NewItem(item.ITEM_DIAMOND_ID, -v.Diamond), - item.NewItem(v.Id, 1), - }, nil + item.NewItem(item.ITEM_DIAMOND_ID, v.Diamond), + }, []*item.Item{ + item.NewItem(v.Id, 1), + }, v.Id, nil } func (c *ChargeMod) TriggerChargeUnlock(Lv int, Emit []int) { diff --git a/src/server/game/mod/friend/Friend.go b/src/server/game/mod/friend/Friend.go index 64ec4d5f..0fcf0c5e 100644 --- a/src/server/game/mod/friend/Friend.go +++ b/src/server/game/mod/friend/Friend.go @@ -27,6 +27,7 @@ const ( LOG_TYPE_CARD_EX_SUCCESS_1 = 10 // 卡牌交换成功 LOG_TYPE_CARD_EX_SUCCESS_2 = 11 // 卡牌交换成功 LOG_TYPE_FRIEND_DELETE = 14 // 删除好友 + LOG_TYPE_PLAYROOM_VISIT = 15 // 拜访玩家 ) const ( @@ -94,6 +95,9 @@ func (f *FriendMod) CheckApply(id int) bool { _, ok := f.ApplyList[id] return ok } +func (f *FriendMod) GetFriendNum() int { + return len(f.FriendList) +} func (f *FriendMod) AddFriendApply(Uid int) { f.ApplyList[Uid] = GoUtil.Now() diff --git a/src/server/game/mod/item/Item.go b/src/server/game/mod/item/Item.go index 301676af..db72bb75 100644 --- a/src/server/game/mod/item/Item.go +++ b/src/server/game/mod/item/Item.go @@ -36,6 +36,7 @@ const ( ITEM_TYPE_AVATAR = 105 // 头像框 ITEM_TYPE_ACTIVITY = 106 // 活动道具 ITEM_TYPE_ACTIVITY_RACE = 107 // 竞赛活动道具 + ITEM_TYPE_PLAYROOM_VISIT = 108 // playroom拜访道具 ) func (i *ItemMod) InitData() { diff --git a/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go b/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go index da752813..d5f0a683 100644 --- a/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go +++ b/src/server/game/mod/limitedTimeEvent/LimitedTimeEvent.go @@ -222,6 +222,7 @@ func (l *LimitedTimeEventMod) AddProgress(Lv int) { if l.Progress == ProgressMax { SelectNum := limitedTimeEventCfg.GetProgressSelectNum(Lv) RandMap := limitedTimeEventCfg.GetProgressRewardRand(Lv) + delete(RandMap, l.LastSelect) r := GoUtil.RandMapNum(RandMap, SelectNum) Id := 1 for _, v := range r { diff --git a/src/server/game/mod/msg/Msg.go b/src/server/game/mod/msg/Msg.go index 96c72660..715fd22f 100644 --- a/src/server/game/mod/msg/Msg.go +++ b/src/server/game/mod/msg/Msg.go @@ -16,52 +16,53 @@ var MSG_ZERO_UPDATE = &Msg{Type: SERVER_ZERO_UPDATE} const ( //好友操作 - HANDLE_TYPE_APPLY = 1 //申请好友 - HANDLE_TYPE_DEL = 2 //删除好友 - HANDLE_TYPE_SYNC = 3 //同步请求 - HADNLE_TYPE_AGREE = 4 //同意好友 - HANDLE_TYPE_REFUSE = 12 //拒绝申请 + HANDLE_TYPE_APPLY = iota //申请好友 + HANDLE_TYPE_DEL //删除好友 + HANDLE_TYPE_SYNC //同步请求 + HADNLE_TYPE_AGREE //同意好友 + HANDLE_TYPE_REFUSE //拒绝申请 //卡牌操作 - HANDLE_TYPE_REQ_CARD = 5 //请求卡牌 - HANDLE_TYPE_AGREE_CARD = 6 //同意卡牌 - HANDLE_TYPE_REG_CARD_REFUSE = 12 //拒绝请求卡牌 - HANDLE_TYPE_REG_CARD_FINISH = 13 //请求卡牌已结束 - HANDLE_TYPE_AGREE_CARD_FAIL = 14 //同意卡牌失败 + HANDLE_TYPE_REQ_CARD //请求卡牌 + HANDLE_TYPE_AGREE_CARD //同意卡牌 + HANDLE_TYPE_REG_CARD_REFUSE //拒绝请求卡牌 + HANDLE_TYPE_REG_CARD_FINISH //请求卡牌已结束 + HANDLE_TYPE_AGREE_CARD_FAIL //同意卡牌失败 - HANDLE_TYPE_EX_CARD = 7 //置换卡牌 - HANDLE_TYPE_SELECT_EX_CARD = 8 //选择置换卡牌 - HANDLE_TYPE_ARGREE_EX_CARD = 9 //同意置换卡牌 - HANDLE_TYPE_REFUSE_SELECT_CARD = 10 //B拒绝选择置换卡牌 - HANDLE_TYPE_REFUSE_EX_CARD = 11 //A拒绝置换卡牌 + HANDLE_TYPE_EX_CARD //置换卡牌 + HANDLE_TYPE_SELECT_EX_CARD //选择置换卡牌 + HANDLE_TYPE_ARGREE_EX_CARD //同意置换卡牌 + HANDLE_TYPE_REFUSE_SELECT_CARD //B拒绝选择置换卡牌 + HANDLE_TYPE_REFUSE_EX_CARD //A拒绝置换卡牌 - HANDLE_TYPE_EX_CARD_SELECT_TIMEOUT = 18 //置换卡牌选择超时 - HANDLE_TYPE_EX_CARD_TIMEOUT = 19 //置换卡牌超时 + HANDLE_TYPE_EX_CARD_SELECT_TIMEOUT //置换卡牌选择超时 + HANDLE_TYPE_EX_CARD_TIMEOUT //置换卡牌超时 - HANDLE_TYPE_SEND_CARD = 15 //赠送卡牌 + HANDLE_TYPE_SEND_CARD //赠送卡牌 - HANDLE_TYPE_INVITE_FRIEND = 16 //邀请好友 - HANDLE_TYPE_INVITE_ADD_FRIEND = 17 //自动添加好友 + HANDLE_TYPE_INVITE_FRIEND //邀请好友 + HANDLE_TYPE_INVITE_ADD_FRIEND //自动添加好友 // 榜单操作 - HANDLE_TYPE_RANK = 101 //榜单操作 - HANDLE_TYPE_RANK_INFO = 102 //榜单信息 - HANDLE_TYPE_RANK_NOTIFY = 103 //榜单信息 + HANDLE_TYPE_RANK //榜单操作 + HANDLE_TYPE_RANK_INFO //榜单信息 + HANDLE_TYPE_RANK_NOTIFY //榜单信息 // 邮件操作 - HANDLE_TYPE_MAIL = 201 //邮件操作 + HANDLE_TYPE_MAIL //邮件操作 // 锦标赛 - HANDLE_TYPE_CHAMPSHIP_GROUP = 301 //锦标赛分组操作 - HANDLE_TYPE_CHAMPSHIP_INRANK = 302 //锦标赛入榜操作 - HANDLE_TYPE_CHAMPSHIP_AI = 303 //锦标赛入榜操作 - HANDLE_TYPE_CHAMPSHIP_NOTIFY = 304 //锦标赛排名变动通知 - HANDLE_TYPE_CHAMPSHIP_ZERO = 305 //锦标赛0点更新 - HANDLE_TYPE_CHAMPSHIP_NOTIFY2 = 306 //锦标赛0.30点通知 + HANDLE_TYPE_CHAMPSHIP_GROUP //锦标赛分组操作 + HANDLE_TYPE_CHAMPSHIP_INRANK //锦标赛入榜操作 + HANDLE_TYPE_CHAMPSHIP_AI //锦标赛入榜操作 + HANDLE_TYPE_CHAMPSHIP_NOTIFY //锦标赛排名变动通知 + HANDLE_TYPE_CHAMPSHIP_ZERO //锦标赛0点更新 + HANDLE_TYPE_CHAMPSHIP_NOTIFY2 //锦标赛0.30点通知 // 服务器变量 - HANDLE_TYPE_VAR_GET = 401 //获取变量 - HANDLE_TYPE_VAR_SET = 402 //设置变量 + HANDLE_TYPE_VAR_GET //获取变量 + HANDLE_TYPE_VAR_SET //设置变量 //server mod handle - SERVER_ZERO_UPDATE = 1000 //zero update + SERVER_ZERO_UPDATE //zero update + HANDLE_TYPE_PLAYROOM_LOSE // playroom偷取物品 ) const ( diff --git a/src/server/game/mod/order/Order.go b/src/server/game/mod/order/Order.go index b8ce5f23..36b62d40 100644 --- a/src/server/game/mod/order/Order.go +++ b/src/server/game/mod/order/Order.go @@ -1,25 +1,26 @@ package order import ( - "errors" + "fmt" "server/GoUtil" startOrderCfg "server/conf/StartOrder" limitedTimeEventCfg "server/conf/limitedTimeEvent" mergeDataCfg "server/conf/mergeData" - orderCfg "server/conf/order" - userCfg "server/conf/user" + playroomCfg "server/conf/playroom" "server/game/mod/item" "server/msg" + "sort" "time" ) type OrderMod struct { - OrderList map[int]Order // 订单列表 - Auto_id int // 订单自增id - Step int // 当前订单步骤 - LastDiff int // 上一个订单难度 - LastOrder Order // 上一个订单 - EimtOrder map[string]struct{} + OrderList map[int]Order // 订单列表 + Auto_id int // 订单自增id + Step int // 当前订单步骤 + LastDiff int // 上一个订单难度 + LastOrder Order // 上一个订单 + LastNormalOrder Order // 上一个普通订单 + EimtOrder map[string]struct{} } type Order struct { @@ -34,6 +35,7 @@ const ( Extra_type = 2 // 额外订单 Super_type = 3 // 超级订单 Preheat_type = 4 // 预热订单 + Trigger_type = 5 // 触发订单 diff_low = 1 // 低难度 diff_mid = 2 // 中难度 @@ -79,11 +81,11 @@ func (o *OrderMod) RewardOrder(id int) ([]*item.Item, []int, int, int, error) { } return ItemList, v.MergeId, v.Type, Star, nil } - return ItemList, MergeList, 0, 0, errors.New("order not exist") + return ItemList, MergeList, 0, 0, fmt.Errorf("订单不存在, 订单id%d", id) } // 生成新订单 -func (o *OrderMod) CreateOrder(lv int, Emit []int) error { +func (o *OrderMod) CreateOrder(lv int, Emit []int, EnergyMul int) error { if len(Emit) == 0 { return nil } @@ -126,7 +128,7 @@ func (o *OrderMod) CreateOrder(lv int, Emit []int) error { } } for i := n; i < MaxOrderNum; i++ { - err := o.CreateNormalOrder(lv, Emit) + err := o.CreateNormalOrder(lv, Emit, EnergyMul) if err != nil { return err } @@ -190,130 +192,187 @@ func (o *OrderMod) CreatePriorityOrder(lv int, Emit []int) bool { } // 生成新订单 -func (o *OrderMod) CreateNormalOrder(lv int, Emit []int) error { +func (o *OrderMod) CreateNormalOrder(lv int, Emit []int, EnergyMul int) error { if len(Emit) == 0 { return nil } - OrderN, err := userCfg.GetOrderNByLv(lv) - RandChessNum := getChessNumRand(OrderN) - if err != nil { - return err - } - ChessNum := GoUtil.RandMap(RandChessNum) - - OrderDiffRand := getOrderDiffRand(o.LastDiff, OrderN) - - OrderDiff := GoUtil.RandMap(OrderDiffRand) - - ChessDiff := getChessDiff(ChessNum, OrderDiff, OrderN) - - EnergyMul := userCfg.GetEnergyMulByLv(lv) - ColorArr := make([]string, 0) - RandEmit := 0 - mergeList := make([]int, 0, len(ChessDiff)) - for _, v := range ChessDiff { - Emit, RandEmit = GoUtil.RandPopSlice(Emit) - RandEmitLv := mergeDataCfg.GetLvById(RandEmit) - RandMaxLv := mergeDataCfg.GetMaxLvById(RandEmit) - m := int(float64(1+RandEmitLv-4) / float64(1+RandMaxLv-4) * 100) - ChessMinLev := orderCfg.GetLvMin(EnergyMul) - ChessMaxLev := orderCfg.GetLvMax(EnergyMul, m) - NewLev := getChessLv(ChessMinLev, ChessMaxLev, v) - ChessColor := getRandChessColor(RandEmit) - if GoUtil.InStringArray(ChessColor, ColorArr) { + randNum := 0 + mergeList := make([]int, 0) + OrderDiff := diff_low + var err error + for { + if randNum > 50 { + break + } + randNum++ + mergeList, OrderDiff, err = randOrderChess(o, lv, Emit, EnergyMul) + if err != nil { continue } - ColorArr = append(ColorArr, ChessColor) - ColorMaxLv := mergeDataCfg.GetMaxLvByColor(ChessColor) - NewLev = min(NewLev, ColorMaxLv) - ChessId := mergeDataCfg.GetChessIdByLvAndColor(NewLev, ChessColor) - Type := mergeDataCfg.GetTypeById(ChessId) - if Type != "Product" { + lastMergelist := o.LastNormalOrder.MergeId + conbine := false + for _, v := range mergeList { + if GoUtil.InArray(v, lastMergelist) { + conbine = true + break + } + } + if conbine { continue } - if ChessId == 0 { - continue - } - mergeList = append(mergeList, ChessId) - } - if len(mergeList) == 0 { - return errors.New("mergeList is nil") + break } + o.addOrder(mergeList, OrderDiff, Common_type) return nil } // 生成超级订单 -func (o *OrderMod) CreateSuperOrder(lv int, Emit []int) error { +func (o *OrderMod) CreateSuperOrder(lv int, Emit []int, EnergyMul int) error { if len(Emit) == 0 { return nil } - OrderN, err := userCfg.GetOrderNByLv(lv) - RandChessNum := getChessNumRandSuper(OrderN) - if err != nil { - return err - } - ChessNum := GoUtil.RandMap(RandChessNum) - - OrderDiff := diff_high // 默认高难度 - PreheatColor := "" - for _, v := range o.OrderList { - if v.Type == Preheat_type { - PreheatColor = mergeDataCfg.GetColorById(v.MergeId[0]) + randNum := 0 + mergeList := make([]int, 0) + OrderDiff := diff_low + var err error + for { + if randNum > 50 { + break } - } - - NewEmit := make([]int, 0) - - for _, v := range Emit { - ProduceType := mergeDataCfg.GetEmitProduceType(v) - if GoUtil.InStringArray(PreheatColor, ProduceType) { + randNum++ + mergeList, OrderDiff, err = randOrderChess(o, lv, Emit, EnergyMul) + if err != nil { continue } - NewEmit = append(NewEmit, v) - } - ChessNum = min(ChessNum, len(NewEmit)) - ChessDiff := getChessDiff(ChessNum, OrderDiff, OrderN) - EnergyMul := userCfg.GetEnergyMulByLv(lv) - RandEmit := 0 - mergeList := make([]int, 0, len(ChessDiff)) - for _, v := range ChessDiff { - NewEmit, RandEmit = GoUtil.RandPopSlice(NewEmit) - RandEmitLv := mergeDataCfg.GetLvById(RandEmit) - RandMaxLv := mergeDataCfg.GetMaxLvById(RandEmit) - m := int(float64(1+RandEmitLv-4) / float64(1+RandMaxLv-4) * 100) - ChessMinLev := orderCfg.GetLvMin(EnergyMul) - ChessMaxLev := orderCfg.GetLvMax(EnergyMul, m) - NewLev := getChessLv(ChessMinLev, ChessMaxLev, v) - ChessColor := getRandChessColor(RandEmit) - ColorMaxLv := mergeDataCfg.GetMaxLvByColor(ChessColor) - NewLev = min(NewLev, ColorMaxLv) - ChessId := mergeDataCfg.GetChessIdByLvAndColor(NewLev, ChessColor) - Type := mergeDataCfg.GetTypeById(ChessId) - if Type != "Product" { + lastMergelist := o.LastNormalOrder.MergeId + conbine := false + for _, v := range mergeList { + if GoUtil.InArray(v, lastMergelist) { + conbine = true + break + } + } + if conbine { continue } - if ChessId == 0 { - continue - } - mergeList = append(mergeList, ChessId) - } - if len(mergeList) == 0 { - return errors.New("mergeList is nil") + break } o.addOrder(mergeList, OrderDiff, Super_type) return nil } +/* +* +触发订单生成规则: +1.有触发订单时,不重复生成 +2.检索当前已有的订单中,除特殊订单外星星基础收益数值(订单收益数低于1000)最高的订单 +*/ +func (o *OrderMod) CreateTriggerOrder(lv int, Emit []int, EnergyMul int) (int, error) { + if lv < playroomCfg.GetUnLockLv() { + return 0, nil + } + StarCfg := playroomCfg.GetOrderStar() + type info struct { + k int + v Order + } + orderList := make([]info, 0) + // 查找奖励小于1000的订单, 取最大的订单 + for k, v := range o.OrderList { + if v.Type == Trigger_type { + return 0, nil + } + if v.Type != Common_type { + continue + } + Star := getOrderStar(v.MergeId) + if Star > StarCfg { + continue + } + orderList = append(orderList, info{k, v}) + } + sort.Slice(orderList, func(i, j int) bool { + return getOrderStar(orderList[i].v.MergeId) > getOrderStar(orderList[j].v.MergeId) + }) + // 没有奖励小于1000的订单且无法生成,去最小的订单 + if len(orderList) == 0 && EnergyMul >= 8 { + for k, v := range o.OrderList { + if v.Type != Common_type { + continue + } + orderList = append(orderList, info{k, v}) + } + sort.Slice(orderList, func(i, j int) bool { + return getOrderStar(orderList[i].v.MergeId) < getOrderStar(orderList[j].v.MergeId) + }) + } + if len(orderList) != 0 { + o.OrderList[orderList[0].k] = Order{ + MergeId: orderList[0].v.MergeId, + Diff: orderList[0].v.Diff, + Type: Trigger_type, + Timestamp: time.Now().Unix(), + } + return getOrderStar(orderList[0].v.MergeId), nil + } + + // 随机生成新的订单 + if len(Emit) == 0 { + return 0, nil + } + randNum := 0 + mergeList := make([]int, 0) + for { + if randNum > 50 { + break + } + randNum++ + mergeList1, _, err := randOrderChess(o, lv, Emit, EnergyMul) + if err != nil { + continue + } + + if getOrderStar(mergeList1) < StarCfg { + mergeList = mergeList1 + break + } + } + if len(mergeList) > 0 { + o.addOrder(mergeList, diff_low, Trigger_type) + return getOrderStar(mergeList), nil + } else { + for k, v := range o.OrderList { + if v.Type != Common_type { + continue + } + orderList = append(orderList, info{k, v}) + } + sort.Slice(orderList, func(i, j int) bool { + return getOrderStar(orderList[i].v.MergeId) < getOrderStar(orderList[j].v.MergeId) + }) + o.OrderList[orderList[0].k] = Order{ + MergeId: orderList[0].v.MergeId, + Diff: orderList[0].v.Diff, + Type: Trigger_type, + Timestamp: time.Now().Unix(), + } + return getOrderStar(orderList[0].v.MergeId), nil + } +} + func (o *OrderMod) addOrder(ChessList []int, Diff int, Type int) { o.Auto_id++ - o.OrderList[o.Auto_id] = Order{ + Order := Order{ MergeId: ChessList, Diff: Diff, Type: Type, Timestamp: time.Now().Unix(), } - + o.OrderList[o.Auto_id] = Order + if Type == Common_type { + o.LastNormalOrder = Order + } } func (o *OrderMod) CreateExtraOrder(AddChess, AddNewEmit, ChessList []int) bool { @@ -396,3 +455,32 @@ func (o *OrderMod) CheckSuperOrder() bool { } return false } + +func (o *OrderMod) ChangeEnergyMul(lv int, Emit []int, EnergyMul int, ChessList []int) { + for k, v := range o.OrderList { + if v.Type != Common_type { + continue + } + NeedTrigger := false + for _, vv := range v.MergeId { + Lv := mergeDataCfg.GetLvById(vv) + if Lv >= EnergyMul+1 && Lv <= EnergyMul+12 { + continue + } + if GoUtil.InArray(vv, ChessList) { + NeedTrigger = true + break + } + } + /** + 当每次倍数调整(玩家主动调整或因为体力不足跌落)时,在普通订单中(即不包括偷猫订单、超级订单),如果出现超出上下阈值: + 订单棋子等级n+11 且该棋子在棋盘上没有 + 则删除该订单,重新生成一个普通订单 + */ + if NeedTrigger { + delete(o.OrderList, k) + o.CreateNormalOrder(lv, Emit, EnergyMul) + } + } +} diff --git a/src/server/game/mod/order/OrderFunc.go b/src/server/game/mod/order/OrderFunc.go index b87ea363..50db1f02 100644 --- a/src/server/game/mod/order/OrderFunc.go +++ b/src/server/game/mod/order/OrderFunc.go @@ -3,6 +3,8 @@ package order import ( "server/GoUtil" mergeDataCfg "server/conf/mergeData" + orderCfg "server/conf/order" + userCfg "server/conf/user" ) func getChessNumRand(OrderN int) map[int]int { @@ -129,17 +131,18 @@ func getChessDiff(ChessNum, OrderDiff, OrderN int) map[int]int { } func getChessLv(Min, Max, Diff int) int { - dur := int((Max - Min) / 3) - var rand []int - start := Diff * dur - end := (Diff + 1) * dur - if Diff == diff_high { - end = Max + Start := Min + End := Max + switch Diff { + case diff_low: + End = Min + (Max-Min+1)/3 - 1 + case diff_mid: + Start = Min + (Max-Min+1)/3 + End = Min + (Max-Min+1)/3*2 - 1 + case diff_high: + Start = Min + (Max-Min+1)/3*2 } - for i := start; i < end; i++ { - rand = append(rand, i) - } - return GoUtil.RandSlice(rand) + Min + return GoUtil.RandNum(Start, End) } func getRandChessColor(Emit int) string { @@ -153,3 +156,109 @@ func getRandChessColor(Emit int) string { }) return Produce[key] } + +func getRandChessColorList(o *OrderMod, Emit []int, EnergyMul int) map[string]int { + r := make(map[string]int) + ChessList := make([]int, 0) + for _, v := range o.OrderList { + if v.Type == Common_type { + ChessList = append(ChessList, v.MergeId...) + } + } + for _, v := range Emit { + Produce := mergeDataCfg.GetEmitProduceChessType(v) + if len(Produce) == 0 { + continue + } + if len(Produce) == 1 { + r[Produce[0]] = 100 + continue + } + r[Produce[0]] = 80 + r[Produce[1]] = 20 + if checkA1High(ChessList, v, EnergyMul) { + r[Produce[1]] += 20 + } + } + return r +} + +func checkA1High(ChessList []int, Emit int, EnergyMul int) bool { + ChessMinLev, ChessMaxLev := getChesslvRange(Emit, EnergyMul) + HighLv := ChessMinLev + ((ChessMaxLev-ChessMinLev)/3)*2 + Produce := mergeDataCfg.GetEmitProduceChessType(Emit) + for _, v := range ChessList { + ChessColor := mergeDataCfg.GetColorById(v) + if ChessColor == Produce[0] { + ChessLv := mergeDataCfg.GetLvById(v) + if ChessLv >= HighLv { + return true + } + } + } + return false +} + +func getChesslvRange(Emit int, EnergyMul int) (int, int) { + RandEmitLv := mergeDataCfg.GetLvById(Emit) + RandMaxLv := mergeDataCfg.GetMaxLvById(Emit) + RandEmitMinLv := mergeDataCfg.GetEmitMinLvById(Emit) + m := int(float64(1+RandEmitLv-RandEmitMinLv) / float64(1+RandMaxLv-RandEmitMinLv) * 100) + ChessMinLev := orderCfg.GetLvMin(EnergyMul) + ChessMaxLev := orderCfg.GetLvMax(EnergyMul, m) + return ChessMinLev, ChessMaxLev +} + +func getEmitByColor(Emit []int, color string) int { + for _, v := range Emit { + Produce := mergeDataCfg.GetEmitProduceChessType(v) + for _, c := range Produce { + if c == color { + return v + } + } + } + return 0 +} + +func randOrderChess(o *OrderMod, lv int, Emit []int, EnergyMul int) ([]int, int, error) { + OrderN, err := userCfg.GetOrderNByLv(lv) + RandChessNum := getChessNumRand(OrderN) + if err != nil { + return nil, diff_low, err + } + ChessNum := GoUtil.RandMap(RandChessNum) + OrderDiffRand := getOrderDiffRand(o.LastDiff, OrderN) + OrderDiff := GoUtil.RandMap(OrderDiffRand) + ChessDiff := getChessDiff(ChessNum, OrderDiff, OrderN) + mergeList := make([]int, 0, len(ChessDiff)) + ColorRand := getRandChessColorList(o, Emit, EnergyMul) + var Color string + for _, v := range ChessDiff { + Color = GoUtil.RandStringMap(ColorRand) + delete(ColorRand, Color) + Emit := getEmitByColor(Emit, Color) + ChessMinLv, ChessMaxLv := getChesslvRange(Emit, EnergyMul) + NewLev := getChessLv(ChessMinLv, ChessMaxLv, v) + ColorMaxLv := mergeDataCfg.GetMaxLvByColor(Color) + NewLev = min(NewLev, ColorMaxLv) + ChessId := mergeDataCfg.GetChessIdByLvAndColor(NewLev, Color) + Type := mergeDataCfg.GetTypeById(ChessId) + if Type != "Product" { + continue + } + if ChessId == 0 { + continue + } + mergeList = append(mergeList, ChessId) + } + return mergeList, OrderDiff, nil +} + +func getOrderStar(ChessList []int) int { + Star := 0 + for _, v := range ChessList { + Star += mergeDataCfg.GetStarById(v) + } + return Star +} diff --git a/src/server/game/mod/playroom/playroom.go b/src/server/game/mod/playroom/playroom.go new file mode 100644 index 00000000..1ee79ab0 --- /dev/null +++ b/src/server/game/mod/playroom/playroom.go @@ -0,0 +1,310 @@ +package playroom + +import ( + "fmt" + "math" + "server/GoUtil" + limitedTimeEventCfg "server/conf/limitedTimeEvent" + playroomCfg "server/conf/playroom" + "server/game/mod/item" + "server/msg" +) + +type PlayroomMod struct { + Collect map[int]int + Room map[int]int + Status int // 0: 未开始 1: 进行中 2: 结束 + Endtime int64 // 结束时间 + Starttime int64 // 开始时间 + WorkStatus int // 0: 未开始 1: 进行中 2: 结束 + Visitor map[int]*Info // 访客 + MoodInfo map[int]*Mood // 心情 + AllMood int // 总心情 + Reward []*item.Item + DayFirstT int // 每日未首次触发次数 + Trigger int // 未触发次数 + HasVisit map[int]int64 // 今日已拜访的玩家 + Target int // 拜访的目标 + GameId int // 游戏ID + GameReward map[int]*item.Item // 游戏奖励 + GameStatus int // 游戏状态 + Exclude bool + LoseItem []*item.Item + Chip int +} + +const ( + MOOD_TYPE_ENTER = 1 // 娱乐 + MOOD_TYPE_FOOD = 2 // 食物 + MOOD_TYPE_CLEAN = 3 // 清洁 +) + +type Mood struct { + Id int + Num int + Time int64 +} + +type Info struct { + Time int64 + Times int +} + +func (p *PlayroomMod) InitData() { + if p.Collect == nil { + p.Collect = make(map[int]int) + InitCollect := playroomCfg.GetInitDecorate() + for _, v := range InitCollect { + p.Collect[v] = 1 + } + } + if p.Room == nil { + p.Room = make(map[int]int) + } + if p.Visitor == nil { + p.Visitor = make(map[int]*Info) + } + if p.MoodInfo == nil { + p.MoodInfo = make(map[int]*Mood) + } + if p.Reward == nil { + p.Reward = make([]*item.Item, 0) + } + if p.HasVisit == nil { + p.HasVisit = make(map[int]int64) + } + if p.GameReward == nil { + p.GameReward = make(map[int]*item.Item) + } + if p.LoseItem == nil { + p.LoseItem = make([]*item.Item, 0) + } +} + +func (p *PlayroomMod) GetVisitor() map[int]*Info { + return p.Visitor +} + +func (p *PlayroomMod) GetTarget() int { + return p.Target +} + +func (p *PlayroomMod) GetHasVisit() map[int]int64 { + return p.HasVisit +} + +func (p *PlayroomMod) GetMood() map[int]int { + Mood := make(map[int]int) + for k, v := range p.MoodInfo { + Mood[k] = v.Num + } + return Mood +} + +func (p *PlayroomMod) GetMoodInfo(Id int) *Mood { + return p.MoodInfo[Id] +} + +func (p *PlayroomMod) GetCollect() map[int]int { + return p.Collect +} + +func (p *PlayroomMod) GetRoom() map[int]int { + return p.Room +} + +func (p *PlayroomMod) GetStatus() int { + return p.Status +} + +func (p *PlayroomMod) GetChip() int { + return p.Chip +} + +func (p *PlayroomMod) AddChip() { + p.Chip = min(p.Chip+1, 5) +} + +func (p *PlayroomMod) SetTarget(Target int) { + p.Target = Target + p.Status = 1 + p.HasVisit[Target] = GoUtil.Now() +} + +func (p *PlayroomMod) SetGameId(GameId int) { + if p.GameId != 0 { + return + } + p.GameId = GameId +} + +func (p *PlayroomMod) CreateOrderReward(Star int, itemMod *item.ItemMod) { + if Star == 0 { + return + } + var Item1, Item2 int + VisitorItem := playroomCfg.GetVisitorItem() + if Star < playroomCfg.GetOrderStar() { + Item1, Item2 = playroomCfg.GetNormalItem() + } else { + Item1, Item2 = playroomCfg.GetPremiumItem() + } + + Item1Num := itemMod.GetItem(Item1) + Item2Num := itemMod.GetItem(Item2) + if p.DayFirstT == 2 { + p.Reward = append(p.Reward, &item.Item{Id: VisitorItem, Num: 1}) + return + } + if p.Trigger == 4 { + p.Reward = append(p.Reward, &item.Item{Id: VisitorItem, Num: 1}) + p.Trigger = 0 + return + } + if Item1Num == 0 && Item2Num == 0 { + Prob := GoUtil.RandSlice([]int{Item1, Item2}) + p.Reward = append(p.Reward, &item.Item{Id: Prob, Num: 1}) + p.DayFirstT++ + p.Trigger++ + return + } + if math.Abs(float64(Item1Num-Item2Num)) > 3 { + RI := GoUtil.IfTrue(Item1Num > Item2Num, Item2, Item1).(int) + p.Reward = append(p.Reward, &item.Item{Id: RI, Num: 1}) + p.DayFirstT++ + p.Trigger++ + return + } + var RandSlice []int + if Star < playroomCfg.GetOrderStar() { + RandSlice = []int{Item1, Item2} + } else { + RandSlice = []int{Item1, Item2, VisitorItem} + } + Prob := GoUtil.RandSlice(RandSlice) + p.Reward = append(p.Reward, &item.Item{Id: Prob, Num: 1}) + if Prob == VisitorItem { + p.DayFirstT = 3 + p.Trigger = 0 + } else { + p.DayFirstT++ + p.Trigger++ + } +} + +func (p *PlayroomMod) GetReward() []*item.Item { + p.Reward = make([]*item.Item, 0) + return p.Reward +} + +func (p *PlayroomMod) Interact(Id, Type int) ([]*item.Item, error) { + MoodType, ItemList, Effect := playroomCfg.GetInteract(Id, Type) + if MoodType == 0 { + return nil, fmt.Errorf("Interact MoodType is 0") + } + if Effect > 0 { + p.AllMood += 10 + } + p.AddMood(MoodType, Effect) + return ItemList, nil +} + +func (p *PlayroomMod) AddMood(Id, Num int) { + p.MoodInfo[Id].Num = max(0, min(p.MoodInfo[Id].Num+Num, 100)) +} + +func (p *PlayroomMod) AddVisitor(Id int, Time int64) { + v, ok := p.Visitor[Id] + if !ok { + p.Visitor[Id] = &Info{Time: Time, Times: 1} + return + } + v.Times++ + v.Time = Time +} + +func (p *PlayroomMod) SetRoom(Id, Pos int) error { + _, ok := p.Collect[Id] + if !ok { + return fmt.Errorf("SetRoom Collect Id not found") + } + p.Room[Pos] = Id + return nil +} + +func (p *PlayroomMod) AddCollect(Id int) { + p.Collect[Id]++ +} + +func (p *PlayroomMod) ResetGame() { + p.Target = 0 + p.Status = 0 + p.GameId = 0 + p.GameReward = make(map[int]*item.Item) +} + +func (p *PlayroomMod) SetGameReward(Chess1, Chess2, Star int) { + p.GameReward[1] = &item.Item{Id: Chess1, Num: 1} + p.GameReward[2] = &item.Item{Id: Chess2, Num: 1} + p.GameReward[3] = &item.Item{Id: item.ITEM_STAR_ID, Num: Star} +} + +func (p *PlayroomMod) SelectReward(Id int) []*item.Item { + v, ok := p.GameReward[Id] + if !ok { + return nil + } + return []*item.Item{v} +} + +func (p *PlayroomMod) Lose(Item []*item.Item) { + p.LoseItem = append(p.LoseItem, Item...) +} + +func (p *PlayroomMod) Work() ([]*item.Item, error) { + if p.Endtime > GoUtil.Now() { + p.WorkStatus = 1 + return nil, nil + } + p.Starttime = GoUtil.Now() + p.Endtime = GoUtil.Now() + 86400 + p.WorkStatus = 1 + ItemId := playroomCfg.GetWorkItem() + return []*item.Item{item.NewItem(ItemId, 1)}, nil +} + +func (p *PlayroomMod) Rest() { + p.WorkStatus = 2 +} + +func (p *PlayroomMod) Draw() (int, []*item.Item, error) { + if p.AllMood < 100 { + return 0, nil, fmt.Errorf("Draw AllMood < 100") + } + p.AllMood = 0 + ProbList := limitedTimeEventCfg.GetSenceJackpotProb() + Id := GoUtil.RandMap(ProbList) + return Id, limitedTimeEventCfg.GetSenceJackpotReward(Id), nil +} + +func (p *PlayroomMod) NotifyWork() *msg.NotifyPlayroomWork { + return &msg.NotifyPlayroomWork{ + WorkStatus: int32(p.WorkStatus), + StartTime: int32(p.Starttime), + } +} + +func (p *PlayroomMod) Fire(ChargeId int) []*item.Item { + WorkChargeId := playroomCfg.GetWorkChargeId() + if ChargeId == WorkChargeId { + ItemId := playroomCfg.GetWorkItem() + return []*item.Item{item.NewItem(ItemId, 1)} + } + return nil +} + +func (p *PlayroomMod) RemoveChip(Num int) []*item.Item { + Num = min(Num, p.Chip) + p.Chip -= Num + return []*item.Item{item.NewItem(item.ITEM_STAR_ID, Num*50)} +} diff --git a/src/server/game/mod/quest/Quest.go b/src/server/game/mod/quest/Quest.go index 2cba629a..19bc6f0f 100644 --- a/src/server/game/mod/quest/Quest.go +++ b/src/server/game/mod/quest/Quest.go @@ -56,20 +56,15 @@ func TriggerQuestProgress(q *QuestProgress, Tr *Trigger) bool { } switch q.Label { - case "Energy": // 消耗x能量 + case TRIGGER_LABEL_ENERGY: // 消耗x能量 AddNum := Tr.A[0].(int) q.Num += AddNum if q.Num >= q.Target { q.Num = q.Target q.Status = true } - case "MergeTime": // 合成x次 - q.Num += 1 - if q.Num >= q.Target { - q.Num = q.Target - q.Status = true - } - case "MergeLvTime": // 合成x级棋子y次 + + case TRIGGER_LABEL_MERGELVTIME: // 合成x级棋子y次 Lv, _ := Tr.A[0].(int) TargetLv, _ := strconv.Atoi(q.A[0].(string)) if TargetLv == Lv { @@ -79,6 +74,13 @@ func TriggerQuestProgress(q *QuestProgress, Tr *Trigger) bool { q.Status = true } } + case TRIGGER_LABEL_MERGETIME, // 合成x次 + TRIGGER_LABEL_FINISHORDER: // 完成x次订单 + q.Num += 1 + if q.Num >= q.Target { + q.Num = q.Target + q.Status = true + } } return true } diff --git a/src/server/gamedata/reader.go b/src/server/gamedata/reader.go index 85b7e845..9f8287e3 100644 --- a/src/server/gamedata/reader.go +++ b/src/server/gamedata/reader.go @@ -9,6 +9,7 @@ import ( "path/filepath" "strconv" + "server/conf" "server/game/mod/item" "server/pkg/github.com/name5566/leaf/log" "server/pkg/github.com/name5566/leaf/recordfile" @@ -17,10 +18,14 @@ import ( ) var watcher *fsnotify.Watcher +var ConfPath = "./gamedata/config/" func init() { + if conf.Server.GameConfPath != "" { + ConfPath = conf.Server.GameConfPath + } watcher, _ = fsnotify.NewWatcher() - watcher.Add("./gamedata/config/reload") + watcher.Add(ConfPath + "reload") go func() { for { select { @@ -52,7 +57,7 @@ func readRfNew(st interface{}, ralativePath string) *recordfile.RecordFile { log.Fatal("%v", err) } fn := ralativePath + ".txt" - err = rf.Read("gamedata/config/" + fn) + err = rf.Read(ConfPath + fn) if err != nil { log.Fatal("%v: %v", fn, err) } @@ -62,7 +67,7 @@ func readRfNew(st interface{}, ralativePath string) *recordfile.RecordFile { func InitCfg(cfgname string) { // 读取文件内容 - filePath := "./gamedata/config/" + cfgname + ".json" + filePath := ConfPath + cfgname + ".json" absPath, _ := filepath.Abs(filePath) file, err := os.Open(absPath) diff --git a/src/server/msg/Gameapi.pb.go b/src/server/msg/Gameapi.pb.go index 78222875..929b7d24 100644 --- a/src/server/msg/Gameapi.pb.go +++ b/src/server/msg/Gameapi.pb.go @@ -30488,6 +30488,113 @@ func (x *ResBuyChessShop) GetMsg() string { return "" } +// 商店购买棋子 +type ReqBuyChessShop2 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` + MChessData map[string]int32 `protobuf:"bytes,2,rep,name=mChessData,proto3" json:"mChessData,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` +} + +func (x *ReqBuyChessShop2) Reset() { + *x = ReqBuyChessShop2{} + mi := &file_Gameapi_proto_msgTypes[526] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqBuyChessShop2) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqBuyChessShop2) ProtoMessage() {} + +func (x *ReqBuyChessShop2) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[526] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReqBuyChessShop2.ProtoReflect.Descriptor instead. +func (*ReqBuyChessShop2) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{526} +} + +func (x *ReqBuyChessShop2) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *ReqBuyChessShop2) GetMChessData() map[string]int32 { + if x != nil { + return x.MChessData + } + return nil +} + +type ResBuyChessShop2 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` +} + +func (x *ResBuyChessShop2) Reset() { + *x = ResBuyChessShop2{} + mi := &file_Gameapi_proto_msgTypes[527] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResBuyChessShop2) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResBuyChessShop2) ProtoMessage() {} + +func (x *ResBuyChessShop2) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[527] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResBuyChessShop2.ProtoReflect.Descriptor instead. +func (*ResBuyChessShop2) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{527} +} + +func (x *ResBuyChessShop2) GetCode() RES_CODE { + if x != nil { + return x.Code + } + return RES_CODE_FAIL +} + +func (x *ResBuyChessShop2) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + // 刷新棋子商店 type ReqRefreshChessShop struct { state protoimpl.MessageState @@ -30497,7 +30604,7 @@ type ReqRefreshChessShop struct { func (x *ReqRefreshChessShop) Reset() { *x = ReqRefreshChessShop{} - mi := &file_Gameapi_proto_msgTypes[526] + mi := &file_Gameapi_proto_msgTypes[528] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30509,7 +30616,7 @@ func (x *ReqRefreshChessShop) String() string { func (*ReqRefreshChessShop) ProtoMessage() {} func (x *ReqRefreshChessShop) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[526] + mi := &file_Gameapi_proto_msgTypes[528] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30522,7 +30629,7 @@ func (x *ReqRefreshChessShop) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqRefreshChessShop.ProtoReflect.Descriptor instead. func (*ReqRefreshChessShop) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{526} + return file_Gameapi_proto_rawDescGZIP(), []int{528} } type ResRefreshChessShop struct { @@ -30536,7 +30643,7 @@ type ResRefreshChessShop struct { func (x *ResRefreshChessShop) Reset() { *x = ResRefreshChessShop{} - mi := &file_Gameapi_proto_msgTypes[527] + mi := &file_Gameapi_proto_msgTypes[529] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30548,7 +30655,7 @@ func (x *ResRefreshChessShop) String() string { func (*ResRefreshChessShop) ProtoMessage() {} func (x *ResRefreshChessShop) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[527] + mi := &file_Gameapi_proto_msgTypes[529] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30561,7 +30668,7 @@ func (x *ResRefreshChessShop) ProtoReflect() protoreflect.Message { // Deprecated: Use ResRefreshChessShop.ProtoReflect.Descriptor instead. func (*ResRefreshChessShop) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{527} + return file_Gameapi_proto_rawDescGZIP(), []int{529} } func (x *ResRefreshChessShop) GetCode() RES_CODE { @@ -30586,7 +30693,7 @@ type ReqEndless struct { func (x *ReqEndless) Reset() { *x = ReqEndless{} - mi := &file_Gameapi_proto_msgTypes[528] + mi := &file_Gameapi_proto_msgTypes[530] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30598,7 +30705,7 @@ func (x *ReqEndless) String() string { func (*ReqEndless) ProtoMessage() {} func (x *ReqEndless) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[528] + mi := &file_Gameapi_proto_msgTypes[530] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30611,7 +30718,7 @@ func (x *ReqEndless) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqEndless.ProtoReflect.Descriptor instead. func (*ReqEndless) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{528} + return file_Gameapi_proto_rawDescGZIP(), []int{530} } type ResEndless struct { @@ -30625,7 +30732,7 @@ type ResEndless struct { func (x *ResEndless) Reset() { *x = ResEndless{} - mi := &file_Gameapi_proto_msgTypes[529] + mi := &file_Gameapi_proto_msgTypes[531] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30637,7 +30744,7 @@ func (x *ResEndless) String() string { func (*ResEndless) ProtoMessage() {} func (x *ResEndless) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[529] + mi := &file_Gameapi_proto_msgTypes[531] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30650,7 +30757,7 @@ func (x *ResEndless) ProtoReflect() protoreflect.Message { // Deprecated: Use ResEndless.ProtoReflect.Descriptor instead. func (*ResEndless) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{529} + return file_Gameapi_proto_rawDescGZIP(), []int{531} } func (x *ResEndless) GetId() int32 { @@ -30679,7 +30786,7 @@ type ResEndlessInfo struct { func (x *ResEndlessInfo) Reset() { *x = ResEndlessInfo{} - mi := &file_Gameapi_proto_msgTypes[530] + mi := &file_Gameapi_proto_msgTypes[532] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30691,7 +30798,7 @@ func (x *ResEndlessInfo) String() string { func (*ResEndlessInfo) ProtoMessage() {} func (x *ResEndlessInfo) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[530] + mi := &file_Gameapi_proto_msgTypes[532] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30704,7 +30811,7 @@ func (x *ResEndlessInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ResEndlessInfo.ProtoReflect.Descriptor instead. func (*ResEndlessInfo) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{530} + return file_Gameapi_proto_rawDescGZIP(), []int{532} } func (x *ResEndlessInfo) GetChargeId() int32 { @@ -30736,7 +30843,7 @@ type ReqEndlessReward struct { func (x *ReqEndlessReward) Reset() { *x = ReqEndlessReward{} - mi := &file_Gameapi_proto_msgTypes[531] + mi := &file_Gameapi_proto_msgTypes[533] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30748,7 +30855,7 @@ func (x *ReqEndlessReward) String() string { func (*ReqEndlessReward) ProtoMessage() {} func (x *ReqEndlessReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[531] + mi := &file_Gameapi_proto_msgTypes[533] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30761,7 +30868,7 @@ func (x *ReqEndlessReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqEndlessReward.ProtoReflect.Descriptor instead. func (*ReqEndlessReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{531} + return file_Gameapi_proto_rawDescGZIP(), []int{533} } type ResEndlessReward struct { @@ -30775,7 +30882,7 @@ type ResEndlessReward struct { func (x *ResEndlessReward) Reset() { *x = ResEndlessReward{} - mi := &file_Gameapi_proto_msgTypes[532] + mi := &file_Gameapi_proto_msgTypes[534] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30787,7 +30894,7 @@ func (x *ResEndlessReward) String() string { func (*ResEndlessReward) ProtoMessage() {} func (x *ResEndlessReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[532] + mi := &file_Gameapi_proto_msgTypes[534] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30800,7 +30907,7 @@ func (x *ResEndlessReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResEndlessReward.ProtoReflect.Descriptor instead. func (*ResEndlessReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{532} + return file_Gameapi_proto_rawDescGZIP(), []int{534} } func (x *ResEndlessReward) GetCode() RES_CODE { @@ -30830,7 +30937,7 @@ type ResPiggyBank struct { func (x *ResPiggyBank) Reset() { *x = ResPiggyBank{} - mi := &file_Gameapi_proto_msgTypes[533] + mi := &file_Gameapi_proto_msgTypes[535] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30842,7 +30949,7 @@ func (x *ResPiggyBank) String() string { func (*ResPiggyBank) ProtoMessage() {} func (x *ResPiggyBank) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[533] + mi := &file_Gameapi_proto_msgTypes[535] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30855,7 +30962,7 @@ func (x *ResPiggyBank) ProtoReflect() protoreflect.Message { // Deprecated: Use ResPiggyBank.ProtoReflect.Descriptor instead. func (*ResPiggyBank) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{533} + return file_Gameapi_proto_rawDescGZIP(), []int{535} } func (x *ResPiggyBank) GetType() int32 { @@ -30894,7 +31001,7 @@ type ReqPiggyBankReward struct { func (x *ReqPiggyBankReward) Reset() { *x = ReqPiggyBankReward{} - mi := &file_Gameapi_proto_msgTypes[534] + mi := &file_Gameapi_proto_msgTypes[536] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30906,7 +31013,7 @@ func (x *ReqPiggyBankReward) String() string { func (*ReqPiggyBankReward) ProtoMessage() {} func (x *ReqPiggyBankReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[534] + mi := &file_Gameapi_proto_msgTypes[536] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30919,7 +31026,7 @@ func (x *ReqPiggyBankReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqPiggyBankReward.ProtoReflect.Descriptor instead. func (*ReqPiggyBankReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{534} + return file_Gameapi_proto_rawDescGZIP(), []int{536} } type ResPiggyBankReward struct { @@ -30933,7 +31040,7 @@ type ResPiggyBankReward struct { func (x *ResPiggyBankReward) Reset() { *x = ResPiggyBankReward{} - mi := &file_Gameapi_proto_msgTypes[535] + mi := &file_Gameapi_proto_msgTypes[537] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30945,7 +31052,7 @@ func (x *ResPiggyBankReward) String() string { func (*ResPiggyBankReward) ProtoMessage() {} func (x *ResPiggyBankReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[535] + mi := &file_Gameapi_proto_msgTypes[537] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30958,7 +31065,7 @@ func (x *ResPiggyBankReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResPiggyBankReward.ProtoReflect.Descriptor instead. func (*ResPiggyBankReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{535} + return file_Gameapi_proto_rawDescGZIP(), []int{537} } func (x *ResPiggyBankReward) GetCode() RES_CODE { @@ -30987,7 +31094,7 @@ type ReqCreateOrderSn struct { func (x *ReqCreateOrderSn) Reset() { *x = ReqCreateOrderSn{} - mi := &file_Gameapi_proto_msgTypes[536] + mi := &file_Gameapi_proto_msgTypes[538] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30999,7 +31106,7 @@ func (x *ReqCreateOrderSn) String() string { func (*ReqCreateOrderSn) ProtoMessage() {} func (x *ReqCreateOrderSn) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[536] + mi := &file_Gameapi_proto_msgTypes[538] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31012,7 +31119,7 @@ func (x *ReqCreateOrderSn) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqCreateOrderSn.ProtoReflect.Descriptor instead. func (*ReqCreateOrderSn) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{536} + return file_Gameapi_proto_rawDescGZIP(), []int{538} } func (x *ReqCreateOrderSn) GetChargeId() int32 { @@ -31046,7 +31153,7 @@ type ResCreateOrderSn struct { func (x *ResCreateOrderSn) Reset() { *x = ResCreateOrderSn{} - mi := &file_Gameapi_proto_msgTypes[537] + mi := &file_Gameapi_proto_msgTypes[539] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31058,7 +31165,7 @@ func (x *ResCreateOrderSn) String() string { func (*ResCreateOrderSn) ProtoMessage() {} func (x *ResCreateOrderSn) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[537] + mi := &file_Gameapi_proto_msgTypes[539] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31071,7 +31178,7 @@ func (x *ResCreateOrderSn) ProtoReflect() protoreflect.Message { // Deprecated: Use ResCreateOrderSn.ProtoReflect.Descriptor instead. func (*ResCreateOrderSn) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{537} + return file_Gameapi_proto_rawDescGZIP(), []int{539} } func (x *ResCreateOrderSn) GetOrderSn() string { @@ -31093,7 +31200,7 @@ type ReqShippingOrder struct { func (x *ReqShippingOrder) Reset() { *x = ReqShippingOrder{} - mi := &file_Gameapi_proto_msgTypes[538] + mi := &file_Gameapi_proto_msgTypes[540] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31105,7 +31212,7 @@ func (x *ReqShippingOrder) String() string { func (*ReqShippingOrder) ProtoMessage() {} func (x *ReqShippingOrder) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[538] + mi := &file_Gameapi_proto_msgTypes[540] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31118,7 +31225,7 @@ func (x *ReqShippingOrder) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqShippingOrder.ProtoReflect.Descriptor instead. func (*ReqShippingOrder) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{538} + return file_Gameapi_proto_rawDescGZIP(), []int{540} } func (x *ReqShippingOrder) GetOrderSn() string { @@ -31153,7 +31260,7 @@ type ResShippingOrder struct { func (x *ResShippingOrder) Reset() { *x = ResShippingOrder{} - mi := &file_Gameapi_proto_msgTypes[539] + mi := &file_Gameapi_proto_msgTypes[541] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31165,7 +31272,7 @@ func (x *ResShippingOrder) String() string { func (*ResShippingOrder) ProtoMessage() {} func (x *ResShippingOrder) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[539] + mi := &file_Gameapi_proto_msgTypes[541] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31178,7 +31285,7 @@ func (x *ResShippingOrder) ProtoReflect() protoreflect.Message { // Deprecated: Use ResShippingOrder.ProtoReflect.Descriptor instead. func (*ResShippingOrder) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{539} + return file_Gameapi_proto_rawDescGZIP(), []int{541} } func (x *ResShippingOrder) GetCode() RES_CODE { @@ -31203,7 +31310,7 @@ type ReqChampship struct { func (x *ReqChampship) Reset() { *x = ReqChampship{} - mi := &file_Gameapi_proto_msgTypes[540] + mi := &file_Gameapi_proto_msgTypes[542] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31215,7 +31322,7 @@ func (x *ReqChampship) String() string { func (*ReqChampship) ProtoMessage() {} func (x *ReqChampship) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[540] + mi := &file_Gameapi_proto_msgTypes[542] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31228,7 +31335,7 @@ func (x *ReqChampship) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqChampship.ProtoReflect.Descriptor instead. func (*ReqChampship) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{540} + return file_Gameapi_proto_rawDescGZIP(), []int{542} } type ResChampship struct { @@ -31247,7 +31354,7 @@ type ResChampship struct { func (x *ResChampship) Reset() { *x = ResChampship{} - mi := &file_Gameapi_proto_msgTypes[541] + mi := &file_Gameapi_proto_msgTypes[543] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31259,7 +31366,7 @@ func (x *ResChampship) String() string { func (*ResChampship) ProtoMessage() {} func (x *ResChampship) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[541] + mi := &file_Gameapi_proto_msgTypes[543] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31272,7 +31379,7 @@ func (x *ResChampship) ProtoReflect() protoreflect.Message { // Deprecated: Use ResChampship.ProtoReflect.Descriptor instead. func (*ResChampship) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{541} + return file_Gameapi_proto_rawDescGZIP(), []int{543} } func (x *ResChampship) GetScore() int32 { @@ -31332,7 +31439,7 @@ type ReqChampshipReward struct { func (x *ReqChampshipReward) Reset() { *x = ReqChampshipReward{} - mi := &file_Gameapi_proto_msgTypes[542] + mi := &file_Gameapi_proto_msgTypes[544] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31344,7 +31451,7 @@ func (x *ReqChampshipReward) String() string { func (*ReqChampshipReward) ProtoMessage() {} func (x *ReqChampshipReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[542] + mi := &file_Gameapi_proto_msgTypes[544] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31357,7 +31464,7 @@ func (x *ReqChampshipReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqChampshipReward.ProtoReflect.Descriptor instead. func (*ReqChampshipReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{542} + return file_Gameapi_proto_rawDescGZIP(), []int{544} } type ResChampshipReward struct { @@ -31371,7 +31478,7 @@ type ResChampshipReward struct { func (x *ResChampshipReward) Reset() { *x = ResChampshipReward{} - mi := &file_Gameapi_proto_msgTypes[543] + mi := &file_Gameapi_proto_msgTypes[545] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31383,7 +31490,7 @@ func (x *ResChampshipReward) String() string { func (*ResChampshipReward) ProtoMessage() {} func (x *ResChampshipReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[543] + mi := &file_Gameapi_proto_msgTypes[545] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31396,7 +31503,7 @@ func (x *ResChampshipReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResChampshipReward.ProtoReflect.Descriptor instead. func (*ResChampshipReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{543} + return file_Gameapi_proto_rawDescGZIP(), []int{545} } func (x *ResChampshipReward) GetCode() RES_CODE { @@ -31421,7 +31528,7 @@ type ReqChampshipRankReward struct { func (x *ReqChampshipRankReward) Reset() { *x = ReqChampshipRankReward{} - mi := &file_Gameapi_proto_msgTypes[544] + mi := &file_Gameapi_proto_msgTypes[546] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31433,7 +31540,7 @@ func (x *ReqChampshipRankReward) String() string { func (*ReqChampshipRankReward) ProtoMessage() {} func (x *ReqChampshipRankReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[544] + mi := &file_Gameapi_proto_msgTypes[546] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31446,7 +31553,7 @@ func (x *ReqChampshipRankReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqChampshipRankReward.ProtoReflect.Descriptor instead. func (*ReqChampshipRankReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{544} + return file_Gameapi_proto_rawDescGZIP(), []int{546} } type ResChampshipRankReward struct { @@ -31460,7 +31567,7 @@ type ResChampshipRankReward struct { func (x *ResChampshipRankReward) Reset() { *x = ResChampshipRankReward{} - mi := &file_Gameapi_proto_msgTypes[545] + mi := &file_Gameapi_proto_msgTypes[547] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31472,7 +31579,7 @@ func (x *ResChampshipRankReward) String() string { func (*ResChampshipRankReward) ProtoMessage() {} func (x *ResChampshipRankReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[545] + mi := &file_Gameapi_proto_msgTypes[547] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31485,7 +31592,7 @@ func (x *ResChampshipRankReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResChampshipRankReward.ProtoReflect.Descriptor instead. func (*ResChampshipRankReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{545} + return file_Gameapi_proto_rawDescGZIP(), []int{547} } func (x *ResChampshipRankReward) GetCode() RES_CODE { @@ -31510,7 +31617,7 @@ type ReqChampshipRank struct { func (x *ReqChampshipRank) Reset() { *x = ReqChampshipRank{} - mi := &file_Gameapi_proto_msgTypes[546] + mi := &file_Gameapi_proto_msgTypes[548] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31522,7 +31629,7 @@ func (x *ReqChampshipRank) String() string { func (*ReqChampshipRank) ProtoMessage() {} func (x *ReqChampshipRank) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[546] + mi := &file_Gameapi_proto_msgTypes[548] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31535,7 +31642,7 @@ func (x *ReqChampshipRank) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqChampshipRank.ProtoReflect.Descriptor instead. func (*ReqChampshipRank) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{546} + return file_Gameapi_proto_rawDescGZIP(), []int{548} } type ResChampshipRank struct { @@ -31550,7 +31657,7 @@ type ResChampshipRank struct { func (x *ResChampshipRank) Reset() { *x = ResChampshipRank{} - mi := &file_Gameapi_proto_msgTypes[547] + mi := &file_Gameapi_proto_msgTypes[549] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31562,7 +31669,7 @@ func (x *ResChampshipRank) String() string { func (*ResChampshipRank) ProtoMessage() {} func (x *ResChampshipRank) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[547] + mi := &file_Gameapi_proto_msgTypes[549] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31575,7 +31682,7 @@ func (x *ResChampshipRank) ProtoReflect() protoreflect.Message { // Deprecated: Use ResChampshipRank.ProtoReflect.Descriptor instead. func (*ResChampshipRank) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{547} + return file_Gameapi_proto_rawDescGZIP(), []int{549} } func (x *ResChampshipRank) GetRankList() map[int32]*ResPlayerRank { @@ -31607,7 +31714,7 @@ type ReqChampshipPreRank struct { func (x *ReqChampshipPreRank) Reset() { *x = ReqChampshipPreRank{} - mi := &file_Gameapi_proto_msgTypes[548] + mi := &file_Gameapi_proto_msgTypes[550] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31619,7 +31726,7 @@ func (x *ReqChampshipPreRank) String() string { func (*ReqChampshipPreRank) ProtoMessage() {} func (x *ReqChampshipPreRank) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[548] + mi := &file_Gameapi_proto_msgTypes[550] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31632,7 +31739,7 @@ func (x *ReqChampshipPreRank) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqChampshipPreRank.ProtoReflect.Descriptor instead. func (*ReqChampshipPreRank) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{548} + return file_Gameapi_proto_rawDescGZIP(), []int{550} } type ResChampshipPreRank struct { @@ -31647,7 +31754,7 @@ type ResChampshipPreRank struct { func (x *ResChampshipPreRank) Reset() { *x = ResChampshipPreRank{} - mi := &file_Gameapi_proto_msgTypes[549] + mi := &file_Gameapi_proto_msgTypes[551] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31659,7 +31766,7 @@ func (x *ResChampshipPreRank) String() string { func (*ResChampshipPreRank) ProtoMessage() {} func (x *ResChampshipPreRank) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[549] + mi := &file_Gameapi_proto_msgTypes[551] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31672,7 +31779,7 @@ func (x *ResChampshipPreRank) ProtoReflect() protoreflect.Message { // Deprecated: Use ResChampshipPreRank.ProtoReflect.Descriptor instead. func (*ResChampshipPreRank) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{549} + return file_Gameapi_proto_rawDescGZIP(), []int{551} } func (x *ResChampshipPreRank) GetRankList() map[int32]*ResPlayerRank { @@ -31708,7 +31815,7 @@ type ResNotifyCard struct { func (x *ResNotifyCard) Reset() { *x = ResNotifyCard{} - mi := &file_Gameapi_proto_msgTypes[550] + mi := &file_Gameapi_proto_msgTypes[552] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31720,7 +31827,7 @@ func (x *ResNotifyCard) String() string { func (*ResNotifyCard) ProtoMessage() {} func (x *ResNotifyCard) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[550] + mi := &file_Gameapi_proto_msgTypes[552] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31733,7 +31840,7 @@ func (x *ResNotifyCard) ProtoReflect() protoreflect.Message { // Deprecated: Use ResNotifyCard.ProtoReflect.Descriptor instead. func (*ResNotifyCard) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{550} + return file_Gameapi_proto_rawDescGZIP(), []int{552} } func (x *ResNotifyCard) GetCard() map[int32]int32 { @@ -31767,7 +31874,7 @@ type ReqSetFacebookUrl struct { func (x *ReqSetFacebookUrl) Reset() { *x = ReqSetFacebookUrl{} - mi := &file_Gameapi_proto_msgTypes[551] + mi := &file_Gameapi_proto_msgTypes[553] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31779,7 +31886,7 @@ func (x *ReqSetFacebookUrl) String() string { func (*ReqSetFacebookUrl) ProtoMessage() {} func (x *ReqSetFacebookUrl) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[551] + mi := &file_Gameapi_proto_msgTypes[553] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31792,7 +31899,7 @@ func (x *ReqSetFacebookUrl) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqSetFacebookUrl.ProtoReflect.Descriptor instead. func (*ReqSetFacebookUrl) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{551} + return file_Gameapi_proto_rawDescGZIP(), []int{553} } func (x *ReqSetFacebookUrl) GetUrl() string { @@ -31813,7 +31920,7 @@ type ResSetFacebookUrl struct { func (x *ResSetFacebookUrl) Reset() { *x = ResSetFacebookUrl{} - mi := &file_Gameapi_proto_msgTypes[552] + mi := &file_Gameapi_proto_msgTypes[554] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31825,7 +31932,7 @@ func (x *ResSetFacebookUrl) String() string { func (*ResSetFacebookUrl) ProtoMessage() {} func (x *ResSetFacebookUrl) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[552] + mi := &file_Gameapi_proto_msgTypes[554] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31838,7 +31945,7 @@ func (x *ResSetFacebookUrl) ProtoReflect() protoreflect.Message { // Deprecated: Use ResSetFacebookUrl.ProtoReflect.Descriptor instead. func (*ResSetFacebookUrl) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{552} + return file_Gameapi_proto_rawDescGZIP(), []int{554} } func (x *ResSetFacebookUrl) GetCode() RES_CODE { @@ -31866,7 +31973,7 @@ type ReqInviteFriendData struct { func (x *ReqInviteFriendData) Reset() { *x = ReqInviteFriendData{} - mi := &file_Gameapi_proto_msgTypes[553] + mi := &file_Gameapi_proto_msgTypes[555] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31878,7 +31985,7 @@ func (x *ReqInviteFriendData) String() string { func (*ReqInviteFriendData) ProtoMessage() {} func (x *ReqInviteFriendData) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[553] + mi := &file_Gameapi_proto_msgTypes[555] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31891,7 +31998,7 @@ func (x *ReqInviteFriendData) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqInviteFriendData.ProtoReflect.Descriptor instead. func (*ReqInviteFriendData) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{553} + return file_Gameapi_proto_rawDescGZIP(), []int{555} } func (x *ReqInviteFriendData) GetDwUin() int32 { @@ -31912,7 +32019,7 @@ type ResInviteFriendData struct { func (x *ResInviteFriendData) Reset() { *x = ResInviteFriendData{} - mi := &file_Gameapi_proto_msgTypes[554] + mi := &file_Gameapi_proto_msgTypes[556] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31924,7 +32031,7 @@ func (x *ResInviteFriendData) String() string { func (*ResInviteFriendData) ProtoMessage() {} func (x *ResInviteFriendData) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[554] + mi := &file_Gameapi_proto_msgTypes[556] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31937,7 +32044,7 @@ func (x *ResInviteFriendData) ProtoReflect() protoreflect.Message { // Deprecated: Use ResInviteFriendData.ProtoReflect.Descriptor instead. func (*ResInviteFriendData) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{554} + return file_Gameapi_proto_rawDescGZIP(), []int{556} } func (x *ResInviteFriendData) GetIdLists() []int32 { @@ -31964,7 +32071,7 @@ type ReqSelfInvited struct { func (x *ReqSelfInvited) Reset() { *x = ReqSelfInvited{} - mi := &file_Gameapi_proto_msgTypes[555] + mi := &file_Gameapi_proto_msgTypes[557] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31976,7 +32083,7 @@ func (x *ReqSelfInvited) String() string { func (*ReqSelfInvited) ProtoMessage() {} func (x *ReqSelfInvited) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[555] + mi := &file_Gameapi_proto_msgTypes[557] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31989,7 +32096,7 @@ func (x *ReqSelfInvited) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqSelfInvited.ProtoReflect.Descriptor instead. func (*ReqSelfInvited) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{555} + return file_Gameapi_proto_rawDescGZIP(), []int{557} } func (x *ReqSelfInvited) GetInviterId() int32 { @@ -32009,7 +32116,7 @@ type ResSelfInvited struct { func (x *ResSelfInvited) Reset() { *x = ResSelfInvited{} - mi := &file_Gameapi_proto_msgTypes[556] + mi := &file_Gameapi_proto_msgTypes[558] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -32021,7 +32128,7 @@ func (x *ResSelfInvited) String() string { func (*ResSelfInvited) ProtoMessage() {} func (x *ResSelfInvited) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[556] + mi := &file_Gameapi_proto_msgTypes[558] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -32034,7 +32141,7 @@ func (x *ResSelfInvited) ProtoReflect() protoreflect.Message { // Deprecated: Use ResSelfInvited.ProtoReflect.Descriptor instead. func (*ResSelfInvited) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{556} + return file_Gameapi_proto_rawDescGZIP(), []int{558} } func (x *ResSelfInvited) GetResultCode() int32 { @@ -32055,7 +32162,7 @@ type NotifyInvitedSuccess struct { func (x *NotifyInvitedSuccess) Reset() { *x = NotifyInvitedSuccess{} - mi := &file_Gameapi_proto_msgTypes[557] + mi := &file_Gameapi_proto_msgTypes[559] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -32067,7 +32174,7 @@ func (x *NotifyInvitedSuccess) String() string { func (*NotifyInvitedSuccess) ProtoMessage() {} func (x *NotifyInvitedSuccess) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[557] + mi := &file_Gameapi_proto_msgTypes[559] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -32080,7 +32187,7 @@ func (x *NotifyInvitedSuccess) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyInvitedSuccess.ProtoReflect.Descriptor instead. func (*NotifyInvitedSuccess) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{557} + return file_Gameapi_proto_rawDescGZIP(), []int{559} } func (x *NotifyInvitedSuccess) GetResultCode() int32 { @@ -32107,7 +32214,7 @@ type ReqGetInviteReward struct { func (x *ReqGetInviteReward) Reset() { *x = ReqGetInviteReward{} - mi := &file_Gameapi_proto_msgTypes[558] + mi := &file_Gameapi_proto_msgTypes[560] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -32119,7 +32226,7 @@ func (x *ReqGetInviteReward) String() string { func (*ReqGetInviteReward) ProtoMessage() {} func (x *ReqGetInviteReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[558] + mi := &file_Gameapi_proto_msgTypes[560] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -32132,7 +32239,7 @@ func (x *ReqGetInviteReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqGetInviteReward.ProtoReflect.Descriptor instead. func (*ReqGetInviteReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{558} + return file_Gameapi_proto_rawDescGZIP(), []int{560} } func (x *ReqGetInviteReward) GetGetIndex() int32 { @@ -32152,7 +32259,7 @@ type ResGetInviteReward struct { func (x *ResGetInviteReward) Reset() { *x = ResGetInviteReward{} - mi := &file_Gameapi_proto_msgTypes[559] + mi := &file_Gameapi_proto_msgTypes[561] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -32164,7 +32271,7 @@ func (x *ResGetInviteReward) String() string { func (*ResGetInviteReward) ProtoMessage() {} func (x *ResGetInviteReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[559] + mi := &file_Gameapi_proto_msgTypes[561] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -32177,7 +32284,7 @@ func (x *ResGetInviteReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResGetInviteReward.ProtoReflect.Descriptor instead. func (*ResGetInviteReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{559} + return file_Gameapi_proto_rawDescGZIP(), []int{561} } func (x *ResGetInviteReward) GetResultCode() int32 { @@ -32197,7 +32304,7 @@ type ReqAutoAddInviteFriend struct { func (x *ReqAutoAddInviteFriend) Reset() { *x = ReqAutoAddInviteFriend{} - mi := &file_Gameapi_proto_msgTypes[560] + mi := &file_Gameapi_proto_msgTypes[562] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -32209,7 +32316,7 @@ func (x *ReqAutoAddInviteFriend) String() string { func (*ReqAutoAddInviteFriend) ProtoMessage() {} func (x *ReqAutoAddInviteFriend) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[560] + mi := &file_Gameapi_proto_msgTypes[562] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -32222,7 +32329,7 @@ func (x *ReqAutoAddInviteFriend) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqAutoAddInviteFriend.ProtoReflect.Descriptor instead. func (*ReqAutoAddInviteFriend) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{560} + return file_Gameapi_proto_rawDescGZIP(), []int{562} } func (x *ReqAutoAddInviteFriend) GetId() int32 { @@ -32242,7 +32349,7 @@ type ResAutoAddInviteFriend struct { func (x *ResAutoAddInviteFriend) Reset() { *x = ResAutoAddInviteFriend{} - mi := &file_Gameapi_proto_msgTypes[561] + mi := &file_Gameapi_proto_msgTypes[563] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -32254,7 +32361,7 @@ func (x *ResAutoAddInviteFriend) String() string { func (*ResAutoAddInviteFriend) ProtoMessage() {} func (x *ResAutoAddInviteFriend) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[561] + mi := &file_Gameapi_proto_msgTypes[563] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -32267,7 +32374,7 @@ func (x *ResAutoAddInviteFriend) ProtoReflect() protoreflect.Message { // Deprecated: Use ResAutoAddInviteFriend.ProtoReflect.Descriptor instead. func (*ResAutoAddInviteFriend) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{561} + return file_Gameapi_proto_rawDescGZIP(), []int{563} } func (x *ResAutoAddInviteFriend) GetResultCode() int32 { @@ -32286,7 +32393,7 @@ type ReqMining struct { func (x *ReqMining) Reset() { *x = ReqMining{} - mi := &file_Gameapi_proto_msgTypes[562] + mi := &file_Gameapi_proto_msgTypes[564] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -32298,7 +32405,7 @@ func (x *ReqMining) String() string { func (*ReqMining) ProtoMessage() {} func (x *ReqMining) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[562] + mi := &file_Gameapi_proto_msgTypes[564] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -32311,7 +32418,7 @@ func (x *ReqMining) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqMining.ProtoReflect.Descriptor instead. func (*ReqMining) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{562} + return file_Gameapi_proto_rawDescGZIP(), []int{564} } type ResMining struct { @@ -32331,7 +32438,7 @@ type ResMining struct { func (x *ResMining) Reset() { *x = ResMining{} - mi := &file_Gameapi_proto_msgTypes[563] + mi := &file_Gameapi_proto_msgTypes[565] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -32343,7 +32450,7 @@ func (x *ResMining) String() string { func (*ResMining) ProtoMessage() {} func (x *ResMining) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[563] + mi := &file_Gameapi_proto_msgTypes[565] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -32356,7 +32463,7 @@ func (x *ResMining) ProtoReflect() protoreflect.Message { // Deprecated: Use ResMining.ProtoReflect.Descriptor instead. func (*ResMining) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{563} + return file_Gameapi_proto_rawDescGZIP(), []int{565} } func (x *ResMining) GetId() int32 { @@ -32426,7 +32533,7 @@ type ReqMiningTake struct { func (x *ReqMiningTake) Reset() { *x = ReqMiningTake{} - mi := &file_Gameapi_proto_msgTypes[564] + mi := &file_Gameapi_proto_msgTypes[566] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -32438,7 +32545,7 @@ func (x *ReqMiningTake) String() string { func (*ReqMiningTake) ProtoMessage() {} func (x *ReqMiningTake) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[564] + mi := &file_Gameapi_proto_msgTypes[566] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -32451,7 +32558,7 @@ func (x *ReqMiningTake) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqMiningTake.ProtoReflect.Descriptor instead. func (*ReqMiningTake) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{564} + return file_Gameapi_proto_rawDescGZIP(), []int{566} } func (x *ReqMiningTake) GetMap() map[int32]string { @@ -32479,7 +32586,7 @@ type ResMiningTake struct { func (x *ResMiningTake) Reset() { *x = ResMiningTake{} - mi := &file_Gameapi_proto_msgTypes[565] + mi := &file_Gameapi_proto_msgTypes[567] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -32491,7 +32598,7 @@ func (x *ResMiningTake) String() string { func (*ResMiningTake) ProtoMessage() {} func (x *ResMiningTake) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[565] + mi := &file_Gameapi_proto_msgTypes[567] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -32504,7 +32611,7 @@ func (x *ResMiningTake) ProtoReflect() protoreflect.Message { // Deprecated: Use ResMiningTake.ProtoReflect.Descriptor instead. func (*ResMiningTake) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{565} + return file_Gameapi_proto_rawDescGZIP(), []int{567} } func (x *ResMiningTake) GetCode() RES_CODE { @@ -32529,7 +32636,7 @@ type ReqMiningReward struct { func (x *ReqMiningReward) Reset() { *x = ReqMiningReward{} - mi := &file_Gameapi_proto_msgTypes[566] + mi := &file_Gameapi_proto_msgTypes[568] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -32541,7 +32648,7 @@ func (x *ReqMiningReward) String() string { func (*ReqMiningReward) ProtoMessage() {} func (x *ReqMiningReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[566] + mi := &file_Gameapi_proto_msgTypes[568] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -32554,7 +32661,7 @@ func (x *ReqMiningReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqMiningReward.ProtoReflect.Descriptor instead. func (*ReqMiningReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{566} + return file_Gameapi_proto_rawDescGZIP(), []int{568} } type ResMiningReward struct { @@ -32568,7 +32675,7 @@ type ResMiningReward struct { func (x *ResMiningReward) Reset() { *x = ResMiningReward{} - mi := &file_Gameapi_proto_msgTypes[567] + mi := &file_Gameapi_proto_msgTypes[569] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -32580,7 +32687,7 @@ func (x *ResMiningReward) String() string { func (*ResMiningReward) ProtoMessage() {} func (x *ResMiningReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[567] + mi := &file_Gameapi_proto_msgTypes[569] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -32593,7 +32700,7 @@ func (x *ResMiningReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResMiningReward.ProtoReflect.Descriptor instead. func (*ResMiningReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{567} + return file_Gameapi_proto_rawDescGZIP(), []int{569} } func (x *ResMiningReward) GetCode() RES_CODE { @@ -32620,7 +32727,7 @@ type ResActRed struct { func (x *ResActRed) Reset() { *x = ResActRed{} - mi := &file_Gameapi_proto_msgTypes[568] + mi := &file_Gameapi_proto_msgTypes[570] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -32632,7 +32739,7 @@ func (x *ResActRed) String() string { func (*ResActRed) ProtoMessage() {} func (x *ResActRed) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[568] + mi := &file_Gameapi_proto_msgTypes[570] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -32645,7 +32752,7 @@ func (x *ResActRed) ProtoReflect() protoreflect.Message { // Deprecated: Use ResActRed.ProtoReflect.Descriptor instead. func (*ResActRed) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{568} + return file_Gameapi_proto_rawDescGZIP(), []int{570} } func (x *ResActRed) GetRed() map[int32]int32 { @@ -32667,7 +32774,7 @@ type NotifyActRed struct { func (x *NotifyActRed) Reset() { *x = NotifyActRed{} - mi := &file_Gameapi_proto_msgTypes[569] + mi := &file_Gameapi_proto_msgTypes[571] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -32679,7 +32786,7 @@ func (x *NotifyActRed) String() string { func (*NotifyActRed) ProtoMessage() {} func (x *NotifyActRed) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[569] + mi := &file_Gameapi_proto_msgTypes[571] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -32692,7 +32799,7 @@ func (x *NotifyActRed) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyActRed.ProtoReflect.Descriptor instead. func (*NotifyActRed) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{569} + return file_Gameapi_proto_rawDescGZIP(), []int{571} } func (x *NotifyActRed) GetId() int32 { @@ -32720,7 +32827,7 @@ type ActivityNotify struct { func (x *ActivityNotify) Reset() { *x = ActivityNotify{} - mi := &file_Gameapi_proto_msgTypes[570] + mi := &file_Gameapi_proto_msgTypes[572] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -32732,7 +32839,7 @@ func (x *ActivityNotify) String() string { func (*ActivityNotify) ProtoMessage() {} func (x *ActivityNotify) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[570] + mi := &file_Gameapi_proto_msgTypes[572] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -32745,7 +32852,7 @@ func (x *ActivityNotify) ProtoReflect() protoreflect.Message { // Deprecated: Use ActivityNotify.ProtoReflect.Descriptor instead. func (*ActivityNotify) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{570} + return file_Gameapi_proto_rawDescGZIP(), []int{572} } func (x *ActivityNotify) GetInfo() *ActivityInfo { @@ -32765,7 +32872,7 @@ type ResItem struct { func (x *ResItem) Reset() { *x = ResItem{} - mi := &file_Gameapi_proto_msgTypes[571] + mi := &file_Gameapi_proto_msgTypes[573] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -32777,7 +32884,7 @@ func (x *ResItem) String() string { func (*ResItem) ProtoMessage() {} func (x *ResItem) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[571] + mi := &file_Gameapi_proto_msgTypes[573] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -32790,7 +32897,7 @@ func (x *ResItem) ProtoReflect() protoreflect.Message { // Deprecated: Use ResItem.ProtoReflect.Descriptor instead. func (*ResItem) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{571} + return file_Gameapi_proto_rawDescGZIP(), []int{573} } func (x *ResItem) GetItem() map[int32]int32 { @@ -32810,7 +32917,7 @@ type ItemNotify struct { func (x *ItemNotify) Reset() { *x = ItemNotify{} - mi := &file_Gameapi_proto_msgTypes[572] + mi := &file_Gameapi_proto_msgTypes[574] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -32822,7 +32929,7 @@ func (x *ItemNotify) String() string { func (*ItemNotify) ProtoMessage() {} func (x *ItemNotify) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[572] + mi := &file_Gameapi_proto_msgTypes[574] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -32835,7 +32942,7 @@ func (x *ItemNotify) ProtoReflect() protoreflect.Message { // Deprecated: Use ItemNotify.ProtoReflect.Descriptor instead. func (*ItemNotify) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{572} + return file_Gameapi_proto_rawDescGZIP(), []int{574} } func (x *ItemNotify) GetItem() map[int32]int32 { @@ -32854,7 +32961,7 @@ type ReqGuessColor struct { func (x *ReqGuessColor) Reset() { *x = ReqGuessColor{} - mi := &file_Gameapi_proto_msgTypes[573] + mi := &file_Gameapi_proto_msgTypes[575] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -32866,7 +32973,7 @@ func (x *ReqGuessColor) String() string { func (*ReqGuessColor) ProtoMessage() {} func (x *ReqGuessColor) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[573] + mi := &file_Gameapi_proto_msgTypes[575] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -32879,7 +32986,7 @@ func (x *ReqGuessColor) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqGuessColor.ProtoReflect.Descriptor instead. func (*ReqGuessColor) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{573} + return file_Gameapi_proto_rawDescGZIP(), []int{575} } type ResGuessColor struct { @@ -32899,7 +33006,7 @@ type ResGuessColor struct { func (x *ResGuessColor) Reset() { *x = ResGuessColor{} - mi := &file_Gameapi_proto_msgTypes[574] + mi := &file_Gameapi_proto_msgTypes[576] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -32911,7 +33018,7 @@ func (x *ResGuessColor) String() string { func (*ResGuessColor) ProtoMessage() {} func (x *ResGuessColor) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[574] + mi := &file_Gameapi_proto_msgTypes[576] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -32924,7 +33031,7 @@ func (x *ResGuessColor) ProtoReflect() protoreflect.Message { // Deprecated: Use ResGuessColor.ProtoReflect.Descriptor instead. func (*ResGuessColor) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{574} + return file_Gameapi_proto_rawDescGZIP(), []int{576} } func (x *ResGuessColor) GetId() int32 { @@ -32996,7 +33103,7 @@ type Opponent struct { func (x *Opponent) Reset() { *x = Opponent{} - mi := &file_Gameapi_proto_msgTypes[575] + mi := &file_Gameapi_proto_msgTypes[577] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33008,7 +33115,7 @@ func (x *Opponent) String() string { func (*Opponent) ProtoMessage() {} func (x *Opponent) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[575] + mi := &file_Gameapi_proto_msgTypes[577] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -33021,7 +33128,7 @@ func (x *Opponent) ProtoReflect() protoreflect.Message { // Deprecated: Use Opponent.ProtoReflect.Descriptor instead. func (*Opponent) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{575} + return file_Gameapi_proto_rawDescGZIP(), []int{577} } func (x *Opponent) GetName() string { @@ -33062,7 +33169,7 @@ type ReqGuessColorTake struct { func (x *ReqGuessColorTake) Reset() { *x = ReqGuessColorTake{} - mi := &file_Gameapi_proto_msgTypes[576] + mi := &file_Gameapi_proto_msgTypes[578] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33074,7 +33181,7 @@ func (x *ReqGuessColorTake) String() string { func (*ReqGuessColorTake) ProtoMessage() {} func (x *ReqGuessColorTake) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[576] + mi := &file_Gameapi_proto_msgTypes[578] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -33087,7 +33194,7 @@ func (x *ReqGuessColorTake) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqGuessColorTake.ProtoReflect.Descriptor instead. func (*ReqGuessColorTake) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{576} + return file_Gameapi_proto_rawDescGZIP(), []int{578} } func (x *ReqGuessColorTake) GetMap() map[int32]int32 { @@ -33108,7 +33215,7 @@ type ResGuessColorTake struct { func (x *ResGuessColorTake) Reset() { *x = ResGuessColorTake{} - mi := &file_Gameapi_proto_msgTypes[577] + mi := &file_Gameapi_proto_msgTypes[579] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33120,7 +33227,7 @@ func (x *ResGuessColorTake) String() string { func (*ResGuessColorTake) ProtoMessage() {} func (x *ResGuessColorTake) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[577] + mi := &file_Gameapi_proto_msgTypes[579] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -33133,7 +33240,7 @@ func (x *ResGuessColorTake) ProtoReflect() protoreflect.Message { // Deprecated: Use ResGuessColorTake.ProtoReflect.Descriptor instead. func (*ResGuessColorTake) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{577} + return file_Gameapi_proto_rawDescGZIP(), []int{579} } func (x *ResGuessColorTake) GetCode() RES_CODE { @@ -33158,7 +33265,7 @@ type ReqGuessColorReward struct { func (x *ReqGuessColorReward) Reset() { *x = ReqGuessColorReward{} - mi := &file_Gameapi_proto_msgTypes[578] + mi := &file_Gameapi_proto_msgTypes[580] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33170,7 +33277,7 @@ func (x *ReqGuessColorReward) String() string { func (*ReqGuessColorReward) ProtoMessage() {} func (x *ReqGuessColorReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[578] + mi := &file_Gameapi_proto_msgTypes[580] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -33183,7 +33290,7 @@ func (x *ReqGuessColorReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqGuessColorReward.ProtoReflect.Descriptor instead. func (*ReqGuessColorReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{578} + return file_Gameapi_proto_rawDescGZIP(), []int{580} } type ResGuessColorReward struct { @@ -33197,7 +33304,7 @@ type ResGuessColorReward struct { func (x *ResGuessColorReward) Reset() { *x = ResGuessColorReward{} - mi := &file_Gameapi_proto_msgTypes[579] + mi := &file_Gameapi_proto_msgTypes[581] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33209,7 +33316,7 @@ func (x *ResGuessColorReward) String() string { func (*ResGuessColorReward) ProtoMessage() {} func (x *ResGuessColorReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[579] + mi := &file_Gameapi_proto_msgTypes[581] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -33222,7 +33329,7 @@ func (x *ResGuessColorReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResGuessColorReward.ProtoReflect.Descriptor instead. func (*ResGuessColorReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{579} + return file_Gameapi_proto_rawDescGZIP(), []int{581} } func (x *ResGuessColorReward) GetCode() RES_CODE { @@ -33247,7 +33354,7 @@ type ReqRace struct { func (x *ReqRace) Reset() { *x = ReqRace{} - mi := &file_Gameapi_proto_msgTypes[580] + mi := &file_Gameapi_proto_msgTypes[582] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33259,7 +33366,7 @@ func (x *ReqRace) String() string { func (*ReqRace) ProtoMessage() {} func (x *ReqRace) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[580] + mi := &file_Gameapi_proto_msgTypes[582] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -33272,7 +33379,7 @@ func (x *ReqRace) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqRace.ProtoReflect.Descriptor instead. func (*ReqRace) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{580} + return file_Gameapi_proto_rawDescGZIP(), []int{582} } type ResRace struct { @@ -33293,7 +33400,7 @@ type ResRace struct { func (x *ResRace) Reset() { *x = ResRace{} - mi := &file_Gameapi_proto_msgTypes[581] + mi := &file_Gameapi_proto_msgTypes[583] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33305,7 +33412,7 @@ func (x *ResRace) String() string { func (*ResRace) ProtoMessage() {} func (x *ResRace) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[581] + mi := &file_Gameapi_proto_msgTypes[583] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -33318,7 +33425,7 @@ func (x *ResRace) ProtoReflect() protoreflect.Message { // Deprecated: Use ResRace.ProtoReflect.Descriptor instead. func (*ResRace) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{581} + return file_Gameapi_proto_rawDescGZIP(), []int{583} } func (x *ResRace) GetId() int32 { @@ -33396,7 +33503,7 @@ type Raceopponent struct { func (x *Raceopponent) Reset() { *x = Raceopponent{} - mi := &file_Gameapi_proto_msgTypes[582] + mi := &file_Gameapi_proto_msgTypes[584] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33408,7 +33515,7 @@ func (x *Raceopponent) String() string { func (*Raceopponent) ProtoMessage() {} func (x *Raceopponent) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[582] + mi := &file_Gameapi_proto_msgTypes[584] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -33421,7 +33528,7 @@ func (x *Raceopponent) ProtoReflect() protoreflect.Message { // Deprecated: Use Raceopponent.ProtoReflect.Descriptor instead. func (*Raceopponent) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{582} + return file_Gameapi_proto_rawDescGZIP(), []int{584} } func (x *Raceopponent) GetId() int32 { @@ -33453,7 +33560,7 @@ type ReqRaceStart struct { func (x *ReqRaceStart) Reset() { *x = ReqRaceStart{} - mi := &file_Gameapi_proto_msgTypes[583] + mi := &file_Gameapi_proto_msgTypes[585] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33465,7 +33572,7 @@ func (x *ReqRaceStart) String() string { func (*ReqRaceStart) ProtoMessage() {} func (x *ReqRaceStart) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[583] + mi := &file_Gameapi_proto_msgTypes[585] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -33478,7 +33585,7 @@ func (x *ReqRaceStart) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqRaceStart.ProtoReflect.Descriptor instead. func (*ReqRaceStart) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{583} + return file_Gameapi_proto_rawDescGZIP(), []int{585} } type ResRaceStart struct { @@ -33492,7 +33599,7 @@ type ResRaceStart struct { func (x *ResRaceStart) Reset() { *x = ResRaceStart{} - mi := &file_Gameapi_proto_msgTypes[584] + mi := &file_Gameapi_proto_msgTypes[586] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33504,7 +33611,7 @@ func (x *ResRaceStart) String() string { func (*ResRaceStart) ProtoMessage() {} func (x *ResRaceStart) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[584] + mi := &file_Gameapi_proto_msgTypes[586] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -33517,7 +33624,7 @@ func (x *ResRaceStart) ProtoReflect() protoreflect.Message { // Deprecated: Use ResRaceStart.ProtoReflect.Descriptor instead. func (*ResRaceStart) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{584} + return file_Gameapi_proto_rawDescGZIP(), []int{586} } func (x *ResRaceStart) GetCode() RES_CODE { @@ -33542,7 +33649,7 @@ type ReqRaceReward struct { func (x *ReqRaceReward) Reset() { *x = ReqRaceReward{} - mi := &file_Gameapi_proto_msgTypes[585] + mi := &file_Gameapi_proto_msgTypes[587] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33554,7 +33661,7 @@ func (x *ReqRaceReward) String() string { func (*ReqRaceReward) ProtoMessage() {} func (x *ReqRaceReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[585] + mi := &file_Gameapi_proto_msgTypes[587] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -33567,7 +33674,7 @@ func (x *ReqRaceReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqRaceReward.ProtoReflect.Descriptor instead. func (*ReqRaceReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{585} + return file_Gameapi_proto_rawDescGZIP(), []int{587} } type ResRaceReward struct { @@ -33581,7 +33688,7 @@ type ResRaceReward struct { func (x *ResRaceReward) Reset() { *x = ResRaceReward{} - mi := &file_Gameapi_proto_msgTypes[586] + mi := &file_Gameapi_proto_msgTypes[588] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -33593,7 +33700,7 @@ func (x *ResRaceReward) String() string { func (*ResRaceReward) ProtoMessage() {} func (x *ResRaceReward) ProtoReflect() protoreflect.Message { - mi := &file_Gameapi_proto_msgTypes[586] + mi := &file_Gameapi_proto_msgTypes[588] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -33606,7 +33713,7 @@ func (x *ResRaceReward) ProtoReflect() protoreflect.Message { // Deprecated: Use ResRaceReward.ProtoReflect.Descriptor instead. func (*ResRaceReward) Descriptor() ([]byte, []int) { - return file_Gameapi_proto_rawDescGZIP(), []int{586} + return file_Gameapi_proto_rawDescGZIP(), []int{588} } func (x *ResRaceReward) GetCode() RES_CODE { @@ -33623,6 +33730,1446 @@ func (x *ResRaceReward) GetMsg() string { return "" } +type ReqPlayroom struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ReqPlayroom) Reset() { + *x = ReqPlayroom{} + mi := &file_Gameapi_proto_msgTypes[589] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqPlayroom) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqPlayroom) ProtoMessage() {} + +func (x *ReqPlayroom) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[589] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReqPlayroom.ProtoReflect.Descriptor instead. +func (*ReqPlayroom) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{589} +} + +type ResPlayroom struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"` // 状态 + Items []*ItemInfo `protobuf:"bytes,2,rep,name=Items,proto3" json:"Items,omitempty"` // 触发式订单奖励 + Opponent []*RoomOpponent `protobuf:"bytes,3,rep,name=Opponent,proto3" json:"Opponent,omitempty"` // 对手 + Friend []*FriendRoom `protobuf:"bytes,4,rep,name=Friend,proto3" json:"Friend,omitempty"` // 好友 + Playroom map[int32]int32 `protobuf:"bytes,5,rep,name=Playroom,proto3" json:"Playroom,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 空间装饰 位置 =》 装饰id + Collect []int32 `protobuf:"varint,6,rep,packed,name=collect,proto3" json:"collect,omitempty"` // 已解锁的装饰 + Mood map[int32]int32 `protobuf:"bytes,7,rep,name=Mood,proto3" json:"Mood,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 心情 <位置, 心情> + LoseItem []*ItemInfo `protobuf:"bytes,8,rep,name=LoseItem,proto3" json:"LoseItem,omitempty"` // 损失的道具 + StartTime int32 `protobuf:"varint,9,opt,name=StartTime,proto3" json:"StartTime,omitempty"` // 开始时间 + WorkStatus int32 `protobuf:"varint,10,opt,name=WorkStatus,proto3" json:"WorkStatus,omitempty"` // 1 工作中 2 休息中 + AllMood int32 `protobuf:"varint,11,opt,name=AllMood,proto3" json:"AllMood,omitempty"` // 总心情 + Chip int32 `protobuf:"varint,12,opt,name=Chip,proto3" json:"Chip,omitempty"` // 碎片 +} + +func (x *ResPlayroom) Reset() { + *x = ResPlayroom{} + mi := &file_Gameapi_proto_msgTypes[590] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResPlayroom) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResPlayroom) ProtoMessage() {} + +func (x *ResPlayroom) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[590] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResPlayroom.ProtoReflect.Descriptor instead. +func (*ResPlayroom) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{590} +} + +func (x *ResPlayroom) GetStatus() int32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *ResPlayroom) GetItems() []*ItemInfo { + if x != nil { + return x.Items + } + return nil +} + +func (x *ResPlayroom) GetOpponent() []*RoomOpponent { + if x != nil { + return x.Opponent + } + return nil +} + +func (x *ResPlayroom) GetFriend() []*FriendRoom { + if x != nil { + return x.Friend + } + return nil +} + +func (x *ResPlayroom) GetPlayroom() map[int32]int32 { + if x != nil { + return x.Playroom + } + return nil +} + +func (x *ResPlayroom) GetCollect() []int32 { + if x != nil { + return x.Collect + } + return nil +} + +func (x *ResPlayroom) GetMood() map[int32]int32 { + if x != nil { + return x.Mood + } + return nil +} + +func (x *ResPlayroom) GetLoseItem() []*ItemInfo { + if x != nil { + return x.LoseItem + } + return nil +} + +func (x *ResPlayroom) GetStartTime() int32 { + if x != nil { + return x.StartTime + } + return 0 +} + +func (x *ResPlayroom) GetWorkStatus() int32 { + if x != nil { + return x.WorkStatus + } + return 0 +} + +func (x *ResPlayroom) GetAllMood() int32 { + if x != nil { + return x.AllMood + } + return 0 +} + +func (x *ResPlayroom) GetChip() int32 { + if x != nil { + return x.Chip + } + return 0 +} + +type NotifyPlayroomWork struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + StartTime int32 `protobuf:"varint,1,opt,name=StartTime,proto3" json:"StartTime,omitempty"` // 开始时间 + WorkStatus int32 `protobuf:"varint,2,opt,name=WorkStatus,proto3" json:"WorkStatus,omitempty"` // 1 工作中 2 休息中 +} + +func (x *NotifyPlayroomWork) Reset() { + *x = NotifyPlayroomWork{} + mi := &file_Gameapi_proto_msgTypes[591] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NotifyPlayroomWork) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NotifyPlayroomWork) ProtoMessage() {} + +func (x *NotifyPlayroomWork) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[591] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NotifyPlayroomWork.ProtoReflect.Descriptor instead. +func (*NotifyPlayroomWork) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{591} +} + +func (x *NotifyPlayroomWork) GetStartTime() int32 { + if x != nil { + return x.StartTime + } + return 0 +} + +func (x *NotifyPlayroomWork) GetWorkStatus() int32 { + if x != nil { + return x.WorkStatus + } + return 0 +} + +type NotifyPlayroomLose struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + LoseItem []*ItemInfo `protobuf:"bytes,1,rep,name=LoseItem,proto3" json:"LoseItem,omitempty"` // 损失的道具 +} + +func (x *NotifyPlayroomLose) Reset() { + *x = NotifyPlayroomLose{} + mi := &file_Gameapi_proto_msgTypes[592] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NotifyPlayroomLose) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NotifyPlayroomLose) ProtoMessage() {} + +func (x *NotifyPlayroomLose) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[592] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NotifyPlayroomLose.ProtoReflect.Descriptor instead. +func (*NotifyPlayroomLose) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{592} +} + +func (x *NotifyPlayroomLose) GetLoseItem() []*ItemInfo { + if x != nil { + return x.LoseItem + } + return nil +} + +type FriendRoom struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Uid int32 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` + Name string `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"` + Face int32 `protobuf:"varint,3,opt,name=Face,proto3" json:"Face,omitempty"` + Avatar int32 `protobuf:"varint,4,opt,name=Avatar,proto3" json:"Avatar,omitempty"` + Times int32 `protobuf:"varint,5,opt,name=Times,proto3" json:"Times,omitempty"` // 以你为目标的次数 +} + +func (x *FriendRoom) Reset() { + *x = FriendRoom{} + mi := &file_Gameapi_proto_msgTypes[593] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FriendRoom) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FriendRoom) ProtoMessage() {} + +func (x *FriendRoom) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[593] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FriendRoom.ProtoReflect.Descriptor instead. +func (*FriendRoom) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{593} +} + +func (x *FriendRoom) GetUid() int32 { + if x != nil { + return x.Uid + } + return 0 +} + +func (x *FriendRoom) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *FriendRoom) GetFace() int32 { + if x != nil { + return x.Face + } + return 0 +} + +func (x *FriendRoom) GetAvatar() int32 { + if x != nil { + return x.Avatar + } + return 0 +} + +func (x *FriendRoom) GetTimes() int32 { + if x != nil { + return x.Times + } + return 0 +} + +type RoomOpponent struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Uid int32 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` + Name string `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"` + Face int32 `protobuf:"varint,3,opt,name=Face,proto3" json:"Face,omitempty"` + Avatar int32 `protobuf:"varint,4,opt,name=Avatar,proto3" json:"Avatar,omitempty"` + LastTime int32 `protobuf:"varint,5,opt,name=LastTime,proto3" json:"LastTime,omitempty"` // 上次被攻击时间 +} + +func (x *RoomOpponent) Reset() { + *x = RoomOpponent{} + mi := &file_Gameapi_proto_msgTypes[594] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RoomOpponent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RoomOpponent) ProtoMessage() {} + +func (x *RoomOpponent) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[594] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RoomOpponent.ProtoReflect.Descriptor instead. +func (*RoomOpponent) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{594} +} + +func (x *RoomOpponent) GetUid() int32 { + if x != nil { + return x.Uid + } + return 0 +} + +func (x *RoomOpponent) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *RoomOpponent) GetFace() int32 { + if x != nil { + return x.Face + } + return 0 +} + +func (x *RoomOpponent) GetAvatar() int32 { + if x != nil { + return x.Avatar + } + return 0 +} + +func (x *RoomOpponent) GetLastTime() int32 { + if x != nil { + return x.LastTime + } + return 0 +} + +// 请求拜访空间信息 +type ReqPlayroomInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Uid int32 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` +} + +func (x *ReqPlayroomInfo) Reset() { + *x = ReqPlayroomInfo{} + mi := &file_Gameapi_proto_msgTypes[595] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqPlayroomInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqPlayroomInfo) ProtoMessage() {} + +func (x *ReqPlayroomInfo) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[595] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReqPlayroomInfo.ProtoReflect.Descriptor instead. +func (*ReqPlayroomInfo) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{595} +} + +func (x *ReqPlayroomInfo) GetUid() int32 { + if x != nil { + return x.Uid + } + return 0 +} + +type ResPlayroomInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Uid int32 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Face int32 `protobuf:"varint,3,opt,name=Face,proto3" json:"Face,omitempty"` + Avatar int32 `protobuf:"varint,4,opt,name=Avatar,proto3" json:"Avatar,omitempty"` + Playroom map[int32]int32 `protobuf:"bytes,5,rep,name=Playroom,proto3" json:"Playroom,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 空间装饰 位置 =》 装饰id + GameId int32 `protobuf:"varint,6,opt,name=GameId,proto3" json:"GameId,omitempty"` // 游戏id + Items map[int32]*ItemInfo `protobuf:"bytes,7,rep,name=Items,proto3" json:"Items,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // 游戏奖励 + Status int32 `protobuf:"varint,8,opt,name=Status,proto3" json:"Status,omitempty"` // 状态 0 未开始 1 选择奖励 2 已结束 +} + +func (x *ResPlayroomInfo) Reset() { + *x = ResPlayroomInfo{} + mi := &file_Gameapi_proto_msgTypes[596] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResPlayroomInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResPlayroomInfo) ProtoMessage() {} + +func (x *ResPlayroomInfo) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[596] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResPlayroomInfo.ProtoReflect.Descriptor instead. +func (*ResPlayroomInfo) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{596} +} + +func (x *ResPlayroomInfo) GetUid() int32 { + if x != nil { + return x.Uid + } + return 0 +} + +func (x *ResPlayroomInfo) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ResPlayroomInfo) GetFace() int32 { + if x != nil { + return x.Face + } + return 0 +} + +func (x *ResPlayroomInfo) GetAvatar() int32 { + if x != nil { + return x.Avatar + } + return 0 +} + +func (x *ResPlayroomInfo) GetPlayroom() map[int32]int32 { + if x != nil { + return x.Playroom + } + return nil +} + +func (x *ResPlayroomInfo) GetGameId() int32 { + if x != nil { + return x.GameId + } + return 0 +} + +func (x *ResPlayroomInfo) GetItems() map[int32]*ItemInfo { + if x != nil { + return x.Items + } + return nil +} + +func (x *ResPlayroomInfo) GetStatus() int32 { + if x != nil { + return x.Status + } + return 0 +} + +type ReqPlayroomGame struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type int32 `protobuf:"varint,1,opt,name=Type,proto3" json:"Type,omitempty"` // 1:绿色 2:黄色 3:红色 +} + +func (x *ReqPlayroomGame) Reset() { + *x = ReqPlayroomGame{} + mi := &file_Gameapi_proto_msgTypes[597] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqPlayroomGame) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqPlayroomGame) ProtoMessage() {} + +func (x *ReqPlayroomGame) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[597] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReqPlayroomGame.ProtoReflect.Descriptor instead. +func (*ReqPlayroomGame) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{597} +} + +func (x *ReqPlayroomGame) GetType() int32 { + if x != nil { + return x.Type + } + return 0 +} + +type ResPlayroomGame struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` +} + +func (x *ResPlayroomGame) Reset() { + *x = ResPlayroomGame{} + mi := &file_Gameapi_proto_msgTypes[598] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResPlayroomGame) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResPlayroomGame) ProtoMessage() {} + +func (x *ResPlayroomGame) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[598] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResPlayroomGame.ProtoReflect.Descriptor instead. +func (*ResPlayroomGame) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{598} +} + +func (x *ResPlayroomGame) GetCode() RES_CODE { + if x != nil { + return x.Code + } + return RES_CODE_FAIL +} + +func (x *ResPlayroomGame) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +type ReqPlayroomInteract struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 互动类型 + Type int32 `protobuf:"varint,2,opt,name=Type,proto3" json:"Type,omitempty"` // 1 消耗道具1 2 消耗道具2 +} + +func (x *ReqPlayroomInteract) Reset() { + *x = ReqPlayroomInteract{} + mi := &file_Gameapi_proto_msgTypes[599] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqPlayroomInteract) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqPlayroomInteract) ProtoMessage() {} + +func (x *ReqPlayroomInteract) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[599] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReqPlayroomInteract.ProtoReflect.Descriptor instead. +func (*ReqPlayroomInteract) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{599} +} + +func (x *ReqPlayroomInteract) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *ReqPlayroomInteract) GetType() int32 { + if x != nil { + return x.Type + } + return 0 +} + +type ResPlayroomInteract struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` +} + +func (x *ResPlayroomInteract) Reset() { + *x = ResPlayroomInteract{} + mi := &file_Gameapi_proto_msgTypes[600] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResPlayroomInteract) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResPlayroomInteract) ProtoMessage() {} + +func (x *ResPlayroomInteract) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[600] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResPlayroomInteract.ProtoReflect.Descriptor instead. +func (*ResPlayroomInteract) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{600} +} + +func (x *ResPlayroomInteract) GetCode() RES_CODE { + if x != nil { + return x.Code + } + return RES_CODE_FAIL +} + +func (x *ResPlayroomInteract) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +type ReqPlayroomSetRoom struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 装饰id + Pos int32 `protobuf:"varint,2,opt,name=Pos,proto3" json:"Pos,omitempty"` // 位置 +} + +func (x *ReqPlayroomSetRoom) Reset() { + *x = ReqPlayroomSetRoom{} + mi := &file_Gameapi_proto_msgTypes[601] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqPlayroomSetRoom) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqPlayroomSetRoom) ProtoMessage() {} + +func (x *ReqPlayroomSetRoom) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[601] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReqPlayroomSetRoom.ProtoReflect.Descriptor instead. +func (*ReqPlayroomSetRoom) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{601} +} + +func (x *ReqPlayroomSetRoom) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *ReqPlayroomSetRoom) GetPos() int32 { + if x != nil { + return x.Pos + } + return 0 +} + +type ResPlayroomSetRoom struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` +} + +func (x *ResPlayroomSetRoom) Reset() { + *x = ResPlayroomSetRoom{} + mi := &file_Gameapi_proto_msgTypes[602] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResPlayroomSetRoom) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResPlayroomSetRoom) ProtoMessage() {} + +func (x *ResPlayroomSetRoom) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[602] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResPlayroomSetRoom.ProtoReflect.Descriptor instead. +func (*ResPlayroomSetRoom) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{602} +} + +func (x *ResPlayroomSetRoom) GetCode() RES_CODE { + if x != nil { + return x.Code + } + return RES_CODE_FAIL +} + +func (x *ResPlayroomSetRoom) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +type ReqPlayroomSelectReward struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 奖励id +} + +func (x *ReqPlayroomSelectReward) Reset() { + *x = ReqPlayroomSelectReward{} + mi := &file_Gameapi_proto_msgTypes[603] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqPlayroomSelectReward) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqPlayroomSelectReward) ProtoMessage() {} + +func (x *ReqPlayroomSelectReward) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[603] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReqPlayroomSelectReward.ProtoReflect.Descriptor instead. +func (*ReqPlayroomSelectReward) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{603} +} + +func (x *ReqPlayroomSelectReward) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +type ResPlayroomSelectReward struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` +} + +func (x *ResPlayroomSelectReward) Reset() { + *x = ResPlayroomSelectReward{} + mi := &file_Gameapi_proto_msgTypes[604] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResPlayroomSelectReward) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResPlayroomSelectReward) ProtoMessage() {} + +func (x *ResPlayroomSelectReward) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[604] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResPlayroomSelectReward.ProtoReflect.Descriptor instead. +func (*ResPlayroomSelectReward) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{604} +} + +func (x *ResPlayroomSelectReward) GetCode() RES_CODE { + if x != nil { + return x.Code + } + return RES_CODE_FAIL +} + +func (x *ResPlayroomSelectReward) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +type ReqPlayroomLose struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ReqPlayroomLose) Reset() { + *x = ReqPlayroomLose{} + mi := &file_Gameapi_proto_msgTypes[605] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqPlayroomLose) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqPlayroomLose) ProtoMessage() {} + +func (x *ReqPlayroomLose) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[605] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReqPlayroomLose.ProtoReflect.Descriptor instead. +func (*ReqPlayroomLose) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{605} +} + +type ResPlayroomLose struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` +} + +func (x *ResPlayroomLose) Reset() { + *x = ResPlayroomLose{} + mi := &file_Gameapi_proto_msgTypes[606] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResPlayroomLose) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResPlayroomLose) ProtoMessage() {} + +func (x *ResPlayroomLose) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[606] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResPlayroomLose.ProtoReflect.Descriptor instead. +func (*ResPlayroomLose) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{606} +} + +func (x *ResPlayroomLose) GetCode() RES_CODE { + if x != nil { + return x.Code + } + return RES_CODE_FAIL +} + +func (x *ResPlayroomLose) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +// 打工 +type ReqPlayroomWork struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ReqPlayroomWork) Reset() { + *x = ReqPlayroomWork{} + mi := &file_Gameapi_proto_msgTypes[607] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqPlayroomWork) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqPlayroomWork) ProtoMessage() {} + +func (x *ReqPlayroomWork) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[607] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReqPlayroomWork.ProtoReflect.Descriptor instead. +func (*ReqPlayroomWork) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{607} +} + +type ResPlayroomWork struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` +} + +func (x *ResPlayroomWork) Reset() { + *x = ResPlayroomWork{} + mi := &file_Gameapi_proto_msgTypes[608] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResPlayroomWork) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResPlayroomWork) ProtoMessage() {} + +func (x *ResPlayroomWork) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[608] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResPlayroomWork.ProtoReflect.Descriptor instead. +func (*ResPlayroomWork) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{608} +} + +func (x *ResPlayroomWork) GetCode() RES_CODE { + if x != nil { + return x.Code + } + return RES_CODE_FAIL +} + +func (x *ResPlayroomWork) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +// 休息 +type ReqPlayroomRest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ReqPlayroomRest) Reset() { + *x = ReqPlayroomRest{} + mi := &file_Gameapi_proto_msgTypes[609] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqPlayroomRest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqPlayroomRest) ProtoMessage() {} + +func (x *ReqPlayroomRest) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[609] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReqPlayroomRest.ProtoReflect.Descriptor instead. +func (*ReqPlayroomRest) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{609} +} + +type ResPlayroomRest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` +} + +func (x *ResPlayroomRest) Reset() { + *x = ResPlayroomRest{} + mi := &file_Gameapi_proto_msgTypes[610] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResPlayroomRest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResPlayroomRest) ProtoMessage() {} + +func (x *ResPlayroomRest) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[610] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResPlayroomRest.ProtoReflect.Descriptor instead. +func (*ResPlayroomRest) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{610} +} + +func (x *ResPlayroomRest) GetCode() RES_CODE { + if x != nil { + return x.Code + } + return RES_CODE_FAIL +} + +func (x *ResPlayroomRest) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +type ReqPlayroomDraw struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ReqPlayroomDraw) Reset() { + *x = ReqPlayroomDraw{} + mi := &file_Gameapi_proto_msgTypes[611] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqPlayroomDraw) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqPlayroomDraw) ProtoMessage() {} + +func (x *ReqPlayroomDraw) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[611] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReqPlayroomDraw.ProtoReflect.Descriptor instead. +func (*ReqPlayroomDraw) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{611} +} + +type ResPlayroomDraw struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` + Id int32 `protobuf:"varint,3,opt,name=Id,proto3" json:"Id,omitempty"` // 奖励Id +} + +func (x *ResPlayroomDraw) Reset() { + *x = ResPlayroomDraw{} + mi := &file_Gameapi_proto_msgTypes[612] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResPlayroomDraw) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResPlayroomDraw) ProtoMessage() {} + +func (x *ResPlayroomDraw) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[612] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResPlayroomDraw.ProtoReflect.Descriptor instead. +func (*ResPlayroomDraw) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{612} +} + +func (x *ResPlayroomDraw) GetCode() RES_CODE { + if x != nil { + return x.Code + } + return RES_CODE_FAIL +} + +func (x *ResPlayroomDraw) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +func (x *ResPlayroomDraw) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +type ReqPlayroomChip struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Num int32 `protobuf:"varint,1,opt,name=Num,proto3" json:"Num,omitempty"` // 要消除的层数 +} + +func (x *ReqPlayroomChip) Reset() { + *x = ReqPlayroomChip{} + mi := &file_Gameapi_proto_msgTypes[613] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReqPlayroomChip) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReqPlayroomChip) ProtoMessage() {} + +func (x *ReqPlayroomChip) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[613] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReqPlayroomChip.ProtoReflect.Descriptor instead. +func (*ReqPlayroomChip) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{613} +} + +func (x *ReqPlayroomChip) GetNum() int32 { + if x != nil { + return x.Num + } + return 0 +} + +type ResPlayroomChip struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Code RES_CODE `protobuf:"varint,1,opt,name=Code,proto3,enum=tutorial.RES_CODE" json:"Code,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` +} + +func (x *ResPlayroomChip) Reset() { + *x = ResPlayroomChip{} + mi := &file_Gameapi_proto_msgTypes[614] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResPlayroomChip) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResPlayroomChip) ProtoMessage() {} + +func (x *ResPlayroomChip) ProtoReflect() protoreflect.Message { + mi := &file_Gameapi_proto_msgTypes[614] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResPlayroomChip.ProtoReflect.Descriptor instead. +func (*ResPlayroomChip) Descriptor() ([]byte, []int) { + return file_Gameapi_proto_rawDescGZIP(), []int{614} +} + +func (x *ResPlayroomChip) GetCode() RES_CODE { + if x != nil { + return x.Code + } + return RES_CODE_FAIL +} + +func (x *ResPlayroomChip) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + var File_Gameapi_proto protoreflect.FileDescriptor var file_Gameapi_proto_rawDesc = []byte{ @@ -37302,340 +38849,512 @@ var file_Gameapi_proto_rawDesc = []byte{ 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x15, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x52, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, 0x22, 0x4f, 0x0a, - 0x13, 0x52, 0x65, 0x73, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x43, 0x68, 0x65, 0x73, 0x73, - 0x53, 0x68, 0x6f, 0x70, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, - 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, - 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x0c, - 0x0a, 0x0a, 0x52, 0x65, 0x71, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x22, 0xbf, 0x01, 0x0a, - 0x0a, 0x52, 0x65, 0x73, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x47, 0x0a, 0x0b, 0x45, - 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x25, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x45, - 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x2e, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x4c, 0x69, - 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, - 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x58, 0x0a, 0x10, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x4c, - 0x69, 0x73, 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, 0x2e, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x75, 0x74, 0x6f, - 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6a, - 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x08, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x28, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x65, - 0x71, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x4c, - 0x0a, 0x10, 0x52, 0x65, 0x73, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x52, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0xad, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x42, 0x75, + 0x79, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, 0x32, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x4a, 0x0a, 0x0a, 0x6d, + 0x43, 0x68, 0x65, 0x73, 0x73, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2a, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x71, 0x42, 0x75, + 0x79, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, 0x32, 0x2e, 0x4d, 0x43, 0x68, 0x65, + 0x73, 0x73, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x6d, 0x43, 0x68, + 0x65, 0x73, 0x73, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x3d, 0x0a, 0x0f, 0x4d, 0x43, 0x68, 0x65, 0x73, + 0x73, 0x44, 0x61, 0x74, 0x61, 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, 0x22, 0x4c, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x42, 0x75, 0x79, + 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, 0x32, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, + 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, + 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x4d, 0x73, 0x67, 0x22, 0x15, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x52, 0x65, 0x66, 0x72, 0x65, + 0x73, 0x68, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, 0x22, 0x4f, 0x0a, 0x13, 0x52, + 0x65, 0x73, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, + 0x6f, 0x70, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x6c, 0x0a, 0x0c, - 0x52, 0x65, 0x73, 0x50, 0x69, 0x67, 0x67, 0x79, 0x42, 0x61, 0x6e, 0x6b, 0x12, 0x12, 0x0a, 0x04, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x52, 0x65, - 0x71, 0x50, 0x69, 0x67, 0x67, 0x79, 0x42, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x22, 0x4e, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x50, 0x69, 0x67, 0x67, 0x79, 0x42, 0x61, 0x6e, 0x6b, - 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, - 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, - 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, - 0x22, 0x64, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x53, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x49, 0x64, - 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, - 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x22, 0x2c, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x53, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x53, 0x6e, 0x22, 0x64, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x53, 0x68, 0x69, 0x70, 0x70, - 0x69, 0x6e, 0x67, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x0c, 0x0a, 0x0a, + 0x52, 0x65, 0x71, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x22, 0xbf, 0x01, 0x0a, 0x0a, 0x52, + 0x65, 0x73, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x47, 0x0a, 0x0b, 0x45, 0x6e, 0x64, + 0x6c, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, + 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x45, 0x6e, 0x64, + 0x6c, 0x65, 0x73, 0x73, 0x2e, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x4c, 0x69, + 0x73, 0x74, 0x1a, 0x58, 0x0a, 0x10, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, + 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, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, + 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6a, 0x0a, 0x0e, + 0x52, 0x65, 0x73, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, + 0x0a, 0x08, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, + 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x45, + 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x4c, 0x0a, 0x10, + 0x52, 0x65, 0x73, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, + 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, + 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x6c, 0x0a, 0x0c, 0x52, 0x65, + 0x73, 0x50, 0x69, 0x67, 0x67, 0x79, 0x42, 0x61, 0x6e, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, + 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x50, + 0x69, 0x67, 0x67, 0x79, 0x42, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x4e, + 0x0a, 0x12, 0x52, 0x65, 0x73, 0x50, 0x69, 0x67, 0x67, 0x79, 0x42, 0x61, 0x6e, 0x6b, 0x52, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, + 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, + 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x64, + 0x0a, 0x10, 0x52, 0x65, 0x71, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x53, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x49, 0x64, 0x12, 0x1a, + 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x22, 0x2c, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x53, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x61, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x50, 0x61, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x53, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x4c, 0x0a, 0x10, 0x52, 0x65, - 0x73, 0x53, 0x68, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x26, - 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, - 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, - 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x0e, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x43, - 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x22, 0xba, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x73, - 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, - 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x6e, - 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x1e, 0x0a, - 0x0a, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0a, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x16, 0x0a, - 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x14, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x43, 0x68, 0x61, 0x6d, - 0x70, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x4e, 0x0a, 0x12, 0x52, - 0x65, 0x73, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, - 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x18, 0x0a, 0x16, 0x52, - 0x65, 0x71, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x52, 0x61, 0x6e, 0x6b, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x52, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, 0x6d, - 0x70, 0x73, 0x68, 0x69, 0x70, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, + 0x53, 0x6e, 0x22, 0x64, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x53, 0x68, 0x69, 0x70, 0x70, 0x69, 0x6e, + 0x67, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6e, + 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x61, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x50, 0x61, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x6e, + 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x4c, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x53, + 0x68, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x04, + 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, + 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, + 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x0e, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x43, 0x68, 0x61, + 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x22, 0xba, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x43, 0x68, + 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x1e, 0x0a, 0x0a, 0x52, + 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x22, 0x14, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, + 0x68, 0x69, 0x70, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x4e, 0x0a, 0x12, 0x52, 0x65, 0x73, + 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x71, - 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x52, 0x61, 0x6e, 0x6b, 0x22, 0xe0, 0x01, - 0x0a, 0x10, 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x52, 0x61, - 0x6e, 0x6b, 0x12, 0x44, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x18, 0x0a, 0x16, 0x52, 0x65, 0x71, + 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x22, 0x52, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, + 0x68, 0x69, 0x70, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, + 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, + 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, + 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x43, 0x68, + 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x52, 0x61, 0x6e, 0x6b, 0x22, 0xe0, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x52, 0x61, 0x6e, 0x6b, - 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, - 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x4d, 0x79, 0x52, 0x61, - 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4d, 0x79, 0x52, 0x61, 0x6e, 0x6b, - 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x02, 0x52, 0x07, 0x4d, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x54, 0x0a, 0x0d, 0x52, 0x61, - 0x6e, 0x6b, 0x4c, 0x69, 0x73, 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, 0x2d, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, - 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x15, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, - 0x50, 0x72, 0x65, 0x52, 0x61, 0x6e, 0x6b, 0x22, 0xe6, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x43, - 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x50, 0x72, 0x65, 0x52, 0x61, 0x6e, 0x6b, 0x12, - 0x47, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, - 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x50, 0x72, 0x65, 0x52, 0x61, 0x6e, 0x6b, - 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, - 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x4d, 0x79, 0x52, 0x61, - 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4d, 0x79, 0x52, 0x61, 0x6e, 0x6b, - 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x02, 0x52, 0x07, 0x4d, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x54, 0x0a, 0x0d, 0x52, 0x61, - 0x6e, 0x6b, 0x4c, 0x69, 0x73, 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, 0x2d, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, - 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x8f, 0x02, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x43, 0x61, - 0x72, 0x64, 0x12, 0x35, 0x0a, 0x04, 0x43, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x21, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x4e, - 0x6f, 0x74, 0x69, 0x66, 0x79, 0x43, 0x61, 0x72, 0x64, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x04, 0x43, 0x61, 0x72, 0x64, 0x12, 0x3b, 0x0a, 0x06, 0x4d, 0x61, 0x73, - 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x75, 0x74, 0x6f, - 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x43, 0x61, - 0x72, 0x64, 0x2e, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, - 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x78, 0x53, 0x74, 0x61, 0x72, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x45, 0x78, 0x53, 0x74, 0x61, 0x72, 0x1a, 0x37, - 0x0a, 0x09, 0x43, 0x61, 0x72, 0x64, 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, 0x4d, 0x61, 0x73, 0x74, 0x65, - 0x72, 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, 0x25, 0x0a, 0x11, 0x52, 0x65, 0x71, 0x53, 0x65, 0x74, 0x46, 0x61, 0x63, 0x65, - 0x62, 0x6f, 0x6f, 0x6b, 0x55, 0x72, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x22, 0x4d, 0x0a, 0x11, 0x52, 0x65, 0x73, - 0x53, 0x65, 0x74, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x55, 0x72, 0x6c, 0x12, 0x26, + 0x12, 0x44, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, + 0x73, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x52, 0x61, 0x6e, 0x6b, 0x2e, 0x52, + 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x52, 0x61, + 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x4d, 0x79, 0x52, 0x61, 0x6e, 0x6b, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4d, 0x79, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x18, + 0x0a, 0x07, 0x4d, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, + 0x07, 0x4d, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x54, 0x0a, 0x0d, 0x52, 0x61, 0x6e, 0x6b, + 0x4c, 0x69, 0x73, 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, 0x2d, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x75, 0x74, + 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, + 0x61, 0x6e, 0x6b, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x15, + 0x0a, 0x13, 0x52, 0x65, 0x71, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x50, 0x72, + 0x65, 0x52, 0x61, 0x6e, 0x6b, 0x22, 0xe6, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x43, 0x68, 0x61, + 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x50, 0x72, 0x65, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x47, 0x0a, + 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2b, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x68, + 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x50, 0x72, 0x65, 0x52, 0x61, 0x6e, 0x6b, 0x2e, 0x52, + 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x52, 0x61, + 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x4d, 0x79, 0x52, 0x61, 0x6e, 0x6b, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4d, 0x79, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x18, + 0x0a, 0x07, 0x4d, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, + 0x07, 0x4d, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x54, 0x0a, 0x0d, 0x52, 0x61, 0x6e, 0x6b, + 0x4c, 0x69, 0x73, 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, 0x2d, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x75, 0x74, + 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, + 0x61, 0x6e, 0x6b, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8f, + 0x02, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x43, 0x61, 0x72, 0x64, + 0x12, 0x35, 0x0a, 0x04, 0x43, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, + 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x79, 0x43, 0x61, 0x72, 0x64, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x04, 0x43, 0x61, 0x72, 0x64, 0x12, 0x3b, 0x0a, 0x06, 0x4d, 0x61, 0x73, 0x74, 0x65, + 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, + 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x43, 0x61, 0x72, 0x64, + 0x2e, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x4d, 0x61, + 0x73, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x78, 0x53, 0x74, 0x61, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x45, 0x78, 0x53, 0x74, 0x61, 0x72, 0x1a, 0x37, 0x0a, 0x09, + 0x43, 0x61, 0x72, 0x64, 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, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 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, 0x25, 0x0a, 0x11, 0x52, 0x65, 0x71, 0x53, 0x65, 0x74, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, + 0x6f, 0x6b, 0x55, 0x72, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x22, 0x4d, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x53, 0x65, + 0x74, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x55, 0x72, 0x6c, 0x12, 0x26, 0x0a, 0x04, + 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, + 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, + 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x2b, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x49, 0x6e, 0x76, + 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, + 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, + 0x55, 0x69, 0x6e, 0x22, 0x4b, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, + 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x64, + 0x4c, 0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x49, 0x64, 0x4c, + 0x69, 0x73, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x22, 0x2e, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x53, 0x65, 0x6c, 0x66, 0x49, 0x6e, 0x76, 0x69, 0x74, + 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x49, 0x64, + 0x22, 0x30, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x53, 0x65, 0x6c, 0x66, 0x49, 0x6e, 0x76, 0x69, 0x74, + 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, + 0x64, 0x65, 0x22, 0x50, 0x0a, 0x14, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x49, 0x6e, 0x76, 0x69, + 0x74, 0x65, 0x64, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x64, + 0x4c, 0x69, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x49, 0x64, 0x4c, + 0x69, 0x73, 0x74, 0x73, 0x22, 0x30, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x47, 0x65, 0x74, 0x49, 0x6e, + 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x65, + 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x65, + 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x34, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x47, 0x65, 0x74, + 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1e, 0x0a, 0x0a, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x28, 0x0a, 0x16, + 0x52, 0x65, 0x71, 0x41, 0x75, 0x74, 0x6f, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, + 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x22, 0x38, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x41, 0x75, 0x74, + 0x6f, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, + 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, + 0x22, 0x0b, 0x0a, 0x09, 0x52, 0x65, 0x71, 0x4d, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x22, 0x8f, 0x02, + 0x0a, 0x09, 0x52, 0x65, 0x73, 0x4d, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x73, + 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x50, 0x61, 0x73, 0x73, 0x12, 0x10, 0x0a, + 0x03, 0x47, 0x65, 0x6d, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x03, 0x47, 0x65, 0x6d, 0x12, + 0x2e, 0x0a, 0x03, 0x4d, 0x61, 0x70, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, + 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x4d, 0x69, 0x6e, 0x69, 0x6e, + 0x67, 0x2e, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x4d, 0x61, 0x70, 0x12, + 0x16, 0x0a, 0x06, 0x4d, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x4d, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x1a, 0x36, 0x0a, 0x08, 0x4d, 0x61, 0x70, 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, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x8d, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x4d, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x6b, + 0x65, 0x12, 0x32, 0x0a, 0x03, 0x4d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, + 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x71, 0x4d, 0x69, 0x6e, + 0x69, 0x6e, 0x67, 0x54, 0x61, 0x6b, 0x65, 0x2e, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x03, 0x4d, 0x61, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x47, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x03, 0x47, 0x65, 0x6d, 0x1a, 0x36, 0x0a, 0x08, 0x4d, 0x61, 0x70, 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, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x49, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x4d, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x6b, 0x65, + 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, + 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, + 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x11, 0x0a, 0x0f, 0x52, 0x65, + 0x71, 0x4d, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x4b, 0x0a, + 0x0f, 0x52, 0x65, 0x73, 0x4d, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, + 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, + 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x73, 0x0a, 0x09, 0x52, 0x65, + 0x73, 0x41, 0x63, 0x74, 0x52, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x03, 0x52, 0x65, 0x64, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, + 0x52, 0x65, 0x73, 0x41, 0x63, 0x74, 0x52, 0x65, 0x64, 0x2e, 0x52, 0x65, 0x64, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x03, 0x52, 0x65, 0x64, 0x1a, 0x36, 0x0a, 0x08, 0x52, 0x65, 0x64, 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, + 0x30, 0x0a, 0x0c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x41, 0x63, 0x74, 0x52, 0x65, 0x64, 0x12, + 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, + 0x10, 0x0a, 0x03, 0x52, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x52, 0x65, + 0x64, 0x22, 0x3c, 0x0a, 0x0e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x79, 0x12, 0x2a, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x41, 0x63, 0x74, + 0x69, 0x76, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, + 0x73, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x2f, 0x0a, 0x04, 0x49, 0x74, + 0x65, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, + 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x49, 0x74, 0x65, 0x6d, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x1a, 0x37, 0x0a, 0x09, 0x49, + 0x74, 0x65, 0x6d, 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, 0x79, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x6f, 0x74, 0x69, + 0x66, 0x79, 0x12, 0x32, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x1a, 0x37, 0x0a, 0x09, 0x49, 0x74, 0x65, 0x6d, 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, + 0x0f, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x47, 0x75, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, + 0x22, 0xd9, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x47, 0x75, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6c, + 0x6f, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, + 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, + 0x50, 0x61, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, + 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x2e, 0x0a, 0x08, + 0x4f, 0x70, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x6f, 0x70, 0x70, 0x6f, 0x6e, 0x65, + 0x6e, 0x74, 0x52, 0x08, 0x4f, 0x70, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x22, 0x66, 0x0a, 0x08, + 0x6f, 0x70, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x46, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x61, 0x63, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x22, 0x83, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x71, 0x47, 0x75, 0x65, 0x73, + 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x61, 0x6b, 0x65, 0x12, 0x36, 0x0a, 0x03, 0x4d, 0x61, + 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, + 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x71, 0x47, 0x75, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, + 0x54, 0x61, 0x6b, 0x65, 0x2e, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x4d, + 0x61, 0x70, 0x1a, 0x36, 0x0a, 0x08, 0x4d, 0x61, 0x70, 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, 0x4d, 0x0a, 0x11, 0x52, 0x65, + 0x73, 0x47, 0x75, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x61, 0x6b, 0x65, 0x12, + 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, + 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, + 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x15, 0x0a, 0x13, 0x52, 0x65, 0x71, + 0x47, 0x75, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x22, 0x4f, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x47, 0x75, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6c, 0x6f, + 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, + 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, + 0x67, 0x22, 0x09, 0x0a, 0x07, 0x52, 0x65, 0x71, 0x52, 0x61, 0x63, 0x65, 0x22, 0x93, 0x02, 0x0a, + 0x07, 0x52, 0x65, 0x73, 0x52, 0x61, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x73, 0x73, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x50, 0x61, 0x73, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x47, 0x61, + 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0d, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x20, 0x0a, 0x0b, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x32, + 0x0a, 0x08, 0x4f, 0x70, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x72, 0x61, 0x63, 0x65, + 0x6f, 0x70, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x4f, 0x70, 0x70, 0x6f, 0x6e, 0x65, + 0x6e, 0x74, 0x22, 0x50, 0x0a, 0x0c, 0x72, 0x61, 0x63, 0x65, 0x6f, 0x70, 0x70, 0x6f, 0x6e, 0x65, + 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x22, 0x0e, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x52, 0x61, 0x63, 0x65, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x22, 0x48, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x52, 0x61, 0x63, 0x65, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, + 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, + 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x0f, + 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x52, 0x61, 0x63, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, + 0x49, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x52, 0x61, 0x63, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, + 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, + 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x0d, 0x0a, 0x0b, 0x52, 0x65, + 0x71, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x22, 0xd3, 0x04, 0x0a, 0x0b, 0x52, 0x65, + 0x73, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x28, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x32, 0x0a, 0x08, 0x4f, + 0x70, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x4f, 0x70, 0x70, + 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x4f, 0x70, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, + 0x2c, 0x0a, 0x06, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x46, 0x72, 0x69, 0x65, 0x6e, + 0x64, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x06, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x3f, 0x0a, + 0x08, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x23, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, + 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x12, 0x18, + 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, + 0x07, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x33, 0x0a, 0x04, 0x4d, 0x6f, 0x6f, 0x64, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, + 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x2e, 0x4d, 0x6f, + 0x6f, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x4d, 0x6f, 0x6f, 0x64, 0x12, 0x2e, 0x0a, + 0x08, 0x4c, 0x6f, 0x73, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x4c, 0x6f, 0x73, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1c, 0x0a, + 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x57, + 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x57, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x41, + 0x6c, 0x6c, 0x4d, 0x6f, 0x6f, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x41, 0x6c, + 0x6c, 0x4d, 0x6f, 0x6f, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x68, 0x69, 0x70, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x68, 0x69, 0x70, 0x1a, 0x3b, 0x0a, 0x0d, 0x50, 0x6c, 0x61, + 0x79, 0x72, 0x6f, 0x6f, 0x6d, 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, 0x37, 0x0a, 0x09, 0x4d, 0x6f, 0x6f, 0x64, 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, + 0x52, 0x0a, 0x12, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, + 0x6d, 0x57, 0x6f, 0x72, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x57, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x57, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x22, 0x44, 0x0a, 0x12, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x50, 0x6c, 0x61, + 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x4c, 0x6f, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x4c, 0x6f, 0x73, + 0x65, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x75, + 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x08, 0x4c, 0x6f, 0x73, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x74, 0x0a, 0x0a, 0x46, 0x72, 0x69, + 0x65, 0x6e, 0x64, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x46, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x61, 0x63, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x22, + 0x7c, 0x0a, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, 0x4f, 0x70, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, + 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x61, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x76, 0x61, + 0x74, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, + 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x61, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x61, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x23, 0x0a, + 0x0f, 0x52, 0x65, 0x71, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, + 0x69, 0x64, 0x22, 0x9f, 0x03, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, + 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x46, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x61, 0x63, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x43, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x79, + 0x72, 0x6f, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x75, 0x74, + 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, + 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x12, 0x16, 0x0a, + 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, + 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x07, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, + 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x2e, + 0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, + 0x73, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, 0x3b, 0x0a, 0x0d, 0x50, 0x6c, 0x61, + 0x79, 0x72, 0x6f, 0x6f, 0x6d, 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, 0x4c, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 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, 0x28, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, + 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x25, 0x0a, 0x0f, 0x52, 0x65, 0x71, 0x50, 0x6c, 0x61, 0x79, 0x72, + 0x6f, 0x6f, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x22, 0x4b, 0x0a, 0x0f, 0x52, + 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x2b, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x49, - 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, - 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x64, 0x77, 0x55, 0x69, 0x6e, 0x22, 0x4b, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x49, 0x6e, 0x76, 0x69, - 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, - 0x49, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x49, - 0x64, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x22, 0x2e, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x53, 0x65, 0x6c, 0x66, 0x49, 0x6e, 0x76, - 0x69, 0x74, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, - 0x49, 0x64, 0x22, 0x30, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x53, 0x65, 0x6c, 0x66, 0x49, 0x6e, 0x76, - 0x69, 0x74, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x43, 0x6f, 0x64, 0x65, 0x22, 0x50, 0x0a, 0x14, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x49, 0x6e, - 0x76, 0x69, 0x74, 0x65, 0x64, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x1e, 0x0a, 0x0a, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x49, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x49, - 0x64, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x22, 0x30, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x47, 0x65, 0x74, - 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, - 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x34, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x47, - 0x65, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1e, - 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x28, - 0x0a, 0x16, 0x52, 0x65, 0x71, 0x41, 0x75, 0x74, 0x6f, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x76, 0x69, - 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x22, 0x38, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x41, - 0x75, 0x74, 0x6f, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, - 0x6e, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x22, 0x0b, 0x0a, 0x09, 0x52, 0x65, 0x71, 0x4d, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x22, - 0x8f, 0x02, 0x0a, 0x09, 0x52, 0x65, 0x73, 0x4d, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, - 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, - 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x50, - 0x61, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x50, 0x61, 0x73, 0x73, 0x12, - 0x10, 0x0a, 0x03, 0x47, 0x65, 0x6d, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x03, 0x47, 0x65, - 0x6d, 0x12, 0x2e, 0x0a, 0x03, 0x4d, 0x61, 0x70, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x4d, 0x69, 0x6e, - 0x69, 0x6e, 0x67, 0x2e, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x4d, 0x61, - 0x70, 0x12, 0x16, 0x0a, 0x06, 0x4d, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x4d, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x1a, 0x36, 0x0a, 0x08, 0x4d, 0x61, 0x70, - 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, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0x8d, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x4d, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x54, - 0x61, 0x6b, 0x65, 0x12, 0x32, 0x0a, 0x03, 0x4d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x20, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x71, 0x4d, - 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x6b, 0x65, 0x2e, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x03, 0x4d, 0x61, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x47, 0x65, 0x6d, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x47, 0x65, 0x6d, 0x1a, 0x36, 0x0a, 0x08, 0x4d, 0x61, 0x70, - 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, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0x49, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x4d, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x54, 0x61, - 0x6b, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x39, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x50, + 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x12, + 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, + 0x79, 0x70, 0x65, 0x22, 0x4f, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, + 0x6f, 0x6d, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, + 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, + 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x4d, 0x73, 0x67, 0x22, 0x36, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x50, 0x6c, 0x61, 0x79, 0x72, + 0x6f, 0x6f, 0x6d, 0x53, 0x65, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x22, 0x4e, 0x0a, 0x12, + 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x53, 0x65, 0x74, 0x52, 0x6f, + 0x6f, 0x6d, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, + 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x29, 0x0a, 0x17, + 0x52, 0x65, 0x71, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x53, 0x0a, 0x17, 0x52, 0x65, 0x73, 0x50, 0x6c, + 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x11, 0x0a, 0x0f, - 0x52, 0x65, 0x71, 0x4d, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, - 0x4b, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x4d, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x52, 0x65, 0x71, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x4c, 0x6f, 0x73, 0x65, 0x22, + 0x4b, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x4c, 0x6f, + 0x73, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x73, 0x0a, 0x09, - 0x52, 0x65, 0x73, 0x41, 0x63, 0x74, 0x52, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x03, 0x52, 0x65, 0x64, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, - 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x41, 0x63, 0x74, 0x52, 0x65, 0x64, 0x2e, 0x52, 0x65, 0x64, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x52, 0x65, 0x64, 0x1a, 0x36, 0x0a, 0x08, 0x52, 0x65, 0x64, - 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, 0x30, 0x0a, 0x0c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x41, 0x63, 0x74, 0x52, 0x65, - 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, - 0x64, 0x12, 0x10, 0x0a, 0x03, 0x52, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, - 0x52, 0x65, 0x64, 0x22, 0x3c, 0x0a, 0x0e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4e, - 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x2a, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x41, - 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, - 0x6f, 0x22, 0x73, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x2f, 0x0a, 0x04, - 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x75, 0x74, - 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x49, 0x74, - 0x65, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x1a, 0x37, 0x0a, - 0x09, 0x49, 0x74, 0x65, 0x6d, 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, 0x79, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x6f, - 0x74, 0x69, 0x66, 0x79, 0x12, 0x32, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x49, 0x74, - 0x65, 0x6d, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x1a, 0x37, 0x0a, 0x09, 0x49, 0x74, 0x65, 0x6d, - 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, 0x0f, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x47, 0x75, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6c, - 0x6f, 0x72, 0x22, 0xd9, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x47, 0x75, 0x65, 0x73, 0x73, 0x43, - 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, - 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, - 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x04, 0x50, 0x61, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, - 0x50, 0x6f, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x2e, - 0x0a, 0x08, 0x4f, 0x70, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x6f, 0x70, 0x70, 0x6f, - 0x6e, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x4f, 0x70, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x22, 0x66, - 0x0a, 0x08, 0x6f, 0x70, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x46, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x61, - 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, - 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x72, - 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x22, 0x83, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x71, 0x47, 0x75, - 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x61, 0x6b, 0x65, 0x12, 0x36, 0x0a, 0x03, - 0x4d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x75, 0x74, 0x6f, - 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x71, 0x47, 0x75, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6c, - 0x6f, 0x72, 0x54, 0x61, 0x6b, 0x65, 0x2e, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x03, 0x4d, 0x61, 0x70, 0x1a, 0x36, 0x0a, 0x08, 0x4d, 0x61, 0x70, 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, 0x4d, 0x0a, 0x11, - 0x52, 0x65, 0x73, 0x47, 0x75, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x61, 0x6b, - 0x65, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, - 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x15, 0x0a, 0x13, 0x52, - 0x65, 0x71, 0x47, 0x75, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x22, 0x4f, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x47, 0x75, 0x65, 0x73, 0x73, 0x43, 0x6f, - 0x6c, 0x6f, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, - 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, - 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x4d, 0x73, 0x67, 0x22, 0x09, 0x0a, 0x07, 0x52, 0x65, 0x71, 0x52, 0x61, 0x63, 0x65, 0x22, 0x93, - 0x02, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x52, 0x61, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x73, 0x73, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x50, 0x61, 0x73, 0x73, 0x12, 0x24, 0x0a, 0x0d, - 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0d, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, - 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x64, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, - 0x12, 0x32, 0x0a, 0x08, 0x4f, 0x70, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x72, 0x61, - 0x63, 0x65, 0x6f, 0x70, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x4f, 0x70, 0x70, 0x6f, - 0x6e, 0x65, 0x6e, 0x74, 0x22, 0x50, 0x0a, 0x0c, 0x72, 0x61, 0x63, 0x65, 0x6f, 0x70, 0x70, 0x6f, - 0x6e, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, - 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x72, - 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x22, 0x0e, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x52, 0x61, 0x63, - 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x22, 0x48, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x52, 0x61, 0x63, - 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, - 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, - 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, - 0x22, 0x0f, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x52, 0x61, 0x63, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x22, 0x49, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x52, 0x61, 0x63, 0x65, 0x52, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x11, 0x0a, 0x0f, + 0x52, 0x65, 0x71, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6b, 0x22, + 0x4b, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x57, 0x6f, + 0x72, 0x6b, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x2a, 0x42, 0x0a, 0x0b, - 0x48, 0x41, 0x4e, 0x44, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x12, 0x07, 0x0a, 0x03, 0x41, - 0x44, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4f, 0x4d, 0x50, 0x4f, 0x53, 0x45, 0x10, - 0x01, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x55, 0x59, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x45, - 0x4c, 0x4c, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x04, - 0x2a, 0x21, 0x0a, 0x08, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x12, 0x08, 0x0a, 0x04, - 0x46, 0x41, 0x49, 0x4c, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, - 0x53, 0x10, 0x01, 0x2a, 0x2e, 0x0a, 0x09, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x4e, 0x45, 0x52, 0x47, 0x59, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, - 0x53, 0x54, 0x41, 0x52, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x49, 0x41, 0x4d, 0x4f, 0x4e, - 0x44, 0x10, 0x02, 0x42, 0x08, 0x5a, 0x06, 0x2e, 0x2e, 0x2f, 0x6d, 0x73, 0x67, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x11, 0x0a, 0x0f, + 0x52, 0x65, 0x71, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x74, 0x22, + 0x4b, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x52, 0x65, + 0x73, 0x74, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, + 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x11, 0x0a, 0x0f, + 0x52, 0x65, 0x71, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x44, 0x72, 0x61, 0x77, 0x22, + 0x5b, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x44, 0x72, + 0x61, 0x77, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, 0x53, 0x5f, + 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x23, 0x0a, 0x0f, + 0x52, 0x65, 0x71, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x43, 0x68, 0x69, 0x70, 0x12, + 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4e, 0x75, + 0x6d, 0x22, 0x4b, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, + 0x43, 0x68, 0x69, 0x70, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x45, + 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, + 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x2a, 0x42, + 0x0a, 0x0b, 0x48, 0x41, 0x4e, 0x44, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x12, 0x07, 0x0a, + 0x03, 0x41, 0x44, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4f, 0x4d, 0x50, 0x4f, 0x53, + 0x45, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x55, 0x59, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, + 0x53, 0x45, 0x4c, 0x4c, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, + 0x10, 0x04, 0x2a, 0x21, 0x0a, 0x08, 0x52, 0x45, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x12, 0x08, + 0x0a, 0x04, 0x46, 0x41, 0x49, 0x4c, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, + 0x45, 0x53, 0x53, 0x10, 0x01, 0x2a, 0x2e, 0x0a, 0x09, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x4e, 0x45, 0x52, 0x47, 0x59, 0x10, 0x00, 0x12, 0x08, + 0x0a, 0x04, 0x53, 0x54, 0x41, 0x52, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x49, 0x41, 0x4d, + 0x4f, 0x4e, 0x44, 0x10, 0x02, 0x42, 0x08, 0x5a, 0x06, 0x2e, 0x2e, 0x2f, 0x6d, 0x73, 0x67, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -37651,7 +39370,7 @@ func file_Gameapi_proto_rawDescGZIP() []byte { } var file_Gameapi_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_Gameapi_proto_msgTypes = make([]protoimpl.MessageInfo, 661) +var file_Gameapi_proto_msgTypes = make([]protoimpl.MessageInfo, 694) var file_Gameapi_proto_goTypes = []any{ (HANDLE_TYPE)(0), // 0: tutorial.HANDLE_TYPE (RES_CODE)(0), // 1: tutorial.RES_CODE @@ -38183,208 +39902,241 @@ var file_Gameapi_proto_goTypes = []any{ (*ResFreeShop)(nil), // 527: tutorial.ResFreeShop (*ReqBuyChessShop)(nil), // 528: tutorial.ReqBuyChessShop (*ResBuyChessShop)(nil), // 529: tutorial.ResBuyChessShop - (*ReqRefreshChessShop)(nil), // 530: tutorial.ReqRefreshChessShop - (*ResRefreshChessShop)(nil), // 531: tutorial.ResRefreshChessShop - (*ReqEndless)(nil), // 532: tutorial.ReqEndless - (*ResEndless)(nil), // 533: tutorial.ResEndless - (*ResEndlessInfo)(nil), // 534: tutorial.ResEndlessInfo - (*ReqEndlessReward)(nil), // 535: tutorial.ReqEndlessReward - (*ResEndlessReward)(nil), // 536: tutorial.ResEndlessReward - (*ResPiggyBank)(nil), // 537: tutorial.ResPiggyBank - (*ReqPiggyBankReward)(nil), // 538: tutorial.ReqPiggyBankReward - (*ResPiggyBankReward)(nil), // 539: tutorial.ResPiggyBankReward - (*ReqCreateOrderSn)(nil), // 540: tutorial.ReqCreateOrderSn - (*ResCreateOrderSn)(nil), // 541: tutorial.ResCreateOrderSn - (*ReqShippingOrder)(nil), // 542: tutorial.ReqShippingOrder - (*ResShippingOrder)(nil), // 543: tutorial.ResShippingOrder - (*ReqChampship)(nil), // 544: tutorial.ReqChampship - (*ResChampship)(nil), // 545: tutorial.ResChampship - (*ReqChampshipReward)(nil), // 546: tutorial.ReqChampshipReward - (*ResChampshipReward)(nil), // 547: tutorial.ResChampshipReward - (*ReqChampshipRankReward)(nil), // 548: tutorial.ReqChampshipRankReward - (*ResChampshipRankReward)(nil), // 549: tutorial.ResChampshipRankReward - (*ReqChampshipRank)(nil), // 550: tutorial.ReqChampshipRank - (*ResChampshipRank)(nil), // 551: tutorial.ResChampshipRank - (*ReqChampshipPreRank)(nil), // 552: tutorial.ReqChampshipPreRank - (*ResChampshipPreRank)(nil), // 553: tutorial.ResChampshipPreRank - (*ResNotifyCard)(nil), // 554: tutorial.ResNotifyCard - (*ReqSetFacebookUrl)(nil), // 555: tutorial.ReqSetFacebookUrl - (*ResSetFacebookUrl)(nil), // 556: tutorial.ResSetFacebookUrl - (*ReqInviteFriendData)(nil), // 557: tutorial.ReqInviteFriendData - (*ResInviteFriendData)(nil), // 558: tutorial.ResInviteFriendData - (*ReqSelfInvited)(nil), // 559: tutorial.ReqSelfInvited - (*ResSelfInvited)(nil), // 560: tutorial.ResSelfInvited - (*NotifyInvitedSuccess)(nil), // 561: tutorial.NotifyInvitedSuccess - (*ReqGetInviteReward)(nil), // 562: tutorial.ReqGetInviteReward - (*ResGetInviteReward)(nil), // 563: tutorial.ResGetInviteReward - (*ReqAutoAddInviteFriend)(nil), // 564: tutorial.ReqAutoAddInviteFriend - (*ResAutoAddInviteFriend)(nil), // 565: tutorial.ResAutoAddInviteFriend - (*ReqMining)(nil), // 566: tutorial.ReqMining - (*ResMining)(nil), // 567: tutorial.ResMining - (*ReqMiningTake)(nil), // 568: tutorial.ReqMiningTake - (*ResMiningTake)(nil), // 569: tutorial.ResMiningTake - (*ReqMiningReward)(nil), // 570: tutorial.ReqMiningReward - (*ResMiningReward)(nil), // 571: tutorial.ResMiningReward - (*ResActRed)(nil), // 572: tutorial.ResActRed - (*NotifyActRed)(nil), // 573: tutorial.NotifyActRed - (*ActivityNotify)(nil), // 574: tutorial.ActivityNotify - (*ResItem)(nil), // 575: tutorial.ResItem - (*ItemNotify)(nil), // 576: tutorial.ItemNotify - (*ReqGuessColor)(nil), // 577: tutorial.ReqGuessColor - (*ResGuessColor)(nil), // 578: tutorial.ResGuessColor - (*Opponent)(nil), // 579: tutorial.opponent - (*ReqGuessColorTake)(nil), // 580: tutorial.ReqGuessColorTake - (*ResGuessColorTake)(nil), // 581: tutorial.ResGuessColorTake - (*ReqGuessColorReward)(nil), // 582: tutorial.ReqGuessColorReward - (*ResGuessColorReward)(nil), // 583: tutorial.ResGuessColorReward - (*ReqRace)(nil), // 584: tutorial.ReqRace - (*ResRace)(nil), // 585: tutorial.ResRace - (*Raceopponent)(nil), // 586: tutorial.raceopponent - (*ReqRaceStart)(nil), // 587: tutorial.ReqRaceStart - (*ResRaceStart)(nil), // 588: tutorial.ResRaceStart - (*ReqRaceReward)(nil), // 589: tutorial.ReqRaceReward - (*ResRaceReward)(nil), // 590: tutorial.ResRaceReward - nil, // 591: tutorial.UpdateBaseItemInfo.MUpdateItemEntry - nil, // 592: tutorial.ResPlayerEmitUnlockData.MEmitUnlockDataEntry - nil, // 593: tutorial.NotifyDailyRenewEmitUnlock.MEmitUnlockDataEntry - nil, // 594: tutorial.UpdatePlayerEmitUnlockData.MEmitUnlockDataEntry - nil, // 595: tutorial.ResPlayerPackData.MPackDataEntry - nil, // 596: tutorial.UpdatePlayerPackData.MPackDataEntry - nil, // 597: tutorial.ResPlayerChessData.MChessDataEntry - nil, // 598: tutorial.UpdatePlayerChessData.MChessDataEntry - nil, // 599: tutorial.ReqGetChessFromBuff.MChessDataEntry - nil, // 600: tutorial.ReqChessEx.MChessDataEntry - nil, // 601: tutorial.ReqPutChessInBag.MChessDataEntry - nil, // 602: tutorial.ReqTakeChessOutBag.MChessDataEntry - nil, // 603: tutorial.ResPlayerGiftData.MGiftDataEntry - nil, // 604: tutorial.UpdatePlayerGiftData.MGiftDataEntry - nil, // 605: tutorial.ResPlayerOrderData.MOrderDataEntry - nil, // 606: tutorial.UpdatePlayerOrderData.MOrderDataEntry - nil, // 607: tutorial.ResChessColorData.MChessColorDataEntry - nil, // 608: tutorial.UpdateChessColorData.MChessColorDataEntry - nil, // 609: tutorial.ResEmitMergeMap.MEmitMergeDataEntry - nil, // 610: tutorial.UpdateEmitMergeMap.MEmitMergeDataEntry - nil, // 611: tutorial.ResEmitCountMap.MEmitCountDataEntry - nil, // 612: tutorial.UpdateEmitCountMap.MEmitCountDataEntry - nil, // 613: tutorial.ResEmitCDStartData.MEmitCDDataEntry - nil, // 614: tutorial.NotifyInitEmitCDTimeData.MEmitCDDataEntry - nil, // 615: tutorial.NotifyEmitCDTimeEndData.MEmitCDDataEntry - nil, // 616: tutorial.ResDecorateData.MDecorateDataEntry - nil, // 617: tutorial.UpdateDecorateData.MDecorateDataEntry - nil, // 618: tutorial.ResShopData.MShopTimeBuyDataEntry - nil, // 619: tutorial.ResShopData.MShopSaleBuyDataEntry - nil, // 620: tutorial.ResShopData.MPackBuyDataEntry - nil, // 621: tutorial.ResShopData.MSpecialOfferBuyDataEntry - nil, // 622: tutorial.ResShopData.MUISpecialOfferBuyDataEntry - nil, // 623: tutorial.ResShopData.MFreePackBuyDataEntry - nil, // 624: tutorial.ResShopData.MDiamondFirstBuyDataEntry - nil, // 625: tutorial.NotifyShopStatusChange.MShopTimeBuyDataEntry - nil, // 626: tutorial.ResShopBuy.MShopTimeBuyDataEntry - nil, // 627: tutorial.ReqRenewItemBuyCnt.MShopDataEntry - nil, // 628: tutorial.ResRenewItemBuyCnt.MShopTimeBuyDataEntry - nil, // 629: tutorial.ResKeyValueData.KeyValuesEntry - nil, // 630: tutorial.UpdateKeyValueData.KeyValuesEntry - nil, // 631: tutorial.ResAdPackData.PackDataEntry - nil, // 632: tutorial.NotifyAdPackData.PackDataEntry - nil, // 633: tutorial.ResWatchAdPack.PackDataEntry - nil, // 634: tutorial.ResPetHomeData.SelectDecorateMapEntry - nil, // 635: tutorial.ReqSaveSelectDecorate.SelectDecorateMapEntry - nil, // 636: tutorial.ResSaveSelectDecorate.SelectDecorateMapEntry - nil, // 637: tutorial.ResOpenOtherPetHome.SelectDecorateMapEntry - nil, // 638: tutorial.ResShiftVisitPet.SelectDecorateMapEntry - nil, // 639: tutorial.UseItemRequest.AttrsEntry - nil, // 640: tutorial.UseItemResponse.AttrsEntry - nil, // 641: tutorial.ReqRewardOrder.MChessDataEntry - nil, // 642: tutorial.ResCardInfo.AllCardEntry - nil, // 643: tutorial.ResGuildInfo.RewardEntry - nil, // 644: tutorial.ResDailyTask.WeekRewardEntry - nil, // 645: tutorial.ResDailyTask.DailyTaskEntry - nil, // 646: tutorial.ResLimitEvent.LimitEventListEntry - nil, // 647: tutorial.ResLimitEventProgress.ProgressRewardEntry - nil, // 648: tutorial.ResKv.KvEntry - nil, // 649: tutorial.ResRank.RankListEntry - nil, // 650: tutorial.ResMailList.MailListEntry - nil, // 651: tutorial.ResCharge.SpecialShopEntry - nil, // 652: tutorial.ResCharge.ChessShopEntry - nil, // 653: tutorial.ResCharge.GiftEntry - nil, // 654: tutorial.ResEndless.EndlessListEntry - nil, // 655: tutorial.ResChampshipRank.RankListEntry - nil, // 656: tutorial.ResChampshipPreRank.RankListEntry - nil, // 657: tutorial.ResNotifyCard.CardEntry - nil, // 658: tutorial.ResNotifyCard.MasterEntry - nil, // 659: tutorial.ResMining.MapEntry - nil, // 660: tutorial.ReqMiningTake.MapEntry - nil, // 661: tutorial.ResActRed.RedEntry - nil, // 662: tutorial.ResItem.ItemEntry - nil, // 663: tutorial.ItemNotify.ItemEntry - nil, // 664: tutorial.ReqGuessColorTake.MapEntry + (*ReqBuyChessShop2)(nil), // 530: tutorial.ReqBuyChessShop2 + (*ResBuyChessShop2)(nil), // 531: tutorial.ResBuyChessShop2 + (*ReqRefreshChessShop)(nil), // 532: tutorial.ReqRefreshChessShop + (*ResRefreshChessShop)(nil), // 533: tutorial.ResRefreshChessShop + (*ReqEndless)(nil), // 534: tutorial.ReqEndless + (*ResEndless)(nil), // 535: tutorial.ResEndless + (*ResEndlessInfo)(nil), // 536: tutorial.ResEndlessInfo + (*ReqEndlessReward)(nil), // 537: tutorial.ReqEndlessReward + (*ResEndlessReward)(nil), // 538: tutorial.ResEndlessReward + (*ResPiggyBank)(nil), // 539: tutorial.ResPiggyBank + (*ReqPiggyBankReward)(nil), // 540: tutorial.ReqPiggyBankReward + (*ResPiggyBankReward)(nil), // 541: tutorial.ResPiggyBankReward + (*ReqCreateOrderSn)(nil), // 542: tutorial.ReqCreateOrderSn + (*ResCreateOrderSn)(nil), // 543: tutorial.ResCreateOrderSn + (*ReqShippingOrder)(nil), // 544: tutorial.ReqShippingOrder + (*ResShippingOrder)(nil), // 545: tutorial.ResShippingOrder + (*ReqChampship)(nil), // 546: tutorial.ReqChampship + (*ResChampship)(nil), // 547: tutorial.ResChampship + (*ReqChampshipReward)(nil), // 548: tutorial.ReqChampshipReward + (*ResChampshipReward)(nil), // 549: tutorial.ResChampshipReward + (*ReqChampshipRankReward)(nil), // 550: tutorial.ReqChampshipRankReward + (*ResChampshipRankReward)(nil), // 551: tutorial.ResChampshipRankReward + (*ReqChampshipRank)(nil), // 552: tutorial.ReqChampshipRank + (*ResChampshipRank)(nil), // 553: tutorial.ResChampshipRank + (*ReqChampshipPreRank)(nil), // 554: tutorial.ReqChampshipPreRank + (*ResChampshipPreRank)(nil), // 555: tutorial.ResChampshipPreRank + (*ResNotifyCard)(nil), // 556: tutorial.ResNotifyCard + (*ReqSetFacebookUrl)(nil), // 557: tutorial.ReqSetFacebookUrl + (*ResSetFacebookUrl)(nil), // 558: tutorial.ResSetFacebookUrl + (*ReqInviteFriendData)(nil), // 559: tutorial.ReqInviteFriendData + (*ResInviteFriendData)(nil), // 560: tutorial.ResInviteFriendData + (*ReqSelfInvited)(nil), // 561: tutorial.ReqSelfInvited + (*ResSelfInvited)(nil), // 562: tutorial.ResSelfInvited + (*NotifyInvitedSuccess)(nil), // 563: tutorial.NotifyInvitedSuccess + (*ReqGetInviteReward)(nil), // 564: tutorial.ReqGetInviteReward + (*ResGetInviteReward)(nil), // 565: tutorial.ResGetInviteReward + (*ReqAutoAddInviteFriend)(nil), // 566: tutorial.ReqAutoAddInviteFriend + (*ResAutoAddInviteFriend)(nil), // 567: tutorial.ResAutoAddInviteFriend + (*ReqMining)(nil), // 568: tutorial.ReqMining + (*ResMining)(nil), // 569: tutorial.ResMining + (*ReqMiningTake)(nil), // 570: tutorial.ReqMiningTake + (*ResMiningTake)(nil), // 571: tutorial.ResMiningTake + (*ReqMiningReward)(nil), // 572: tutorial.ReqMiningReward + (*ResMiningReward)(nil), // 573: tutorial.ResMiningReward + (*ResActRed)(nil), // 574: tutorial.ResActRed + (*NotifyActRed)(nil), // 575: tutorial.NotifyActRed + (*ActivityNotify)(nil), // 576: tutorial.ActivityNotify + (*ResItem)(nil), // 577: tutorial.ResItem + (*ItemNotify)(nil), // 578: tutorial.ItemNotify + (*ReqGuessColor)(nil), // 579: tutorial.ReqGuessColor + (*ResGuessColor)(nil), // 580: tutorial.ResGuessColor + (*Opponent)(nil), // 581: tutorial.opponent + (*ReqGuessColorTake)(nil), // 582: tutorial.ReqGuessColorTake + (*ResGuessColorTake)(nil), // 583: tutorial.ResGuessColorTake + (*ReqGuessColorReward)(nil), // 584: tutorial.ReqGuessColorReward + (*ResGuessColorReward)(nil), // 585: tutorial.ResGuessColorReward + (*ReqRace)(nil), // 586: tutorial.ReqRace + (*ResRace)(nil), // 587: tutorial.ResRace + (*Raceopponent)(nil), // 588: tutorial.raceopponent + (*ReqRaceStart)(nil), // 589: tutorial.ReqRaceStart + (*ResRaceStart)(nil), // 590: tutorial.ResRaceStart + (*ReqRaceReward)(nil), // 591: tutorial.ReqRaceReward + (*ResRaceReward)(nil), // 592: tutorial.ResRaceReward + (*ReqPlayroom)(nil), // 593: tutorial.ReqPlayroom + (*ResPlayroom)(nil), // 594: tutorial.ResPlayroom + (*NotifyPlayroomWork)(nil), // 595: tutorial.NotifyPlayroomWork + (*NotifyPlayroomLose)(nil), // 596: tutorial.NotifyPlayroomLose + (*FriendRoom)(nil), // 597: tutorial.FriendRoom + (*RoomOpponent)(nil), // 598: tutorial.RoomOpponent + (*ReqPlayroomInfo)(nil), // 599: tutorial.ReqPlayroomInfo + (*ResPlayroomInfo)(nil), // 600: tutorial.ResPlayroomInfo + (*ReqPlayroomGame)(nil), // 601: tutorial.ReqPlayroomGame + (*ResPlayroomGame)(nil), // 602: tutorial.ResPlayroomGame + (*ReqPlayroomInteract)(nil), // 603: tutorial.ReqPlayroomInteract + (*ResPlayroomInteract)(nil), // 604: tutorial.ResPlayroomInteract + (*ReqPlayroomSetRoom)(nil), // 605: tutorial.ReqPlayroomSetRoom + (*ResPlayroomSetRoom)(nil), // 606: tutorial.ResPlayroomSetRoom + (*ReqPlayroomSelectReward)(nil), // 607: tutorial.ReqPlayroomSelectReward + (*ResPlayroomSelectReward)(nil), // 608: tutorial.ResPlayroomSelectReward + (*ReqPlayroomLose)(nil), // 609: tutorial.ReqPlayroomLose + (*ResPlayroomLose)(nil), // 610: tutorial.ResPlayroomLose + (*ReqPlayroomWork)(nil), // 611: tutorial.ReqPlayroomWork + (*ResPlayroomWork)(nil), // 612: tutorial.ResPlayroomWork + (*ReqPlayroomRest)(nil), // 613: tutorial.ReqPlayroomRest + (*ResPlayroomRest)(nil), // 614: tutorial.ResPlayroomRest + (*ReqPlayroomDraw)(nil), // 615: tutorial.ReqPlayroomDraw + (*ResPlayroomDraw)(nil), // 616: tutorial.ResPlayroomDraw + (*ReqPlayroomChip)(nil), // 617: tutorial.ReqPlayroomChip + (*ResPlayroomChip)(nil), // 618: tutorial.ResPlayroomChip + nil, // 619: tutorial.UpdateBaseItemInfo.MUpdateItemEntry + nil, // 620: tutorial.ResPlayerEmitUnlockData.MEmitUnlockDataEntry + nil, // 621: tutorial.NotifyDailyRenewEmitUnlock.MEmitUnlockDataEntry + nil, // 622: tutorial.UpdatePlayerEmitUnlockData.MEmitUnlockDataEntry + nil, // 623: tutorial.ResPlayerPackData.MPackDataEntry + nil, // 624: tutorial.UpdatePlayerPackData.MPackDataEntry + nil, // 625: tutorial.ResPlayerChessData.MChessDataEntry + nil, // 626: tutorial.UpdatePlayerChessData.MChessDataEntry + nil, // 627: tutorial.ReqGetChessFromBuff.MChessDataEntry + nil, // 628: tutorial.ReqChessEx.MChessDataEntry + nil, // 629: tutorial.ReqPutChessInBag.MChessDataEntry + nil, // 630: tutorial.ReqTakeChessOutBag.MChessDataEntry + nil, // 631: tutorial.ResPlayerGiftData.MGiftDataEntry + nil, // 632: tutorial.UpdatePlayerGiftData.MGiftDataEntry + nil, // 633: tutorial.ResPlayerOrderData.MOrderDataEntry + nil, // 634: tutorial.UpdatePlayerOrderData.MOrderDataEntry + nil, // 635: tutorial.ResChessColorData.MChessColorDataEntry + nil, // 636: tutorial.UpdateChessColorData.MChessColorDataEntry + nil, // 637: tutorial.ResEmitMergeMap.MEmitMergeDataEntry + nil, // 638: tutorial.UpdateEmitMergeMap.MEmitMergeDataEntry + nil, // 639: tutorial.ResEmitCountMap.MEmitCountDataEntry + nil, // 640: tutorial.UpdateEmitCountMap.MEmitCountDataEntry + nil, // 641: tutorial.ResEmitCDStartData.MEmitCDDataEntry + nil, // 642: tutorial.NotifyInitEmitCDTimeData.MEmitCDDataEntry + nil, // 643: tutorial.NotifyEmitCDTimeEndData.MEmitCDDataEntry + nil, // 644: tutorial.ResDecorateData.MDecorateDataEntry + nil, // 645: tutorial.UpdateDecorateData.MDecorateDataEntry + nil, // 646: tutorial.ResShopData.MShopTimeBuyDataEntry + nil, // 647: tutorial.ResShopData.MShopSaleBuyDataEntry + nil, // 648: tutorial.ResShopData.MPackBuyDataEntry + nil, // 649: tutorial.ResShopData.MSpecialOfferBuyDataEntry + nil, // 650: tutorial.ResShopData.MUISpecialOfferBuyDataEntry + nil, // 651: tutorial.ResShopData.MFreePackBuyDataEntry + nil, // 652: tutorial.ResShopData.MDiamondFirstBuyDataEntry + nil, // 653: tutorial.NotifyShopStatusChange.MShopTimeBuyDataEntry + nil, // 654: tutorial.ResShopBuy.MShopTimeBuyDataEntry + nil, // 655: tutorial.ReqRenewItemBuyCnt.MShopDataEntry + nil, // 656: tutorial.ResRenewItemBuyCnt.MShopTimeBuyDataEntry + nil, // 657: tutorial.ResKeyValueData.KeyValuesEntry + nil, // 658: tutorial.UpdateKeyValueData.KeyValuesEntry + nil, // 659: tutorial.ResAdPackData.PackDataEntry + nil, // 660: tutorial.NotifyAdPackData.PackDataEntry + nil, // 661: tutorial.ResWatchAdPack.PackDataEntry + nil, // 662: tutorial.ResPetHomeData.SelectDecorateMapEntry + nil, // 663: tutorial.ReqSaveSelectDecorate.SelectDecorateMapEntry + nil, // 664: tutorial.ResSaveSelectDecorate.SelectDecorateMapEntry + nil, // 665: tutorial.ResOpenOtherPetHome.SelectDecorateMapEntry + nil, // 666: tutorial.ResShiftVisitPet.SelectDecorateMapEntry + nil, // 667: tutorial.UseItemRequest.AttrsEntry + nil, // 668: tutorial.UseItemResponse.AttrsEntry + nil, // 669: tutorial.ReqRewardOrder.MChessDataEntry + nil, // 670: tutorial.ResCardInfo.AllCardEntry + nil, // 671: tutorial.ResGuildInfo.RewardEntry + nil, // 672: tutorial.ResDailyTask.WeekRewardEntry + nil, // 673: tutorial.ResDailyTask.DailyTaskEntry + nil, // 674: tutorial.ResLimitEvent.LimitEventListEntry + nil, // 675: tutorial.ResLimitEventProgress.ProgressRewardEntry + nil, // 676: tutorial.ResKv.KvEntry + nil, // 677: tutorial.ResRank.RankListEntry + nil, // 678: tutorial.ResMailList.MailListEntry + nil, // 679: tutorial.ResCharge.SpecialShopEntry + nil, // 680: tutorial.ResCharge.ChessShopEntry + nil, // 681: tutorial.ResCharge.GiftEntry + nil, // 682: tutorial.ReqBuyChessShop2.MChessDataEntry + nil, // 683: tutorial.ResEndless.EndlessListEntry + nil, // 684: tutorial.ResChampshipRank.RankListEntry + nil, // 685: tutorial.ResChampshipPreRank.RankListEntry + nil, // 686: tutorial.ResNotifyCard.CardEntry + nil, // 687: tutorial.ResNotifyCard.MasterEntry + nil, // 688: tutorial.ResMining.MapEntry + nil, // 689: tutorial.ReqMiningTake.MapEntry + nil, // 690: tutorial.ResActRed.RedEntry + nil, // 691: tutorial.ResItem.ItemEntry + nil, // 692: tutorial.ItemNotify.ItemEntry + nil, // 693: tutorial.ReqGuessColorTake.MapEntry + nil, // 694: tutorial.ResPlayroom.PlayroomEntry + nil, // 695: tutorial.ResPlayroom.MoodEntry + nil, // 696: tutorial.ResPlayroomInfo.PlayroomEntry + nil, // 697: tutorial.ResPlayroomInfo.ItemsEntry } var file_Gameapi_proto_depIdxs = []int32{ - 591, // 0: tutorial.UpdateBaseItemInfo.mUpdateItem:type_name -> tutorial.UpdateBaseItemInfo.MUpdateItemEntry - 592, // 1: tutorial.ResPlayerEmitUnlockData.mEmitUnlockData:type_name -> tutorial.ResPlayerEmitUnlockData.MEmitUnlockDataEntry - 593, // 2: tutorial.NotifyDailyRenewEmitUnlock.mEmitUnlockData:type_name -> tutorial.NotifyDailyRenewEmitUnlock.MEmitUnlockDataEntry - 594, // 3: tutorial.UpdatePlayerEmitUnlockData.mEmitUnlockData:type_name -> tutorial.UpdatePlayerEmitUnlockData.MEmitUnlockDataEntry - 595, // 4: tutorial.ResPlayerPackData.mPackData:type_name -> tutorial.ResPlayerPackData.MPackDataEntry - 596, // 5: tutorial.UpdatePlayerPackData.mPackData:type_name -> tutorial.UpdatePlayerPackData.MPackDataEntry - 597, // 6: tutorial.ResPlayerChessData.mChessData:type_name -> tutorial.ResPlayerChessData.MChessDataEntry + 619, // 0: tutorial.UpdateBaseItemInfo.mUpdateItem:type_name -> tutorial.UpdateBaseItemInfo.MUpdateItemEntry + 620, // 1: tutorial.ResPlayerEmitUnlockData.mEmitUnlockData:type_name -> tutorial.ResPlayerEmitUnlockData.MEmitUnlockDataEntry + 621, // 2: tutorial.NotifyDailyRenewEmitUnlock.mEmitUnlockData:type_name -> tutorial.NotifyDailyRenewEmitUnlock.MEmitUnlockDataEntry + 622, // 3: tutorial.UpdatePlayerEmitUnlockData.mEmitUnlockData:type_name -> tutorial.UpdatePlayerEmitUnlockData.MEmitUnlockDataEntry + 623, // 4: tutorial.ResPlayerPackData.mPackData:type_name -> tutorial.ResPlayerPackData.MPackDataEntry + 624, // 5: tutorial.UpdatePlayerPackData.mPackData:type_name -> tutorial.UpdatePlayerPackData.MPackDataEntry + 625, // 6: tutorial.ResPlayerChessData.mChessData:type_name -> tutorial.ResPlayerChessData.MChessDataEntry 37, // 7: tutorial.ResPlayerChessInfo.ChessBag:type_name -> tutorial.ChessBag 0, // 8: tutorial.ChessHandle.type:type_name -> tutorial.HANDLE_TYPE - 598, // 9: tutorial.UpdatePlayerChessData.mChessData:type_name -> tutorial.UpdatePlayerChessData.MChessDataEntry + 626, // 9: tutorial.UpdatePlayerChessData.mChessData:type_name -> tutorial.UpdatePlayerChessData.MChessDataEntry 30, // 10: tutorial.UpdatePlayerChessData.mChessHandle:type_name -> tutorial.ChessHandle 1, // 11: tutorial.ResUpdatePlayerChessData.code:type_name -> tutorial.RES_CODE - 599, // 12: tutorial.ReqGetChessFromBuff.mChessData:type_name -> tutorial.ReqGetChessFromBuff.MChessDataEntry + 627, // 12: tutorial.ReqGetChessFromBuff.mChessData:type_name -> tutorial.ReqGetChessFromBuff.MChessDataEntry 1, // 13: tutorial.ResGetChessFromBuff.code:type_name -> tutorial.RES_CODE - 600, // 14: tutorial.ReqChessEx.mChessData:type_name -> tutorial.ReqChessEx.MChessDataEntry + 628, // 14: tutorial.ReqChessEx.mChessData:type_name -> tutorial.ReqChessEx.MChessDataEntry 1, // 15: tutorial.ResChessEx.code:type_name -> tutorial.RES_CODE 38, // 16: tutorial.ChessBag.ChessBagGrids:type_name -> tutorial.ChessBagGrid - 601, // 17: tutorial.ReqPutChessInBag.mChessData:type_name -> tutorial.ReqPutChessInBag.MChessDataEntry + 629, // 17: tutorial.ReqPutChessInBag.mChessData:type_name -> tutorial.ReqPutChessInBag.MChessDataEntry 1, // 18: tutorial.ResPutChessInBag.code:type_name -> tutorial.RES_CODE - 602, // 19: tutorial.ReqTakeChessOutBag.mChessData:type_name -> tutorial.ReqTakeChessOutBag.MChessDataEntry + 630, // 19: tutorial.ReqTakeChessOutBag.mChessData:type_name -> tutorial.ReqTakeChessOutBag.MChessDataEntry 1, // 20: tutorial.ResTakeChessOutBag.code:type_name -> tutorial.RES_CODE 1, // 21: tutorial.ResBuyChessBagGrid.code:type_name -> tutorial.RES_CODE - 603, // 22: tutorial.ResPlayerGiftData.mGiftData:type_name -> tutorial.ResPlayerGiftData.MGiftDataEntry - 604, // 23: tutorial.UpdatePlayerGiftData.mGiftData:type_name -> tutorial.UpdatePlayerGiftData.MGiftDataEntry - 605, // 24: tutorial.ResPlayerOrderData.mOrderData:type_name -> tutorial.ResPlayerOrderData.MOrderDataEntry - 606, // 25: tutorial.UpdatePlayerOrderData.mOrderData:type_name -> tutorial.UpdatePlayerOrderData.MOrderDataEntry - 607, // 26: tutorial.ResChessColorData.mChessColorData:type_name -> tutorial.ResChessColorData.MChessColorDataEntry - 608, // 27: tutorial.UpdateChessColorData.mChessColorData:type_name -> tutorial.UpdateChessColorData.MChessColorDataEntry - 609, // 28: tutorial.ResEmitMergeMap.mEmitMergeData:type_name -> tutorial.ResEmitMergeMap.MEmitMergeDataEntry - 610, // 29: tutorial.UpdateEmitMergeMap.mEmitMergeData:type_name -> tutorial.UpdateEmitMergeMap.MEmitMergeDataEntry - 611, // 30: tutorial.ResEmitCountMap.mEmitCountData:type_name -> tutorial.ResEmitCountMap.MEmitCountDataEntry - 612, // 31: tutorial.UpdateEmitCountMap.mEmitCountData:type_name -> tutorial.UpdateEmitCountMap.MEmitCountDataEntry - 613, // 32: tutorial.ResEmitCDStartData.mEmitCDData:type_name -> tutorial.ResEmitCDStartData.MEmitCDDataEntry - 614, // 33: tutorial.NotifyInitEmitCDTimeData.mEmitCDData:type_name -> tutorial.NotifyInitEmitCDTimeData.MEmitCDDataEntry - 615, // 34: tutorial.NotifyEmitCDTimeEndData.mEmitCDData:type_name -> tutorial.NotifyEmitCDTimeEndData.MEmitCDDataEntry - 616, // 35: tutorial.ResDecorateData.mDecorateData:type_name -> tutorial.ResDecorateData.MDecorateDataEntry - 617, // 36: tutorial.UpdateDecorateData.mDecorateData:type_name -> tutorial.UpdateDecorateData.MDecorateDataEntry - 618, // 37: tutorial.ResShopData.mShopTimeBuyData:type_name -> tutorial.ResShopData.MShopTimeBuyDataEntry - 619, // 38: tutorial.ResShopData.mShopSaleBuyData:type_name -> tutorial.ResShopData.MShopSaleBuyDataEntry - 620, // 39: tutorial.ResShopData.mPackBuyData:type_name -> tutorial.ResShopData.MPackBuyDataEntry - 621, // 40: tutorial.ResShopData.mSpecialOfferBuyData:type_name -> tutorial.ResShopData.MSpecialOfferBuyDataEntry - 622, // 41: tutorial.ResShopData.mUISpecialOfferBuyData:type_name -> tutorial.ResShopData.MUISpecialOfferBuyDataEntry - 623, // 42: tutorial.ResShopData.mFreePackBuyData:type_name -> tutorial.ResShopData.MFreePackBuyDataEntry - 624, // 43: tutorial.ResShopData.mDiamondFirstBuyData:type_name -> tutorial.ResShopData.MDiamondFirstBuyDataEntry - 625, // 44: tutorial.NotifyShopStatusChange.mShopTimeBuyData:type_name -> tutorial.NotifyShopStatusChange.MShopTimeBuyDataEntry - 626, // 45: tutorial.ResShopBuy.mShopTimeBuyData:type_name -> tutorial.ResShopBuy.MShopTimeBuyDataEntry - 627, // 46: tutorial.ReqRenewItemBuyCnt.mShopData:type_name -> tutorial.ReqRenewItemBuyCnt.MShopDataEntry - 628, // 47: tutorial.ResRenewItemBuyCnt.mShopTimeBuyData:type_name -> tutorial.ResRenewItemBuyCnt.MShopTimeBuyDataEntry + 631, // 22: tutorial.ResPlayerGiftData.mGiftData:type_name -> tutorial.ResPlayerGiftData.MGiftDataEntry + 632, // 23: tutorial.UpdatePlayerGiftData.mGiftData:type_name -> tutorial.UpdatePlayerGiftData.MGiftDataEntry + 633, // 24: tutorial.ResPlayerOrderData.mOrderData:type_name -> tutorial.ResPlayerOrderData.MOrderDataEntry + 634, // 25: tutorial.UpdatePlayerOrderData.mOrderData:type_name -> tutorial.UpdatePlayerOrderData.MOrderDataEntry + 635, // 26: tutorial.ResChessColorData.mChessColorData:type_name -> tutorial.ResChessColorData.MChessColorDataEntry + 636, // 27: tutorial.UpdateChessColorData.mChessColorData:type_name -> tutorial.UpdateChessColorData.MChessColorDataEntry + 637, // 28: tutorial.ResEmitMergeMap.mEmitMergeData:type_name -> tutorial.ResEmitMergeMap.MEmitMergeDataEntry + 638, // 29: tutorial.UpdateEmitMergeMap.mEmitMergeData:type_name -> tutorial.UpdateEmitMergeMap.MEmitMergeDataEntry + 639, // 30: tutorial.ResEmitCountMap.mEmitCountData:type_name -> tutorial.ResEmitCountMap.MEmitCountDataEntry + 640, // 31: tutorial.UpdateEmitCountMap.mEmitCountData:type_name -> tutorial.UpdateEmitCountMap.MEmitCountDataEntry + 641, // 32: tutorial.ResEmitCDStartData.mEmitCDData:type_name -> tutorial.ResEmitCDStartData.MEmitCDDataEntry + 642, // 33: tutorial.NotifyInitEmitCDTimeData.mEmitCDData:type_name -> tutorial.NotifyInitEmitCDTimeData.MEmitCDDataEntry + 643, // 34: tutorial.NotifyEmitCDTimeEndData.mEmitCDData:type_name -> tutorial.NotifyEmitCDTimeEndData.MEmitCDDataEntry + 644, // 35: tutorial.ResDecorateData.mDecorateData:type_name -> tutorial.ResDecorateData.MDecorateDataEntry + 645, // 36: tutorial.UpdateDecorateData.mDecorateData:type_name -> tutorial.UpdateDecorateData.MDecorateDataEntry + 646, // 37: tutorial.ResShopData.mShopTimeBuyData:type_name -> tutorial.ResShopData.MShopTimeBuyDataEntry + 647, // 38: tutorial.ResShopData.mShopSaleBuyData:type_name -> tutorial.ResShopData.MShopSaleBuyDataEntry + 648, // 39: tutorial.ResShopData.mPackBuyData:type_name -> tutorial.ResShopData.MPackBuyDataEntry + 649, // 40: tutorial.ResShopData.mSpecialOfferBuyData:type_name -> tutorial.ResShopData.MSpecialOfferBuyDataEntry + 650, // 41: tutorial.ResShopData.mUISpecialOfferBuyData:type_name -> tutorial.ResShopData.MUISpecialOfferBuyDataEntry + 651, // 42: tutorial.ResShopData.mFreePackBuyData:type_name -> tutorial.ResShopData.MFreePackBuyDataEntry + 652, // 43: tutorial.ResShopData.mDiamondFirstBuyData:type_name -> tutorial.ResShopData.MDiamondFirstBuyDataEntry + 653, // 44: tutorial.NotifyShopStatusChange.mShopTimeBuyData:type_name -> tutorial.NotifyShopStatusChange.MShopTimeBuyDataEntry + 654, // 45: tutorial.ResShopBuy.mShopTimeBuyData:type_name -> tutorial.ResShopBuy.MShopTimeBuyDataEntry + 655, // 46: tutorial.ReqRenewItemBuyCnt.mShopData:type_name -> tutorial.ReqRenewItemBuyCnt.MShopDataEntry + 656, // 47: tutorial.ResRenewItemBuyCnt.mShopTimeBuyData:type_name -> tutorial.ResRenewItemBuyCnt.MShopTimeBuyDataEntry 89, // 48: tutorial.ResBriefEmailData.mEmailList:type_name -> tutorial.BriefEmailStruct 89, // 49: tutorial.NotifyNewBriefEmailData.mEmailList:type_name -> tutorial.BriefEmailStruct 99, // 50: tutorial.NotifyLimitedTimeActiveData.mActiveList:type_name -> tutorial.LimitedTimeActiveStruct 100, // 51: tutorial.NotifyLimitedTimeActiveEnd.mActiveList:type_name -> tutorial.LimitedTimeEndStruct 154, // 52: tutorial.CategoryIllustratedData.Items:type_name -> tutorial.SingleIllustratedItem 155, // 53: tutorial.ResIllustratedInfo.Datas:type_name -> tutorial.CategoryIllustratedData - 629, // 54: tutorial.ResKeyValueData.KeyValues:type_name -> tutorial.ResKeyValueData.KeyValuesEntry - 630, // 55: tutorial.UpdateKeyValueData.KeyValues:type_name -> tutorial.UpdateKeyValueData.KeyValuesEntry + 657, // 54: tutorial.ResKeyValueData.KeyValues:type_name -> tutorial.ResKeyValueData.KeyValuesEntry + 658, // 55: tutorial.UpdateKeyValueData.KeyValues:type_name -> tutorial.UpdateKeyValueData.KeyValuesEntry 203, // 56: tutorial.ResChampshipData.GroupRankDataList:type_name -> tutorial.ChampshipsPlayerInfo 203, // 57: tutorial.NotifyNewChampshipRank.GroupRankDataList:type_name -> tutorial.ChampshipsPlayerInfo 203, // 58: tutorial.NotifyUpdateChampshipRank.GroupRankDataList:type_name -> tutorial.ChampshipsPlayerInfo 203, // 59: tutorial.ResChampshipAddScore.GroupRankDataList:type_name -> tutorial.ChampshipsPlayerInfo 203, // 60: tutorial.ResChampshipAddTime.GroupRankDataList:type_name -> tutorial.ChampshipsPlayerInfo 217, // 61: tutorial.ResPlayerPayData.PlayerPayData:type_name -> tutorial.PlayerPayItem - 631, // 62: tutorial.ResAdPackData.PackData:type_name -> tutorial.ResAdPackData.PackDataEntry - 632, // 63: tutorial.NotifyAdPackData.PackData:type_name -> tutorial.NotifyAdPackData.PackDataEntry - 633, // 64: tutorial.ResWatchAdPack.PackData:type_name -> tutorial.ResWatchAdPack.PackDataEntry + 659, // 62: tutorial.ResAdPackData.PackData:type_name -> tutorial.ResAdPackData.PackDataEntry + 660, // 63: tutorial.NotifyAdPackData.PackData:type_name -> tutorial.NotifyAdPackData.PackDataEntry + 661, // 64: tutorial.ResWatchAdPack.PackData:type_name -> tutorial.ResWatchAdPack.PackDataEntry 262, // 65: tutorial.ResFriendData.FriendInfos:type_name -> tutorial.FriendInfo 262, // 66: tutorial.AddFriendData.Finfo:type_name -> tutorial.FriendInfo 262, // 67: tutorial.ResWillPlayerDetail.PlayerInfos:type_name -> tutorial.FriendInfo @@ -38432,21 +40184,21 @@ var file_Gameapi_proto_depIdxs = []int32{ 341, // 109: tutorial.ResFriendEventData.MFriendEventData:type_name -> tutorial.FriendEventData 341, // 110: tutorial.NotifyNewFriendEvent.NewEvent:type_name -> tutorial.FriendEventData 257, // 111: tutorial.PetHomeInterActST.BriefProfile:type_name -> tutorial.ResPlayerBriefProfileData - 634, // 112: tutorial.ResPetHomeData.SelectDecorateMap:type_name -> tutorial.ResPetHomeData.SelectDecorateMapEntry - 635, // 113: tutorial.ReqSaveSelectDecorate.SelectDecorateMap:type_name -> tutorial.ReqSaveSelectDecorate.SelectDecorateMapEntry - 636, // 114: tutorial.ResSaveSelectDecorate.SelectDecorateMap:type_name -> tutorial.ResSaveSelectDecorate.SelectDecorateMapEntry + 662, // 112: tutorial.ResPetHomeData.SelectDecorateMap:type_name -> tutorial.ResPetHomeData.SelectDecorateMapEntry + 663, // 113: tutorial.ReqSaveSelectDecorate.SelectDecorateMap:type_name -> tutorial.ReqSaveSelectDecorate.SelectDecorateMapEntry + 664, // 114: tutorial.ResSaveSelectDecorate.SelectDecorateMap:type_name -> tutorial.ResSaveSelectDecorate.SelectDecorateMapEntry 257, // 115: tutorial.ResOpenOtherPetHome.BriefProfile:type_name -> tutorial.ResPlayerBriefProfileData - 637, // 116: tutorial.ResOpenOtherPetHome.SelectDecorateMap:type_name -> tutorial.ResOpenOtherPetHome.SelectDecorateMapEntry + 665, // 116: tutorial.ResOpenOtherPetHome.SelectDecorateMap:type_name -> tutorial.ResOpenOtherPetHome.SelectDecorateMapEntry 349, // 117: tutorial.ResPetHomeInterActST.mPetHomeInterActSTs:type_name -> tutorial.PetHomeInterActST 257, // 118: tutorial.ResShiftVisitPet.BriefProfile:type_name -> tutorial.ResPlayerBriefProfileData - 638, // 119: tutorial.ResShiftVisitPet.SelectDecorateMap:type_name -> tutorial.ResShiftVisitPet.SelectDecorateMapEntry + 666, // 119: tutorial.ResShiftVisitPet.SelectDecorateMap:type_name -> tutorial.ResShiftVisitPet.SelectDecorateMapEntry 372, // 120: tutorial.UseItemRequest.items:type_name -> tutorial.Item 371, // 121: tutorial.UseItemRequest.price:type_name -> tutorial.IntPack - 639, // 122: tutorial.UseItemRequest.attrs:type_name -> tutorial.UseItemRequest.AttrsEntry + 667, // 122: tutorial.UseItemRequest.attrs:type_name -> tutorial.UseItemRequest.AttrsEntry 3, // 123: tutorial.UseItemResponse.code:type_name -> tutorial.UseItemResponse.CODE 372, // 124: tutorial.UseItemResponse.items:type_name -> tutorial.Item 371, // 125: tutorial.UseItemResponse.price:type_name -> tutorial.IntPack - 640, // 126: tutorial.UseItemResponse.attrs:type_name -> tutorial.UseItemResponse.AttrsEntry + 668, // 126: tutorial.UseItemResponse.attrs:type_name -> tutorial.UseItemResponse.AttrsEntry 1, // 127: tutorial.ResSetEnergyMul.ResultCode:type_name -> tutorial.RES_CODE 454, // 128: tutorial.UserInfo.AvatarList:type_name -> tutorial.AvatarInfo 450, // 129: tutorial.UserInfo.FaceList:type_name -> tutorial.FaceInfo @@ -38454,13 +40206,13 @@ var file_Gameapi_proto_depIdxs = []int32{ 1, // 131: tutorial.ResBuyEnergy.Code:type_name -> tutorial.RES_CODE 386, // 132: tutorial.Handbook.Handbooks:type_name -> tutorial.HandbookInfo 1, // 133: tutorial.ResGetHandbookReward.Code:type_name -> tutorial.RES_CODE - 641, // 134: tutorial.ReqRewardOrder.mChessData:type_name -> tutorial.ReqRewardOrder.MChessDataEntry + 669, // 134: tutorial.ReqRewardOrder.mChessData:type_name -> tutorial.ReqRewardOrder.MChessDataEntry 1, // 135: tutorial.ResRewardOrder.Code:type_name -> tutorial.RES_CODE 391, // 136: tutorial.ResOrderList.OrderList:type_name -> tutorial.Order 1, // 137: tutorial.ResDecorate.Code:type_name -> tutorial.RES_CODE 1, // 138: tutorial.ResDecorateAll.Code:type_name -> tutorial.RES_CODE 399, // 139: tutorial.ResCardInfo.CardList:type_name -> tutorial.Card - 642, // 140: tutorial.ResCardInfo.AllCard:type_name -> tutorial.ResCardInfo.AllCardEntry + 670, // 140: tutorial.ResCardInfo.AllCard:type_name -> tutorial.ResCardInfo.AllCardEntry 1, // 141: tutorial.ResMasterCard.Code:type_name -> tutorial.RES_CODE 1, // 142: tutorial.ResCardCollectReward.Code:type_name -> tutorial.RES_CODE 1, // 143: tutorial.ResExStarReward.Code:type_name -> tutorial.RES_CODE @@ -38476,11 +40228,11 @@ var file_Gameapi_proto_depIdxs = []int32{ 1, // 153: tutorial.ResRefuseCardExchange.Code:type_name -> tutorial.RES_CODE 1, // 154: tutorial.ResGetFriendCard.Code:type_name -> tutorial.RES_CODE 1, // 155: tutorial.ResGuideReward.Code:type_name -> tutorial.RES_CODE - 643, // 156: tutorial.ResGuildInfo.Reward:type_name -> tutorial.ResGuildInfo.RewardEntry + 671, // 156: tutorial.ResGuildInfo.Reward:type_name -> tutorial.ResGuildInfo.RewardEntry 437, // 157: tutorial.ResItemPop.Items:type_name -> tutorial.ItemInfo 438, // 158: tutorial.ResItemPop.CardPacks:type_name -> tutorial.CardPack - 644, // 159: tutorial.ResDailyTask.WeekReward:type_name -> tutorial.ResDailyTask.WeekRewardEntry - 645, // 160: tutorial.ResDailyTask.DailyTask:type_name -> tutorial.ResDailyTask.DailyTaskEntry + 672, // 159: tutorial.ResDailyTask.WeekReward:type_name -> tutorial.ResDailyTask.WeekRewardEntry + 673, // 160: tutorial.ResDailyTask.DailyTask:type_name -> tutorial.ResDailyTask.DailyTaskEntry 437, // 161: tutorial.DailyWeek.Items:type_name -> tutorial.ItemInfo 442, // 162: tutorial.DailyTask.Progress:type_name -> tutorial.QuestProgress 437, // 163: tutorial.DailyTask.Items:type_name -> tutorial.ItemInfo @@ -38499,8 +40251,8 @@ var file_Gameapi_proto_depIdxs = []int32{ 1, // 176: tutorial.ResGetSevenLoginReward.Code:type_name -> tutorial.RES_CODE 1, // 177: tutorial.ResGetMonthLoginReward.Code:type_name -> tutorial.RES_CODE 464, // 178: tutorial.ResActivity.ActiveList:type_name -> tutorial.ActivityInfo - 646, // 179: tutorial.ResLimitEvent.LimitEventList:type_name -> tutorial.ResLimitEvent.LimitEventListEntry - 647, // 180: tutorial.ResLimitEventProgress.ProgressReward:type_name -> tutorial.ResLimitEventProgress.ProgressRewardEntry + 674, // 179: tutorial.ResLimitEvent.LimitEventList:type_name -> tutorial.ResLimitEvent.LimitEventListEntry + 675, // 180: tutorial.ResLimitEventProgress.ProgressReward:type_name -> tutorial.ResLimitEventProgress.ProgressRewardEntry 1, // 181: tutorial.ResLimitEventReward.Code:type_name -> tutorial.RES_CODE 1, // 182: tutorial.ResSelectLimitEvent.Code:type_name -> tutorial.RES_CODE 1, // 183: tutorial.ResLimitSenceReward.Code:type_name -> tutorial.RES_CODE @@ -38509,7 +40261,7 @@ var file_Gameapi_proto_depIdxs = []int32{ 481, // 186: tutorial.ResFriendLog.Player:type_name -> tutorial.ResPlayerSimple 483, // 187: tutorial.NotifyFriendLog.info:type_name -> tutorial.ResFriendLog 486, // 188: tutorial.NotifyFriendCard.Info:type_name -> tutorial.ResFriendCard - 648, // 189: tutorial.ResKv.kv:type_name -> tutorial.ResKv.KvEntry + 676, // 189: tutorial.ResKv.kv:type_name -> tutorial.ResKv.KvEntry 481, // 190: tutorial.ResFriendRecommend.List:type_name -> tutorial.ResPlayerSimple 1, // 191: tutorial.ResFriendIgnore.Code:type_name -> tutorial.RES_CODE 481, // 192: tutorial.ResFriendList.FriendList:type_name -> tutorial.ResPlayerSimple @@ -38523,61 +40275,82 @@ var file_Gameapi_proto_depIdxs = []int32{ 481, // 200: tutorial.ResAgreeFriend.Player:type_name -> tutorial.ResPlayerSimple 1, // 201: tutorial.ResRefuseFriend.Code:type_name -> tutorial.RES_CODE 1, // 202: tutorial.ResDelFriend.Code:type_name -> tutorial.RES_CODE - 649, // 203: tutorial.ResRank.RankList:type_name -> tutorial.ResRank.RankListEntry - 650, // 204: tutorial.ResMailList.MailList:type_name -> tutorial.ResMailList.MailListEntry + 677, // 203: tutorial.ResRank.RankList:type_name -> tutorial.ResRank.RankListEntry + 678, // 204: tutorial.ResMailList.MailList:type_name -> tutorial.ResMailList.MailListEntry 437, // 205: tutorial.MailInfo.Items:type_name -> tutorial.ItemInfo 515, // 206: tutorial.MailNotify.Info:type_name -> tutorial.MailInfo 1, // 207: tutorial.ResReadMail.Code:type_name -> tutorial.RES_CODE 1, // 208: tutorial.ResGetMailReward.Code:type_name -> tutorial.RES_CODE 1, // 209: tutorial.ResDeleteMail.Code:type_name -> tutorial.RES_CODE - 651, // 210: tutorial.ResCharge.SpecialShop:type_name -> tutorial.ResCharge.SpecialShopEntry - 652, // 211: tutorial.ResCharge.ChessShop:type_name -> tutorial.ResCharge.ChessShopEntry - 653, // 212: tutorial.ResCharge.Gift:type_name -> tutorial.ResCharge.GiftEntry + 679, // 210: tutorial.ResCharge.SpecialShop:type_name -> tutorial.ResCharge.SpecialShopEntry + 680, // 211: tutorial.ResCharge.ChessShop:type_name -> tutorial.ResCharge.ChessShopEntry + 681, // 212: tutorial.ResCharge.Gift:type_name -> tutorial.ResCharge.GiftEntry 1, // 213: tutorial.ResFreeShop.Code:type_name -> tutorial.RES_CODE 1, // 214: tutorial.ResBuyChessShop.Code:type_name -> tutorial.RES_CODE - 1, // 215: tutorial.ResRefreshChessShop.Code:type_name -> tutorial.RES_CODE - 654, // 216: tutorial.ResEndless.EndlessList:type_name -> tutorial.ResEndless.EndlessListEntry - 437, // 217: tutorial.ResEndlessInfo.Items:type_name -> tutorial.ItemInfo - 1, // 218: tutorial.ResEndlessReward.Code:type_name -> tutorial.RES_CODE - 1, // 219: tutorial.ResPiggyBankReward.Code:type_name -> tutorial.RES_CODE - 1, // 220: tutorial.ResShippingOrder.Code:type_name -> tutorial.RES_CODE - 1, // 221: tutorial.ResChampshipReward.Code:type_name -> tutorial.RES_CODE - 1, // 222: tutorial.ResChampshipRankReward.Code:type_name -> tutorial.RES_CODE - 655, // 223: tutorial.ResChampshipRank.RankList:type_name -> tutorial.ResChampshipRank.RankListEntry - 656, // 224: tutorial.ResChampshipPreRank.RankList:type_name -> tutorial.ResChampshipPreRank.RankListEntry - 657, // 225: tutorial.ResNotifyCard.Card:type_name -> tutorial.ResNotifyCard.CardEntry - 658, // 226: tutorial.ResNotifyCard.Master:type_name -> tutorial.ResNotifyCard.MasterEntry - 1, // 227: tutorial.ResSetFacebookUrl.Code:type_name -> tutorial.RES_CODE - 659, // 228: tutorial.ResMining.Map:type_name -> tutorial.ResMining.MapEntry - 660, // 229: tutorial.ReqMiningTake.Map:type_name -> tutorial.ReqMiningTake.MapEntry - 1, // 230: tutorial.ResMiningTake.Code:type_name -> tutorial.RES_CODE - 1, // 231: tutorial.ResMiningReward.Code:type_name -> tutorial.RES_CODE - 661, // 232: tutorial.ResActRed.Red:type_name -> tutorial.ResActRed.RedEntry - 464, // 233: tutorial.ActivityNotify.Info:type_name -> tutorial.ActivityInfo - 662, // 234: tutorial.ResItem.Item:type_name -> tutorial.ResItem.ItemEntry - 663, // 235: tutorial.ItemNotify.Item:type_name -> tutorial.ItemNotify.ItemEntry - 579, // 236: tutorial.ResGuessColor.Opponent:type_name -> tutorial.opponent - 664, // 237: tutorial.ReqGuessColorTake.Map:type_name -> tutorial.ReqGuessColorTake.MapEntry - 1, // 238: tutorial.ResGuessColorTake.Code:type_name -> tutorial.RES_CODE - 1, // 239: tutorial.ResGuessColorReward.Code:type_name -> tutorial.RES_CODE - 586, // 240: tutorial.ResRace.Opponent:type_name -> tutorial.raceopponent - 1, // 241: tutorial.ResRaceStart.Code:type_name -> tutorial.RES_CODE - 1, // 242: tutorial.ResRaceReward.Code:type_name -> tutorial.RES_CODE - 440, // 243: tutorial.ResDailyTask.WeekRewardEntry.value:type_name -> tutorial.DailyWeek - 441, // 244: tutorial.ResDailyTask.DailyTaskEntry.value:type_name -> tutorial.DailyTask - 472, // 245: tutorial.ResLimitEvent.LimitEventListEntry.value:type_name -> tutorial.LimitEvent - 481, // 246: tutorial.ResRank.RankListEntry.value:type_name -> tutorial.ResPlayerSimple - 515, // 247: tutorial.ResMailList.MailListEntry.value:type_name -> tutorial.MailInfo - 524, // 248: tutorial.ResCharge.SpecialShopEntry.value:type_name -> tutorial.ResSpecialShop - 525, // 249: tutorial.ResCharge.ChessShopEntry.value:type_name -> tutorial.ResChessShop - 534, // 250: tutorial.ResEndless.EndlessListEntry.value:type_name -> tutorial.ResEndlessInfo - 482, // 251: tutorial.ResChampshipRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank - 482, // 252: tutorial.ResChampshipPreRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank - 253, // [253:253] is the sub-list for method output_type - 253, // [253:253] is the sub-list for method input_type - 253, // [253:253] is the sub-list for extension type_name - 253, // [253:253] is the sub-list for extension extendee - 0, // [0:253] is the sub-list for field type_name + 682, // 215: tutorial.ReqBuyChessShop2.mChessData:type_name -> tutorial.ReqBuyChessShop2.MChessDataEntry + 1, // 216: tutorial.ResBuyChessShop2.Code:type_name -> tutorial.RES_CODE + 1, // 217: tutorial.ResRefreshChessShop.Code:type_name -> tutorial.RES_CODE + 683, // 218: tutorial.ResEndless.EndlessList:type_name -> tutorial.ResEndless.EndlessListEntry + 437, // 219: tutorial.ResEndlessInfo.Items:type_name -> tutorial.ItemInfo + 1, // 220: tutorial.ResEndlessReward.Code:type_name -> tutorial.RES_CODE + 1, // 221: tutorial.ResPiggyBankReward.Code:type_name -> tutorial.RES_CODE + 1, // 222: tutorial.ResShippingOrder.Code:type_name -> tutorial.RES_CODE + 1, // 223: tutorial.ResChampshipReward.Code:type_name -> tutorial.RES_CODE + 1, // 224: tutorial.ResChampshipRankReward.Code:type_name -> tutorial.RES_CODE + 684, // 225: tutorial.ResChampshipRank.RankList:type_name -> tutorial.ResChampshipRank.RankListEntry + 685, // 226: tutorial.ResChampshipPreRank.RankList:type_name -> tutorial.ResChampshipPreRank.RankListEntry + 686, // 227: tutorial.ResNotifyCard.Card:type_name -> tutorial.ResNotifyCard.CardEntry + 687, // 228: tutorial.ResNotifyCard.Master:type_name -> tutorial.ResNotifyCard.MasterEntry + 1, // 229: tutorial.ResSetFacebookUrl.Code:type_name -> tutorial.RES_CODE + 688, // 230: tutorial.ResMining.Map:type_name -> tutorial.ResMining.MapEntry + 689, // 231: tutorial.ReqMiningTake.Map:type_name -> tutorial.ReqMiningTake.MapEntry + 1, // 232: tutorial.ResMiningTake.Code:type_name -> tutorial.RES_CODE + 1, // 233: tutorial.ResMiningReward.Code:type_name -> tutorial.RES_CODE + 690, // 234: tutorial.ResActRed.Red:type_name -> tutorial.ResActRed.RedEntry + 464, // 235: tutorial.ActivityNotify.Info:type_name -> tutorial.ActivityInfo + 691, // 236: tutorial.ResItem.Item:type_name -> tutorial.ResItem.ItemEntry + 692, // 237: tutorial.ItemNotify.Item:type_name -> tutorial.ItemNotify.ItemEntry + 581, // 238: tutorial.ResGuessColor.Opponent:type_name -> tutorial.opponent + 693, // 239: tutorial.ReqGuessColorTake.Map:type_name -> tutorial.ReqGuessColorTake.MapEntry + 1, // 240: tutorial.ResGuessColorTake.Code:type_name -> tutorial.RES_CODE + 1, // 241: tutorial.ResGuessColorReward.Code:type_name -> tutorial.RES_CODE + 588, // 242: tutorial.ResRace.Opponent:type_name -> tutorial.raceopponent + 1, // 243: tutorial.ResRaceStart.Code:type_name -> tutorial.RES_CODE + 1, // 244: tutorial.ResRaceReward.Code:type_name -> tutorial.RES_CODE + 437, // 245: tutorial.ResPlayroom.Items:type_name -> tutorial.ItemInfo + 598, // 246: tutorial.ResPlayroom.Opponent:type_name -> tutorial.RoomOpponent + 597, // 247: tutorial.ResPlayroom.Friend:type_name -> tutorial.FriendRoom + 694, // 248: tutorial.ResPlayroom.Playroom:type_name -> tutorial.ResPlayroom.PlayroomEntry + 695, // 249: tutorial.ResPlayroom.Mood:type_name -> tutorial.ResPlayroom.MoodEntry + 437, // 250: tutorial.ResPlayroom.LoseItem:type_name -> tutorial.ItemInfo + 437, // 251: tutorial.NotifyPlayroomLose.LoseItem:type_name -> tutorial.ItemInfo + 696, // 252: tutorial.ResPlayroomInfo.Playroom:type_name -> tutorial.ResPlayroomInfo.PlayroomEntry + 697, // 253: tutorial.ResPlayroomInfo.Items:type_name -> tutorial.ResPlayroomInfo.ItemsEntry + 1, // 254: tutorial.ResPlayroomGame.Code:type_name -> tutorial.RES_CODE + 1, // 255: tutorial.ResPlayroomInteract.Code:type_name -> tutorial.RES_CODE + 1, // 256: tutorial.ResPlayroomSetRoom.Code:type_name -> tutorial.RES_CODE + 1, // 257: tutorial.ResPlayroomSelectReward.Code:type_name -> tutorial.RES_CODE + 1, // 258: tutorial.ResPlayroomLose.Code:type_name -> tutorial.RES_CODE + 1, // 259: tutorial.ResPlayroomWork.Code:type_name -> tutorial.RES_CODE + 1, // 260: tutorial.ResPlayroomRest.Code:type_name -> tutorial.RES_CODE + 1, // 261: tutorial.ResPlayroomDraw.Code:type_name -> tutorial.RES_CODE + 1, // 262: tutorial.ResPlayroomChip.Code:type_name -> tutorial.RES_CODE + 440, // 263: tutorial.ResDailyTask.WeekRewardEntry.value:type_name -> tutorial.DailyWeek + 441, // 264: tutorial.ResDailyTask.DailyTaskEntry.value:type_name -> tutorial.DailyTask + 472, // 265: tutorial.ResLimitEvent.LimitEventListEntry.value:type_name -> tutorial.LimitEvent + 481, // 266: tutorial.ResRank.RankListEntry.value:type_name -> tutorial.ResPlayerSimple + 515, // 267: tutorial.ResMailList.MailListEntry.value:type_name -> tutorial.MailInfo + 524, // 268: tutorial.ResCharge.SpecialShopEntry.value:type_name -> tutorial.ResSpecialShop + 525, // 269: tutorial.ResCharge.ChessShopEntry.value:type_name -> tutorial.ResChessShop + 536, // 270: tutorial.ResEndless.EndlessListEntry.value:type_name -> tutorial.ResEndlessInfo + 482, // 271: tutorial.ResChampshipRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank + 482, // 272: tutorial.ResChampshipPreRank.RankListEntry.value:type_name -> tutorial.ResPlayerRank + 437, // 273: tutorial.ResPlayroomInfo.ItemsEntry.value:type_name -> tutorial.ItemInfo + 274, // [274:274] is the sub-list for method output_type + 274, // [274:274] is the sub-list for method input_type + 274, // [274:274] is the sub-list for extension type_name + 274, // [274:274] is the sub-list for extension extendee + 0, // [0:274] is the sub-list for field type_name } func init() { file_Gameapi_proto_init() } @@ -38591,7 +40364,7 @@ func file_Gameapi_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_Gameapi_proto_rawDesc, NumEnums: 4, - NumMessages: 661, + NumMessages: 694, NumExtensions: 0, NumServices: 0, },