From d5325f59e5f9f9c02722ed0a2690d7f480a560fb Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 24 Dec 2024 18:53:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=B3=BB=E7=BB=9Fbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/GoUtil/sliceUtil.go | 7 + src/server/conf/json.go | 1 + src/server/conf/server.json | 1 + src/server/db/Mysql.go | 3 + src/server/db/SqlStruct.go | 4 +- src/server/game/ChampshipMgr.go | 8 +- src/server/game/FriendMgr.go | 2 +- src/server/game/GameLogic.go | 54 +- src/server/game/Gm.go | 2 +- src/server/game/LimitedTimeTrigger.go | 27 +- src/server/game/LogMgr.go | 2 +- src/server/game/Player.go | 101 +--- src/server/game/PlayerBaseMod.go | 220 ++------ src/server/game/PlayerChessMod.go | 77 ++- src/server/game/PlayerFunc.go | 10 +- src/server/game/PlayerMod.go | 4 +- src/server/game/RegisterNetworkFunc.go | 102 +--- src/server/game/ServerMod.go | 3 + src/server/game/UnitTest.go | 2 +- src/server/game/admin.go | 17 + src/server/game/external.go | 4 +- .../mod/friendTreasure.go/friendTreasure.go | 2 +- src/server/msg/Gameapi.pb.go | 514 +++++++++--------- 23 files changed, 477 insertions(+), 690 deletions(-) diff --git a/src/server/GoUtil/sliceUtil.go b/src/server/GoUtil/sliceUtil.go index 3bb53688..cc1f1a96 100644 --- a/src/server/GoUtil/sliceUtil.go +++ b/src/server/GoUtil/sliceUtil.go @@ -1,6 +1,7 @@ package GoUtil import ( + "fmt" "sort" "strconv" "strings" @@ -218,3 +219,9 @@ func InitNumSlice(start, end int) []int { } return result } + +func IntSliceToString(slice []int) string { + str := fmt.Sprintf("%v", slice) + str = strings.Trim(str, "[]") + return str +} diff --git a/src/server/conf/json.go b/src/server/conf/json.go index 5988a736..9ea65269 100644 --- a/src/server/conf/json.go +++ b/src/server/conf/json.go @@ -9,6 +9,7 @@ import ( ) var Server struct { + AppID int LogLevel string LogPath string WSAddr string diff --git a/src/server/conf/server.json b/src/server/conf/server.json index 15c0d31f..d54cd1c6 100644 --- a/src/server/conf/server.json +++ b/src/server/conf/server.json @@ -1,4 +1,5 @@ { + "AppID": 1, "LogLevel": "debug", "LogPath": "", "TCPAddr": ":3565", diff --git a/src/server/db/Mysql.go b/src/server/db/Mysql.go index 0ee2af1a..fcbf2f74 100644 --- a/src/server/db/Mysql.go +++ b/src/server/db/Mysql.go @@ -187,6 +187,9 @@ func FormatAllMemInsertDb(u interface{}, tableName string) (insertID int64, err if k == reflect.Int32 { Values[i] = ufield.Int() } + if k == reflect.Int64 { + Values[i] = ufield.Int() + } } for i := range Fields { Fields[i] = "`" + Fields[i] + "`" diff --git a/src/server/db/SqlStruct.go b/src/server/db/SqlStruct.go index 42628298..3ab9ce19 100644 --- a/src/server/db/SqlStruct.go +++ b/src/server/db/SqlStruct.go @@ -23,7 +23,7 @@ type Db_Account struct { } type ResPlayerBaseInfo struct { - DwUin int32 `db:"dwUin"` + DwUin int64 `db:"dwUin"` Energy int32 `db:"energy"` Star int32 `db:"star"` RecoverTime int32 `db:"recover_time"` @@ -458,7 +458,7 @@ type SqlAddFriendStruct struct { } type SqlModStruct struct { - DwUin int32 `db:"dwUin"` + DwUin int64 `db:"dwUin"` ModData []byte `db:"mData"` UpdataTime int32 `db:"updateTime"` } diff --git a/src/server/game/ChampshipMgr.go b/src/server/game/ChampshipMgr.go index 5de9d6c0..cfd75874 100644 --- a/src/server/game/ChampshipMgr.go +++ b/src/server/game/ChampshipMgr.go @@ -213,7 +213,7 @@ func (c *ChampshipMgr) GetPreRankMsg(Uid int) *proto.ResChampshipPreRank { continue } RL[int32(k+1)] = &proto.ResPlayerRank{ - Uid: int32(v.Uid), + Uid: int64(v.Uid), Score: float32(v.Score), Name: Robot.Name, Avatar: int32(Robot.Avatar), @@ -226,7 +226,7 @@ func (c *ChampshipMgr) GetPreRankMsg(Uid int) *proto.ResChampshipPreRank { continue } RL[int32(k+1)] = &proto.ResPlayerRank{ - Uid: int32(v.Uid), + Uid: int64(v.Uid), Score: float32(v.Score), Name: SimplePlayer.Name, Avatar: int32(SimplePlayer.Avatar), @@ -266,7 +266,7 @@ func (c *ChampshipMgr) GetRankMsg(Uid int) *proto.ResChampshipRank { continue } RL[int32(k+1)] = &proto.ResPlayerRank{ - Uid: int32(v.Uid), + Uid: int64(v.Uid), Score: float32(v.Score), Name: Robot.Name, Avatar: int32(Robot.Avatar), @@ -279,7 +279,7 @@ func (c *ChampshipMgr) GetRankMsg(Uid int) *proto.ResChampshipRank { continue } RL[int32(k+1)] = &proto.ResPlayerRank{ - Uid: int32(v.Uid), + Uid: int64(v.Uid), Score: float32(v.Score), Name: SimplePlayer.Name, Avatar: int32(SimplePlayer.Avatar), diff --git a/src/server/game/FriendMgr.go b/src/server/game/FriendMgr.go index 86c055d1..6bbe8992 100644 --- a/src/server/game/FriendMgr.go +++ b/src/server/game/FriendMgr.go @@ -96,7 +96,7 @@ func (f *FriendMgr) sync(m *msg.Msg) (interface{}, error) { // 发送消息给玩家 func sendToPlayer(m *msg.Msg) error { - p := G_GameLogicPtr.GetPlayer(int32(m.To)) + p := G_GameLogicPtr.GetPlayer(int64(m.To)) if p == nil || p.stop { return fmt.Errorf("player %d not online", m.To) } diff --git a/src/server/game/GameLogic.go b/src/server/game/GameLogic.go index 116f0c86..6d221fc6 100644 --- a/src/server/game/GameLogic.go +++ b/src/server/game/GameLogic.go @@ -126,7 +126,7 @@ func (gl *GameLogic) DelPlayer(player *Player) { gl.M_Players.Delete(player.M_DwUin) } -func (gl *GameLogic) GetPlayer(DwUin int32) *Player { +func (gl *GameLogic) GetPlayer(DwUin int64) *Player { if v, ok := gl.M_Players.Load(DwUin); ok { return v.(*Player) } @@ -181,9 +181,9 @@ func (ad *GameLogic) NewAccountInsertDataToDB() bool { return false } - insertId = insertId + int64(conf.Server.ServerID*100000) + insertId = insertId + int64(conf.Server.ServerID*100000) + int64(conf.Server.AppID*100000000) playerInfo := &db.ResPlayerBaseInfo{} - playerInfo.DwUin = int32(insertId) + playerInfo.DwUin = int64(insertId) playerInfo.Energy = 100 playerInfo.Star = 0 playerInfo.RecoverTime = int32(time.Now().Unix()) @@ -207,7 +207,7 @@ func (ad *GameLogic) NewAccountInsertDataToDB() bool { encode := gob.NewEncoder(&buf) encode.Encode(&PlayerModList{}) playerMod := &db.SqlModStruct{ - DwUin: int32(insertId), + DwUin: int64(insertId), ModData: buf.Bytes(), UpdataTime: int32(time.Now().Unix()), } @@ -393,7 +393,7 @@ func (ad *GameLogic) GetResSimplePlayerByUid(Id int) *msg.ResPlayerSimple { } return &msg.ResPlayerSimple{ - Uid: int32(player.Uid), + Uid: int64(player.Uid), Name: player.Name, Level: int32(player.Level), Avatar: int32(player.Avatar), @@ -492,46 +492,6 @@ func (ad *GameLogic) ClearData(args []interface{}) { } } -func (ad *GameLogic) InitPromotionInsertDb(player *Player, StartSvrTime int32, EndSvrTime int32, ConfigActId int) int32 { - st := &db.SqlLimitPromotionStruct{} - st.DwUin = player.M_DwUin - st.IsPay = 0 - st.StartSvrTime = StartSvrTime - st.EndSvrTime = EndSvrTime - st.ActiveID = 0 - st.ConfigActId = int32(ConfigActId) - activityID, _ := db.FormatAllMemInsertDb(st, "t_player_LimitPromotion") - - return int32(activityID) -} - -func (ad *GameLogic) InitInfinitePackInsertDb(player *Player, StartSvrTime int32, EndSvrTime int32, ConfigActId int) int32 { - st := &db.SqlLimitInfinitePackStruct{} - st.DwUin = player.M_DwUin - st.CurGear = 1 - st.StartSvrTime = StartSvrTime - st.EndSvrTime = EndSvrTime - st.ActiveID = 0 - st.ConfigActId = int32(ConfigActId) - activityID, _ := db.FormatAllMemInsertDb(st, "t_player_LimitInfinitePack") - - return int32(activityID) -} - -func (ad *GameLogic) Init7DayLoginInsertDb(player *Player, StartSvrTime int32, EndSvrTime int32, ConfigActId int) int32 { - st := &db.SqlSevenDayLoginStruct{} - st.DwUin = player.M_DwUin - st.LastGetTime = 0 - st.StartSvrTime = StartSvrTime - st.EndSvrTime = EndSvrTime - st.ActiveID = 0 - st.GetIndex = 0 - st.ConfigActId = int32(ConfigActId) - activityID, _ := db.FormatAllMemInsertDb(st, "t_player_Limit7DayLogin") - - return int32(activityID) -} - func (ad *GameLogic) LoadSvrGlobalData() { sqlStr := "SELECT * FROM t_server_global_data WHERE Id = ?" @@ -597,7 +557,7 @@ func (ad *GameLogic) ReplaceExistPlayerAndAgent(a gate.Agent, player *Player) er return nil } -func (ad *GameLogic) SendMassage(dwUin int32, Func string, data []byte) bool { +func (ad *GameLogic) SendMassage(dwUin int64, Func string, data []byte) bool { player := ad.GetPlayer(dwUin) if player != nil { agent := player.GetAgentByPlayer() @@ -841,7 +801,7 @@ func (ad *GameLogic) NotifyAll(m *MsgMod.Msg) { } func NotifyPlayer(Uid int, m *MsgMod.Msg) { - p := G_GameLogicPtr.GetPlayer(int32(Uid)) + p := G_GameLogicPtr.GetPlayer(int64(Uid)) if p == nil || p.stop { return } diff --git a/src/server/game/Gm.go b/src/server/game/Gm.go index 060f56b4..a89e3b08 100644 --- a/src/server/game/Gm.go +++ b/src/server/game/Gm.go @@ -51,7 +51,7 @@ func ReqGmCommand(args []interface{}) error { player.PushClientRes(player.PlayMod.mod_list.Card.BackData()) case "addexp": num, _ := strconv.Atoi(arg[1]) - player.GetPlayerBaseMod().AddExp(num) + player.GetPlayerBaseMod().AddExp(player, num) player.PushClientRes(&player.GetPlayerBaseMod().Data) case "setlv": num, _ := strconv.Atoi(arg[1]) diff --git a/src/server/game/LimitedTimeTrigger.go b/src/server/game/LimitedTimeTrigger.go index 92a76a4f..8ebecd34 100644 --- a/src/server/game/LimitedTimeTrigger.go +++ b/src/server/game/LimitedTimeTrigger.go @@ -4,6 +4,7 @@ import ( "fmt" "math" "server/GoUtil" + userCfg "server/conf/user" "server/game/mod/card" "server/game/mod/limitedTimeEvent" MsgMod "server/game/mod/msg" // Ensure this package exists and is correctly referenced @@ -37,7 +38,7 @@ func LimitedTimeEventTrigger(p *Player, AddEventId int) { switch v { case limitedTimeEvent.EVENT_TYPE_HIGH_ROLLER: EnergyMul := p.PlayMod.getBaseMod().GetEnergyMul() - MaxEnergyMul := p.GetPlayerBaseMod().GetMaxEnergyMul() + MaxEnergyMul := p.GetPlayerBaseMod().GetMaxEnergyMul(p) p.PlayMod.getBaseMod().ResetEnergyMul(MaxEnergyMul) NewEnergyMul := p.PlayMod.getBaseMod().GetEnergyMul() OrderMod := p.PlayMod.getOrderMod() @@ -178,3 +179,27 @@ func LimitedTimePlayroomWorkTrigger(p *Player) { }, "PlayroomWork") } } + +func LimitedTimeEnergyAdd(p *Player) { + curtime := time.Now().Unix() + PlayerBaseMod := p.GetPlayerBaseMod() + delta := curtime - (int64)(PlayerBaseMod.Data.RecoverTime) + Recover := userCfg.GetRecover(int(PlayerBaseMod.Data.Level)) + Addsta := int(delta) / Recover + if Addsta <= 0 { + return + } + if PlayerBaseMod.GetMaxEnergy() > PlayerBaseMod.Data.Energy { + PlayerBaseMod.Data.Energy = PlayerBaseMod.Data.Energy + int32(Addsta) + if PlayerBaseMod.Data.Energy > PlayerBaseMod.GetMaxEnergy() { + PlayerBaseMod.Data.Energy = PlayerBaseMod.GetMaxEnergy() + } + p.CallEvent(time.Duration(Recover)*time.Second, func() { + p.lock.Lock() + defer p.lock.Unlock() + LimitedTimeEnergyAdd(p) + }, "AddEnergy") + } + PlayerBaseMod.Data.RecoverTime = int32(curtime) + p.SendErrClienRes(PlayerBaseMod.BackAsset()) +} diff --git a/src/server/game/LogMgr.go b/src/server/game/LogMgr.go index 90ce89d5..364b6906 100644 --- a/src/server/game/LogMgr.go +++ b/src/server/game/LogMgr.go @@ -24,7 +24,7 @@ type LogMgr struct { } type Log struct { - Uid int32 + Uid int64 EventName string Param map[string]interface{} TimeStamp int64 diff --git a/src/server/game/Player.go b/src/server/game/Player.go index 12a1b410..5d3cf5da 100644 --- a/src/server/game/Player.go +++ b/src/server/game/Player.go @@ -41,23 +41,23 @@ import ( //"fmt" type Player struct { - 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 + PlayerBaseMod *PlayerBaseData + PlayMod PlayerMod + M_DwUin int64 + 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 { @@ -185,9 +185,7 @@ func (p *Player) InitPlayer(UserName string) error { p.timerList = make(map[string]*timer.Timer) p.MDispatr = timer.NewDispatcher(100) p.stopSignal = make(chan bool) - p.playerdata = make(map[string]PlayerDataModule) - Base := &PlayerBaseData{PlayerData: NewPlayerData(PLAYER_BASE_DATA, p)} - p.playerdata[PLAYER_BASE_DATA] = Base + Base := &PlayerBaseData{} // 玩家基础数据 ok := Base.LoadDataFromDB(UserName) @@ -195,17 +193,10 @@ func (p *Player) InitPlayer(UserName string) error { log.Debug("load PlayerBaseData failed:", UserName) return errors.New("load PlayerBaseData failed") } - p.playerdata[PLAYER_BASE_DATA] = Base + p.PlayerBaseMod = Base p.M_DwUin = Base.Data.DwUin // 棋盘数据 - Chess := &PlayerChessData{PlayerData: NewPlayerData("PlayerChessData", p)} - ok = Chess.LoadDataFromDB(Base.Data.DwUin) - if !ok { - log.Debug("load PlayerChessData failed:", UserName) - return errors.New("load PlayerChessData failed") - } - p.playerdata["PlayerChessData"] = Chess // 玩家模块数据 modData := &PlayerModData{PlayerData: NewPlayerData("PlayerModData", p)} @@ -377,11 +368,7 @@ func (p *Player) ClearData() { log.Debug("ClearData BeginTx failed:", err) return } - for k, v := range p.playerdata { - if k == PLAYER_BASE_DATA || k == "PlayerChessData" { - v.ClearData() - } - } + p.PlayerBaseMod.ClearData() p.PlayMod.ClearData(p) tx.Commit() p.Stop() @@ -399,9 +386,8 @@ func (p *Player) AutoSaveData() { log.Debug("AutoSaveData BeginTx failed:", err) return } - for _, v := range p.playerdata { - v.SaveDataFromDB("") - } + + p.PlayerBaseMod.SaveDataFromDB("") p.PlayMod.ClearData(p) err = tx.Commit() if err != nil { @@ -425,36 +411,8 @@ func (p *Player) SetAgent(a gate.Agent) { p.agent = a } -func (p *Player) GetIFGameData(key string) interface{} { - v, ok := p.playerdata[key] - if ok { - return v - } - return nil -} - func (p *Player) GetPlayerBaseMod() *PlayerBaseData { - v, ok := p.playerdata[PLAYER_BASE_DATA] - if ok { - return v.(*PlayerBaseData) - } - return nil -} - -func (p *Player) GetGameData(key string) PlayerDataModule { - v, ok := p.playerdata[key] - if ok { - return v - } - return nil -} - -func (p *Player) GetGameMod(key string) interface{} { - v, ok := p.playerdata[key] - if ok { - return v - } - return nil + return p.PlayerBaseMod } func (p *Player) GetAgentByPlayer() gate.Agent { @@ -495,7 +453,7 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { IType := itemCfg.GetItemType(v.Id) switch IType { case item.ITEM_TYPE_ENERGY: // 能量 - err := p.GetPlayerBaseMod().AddEnergy(v.Num) + err := p.GetPlayerBaseMod().AddEnergy(p, v.Num) p.TeLog("asset_change", map[string]interface{}{ "item_id": v.Id, "change_type": change_type, @@ -507,7 +465,7 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { return err } case item.ITEM_TYPE_STAR: // 星星 - err := p.GetPlayerBaseMod().AddStar(v.Num) + err := p.GetPlayerBaseMod().AddStar(p, v.Num) is_update = true if err != nil { return err @@ -700,16 +658,15 @@ func (p *Player) InitPlayerOnly() { p.timerList = make(map[string]*timer.Timer) p.MDispatr = timer.NewDispatcher(10) p.stopSignal = make(chan bool) - p.playerdata = make(map[string]PlayerDataModule) - Base := &PlayerBaseData{PlayerData: NewPlayerData(PLAYER_BASE_DATA, p)} - p.playerdata[PLAYER_BASE_DATA] = Base + + Base := &PlayerBaseData{} // 玩家基础数据 ok := Base.GetDataByUid(p.M_DwUin) if !ok { return } - p.playerdata[PLAYER_BASE_DATA] = Base + p.PlayerBaseMod = Base p.M_DwUin = Base.Data.DwUin // 玩家模块数据 @@ -724,7 +681,7 @@ func (p *Player) InitPlayerOnly() { // 获取玩家简单数据 func (p *Player) GetSimpleData(Uid int, simple *PlayerSimpleData) error { - p.M_DwUin = int32(Uid) + p.M_DwUin = int64(Uid) p.InitPlayerOnly() Base := p.GetPlayerBaseMod() simple.Name = p.GetPlayerBaseMod().GetName() diff --git a/src/server/game/PlayerBaseMod.go b/src/server/game/PlayerBaseMod.go index d91afbdb..02d1cce0 100644 --- a/src/server/game/PlayerBaseMod.go +++ b/src/server/game/PlayerBaseMod.go @@ -1,12 +1,9 @@ package game import ( - "bytes" "context" "database/sql" - "encoding/gob" "errors" - "server/GoUtil" "server/MergeConst" userCfg "server/conf/user" "server/db" @@ -15,26 +12,14 @@ import ( "server/game/mod/quest" "server/msg" "server/pkg/github.com/name5566/leaf/log" - "server/pkg/github.com/name5566/leaf/timer" telog "server/thinkdata" "time" - "github.com/robfig/cron/v3" "google.golang.org/protobuf/proto" ) type PlayerBaseData struct { - *PlayerData - Data msg.ResPlayerBaseInfo - KeyValueData map[int]string - MLeafTimer *timer.Timer - MTicker *time.Ticker - McronSave *cron.Cron - McronSaveID cron.EntryID - Mdispatr *timer.Dispatcher - DailyRenewTime int32 - Update bool - isKeyValueDb bool + Data msg.ResPlayerBaseInfo } func (p *PlayerBaseData) GetData() interface{} { @@ -103,9 +88,6 @@ func (p *PlayerBaseData) LoadDataFromDB(UserName interface{}) bool { log.Debug("get data failed, err:%v\n", err) return false } - sqlStr1 := "SELECT * FROM t_player_client_data WHERE dwUin = ?" - sqlStruck1 := db.SqlModStruct{} - db.SqlDb.Get(&sqlStruck1, sqlStr1, sqlStruck.DwUin) p.Data.Diamond = sqlStruck.Diamond p.Data.DwUin = sqlStruck.DwUin @@ -127,72 +109,12 @@ func (p *PlayerBaseData) LoadDataFromDB(UserName interface{}) bool { p.Data.Rolecreatetime = sqlStruck.Rolecreatetime p.Data.LastChampGroupID = sqlStruck.LastChampGroupID p.Data.ChampshipsGroupID = sqlStruck.ChampshipsGroupID - p.DailyRenewTime = sqlStruck.DailyRenewTime p.Data.NoAd = sqlStruck.NoAd p.Data.FaceBookId = sqlStruck.FaceBookId - p.McronSave = cron.New() - p.Reconnect(false) - - p.KeyValueData = make(map[int]string) - if len(sqlStruck1.ModData) > 0 { - var buf bytes.Buffer - buf.Write(sqlStruck1.ModData) - decode := gob.NewDecoder(&buf) - err := decode.Decode(&p.KeyValueData) - if err != nil { - log.Debug("decode failed, err:%v\n", err) - } - } return true } -func (p *PlayerBaseData) AddSta() error { - curtime := time.Now().Unix() - delta := curtime - (int64)(p.Data.RecoverTime) - Recover := userCfg.GetRecover(int(p.Data.Level)) - Addsta := int(delta) / Recover - if Addsta <= 0 { - return nil - } - if p.GetMaxEnergy() > p.Data.Energy { - p.Data.Energy = p.Data.Energy + int32(Addsta) - if p.Data.Energy > p.GetMaxEnergy() { - p.Data.Energy = p.GetMaxEnergy() - } - p.M_Player.CallEvent(time.Duration(Recover)*time.Second, func() { - p.M_Player.lock.Lock() - defer p.M_Player.lock.Unlock() - p.AddSta() - }, "AddEnergy") - } - p.Data.RecoverTime = int32(curtime) - p.M_Player.SendErrClienRes(p.BackAsset()) - return nil -} - -func (p *PlayerBaseData) Reconnect(b bool) { - p.AddSta() - if G_GameLogicPtr.DailyTaskTimestamp > (int64)(p.DailyRenewTime) { - p.DailyRenewTime = int32(G_GameLogicPtr.DailyTaskTimestamp) - p.Data.EnergyBuyCount = 0 - } - // GoUtil.RegisterEvent(MergeConst.Notify_Daily_Renew, p.Notify_Daily_Renew, p) -} - -func (p *PlayerBaseData) Notify_Daily_Renew(param []interface{}) { - p.Data.EnergyBuyCount = 0 - p.DailyRenewTime = int32(G_GameLogicPtr.DailyTaskTimestamp) - notify := &msg.NotifyRenewBuyEnergyCnt{} - notify.DwUin = p.M_Player.M_DwUin - notify.CurCnt = 0 - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifyRenewBuyEnergyCnt", data) - -} - func (p *PlayerBaseData) SaveDataFromDB(Key interface{}) bool { // G_getGameLogic().Mlogger.Debug("SaveDataFromDB:", p.Data.DwUin) sqlStruck := db.ResPlayerBaseInfo{} @@ -214,29 +136,18 @@ func (p *PlayerBaseData) SaveDataFromDB(Key interface{}) bool { sqlStruck.LogoutTime = p.Data.LogoutTime sqlStruck.Todayolinetime = p.Data.Todayolinetime sqlStruck.Rolecreatetime = p.Data.Rolecreatetime - sqlStruck.DailyRenewTime = p.DailyRenewTime sqlStruck.NoAd = p.Data.NoAd sqlStruck.ChampshipsGroupID = p.Data.ChampshipsGroupID sqlStruck.LastChampGroupID = p.Data.LastChampGroupID sqlStruck.FaceBookId = p.Data.FaceBookId db.FormatAllMemUpdateDb(&sqlStruck, "t_player_baseinfo", "dwUin") - // 存储KeyValue - var buf bytes.Buffer - encode := gob.NewEncoder(&buf) - encode.Encode(p.KeyValueData) - // log.Debug("player :%d KeyValueData Save:%v ", p.Data.DwUin, p.KeyValueData) - db.SavePlayerClientData(&db.SqlModStruct{ - DwUin: p.Data.DwUin, - ModData: buf.Bytes(), - UpdataTime: int32(GoUtil.Now()), - }) return true } -func (p *PlayerBaseData) GetMaxEnergyMul() int { +func (p *PlayerBaseData) GetMaxEnergyMul(player *Player) int { MaxEnergyMul := userCfg.GetEnergyMulByLv(int(p.Data.Level)) - if p.M_Player.PlayMod.getLimitedTimeEventMod().CheckExist(limitedTimeEvent.EVENT_TYPE_HIGH_ROLLER) { + if player.PlayMod.getLimitedTimeEventMod().CheckExist(limitedTimeEvent.EVENT_TYPE_HIGH_ROLLER) { MaxEnergyMul = 10 } return MaxEnergyMul @@ -265,26 +176,6 @@ func (p *PlayerBaseData) GetMaxEnergy() int32 { return MaxSta } -// 定时增加体力 -func (p *PlayerBaseData) NotifyAddSta(cnt int, timeStamp int64) { - p.M_Player.lock.Lock() - defer p.M_Player.lock.Unlock() - if p.GetMaxEnergy() <= p.Data.Energy { - return - } - G_getGameLogic().Mlogger.Debug("NotifyAddSta:", p.Data.DwUin) - p.Data.Energy = p.Data.Energy + int32(cnt) - p.Data.RecoverTime = int32(timeStamp) - - notify := &msg.NotifyAddEnergy{} - notify.AddCnt = int32(cnt) - notify.DwUin = p.M_Player.M_DwUin - - agent := p.GetPlayer().GetAgentByPlayer() - data, _ := proto.Marshal(notify) - G_getGameLogic().PackResInfo(agent, "NotifyAddEnergy", data) -} - // 更新游戏道具 func (p *PlayerBaseData) UpdateBaseItemInfo(update *msg.UpdateBaseItemInfo) { for k, v := range update.MUpdateItem { @@ -304,7 +195,7 @@ func (p *PlayerBaseData) UpdateBaseItemInfo(update *msg.UpdateBaseItemInfo) { } -func (p *PlayerBaseData) ReqRemoveAd(buf []byte) { +func (p *PlayerBaseData) ReqRemoveAd(player *Player, buf []byte) { req := &msg.ReqRemoveAd{} res := &msg.ResRemoveAd{} proto.Unmarshal(buf, req) @@ -312,31 +203,18 @@ func (p *PlayerBaseData) ReqRemoveAd(buf []byte) { p.Data.NoAd = 1 res.ResultCode = 0 - agent := p.GetPlayer().GetAgentByPlayer() + agent := player.GetAgentByPlayer() data, _ := proto.Marshal(res) G_getGameLogic().PackResInfo(agent, "ResRemoveAd", data) } func (p *PlayerBaseData) ResPlayerBaseInfo(player *Player) { - if player != p.M_Player { - return - } - agent := p.GetPlayer().GetAgentByPlayer() + agent := player.GetAgentByPlayer() data, _ := proto.Marshal(&p.Data) G_getGameLogic().PackResInfo(agent, "ResPlayerBaseInfo", data) } -func (p *PlayerBaseData) BackKv() *msg.ResKv { - kv := make(map[int32]string) - for k, v := range p.KeyValueData { - kv[int32(k)] = v - } - return &msg.ResKv{ - Kv: kv, - } -} - -func (p *PlayerBaseData) ReqBindFacebookAccount(buf []byte) { +func (p *PlayerBaseData) ReqBindFacebookAccount(player *Player, buf []byte) { req := &msg.ReqBindFacebookAccount{} res := &msg.ResBindFacebookAccount{} proto.Unmarshal(buf, req) @@ -360,19 +238,19 @@ func (p *PlayerBaseData) ReqBindFacebookAccount(buf []byte) { res.ResultCode = 0 p.Data.FaceBookId = req.BindAccountId res.BindAccountId = req.BindAccountId - p.M_Player.TeLog("platform_connect", map[string]interface{}{ + player.TeLog("platform_connect", map[string]interface{}{ "platform_type": "facebook", "platform_id": req.BindAccountId, "is_reward": false, }) } - agent := p.GetPlayer().GetAgentByPlayer() + agent := player.GetAgentByPlayer() data, _ := proto.Marshal(res) G_getGameLogic().PackResInfo(agent, "ResBindFacebookAccount", data) } -func (p *PlayerBaseData) ReqUnBindFacebook(buf []byte) { +func (p *PlayerBaseData) ReqUnBindFacebook(player *Player, buf []byte) { req := &msg.ReqUnBindFacebook{} res := &msg.ResUnBindFacebook{} proto.Unmarshal(buf, req) @@ -381,15 +259,15 @@ func (p *PlayerBaseData) ReqUnBindFacebook(buf []byte) { res.BindAccountId = req.BindAccountId p.Data.FaceBookId = "" - agent := p.GetPlayer().GetAgentByPlayer() + agent := player.GetAgentByPlayer() data, _ := proto.Marshal(res) G_getGameLogic().PackResInfo(agent, "ResUnBindFacebook", data) - p.M_Player.TeLog("platform_disconnect", map[string]interface{}{ + player.TeLog("platform_disconnect", map[string]interface{}{ "platform_type": "facebook", "platform_id": req.BindAccountId, }) } -func (p *PlayerBaseData) ReqOnlyBindFacebook(buf []byte) { +func (p *PlayerBaseData) ReqOnlyBindFacebook(player *Player, buf []byte) { req := &msg.ReqOnlyBindFacebook{} res := &msg.ResOnlyBindFacebook{} proto.Unmarshal(buf, req) @@ -430,7 +308,7 @@ func (p *PlayerBaseData) ReqOnlyBindFacebook(buf []byte) { res.ResultCode = 0 p.Data.FaceBookId = req.BindAccountId res.BindAccountId = req.BindAccountId - p.M_Player.TeLog("platform_connect", map[string]interface{}{ + player.TeLog("platform_connect", map[string]interface{}{ "platform_type": "facebook", "platform_id": req.BindAccountId, "is_reward": false, @@ -444,12 +322,12 @@ func (p *PlayerBaseData) ReqOnlyBindFacebook(buf []byte) { } - agent := p.GetPlayer().GetAgentByPlayer() + agent := player.GetAgentByPlayer() data, _ := proto.Marshal(res) G_getGameLogic().PackResInfo(agent, "ResOnlyBindFacebook", data) } -func (p *PlayerBaseData) ReqSynGameData(buf []byte) { +func (p *PlayerBaseData) ReqSynGameData(player *Player, buf []byte) { req := &msg.ReqSynGameData{} res := &msg.ResSynGameData{} proto.Unmarshal(buf, req) @@ -463,7 +341,7 @@ func (p *PlayerBaseData) ReqSynGameData(buf []byte) { } else { isHaveOther = true } - if sqlStruck.DwUin == p.M_Player.M_DwUin { + if sqlStruck.DwUin == player.M_DwUin { return } OldPlayer := G_GameLogicPtr.GetPlayer(sqlStruck.DwUin) @@ -534,43 +412,32 @@ func (p *PlayerBaseData) ReqSynGameData(buf []byte) { } - agent := p.GetPlayer().GetAgentByPlayer() + agent := player.GetAgentByPlayer() data, _ := proto.Marshal(res) G_getGameLogic().PackResInfo(agent, "ResSynGameData", data) } func (p *PlayerBaseData) ClearData() bool { p.Data.LogoutTime = int32(time.Now().Unix()) - GoUtil.RemoveEvent(MergeConst.Notify_Daily_Renew, p.Notify_Daily_Renew, p) - p.McronSave.Remove(p.McronSaveID) - p.McronSave.Stop() - if p.MLeafTimer != nil { - p.MLeafTimer.Stop() - p.MLeafTimer = nil - } - if p.MTicker != nil { - p.MTicker.Stop() - p.MTicker = nil - } p.SaveDataFromDB("") return true } // 增加减少体力 -func (p *PlayerBaseData) AddEnergy(cnt int) error { +func (p *PlayerBaseData) AddEnergy(player *Player, cnt int) error { NewEnergy := p.Data.Energy + int32(cnt) if NewEnergy < 0 { return errors.New("能量不足") } if cnt < 0 { - p.M_Player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_ENERGY, A: []interface{}{-cnt}}) + player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_ENERGY, A: []interface{}{-cnt}}) } if p.Data.Energy >= p.GetMaxEnergy() && NewEnergy < p.GetMaxEnergy() { Recover := userCfg.GetRecover(int(p.Data.Level)) - p.M_Player.CallEvent(time.Duration(Recover)*time.Second, func() { - p.M_Player.lock.Lock() - defer p.M_Player.lock.Unlock() - p.AddSta() + player.CallEvent(time.Duration(Recover)*time.Second, func() { + player.lock.Lock() + defer player.lock.Unlock() + LimitedTimeEnergyAdd(player) }, "AddEnergy") p.Data.RecoverTime = int32(time.Now().Unix()) } @@ -579,13 +446,13 @@ func (p *PlayerBaseData) AddEnergy(cnt int) error { } // 增加减少星星 -func (p *PlayerBaseData) AddStar(cnt int) error { +func (p *PlayerBaseData) AddStar(player *Player, cnt int) error { NewStar := p.Data.Star + int32(cnt) if NewStar < 0 { return errors.New("星星不足") } p.Data.Star = NewStar - p.M_Player.UpdateUserInfo() + player.UpdateUserInfo() return nil } @@ -600,7 +467,7 @@ func (p *PlayerBaseData) AddDiamond(cnt int) error { } // 增加经验 -func (p *PlayerBaseData) AddExp(exp int) (int, error) { +func (p *PlayerBaseData) AddExp(player *Player, exp int) (int, error) { p.Data.Exp += int32(exp) upLv := 0 upExp := userCfg.GetLevUpExp(int(p.Data.Level)) @@ -615,26 +482,26 @@ func (p *PlayerBaseData) AddExp(exp int) (int, error) { p.Data.Exp -= int32(upExp) upExp = userCfg.GetLevUpExp(int(p.Data.Level)) // 日常任务解锁 - DailyTaskMod := p.M_Player.PlayMod.getDailyTaskMod() - DecorateMod := p.M_Player.PlayMod.getDecorateMod() + DailyTaskMod := player.PlayMod.getDailyTaskMod() + DecorateMod := player.PlayMod.getDecorateMod() if DailyTaskMod.LevUpTrigger(int(p.Data.Level), DecorateMod.GetAreaId()) { - p.M_Player.PushClientRes(DailyTaskMod.BackData()) + player.PushClientRes(DailyTaskMod.BackData()) } upLv = int(p.Data.Level) Items := userCfg.GetLevUpReward(upLv) UpLevelItem = item.Merge(UpLevelItem, Items) // 棋盘背包解锁 - p.M_Player.PushClientRes(p.BackAsset()) - ChessMod := p.M_Player.PlayMod.getChessMod() + player.PushClientRes(p.BackAsset()) + ChessMod := player.PlayMod.getChessMod() if ChessMod.TriggerChessBagUnlock(int(p.Data.Level)) { - p.M_Player.PushClientRes(ChessMod.BackData()) + player.PushClientRes(ChessMod.BackData()) } - ChargeMod := p.M_Player.PlayMod.getChargeMod() + ChargeMod := player.PlayMod.getChargeMod() ChargeMod.TriggerChargeUnlock(int(p.Data.Level), ChessMod.GetEmitList()) - p.M_Player.PushClientRes(ChargeMod.BackData()) + player.PushClientRes(ChargeMod.BackData()) // 重载活动 - p.M_Player.initAcitivity() + player.initAcitivity() telog.Te.Track(p.Data.UserName, p.Data.UserName, "level_up", map[string]interface{}{ "after_level": p.Data.Level, }) @@ -644,12 +511,12 @@ func (p *PlayerBaseData) AddExp(exp int) (int, error) { }) } if len(UpLevelItem) > 0 { - err := p.M_Player.HandleItem(UpLevelItem, msg.ITEM_POP_LABEL_LevUpReward.String()) + err := player.HandleItem(UpLevelItem, msg.ITEM_POP_LABEL_LevUpReward.String()) if err != nil { return 0, err } } - p.M_Player.PushClientRes(p.BackAsset()) + player.PushClientRes(p.BackAsset()) return upLv, nil } @@ -732,18 +599,7 @@ func (p *PlayerBaseData) GetDataByUid(Uid interface{}) bool { p.Data.Rolecreatetime = sqlStruck.Rolecreatetime p.Data.LastChampGroupID = sqlStruck.LastChampGroupID p.Data.ChampshipsGroupID = sqlStruck.ChampshipsGroupID - p.DailyRenewTime = sqlStruck.DailyRenewTime p.Data.NoAd = sqlStruck.NoAd p.Data.FaceBookId = sqlStruck.FaceBookId - p.McronSave = cron.New() - p.Reconnect(false) return true } - -func (p *PlayerBaseData) SetKv(Key int, Value string) error { - if p.KeyValueData == nil { - p.KeyValueData = make(map[int]string) - } - p.KeyValueData[Key] = Value - return nil -} diff --git a/src/server/game/PlayerChessMod.go b/src/server/game/PlayerChessMod.go index 9e730d17..870dff08 100644 --- a/src/server/game/PlayerChessMod.go +++ b/src/server/game/PlayerChessMod.go @@ -15,7 +15,6 @@ import ( ) type PlayerChessData struct { - *PlayerData Data msg.ResPlayerChessData ColorData msg.ResChessColorData } @@ -35,12 +34,9 @@ func (p *PlayerChessData) SaveDataFromDB(Key interface{}) bool { } func (p *PlayerChessData) ResPlayerChessData(player *Player) { - if player != p.M_Player { - return - } - agent := p.GetPlayer().GetAgentByPlayer() + agent := player.GetAgentByPlayer() Msg := &p.Data - ChessMod := p.M_Player.PlayMod.getChessMod() + ChessMod := player.PlayMod.getChessMod() Msg.ChessList = ChessMod.BackData().ChessList Msg.MChessData = ChessMod.ChessMap data, _ := proto.Marshal(Msg) @@ -48,66 +44,63 @@ func (p *PlayerChessData) ResPlayerChessData(player *Player) { } func (p *PlayerChessData) ResChessColorData(player *Player) { - if player != p.M_Player { - return - } - agent := p.GetPlayer().GetAgentByPlayer() + agent := player.GetAgentByPlayer() data, _ := proto.Marshal(&p.ColorData) G_getGameLogic().PackResInfo(agent, "ResChessColorData", data) } // 同步棋盘数据 -func (p *PlayerChessData) UpdatePlayerChessData(buf []byte) error { +func (p *PlayerChessData) UpdatePlayerChessData(player *Player, buf []byte) error { update := &msg.UpdatePlayerChessData{} proto.Unmarshal(buf, update) - err := p.HandleChess(update.MChessHandle) + err := p.HandleChess(player, update.MChessHandle) if err != nil { res := &msg.ResUpdatePlayerChessData{ Code: msg.RES_CODE_FAIL, Msg: err.Error(), } - p.M_Player.SendErrClienRes(res) + player.SendErrClienRes(res) return err } - p.M_Player.PushClientRes(&msg.ResUpdatePlayerChessData{ + player.PushClientRes(&msg.ResUpdatePlayerChessData{ Code: msg.RES_CODE_SUCCESS, }) p.Data.MChessData = update.MChessData - if !p.checkChessEqual() { + if !p.checkChessEqual(player) { res := &msg.ResUpdatePlayerChessData{ Code: msg.RES_CODE_FAIL, Msg: "棋子数据不一致", } - log.Debug("棋子数据不一致, %v---%v", p.Data.MChessData, p.M_Player.PlayMod.getChessMod().GetChessList()) - p.M_Player.SendErrClienRes(res) + log.Debug("棋子数据不一致, %v---%v", p.Data.MChessData, player.PlayMod.getChessMod().GetChessList()) + player.SendErrClienRes(res) return fmt.Errorf("棋子数据不一致") } - p.M_Player.PlayMod.getChessMod().ChessMap = update.MChessData + player.PlayMod.getChessMod().ChessMap = update.MChessData return nil } -func (p *PlayerChessData) UpdateChessData(MChessData map[string]int32) error { +func (p *PlayerChessData) UpdateChessData(player *Player, MChessData map[string]int32) error { p.Data.MChessData = MChessData - if !p.checkChessEqual() { + if !p.checkChessEqual(player) { res := &msg.ResUpdatePlayerChessData{ Code: msg.RES_CODE_FAIL, Msg: "棋子数据不一致", } - log.Debug("棋子数据不一致, %v---%v", p.Data.MChessData, p.M_Player.PlayMod.getChessMod().GetChessList()) - p.M_Player.SendErrClienRes(res) + log.Debug("棋子数据不一致, %v---%v", p.Data.MChessData, player.PlayMod.getChessMod().GetChessList()) + player.SendErrClienRes(res) return fmt.Errorf("棋子数据不一致") } - p.M_Player.PlayMod.getChessMod().ChessMap = MChessData + player.PlayMod.getChessMod().ChessMap = MChessData return nil } // 检查棋子数据是否一致 -func (p *PlayerChessData) checkChessEqual() bool { +func (p *PlayerChessData) checkChessEqual(player *Player) bool { if len(p.Data.MChessData) == 0 { return true } - ChessList := p.M_Player.PlayMod.getChessMod().GetChessList() + ChessList := player.PlayMod.getChessMod().GetChessList() if len(ChessList) != len(p.Data.MChessData) { return false } @@ -124,12 +117,12 @@ func (p *PlayerChessData) checkChessEqual() bool { } // 棋子操作 -func (p *PlayerChessData) HandleChess(handle_list []*msg.ChessHandle) error { +func (p *PlayerChessData) HandleChess(player *Player, handle_list []*msg.ChessHandle) error { sort.Slice(handle_list, func(i, j int) bool { return handle_list[i].Id < handle_list[j].Id }) - ChessMod := p.M_Player.PlayMod.getChessMod() - HandbookMod := p.M_Player.PlayMod.getHandbookMod() + ChessMod := player.PlayMod.getChessMod() + HandbookMod := player.PlayMod.getHandbookMod() var addChessCostEnergy int var buyChess int TriggerList := make([]*quest.Trigger, 0) @@ -152,19 +145,19 @@ func (p *PlayerChessData) HandleChess(handle_list []*msg.ChessHandle) error { b := HandbookMod.SetHandbook(ChessId) // 添加图鉴 if b { - p.M_Player.TeLog("collection_add", map[string]interface{}{ + player.TeLog("collection_add", map[string]interface{}{ "item_id": ChessId, "item_name": mergeDataCfg.GetNameById(ChessId), }) AddNewEmit = append(AddNewEmit, ChessId) } - p.M_Player.PushClientRes(HandbookMod.BackData()) + player.PushClientRes(HandbookMod.BackData()) case msg.HANDLE_TYPE_COMPOSE: //合成棋子 NewChessId, err := ChessMod.ComposeChess(ChessId) if err != nil { return err } - HandbookMod := p.M_Player.PlayMod.getHandbookMod() // 添加图鉴 + HandbookMod := player.PlayMod.getHandbookMod() // 添加图鉴 b := HandbookMod.SetHandbook(NewChessId) if b { AddNewEmit = append(AddNewEmit, NewChessId) @@ -173,9 +166,9 @@ func (p *PlayerChessData) HandleChess(handle_list []*msg.ChessHandle) error { NewChessIdLv := mergeDataCfg.GetLvById(NewChessId) TriggerList = append(TriggerList, &quest.Trigger{Label: quest.TRIGGER_LABEL_MERGELVTIME, A: []interface{}{NewChessIdLv}}) TriggerList = append(TriggerList, &quest.Trigger{Label: quest.TRIGGER_LABEL_MERGETIME}) - p.M_Player.PushClientRes(HandbookMod.BackData()) + player.PushClientRes(HandbookMod.BackData()) // 获取活动道具 - ActItem := GetActivityItem(p.M_Player, GoUtil.Int32ToInt(v.ActType)) + ActItem := GetActivityItem(player, GoUtil.Int32ToInt(v.ActType)) itemList = item.Merge(itemList, ActItem) case msg.HANDLE_TYPE_BUY: //购买棋子 loseGold, err := ChessMod.BuyChess(ChessId) @@ -189,7 +182,7 @@ func (p *PlayerChessData) HandleChess(handle_list []*msg.ChessHandle) error { if err != nil { return err } - p.M_Player.TeLog("sell_item", map[string]interface{}{ + player.TeLog("sell_item", map[string]interface{}{ "merge_item_id": ChessId, "get_star_num": items[0].Num, }) @@ -202,23 +195,23 @@ func (p *PlayerChessData) HandleChess(handle_list []*msg.ChessHandle) error { //扣除体力 if addChessCostEnergy > 0 { - EnergyPow := p.M_Player.PlayMod.getBaseMod().GetEnergyMul() + EnergyPow := player.PlayMod.getBaseMod().GetEnergyMul() ReduceEneny := int(math.Pow(2, float64(EnergyPow))) * addChessCostEnergy itemList = append(itemList, &item.Item{Id: item.ITEM_ENERGY_ID, Num: -ReduceEneny}) } - err := p.M_Player.HandleItem(itemList, msg.ITEM_POP_LABEL_HandleChess.String()) + err := player.HandleItem(itemList, msg.ITEM_POP_LABEL_HandleChess.String()) if err != nil { return err } - OrderMod := p.M_Player.PlayMod.getOrderMod() + OrderMod := player.PlayMod.getOrderMod() Update := OrderMod.CreateExtraOrder(AddChessList, AddNewEmit, ChessMod.GetChessList()) if Update { - p.M_Player.PushClientRes(OrderMod.BackData()) + player.PushClientRes(OrderMod.BackData()) } - p.M_Player.QuestTriggerList(TriggerList) - EmitRetireTrigger1(p.M_Player) - p.M_Player.PushClientRes(ChessMod.BackData()) - p.M_Player.PlayMod.save() + player.QuestTriggerList(TriggerList) + EmitRetireTrigger1(player) + player.PushClientRes(ChessMod.BackData()) + player.PlayMod.save() return nil } diff --git a/src/server/game/PlayerFunc.go b/src/server/game/PlayerFunc.go index caabaf5f..ebea3456 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/PlayerFunc.go @@ -423,7 +423,7 @@ func BackUserInfo(p *Player) { DecorateMod := p.PlayMod.getDecorateMod() PlayerBaseMod := p.GetPlayerBaseMod() p.PushClientRes(&proto.UserInfo{ - Uid: int32(p.M_DwUin), + Uid: p.M_DwUin, Nickname: BaseMod.NickName, Avatar: int32(AvatarMod.SetId), Face: int32(FaceMod.SetId), @@ -459,7 +459,7 @@ func GetCardInfoMsg(CardInfo *card.CardInfo) *proto.ResFriendCard { ps := G_GameLogicPtr.GetSimplePlayerByUid(Uid) return &proto.ResFriendCard{ - Uid: int32(Uid), + Uid: int64(Uid), Name: ps.Name, Face: int32(ps.Face), Avatar: int32(ps.Avatar), @@ -512,7 +512,7 @@ func PlayroomBackData(p *Player) { } if !FriendMod.CheckFriend(k) { Opponent = append(Opponent, &proto.RoomOpponent{ - Uid: int32(k), + Uid: int64(k), Name: ps.Name, Face: int32(ps.Face), Avatar: int32(ps.Avatar), @@ -528,7 +528,7 @@ func PlayroomBackData(p *Player) { } Times, _ := PlayroomMod.GetVisitorInfo(v) FriendList = append(FriendList, &proto.FriendRoom{ - Uid: int32(v), + Uid: int64(v), Name: ps.Name, Face: int32(ps.Face), Avatar: int32(ps.Avatar), @@ -565,7 +565,7 @@ func PlayroomVisit(p *Player, Uid int) { if PlayerData.WorkStart > 0 && PlayerData.WorkStart+86400 > Now { Work = true } - r.Uid = int32(Uid) + r.Uid = int64(Uid) r.Name = PlayerData.Name r.Face = int32(PlayerData.Face) r.Avatar = int32(PlayerData.Avatar) diff --git a/src/server/game/PlayerMod.go b/src/server/game/PlayerMod.go index ac8f9c9b..5769de93 100644 --- a/src/server/game/PlayerMod.go +++ b/src/server/game/PlayerMod.go @@ -76,13 +76,13 @@ type PlayerModList struct { func (p *PlayerModData) LoadDataFromDB(dwUin interface{}) bool { sqlStr := "SELECT * FROM t_player_mod WHERE dwUin = ?" p.Data = db.SqlModStruct{} - if err := db.SqlDb.Get(&p.Data, sqlStr, dwUin.(int32)); err != nil { + if err := db.SqlDb.Get(&p.Data, sqlStr, dwUin.(int64)); err != nil { p.IsHaveDataDb = false } else { p.IsHaveDataDb = true } - p.Data.DwUin = dwUin.(int32) + p.Data.DwUin = dwUin.(int64) return true } diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index 9157015e..830be47b 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -35,15 +35,7 @@ func ReqPlayerBaseInfofunction(args []interface{}) error { _, player, buf := ParseArgs(args) detail := &msg.ReqPlayerBaseInfo{} proto.Unmarshal(buf, detail) - - if player.GetGameData("PlayerBaseData") == nil { - data := &PlayerBaseData{PlayerData: NewPlayerData("PlayerBaseData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerBaseData"] = data - } - } - player.GetIFGameData("PlayerBaseData").(*PlayerBaseData).ResPlayerBaseInfo(player) + player.PlayerBaseMod.ResPlayerBaseInfo(player) return nil } @@ -67,7 +59,7 @@ func ReqPlayerBriefProfileDataFunc(args []interface{}) error { // 移除广告 func ReqRemoveAdFunc(args []interface{}) error { _, player, buf := ParseArgs(args) - player.GetIFGameData("PlayerBaseData").(*PlayerBaseData).ReqRemoveAd(buf) + player.PlayerBaseMod.ReqRemoveAd(player, buf) return nil } @@ -76,7 +68,7 @@ func UpdateBaseItemInfofunction(args []interface{}) error { _, player, buf := ParseArgs(args) detail := &msg.UpdateBaseItemInfo{} proto.Unmarshal(buf, detail) - player.GetIFGameData("PlayerBaseData").(*PlayerBaseData).UpdateBaseItemInfo(detail) + player.PlayerBaseMod.UpdateBaseItemInfo(detail) return nil } @@ -85,71 +77,33 @@ func ReqPlayerChessDataFunc(args []interface{}) error { _, player, buf := ParseArgs(args) detail := &msg.ReqPlayerChessData{} proto.Unmarshal(buf, detail) - - if player.GetGameData("PlayerChessData") == nil { - data := &PlayerChessData{PlayerData: NewPlayerData("PlayerChessData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerChessData"] = data - } - } - player.GetIFGameData("PlayerChessData").(*PlayerChessData).ResPlayerChessData(player) + playerChessData := &PlayerChessData{} + playerChessData.ResPlayerChessData(player) return nil } func ReqBindFacebookAccount(args []interface{}) error { _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerBaseData") == nil { - data := &PlayerBaseData{PlayerData: NewPlayerData("PlayerBaseData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerBaseData"] = data - } - } - player.GetIFGameData("PlayerBaseData").(*PlayerBaseData).ReqBindFacebookAccount(buf) + player.PlayerBaseMod.ReqBindFacebookAccount(player, buf) return nil } func ReqUnBindFacebook(args []interface{}) error { _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerBaseData") == nil { - data := &PlayerBaseData{PlayerData: NewPlayerData("PlayerBaseData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerBaseData"] = data - } - } - player.GetIFGameData("PlayerBaseData").(*PlayerBaseData).ReqUnBindFacebook(buf) + player.PlayerBaseMod.ReqUnBindFacebook(player, buf) return nil } func ReqOnlyBindFacebook(args []interface{}) error { _, player, buf := ParseArgs(args) - if player.GetGameData("PlayerBaseData") == nil { - data := &PlayerBaseData{PlayerData: NewPlayerData("PlayerBaseData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerBaseData"] = data - } - } - player.GetIFGameData("PlayerBaseData").(*PlayerBaseData).ReqOnlyBindFacebook(buf) + player.PlayerBaseMod.ReqOnlyBindFacebook(player, buf) return nil } func ReqSynGameData(args []interface{}) error { _, player, buf := ParseArgs(args) - - if player.GetGameData("PlayerBaseData") == nil { - data := &PlayerBaseData{PlayerData: NewPlayerData("PlayerBaseData", player)} - ok := data.LoadDataFromDB(player.M_DwUin) - if ok { - player.playerdata["PlayerBaseData"] = data - } - } - player.GetIFGameData("PlayerBaseData").(*PlayerBaseData).ReqSynGameData(buf) + player.PlayerBaseMod.ReqSynGameData(player, buf) return nil } @@ -157,7 +111,7 @@ func RegSetEneryFunc(args []interface{}) error { _, player, buf := ParseArgs(args) req := &msg.ReqSetEnergyMul{} proto.Unmarshal(buf, req) - MaxEnergyMul := player.GetPlayerBaseMod().GetMaxEnergyMul() + MaxEnergyMul := player.GetPlayerBaseMod().GetMaxEnergyMul(player) if int(req.EnergyMul) > MaxEnergyMul { player.SendErrClienRes(&msg.ResSetEnergyMul{ ResultCode: msg.RES_CODE_FAIL, @@ -286,8 +240,8 @@ func ReqRewardOrder(args []interface{}) error { }) return err } - data := player.GetIFGameData("PlayerChessData") - err = data.(*PlayerChessData).UpdateChessData(req.MChessData) + data := &PlayerChessData{} + err = data.UpdateChessData(player, req.MChessData) if err != nil { player.SendErrClienRes(&msg.ResGetChessFromBuff{ Code: msg.RES_CODE_FAIL, @@ -378,7 +332,7 @@ func ReqDecorate(args []interface{}) error { return err } - _, err = player.GetPlayerBaseMod().AddExp(10) + _, err = player.GetPlayerBaseMod().AddExp(player, 10) if err != nil { player.SendErrClienRes(&msg.ResDecorate{ Code: msg.RES_CODE_FAIL, @@ -439,7 +393,7 @@ func ReqDecorateAll(args []interface{}) error { return err } - _, err = player.GetPlayerBaseMod().AddExp(10 * DecorateNum) + _, err = player.GetPlayerBaseMod().AddExp(player, 10*DecorateNum) if err != nil { player.SendErrClienRes(&msg.ResDecorateAll{ Code: msg.RES_CODE_FAIL, @@ -467,8 +421,8 @@ func ReqDecorateAll(args []interface{}) error { // 更新棋盘信息 func UpdatePlayerChessDataFunc(args []interface{}) error { _, player, buf := ParseArgs(args) - data := player.GetIFGameData("PlayerChessData") - err := data.(*PlayerChessData).UpdatePlayerChessData(buf) + data := &PlayerChessData{} + err := data.UpdatePlayerChessData(player, buf) RedBackData(player) player.UpdateUserInfo() return err @@ -497,8 +451,8 @@ func ReqGetChessFromBuff(args []interface{}) error { }) return err } - data := player.GetIFGameData("PlayerChessData") - err = data.(*PlayerChessData).UpdateChessData(req.MChessData) + data := &PlayerChessData{} + err = data.UpdateChessData(player, req.MChessData) if err != nil { player.SendErrClienRes(&msg.ResGetChessFromBuff{ Code: msg.RES_CODE_FAIL, @@ -534,8 +488,8 @@ func ReqPutChessInBag(args []interface{}) error { }) return err } - data := player.GetIFGameData("PlayerChessData") - err = data.(*PlayerChessData).UpdateChessData(req.MChessData) + data := &PlayerChessData{} + err = data.UpdateChessData(player, req.MChessData) if err != nil { player.SendErrClienRes(&msg.ResPutChessInBag{ Code: msg.RES_CODE_FAIL, @@ -565,8 +519,8 @@ func ReqTakeChessOutBag(args []interface{}) error { }) return err } - data := player.GetIFGameData("PlayerChessData") - err = data.(*PlayerChessData).UpdateChessData(req.MChessData) + data := &PlayerChessData{} + err = data.UpdateChessData(player, req.MChessData) if err != nil { player.SendErrClienRes(&msg.ResTakeChessOutBag{ Code: msg.RES_CODE_FAIL, @@ -650,8 +604,8 @@ func ReqChessEx(args []interface{}) error { } HandbookMod := player.PlayMod.getHandbookMod() HandbookMod.SetHandbook(int(req.NewChessId)) - data := player.GetIFGameData("PlayerChessData") - err = data.(*PlayerChessData).UpdateChessData(req.MChessData) + data := &PlayerChessData{} + err = data.UpdateChessData(player, req.MChessData) if err != nil { player.SendErrClienRes(&msg.ResChessEx{ Code: msg.RES_CODE_FAIL, @@ -1983,8 +1937,8 @@ func ReqBuyChessShop2(args []interface{}) error { }) return err } - data := player.GetIFGameData("PlayerChessData") - err = data.(*PlayerChessData).UpdateChessData(req.MChessData) + data := &PlayerChessData{} + err = data.UpdateChessData(player, req.MChessData) if err != nil { player.SendErrClienRes(&msg.ResBuyChessShop2{ Code: msg.RES_CODE_FAIL, @@ -3134,8 +3088,8 @@ func ReqPlayroomOutline(args []interface{}) error { } HandbookMod := player.PlayMod.getHandbookMod() HandbookMod.SetHandbook(int(req.NewChessId)) - data := player.GetIFGameData("PlayerChessData") - err = data.(*PlayerChessData).UpdateChessData(req.MChessData) + data := &PlayerChessData{} + err = data.UpdateChessData(player, req.MChessData) if err != nil { player.SendErrClienRes(&msg.ResPlayroomOutline{ Code: msg.RES_CODE_FAIL, diff --git a/src/server/game/ServerMod.go b/src/server/game/ServerMod.go index 84e86a1b..89065197 100644 --- a/src/server/game/ServerMod.go +++ b/src/server/game/ServerMod.go @@ -142,6 +142,9 @@ func (s *ServerMod) SaveData() { ctx := context.Background() txOptions := &sql.TxOptions{} tx, err := db.SqlDb.BeginTx(ctx, txOptions) + if err != nil { + log.Debug("SaveData sql begin tx failed,Mod Key: %s err:%v", s.key, err) + } err = db.SaveServerData(&DbData) if err != nil { tx.Rollback() diff --git a/src/server/game/UnitTest.go b/src/server/game/UnitTest.go index c1f03360..b5736687 100644 --- a/src/server/game/UnitTest.go +++ b/src/server/game/UnitTest.go @@ -71,7 +71,7 @@ func UnitDecorate(p *Player) error { PlayerBaseMod := p.GetPlayerBaseMod() PlayerBaseMod.Data.Level = 6 PlayerBaseMod.Data.Exp = 50 - PlayerBaseMod.AddExp(100) + PlayerBaseMod.AddExp(p, 100) return nil } diff --git a/src/server/game/admin.go b/src/server/game/admin.go index 3c2f1fee..82cbd60e 100644 --- a/src/server/game/admin.go +++ b/src/server/game/admin.go @@ -2,6 +2,7 @@ package game import ( "encoding/json" + "server/GoUtil" "server/msg" "server/pkg/github.com/name5566/leaf/gate" "server/pkg/github.com/name5566/leaf/log" @@ -33,6 +34,7 @@ func AdminPlayerInfo(args []interface{}) error { player = new(Player) player.M_DwUin = req.Uid player.InitPlayerOnly() + player.ZeroUpdate(nil) } res := make(map[string]interface{}) res["Name"] = player.PlayMod.getBaseMod().NickName @@ -45,6 +47,21 @@ func AdminPlayerInfo(args []interface{}) error { res["Diamond"] = player.GetPlayerBaseMod().GetDiamond() res["Mac"] = player.GetPlayerBaseMod().GetName() res["Login"] = player.GetPlayerBaseMod().Data.LoginTime + res["Cumulative"] = player.PlayMod.getBaseMod().Cumulative + res["TodayCumulative"] = player.PlayMod.getBaseMod().TodayCumulative + OrderMap := make(map[int]interface{}) + Index := 0 + for k, v := range player.PlayMod.getOrderMod().OrderList { + OrderMap[Index] = map[string]interface{}{ + "Id": k, + "Type": v.Type, + "Time": v.Timestamp, + "ChessId": GoUtil.IntSliceToString(v.MergeId), + "Diff": v.Diff, + } + Index++ + } + res["Order"] = OrderMap JsonBuff, err := json.Marshal(res) if err != nil { return err diff --git a/src/server/game/external.go b/src/server/game/external.go index 55aa490f..35a74d59 100644 --- a/src/server/game/external.go +++ b/src/server/game/external.go @@ -45,7 +45,7 @@ func HandleAdminReq(args []interface{}) { // 消息的发送者 a := args[1].(gate.Agent) buf := m.GetInfo() - log.Debug("admin 消息Func : %s", m.GetFunc()) + // log.Debug("admin 消息Func : %s", m.GetFunc()) AdminProcess(m.GetFunc(), []interface{}{a, buf}) } @@ -57,7 +57,7 @@ func HandleClientReq(args []interface{}) { // 消息的发送者 a := args[1].(gate.Agent) buf := m.GetInfo() - log.Debug("消息Func : %s", m.GetFunc()) + // log.Debug("消息Func : %s", m.GetFunc()) switch m.GetFunc() { case "ClientTick": case "ReqAdminInfo": diff --git a/src/server/game/mod/friendTreasure.go/friendTreasure.go b/src/server/game/mod/friendTreasure.go/friendTreasure.go index d390e8fc..90e1d0db 100644 --- a/src/server/game/mod/friendTreasure.go/friendTreasure.go +++ b/src/server/game/mod/friendTreasure.go/friendTreasure.go @@ -79,7 +79,7 @@ func (f *FriendTreasureMod) EndGame() ([]*item.Item, int, error) { } f.Star = 0 f.Shift = 0 - f.Status = 0 + f.Status = 2 f.Num = 0 return Reward, FriendItemNum, nil } diff --git a/src/server/msg/Gameapi.pb.go b/src/server/msg/Gameapi.pb.go index 42bd9099..22632ac3 100644 --- a/src/server/msg/Gameapi.pb.go +++ b/src/server/msg/Gameapi.pb.go @@ -66,7 +66,7 @@ const ( ITEM_POP_LABEL_PlayroomDraw ITEM_POP_LABEL = 40 ITEM_POP_LABEL_PlayroomChip ITEM_POP_LABEL = 41 ITEM_POP_LABEL_PlayroomFlip ITEM_POP_LABEL = 42 - ITEM_POP_LABEL_FriendtreasureFilp ITEM_POP_LABEL = 43 + ITEM_POP_LABEL_FriendtreasureFilp ITEM_POP_LABEL = 43 // 宠物宝藏翻牌 ITEM_POP_LABEL_FriendtreasureEnd ITEM_POP_LABEL = 44 ITEM_POP_LABEL_GM ITEM_POP_LABEL = 45 ITEM_POP_LABEL_Friendtreasure ITEM_POP_LABEL = 46 @@ -449,7 +449,7 @@ type ReqOfflineReconnect struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DwUin int32 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` + DwUin int64 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` } func (x *ReqOfflineReconnect) Reset() { @@ -482,7 +482,7 @@ func (*ReqOfflineReconnect) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{1} } -func (x *ReqOfflineReconnect) GetDwUin() int32 { +func (x *ReqOfflineReconnect) GetDwUin() int64 { if x != nil { return x.DwUin } @@ -494,7 +494,7 @@ type ResOfflineReconnect struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DwUin int32 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` + DwUin int64 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` Result int32 `protobuf:"varint,2,opt,name=Result,proto3" json:"Result,omitempty"` } @@ -528,7 +528,7 @@ func (*ResOfflineReconnect) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{2} } -func (x *ResOfflineReconnect) GetDwUin() int32 { +func (x *ResOfflineReconnect) GetDwUin() int64 { if x != nil { return x.DwUin } @@ -547,7 +547,7 @@ type ReqBindFacebookAccount struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DwUin int32 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` + DwUin int64 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` BindAccountId string `protobuf:"bytes,2,opt,name=BindAccountId,proto3" json:"BindAccountId,omitempty"` } @@ -581,7 +581,7 @@ func (*ReqBindFacebookAccount) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{3} } -func (x *ReqBindFacebookAccount) GetDwUin() int32 { +func (x *ReqBindFacebookAccount) GetDwUin() int64 { if x != nil { return x.DwUin } @@ -600,7 +600,7 @@ type ResBindFacebookAccount struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DwUin int32 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` + DwUin int64 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` BindAccountId string `protobuf:"bytes,2,opt,name=BindAccountId,proto3" json:"BindAccountId,omitempty"` ResultCode int32 `protobuf:"varint,3,opt,name=ResultCode,proto3" json:"ResultCode,omitempty"` } @@ -635,7 +635,7 @@ func (*ResBindFacebookAccount) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{4} } -func (x *ResBindFacebookAccount) GetDwUin() int32 { +func (x *ResBindFacebookAccount) GetDwUin() int64 { if x != nil { return x.DwUin } @@ -662,7 +662,7 @@ type ReqOnlyBindFacebook struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DwUin int32 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` + DwUin int64 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` BindAccountId string `protobuf:"bytes,2,opt,name=BindAccountId,proto3" json:"BindAccountId,omitempty"` } @@ -696,7 +696,7 @@ func (*ReqOnlyBindFacebook) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{5} } -func (x *ReqOnlyBindFacebook) GetDwUin() int32 { +func (x *ReqOnlyBindFacebook) GetDwUin() int64 { if x != nil { return x.DwUin } @@ -715,7 +715,7 @@ type ResOnlyBindFacebook struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DwUin int32 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` + DwUin int64 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` BindAccountId string `protobuf:"bytes,2,opt,name=BindAccountId,proto3" json:"BindAccountId,omitempty"` ResultCode int32 `protobuf:"varint,3,opt,name=ResultCode,proto3" json:"ResultCode,omitempty"` } @@ -750,7 +750,7 @@ func (*ResOnlyBindFacebook) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{6} } -func (x *ResOnlyBindFacebook) GetDwUin() int32 { +func (x *ResOnlyBindFacebook) GetDwUin() int64 { if x != nil { return x.DwUin } @@ -777,7 +777,7 @@ type ReqUnBindFacebook struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DwUin int32 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` + DwUin int64 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` BindAccountId string `protobuf:"bytes,2,opt,name=BindAccountId,proto3" json:"BindAccountId,omitempty"` } @@ -811,7 +811,7 @@ func (*ReqUnBindFacebook) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{7} } -func (x *ReqUnBindFacebook) GetDwUin() int32 { +func (x *ReqUnBindFacebook) GetDwUin() int64 { if x != nil { return x.DwUin } @@ -884,7 +884,7 @@ type ReqSynGameData struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DwUin int32 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` + DwUin int64 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` NewFBId string `protobuf:"bytes,2,opt,name=NewFBId,proto3" json:"NewFBId,omitempty"` } @@ -918,7 +918,7 @@ func (*ReqSynGameData) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{9} } -func (x *ReqSynGameData) GetDwUin() int32 { +func (x *ReqSynGameData) GetDwUin() int64 { if x != nil { return x.DwUin } @@ -937,7 +937,7 @@ type ResSynGameData struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DwUin int32 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` + DwUin int64 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` ResultCode int32 `protobuf:"varint,2,opt,name=ResultCode,proto3" json:"ResultCode,omitempty"` } @@ -971,7 +971,7 @@ func (*ResSynGameData) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{10} } -func (x *ResSynGameData) GetDwUin() int32 { +func (x *ResSynGameData) GetDwUin() int64 { if x != nil { return x.DwUin } @@ -1341,7 +1341,7 @@ type ResLogin struct { unknownFields protoimpl.UnknownFields ResultCode int32 `protobuf:"varint,1,opt,name=ResultCode,proto3" json:"ResultCode,omitempty"` - DwUin int32 `protobuf:"varint,2,opt,name=dwUin,proto3" json:"dwUin,omitempty"` + DwUin int64 `protobuf:"varint,2,opt,name=dwUin,proto3" json:"dwUin,omitempty"` UserName string `protobuf:"bytes,3,opt,name=UserName,proto3" json:"UserName,omitempty"` FaceBookId string `protobuf:"bytes,4,opt,name=FaceBookId,proto3" json:"FaceBookId,omitempty"` } @@ -1383,7 +1383,7 @@ func (x *ResLogin) GetResultCode() int32 { return 0 } -func (x *ResLogin) GetDwUin() int32 { +func (x *ResLogin) GetDwUin() int64 { if x != nil { return x.DwUin } @@ -1410,7 +1410,7 @@ type ReqPlayerBaseInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DwUin int32 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` + DwUin int64 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` } func (x *ReqPlayerBaseInfo) Reset() { @@ -1443,7 +1443,7 @@ func (*ReqPlayerBaseInfo) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{19} } -func (x *ReqPlayerBaseInfo) GetDwUin() int32 { +func (x *ReqPlayerBaseInfo) GetDwUin() int64 { if x != nil { return x.DwUin } @@ -1456,7 +1456,7 @@ type ResPlayerBaseInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DwUin int32 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` + DwUin int64 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` Energy int32 `protobuf:"varint,2,opt,name=energy,proto3" json:"energy,omitempty"` Star int32 `protobuf:"varint,3,opt,name=star,proto3" json:"star,omitempty"` RecoverTime int32 `protobuf:"varint,4,opt,name=recover_time,json=recoverTime,proto3" json:"recover_time,omitempty"` @@ -1511,7 +1511,7 @@ func (*ResPlayerBaseInfo) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{20} } -func (x *ResPlayerBaseInfo) GetDwUin() int32 { +func (x *ResPlayerBaseInfo) GetDwUin() int64 { if x != nil { return x.DwUin } @@ -1678,7 +1678,7 @@ type ResPlayerAsset struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DwUin int32 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` + DwUin int64 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` Energy int32 `protobuf:"varint,2,opt,name=energy,proto3" json:"energy,omitempty"` Star int32 `protobuf:"varint,3,opt,name=star,proto3" json:"star,omitempty"` RecoverTime int32 `protobuf:"varint,4,opt,name=recover_time,json=recoverTime,proto3" json:"recover_time,omitempty"` @@ -1719,7 +1719,7 @@ func (*ResPlayerAsset) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{21} } -func (x *ResPlayerAsset) GetDwUin() int32 { +func (x *ResPlayerAsset) GetDwUin() int64 { if x != nil { return x.DwUin } @@ -1788,7 +1788,7 @@ type UpdateBaseItemInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DwUin int32 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` + DwUin int64 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` MUpdateItem map[int32]int32 `protobuf:"bytes,2,rep,name=mUpdateItem,proto3" json:"mUpdateItem,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` } @@ -1822,7 +1822,7 @@ func (*UpdateBaseItemInfo) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{22} } -func (x *UpdateBaseItemInfo) GetDwUin() int32 { +func (x *UpdateBaseItemInfo) GetDwUin() int64 { if x != nil { return x.DwUin } @@ -1841,7 +1841,7 @@ type NotifyRenewBuyEnergyCnt struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DwUin int32 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` + DwUin int64 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` CurCnt int32 `protobuf:"varint,2,opt,name=CurCnt,proto3" json:"CurCnt,omitempty"` } @@ -1875,7 +1875,7 @@ func (*NotifyRenewBuyEnergyCnt) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{23} } -func (x *NotifyRenewBuyEnergyCnt) GetDwUin() int32 { +func (x *NotifyRenewBuyEnergyCnt) GetDwUin() int64 { if x != nil { return x.DwUin } @@ -1895,7 +1895,7 @@ type ReqRemoveAd struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DwUin int32 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` + DwUin int64 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` } func (x *ReqRemoveAd) Reset() { @@ -1928,7 +1928,7 @@ func (*ReqRemoveAd) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{24} } -func (x *ReqRemoveAd) GetDwUin() int32 { +func (x *ReqRemoveAd) GetDwUin() int64 { if x != nil { return x.DwUin } @@ -1987,7 +1987,7 @@ type NotifyAddEnergy struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DwUin int32 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` + DwUin int64 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` AddCnt int32 `protobuf:"varint,2,opt,name=addCnt,proto3" json:"addCnt,omitempty"` } @@ -2021,7 +2021,7 @@ func (*NotifyAddEnergy) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{26} } -func (x *NotifyAddEnergy) GetDwUin() int32 { +func (x *NotifyAddEnergy) GetDwUin() int64 { if x != nil { return x.DwUin } @@ -2041,7 +2041,7 @@ type ReqServerTime struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DwUin int32 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` + DwUin int64 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` } func (x *ReqServerTime) Reset() { @@ -2074,7 +2074,7 @@ func (*ReqServerTime) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{27} } -func (x *ReqServerTime) GetDwUin() int32 { +func (x *ReqServerTime) GetDwUin() int64 { if x != nil { return x.DwUin } @@ -2132,7 +2132,7 @@ type ReqPlayerChessData struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DwUin int32 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` + DwUin int64 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` } func (x *ReqPlayerChessData) Reset() { @@ -2165,7 +2165,7 @@ func (*ReqPlayerChessData) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{29} } -func (x *ReqPlayerChessData) GetDwUin() int32 { +func (x *ReqPlayerChessData) GetDwUin() int64 { if x != nil { return x.DwUin } @@ -2178,7 +2178,7 @@ type ResPlayerChessData struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DwUin int32 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` + DwUin int64 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,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"` ChessList []int32 `protobuf:"varint,3,rep,packed,name=ChessList,proto3" json:"ChessList,omitempty"` ChessBuff []int32 `protobuf:"varint,4,rep,packed,name=ChessBuff,proto3" json:"ChessBuff,omitempty"` @@ -2214,7 +2214,7 @@ func (*ResPlayerChessData) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{30} } -func (x *ResPlayerChessData) GetDwUin() int32 { +func (x *ResPlayerChessData) GetDwUin() int64 { if x != nil { return x.DwUin } @@ -2403,7 +2403,7 @@ type UpdatePlayerChessData struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DwUin int32 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` + DwUin int64 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,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"` MChessHandle []*ChessHandle `protobuf:"bytes,3,rep,name=mChessHandle,proto3" json:"mChessHandle,omitempty"` } @@ -2438,7 +2438,7 @@ func (*UpdatePlayerChessData) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{33} } -func (x *UpdatePlayerChessData) GetDwUin() int32 { +func (x *UpdatePlayerChessData) GetDwUin() int64 { if x != nil { return x.DwUin } @@ -3330,7 +3330,7 @@ type ReqPlayerProfileData struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DwUin int32 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` + DwUin int64 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` } func (x *ReqPlayerProfileData) Reset() { @@ -3363,7 +3363,7 @@ func (*ReqPlayerProfileData) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{49} } -func (x *ReqPlayerProfileData) GetDwUin() int32 { +func (x *ReqPlayerProfileData) GetDwUin() int64 { if x != nil { return x.DwUin } @@ -3375,7 +3375,7 @@ type ResPlayerProfileData struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DwUin int32 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` + DwUin int64 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` ImageFrame int32 `protobuf:"varint,2,opt,name=ImageFrame,proto3" json:"ImageFrame,omitempty"` ImageIcon int32 `protobuf:"varint,3,opt,name=ImageIcon,proto3" json:"ImageIcon,omitempty"` DecorateCnt int32 `protobuf:"varint,4,opt,name=DecorateCnt,proto3" json:"DecorateCnt,omitempty"` @@ -3416,7 +3416,7 @@ func (*ResPlayerProfileData) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{50} } -func (x *ResPlayerProfileData) GetDwUin() int32 { +func (x *ResPlayerProfileData) GetDwUin() int64 { if x != nil { return x.DwUin } @@ -3485,7 +3485,7 @@ type ReqPlayerBriefProfileData struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DwUin int32 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` + DwUin int64 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` } func (x *ReqPlayerBriefProfileData) Reset() { @@ -3518,7 +3518,7 @@ func (*ReqPlayerBriefProfileData) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{51} } -func (x *ReqPlayerBriefProfileData) GetDwUin() int32 { +func (x *ReqPlayerBriefProfileData) GetDwUin() int64 { if x != nil { return x.DwUin } @@ -3530,7 +3530,7 @@ type ResPlayerBriefProfileData struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DwUin int32 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` + DwUin int64 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` ImageFrame int32 `protobuf:"varint,2,opt,name=ImageFrame,proto3" json:"ImageFrame,omitempty"` ImageIcon int32 `protobuf:"varint,3,opt,name=ImageIcon,proto3" json:"ImageIcon,omitempty"` DecorateCnt int32 `protobuf:"varint,4,opt,name=DecorateCnt,proto3" json:"DecorateCnt,omitempty"` @@ -3569,7 +3569,7 @@ func (*ResPlayerBriefProfileData) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{52} } -func (x *ResPlayerBriefProfileData) GetDwUin() int32 { +func (x *ResPlayerBriefProfileData) GetDwUin() int64 { if x != nil { return x.DwUin } @@ -3819,7 +3819,7 @@ type UserInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uid int32 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` + Uid int64 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` Nickname string `protobuf:"bytes,2,opt,name=Nickname,proto3" json:"Nickname,omitempty"` Avatar int32 `protobuf:"varint,3,opt,name=Avatar,proto3" json:"Avatar,omitempty"` Face int32 `protobuf:"varint,4,opt,name=Face,proto3" json:"Face,omitempty"` @@ -3860,7 +3860,7 @@ func (*UserInfo) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{57} } -func (x *UserInfo) GetUid() int32 { +func (x *UserInfo) GetUid() int64 { if x != nil { return x.Uid } @@ -5650,7 +5650,7 @@ type ReqCardGive struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uid []int32 `protobuf:"varint,1,rep,packed,name=Uid,proto3" json:"Uid,omitempty"` + Uid []int64 `protobuf:"varint,1,rep,packed,name=Uid,proto3" json:"Uid,omitempty"` CardId int32 `protobuf:"varint,2,opt,name=CardId,proto3" json:"CardId,omitempty"` } @@ -5684,7 +5684,7 @@ func (*ReqCardGive) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{90} } -func (x *ReqCardGive) GetUid() []int32 { +func (x *ReqCardGive) GetUid() []int64 { if x != nil { return x.Uid } @@ -5971,7 +5971,7 @@ type ReqCardSend struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uid int32 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` + Uid int64 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` CardId int32 `protobuf:"varint,2,opt,name=CardId,proto3" json:"CardId,omitempty"` } @@ -6005,7 +6005,7 @@ func (*ReqCardSend) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{96} } -func (x *ReqCardSend) GetUid() int32 { +func (x *ReqCardSend) GetUid() int64 { if x != nil { return x.Uid } @@ -6078,7 +6078,7 @@ type ReqCardExchange struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uid int32 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` + Uid int64 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` CardId int32 `protobuf:"varint,2,opt,name=CardId,proto3" json:"CardId,omitempty"` } @@ -6112,7 +6112,7 @@ func (*ReqCardExchange) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{98} } -func (x *ReqCardExchange) GetUid() int32 { +func (x *ReqCardExchange) GetUid() int64 { if x != nil { return x.Uid } @@ -9392,7 +9392,7 @@ type ResPlayerSimple struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uid int32 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` + Uid int64 `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"` @@ -9433,7 +9433,7 @@ func (*ResPlayerSimple) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{160} } -func (x *ResPlayerSimple) GetUid() int32 { +func (x *ResPlayerSimple) GetUid() int64 { if x != nil { return x.Uid } @@ -9501,7 +9501,7 @@ type ResPlayerRank struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uid int32 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` + Uid int64 `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"` @@ -9539,7 +9539,7 @@ func (*ResPlayerRank) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{161} } -func (x *ResPlayerRank) GetUid() int32 { +func (x *ResPlayerRank) GetUid() int64 { if x != nil { return x.Uid } @@ -9753,7 +9753,7 @@ type ResFriendCard struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uid int32 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` + Uid int64 `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"` @@ -9796,7 +9796,7 @@ func (*ResFriendCard) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{165} } -func (x *ResFriendCard) GetUid() int32 { +func (x *ResFriendCard) GetUid() int64 { if x != nil { return x.Uid } @@ -10059,7 +10059,7 @@ type ReqFriendIgnore struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uid int32 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` + Uid int64 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` } func (x *ReqFriendIgnore) Reset() { @@ -10092,7 +10092,7 @@ func (*ReqFriendIgnore) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{170} } -func (x *ReqFriendIgnore) GetUid() int32 { +func (x *ReqFriendIgnore) GetUid() int64 { if x != nil { return x.Uid } @@ -10600,7 +10600,7 @@ type ReqApplyFriend struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uid int32 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` + Uid int64 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` } func (x *ReqApplyFriend) Reset() { @@ -10633,7 +10633,7 @@ func (*ReqApplyFriend) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{182} } -func (x *ReqApplyFriend) GetUid() int32 { +func (x *ReqApplyFriend) GetUid() int64 { if x != nil { return x.Uid } @@ -10699,7 +10699,7 @@ type ReqAgreeFriend struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uid int32 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` + Uid int64 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` } func (x *ReqAgreeFriend) Reset() { @@ -10732,7 +10732,7 @@ func (*ReqAgreeFriend) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{184} } -func (x *ReqAgreeFriend) GetUid() int32 { +func (x *ReqAgreeFriend) GetUid() int64 { if x != nil { return x.Uid } @@ -10746,7 +10746,7 @@ type ResAgreeFriend struct { 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"` - Uid int32 `protobuf:"varint,3,opt,name=Uid,proto3" json:"Uid,omitempty"` + Uid int64 `protobuf:"varint,3,opt,name=Uid,proto3" json:"Uid,omitempty"` Player *ResPlayerSimple `protobuf:"bytes,4,opt,name=Player,proto3" json:"Player,omitempty"` } @@ -10794,7 +10794,7 @@ func (x *ResAgreeFriend) GetMsg() string { return "" } -func (x *ResAgreeFriend) GetUid() int32 { +func (x *ResAgreeFriend) GetUid() int64 { if x != nil { return x.Uid } @@ -10814,7 +10814,7 @@ type ReqRefuseFriend struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uid int32 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` + Uid int64 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` } func (x *ReqRefuseFriend) Reset() { @@ -10847,7 +10847,7 @@ func (*ReqRefuseFriend) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{186} } -func (x *ReqRefuseFriend) GetUid() int32 { +func (x *ReqRefuseFriend) GetUid() int64 { if x != nil { return x.Uid } @@ -10861,7 +10861,7 @@ type ResRefuseFriend struct { 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"` - Uid int32 `protobuf:"varint,3,opt,name=Uid,proto3" json:"Uid,omitempty"` + Uid int64 `protobuf:"varint,3,opt,name=Uid,proto3" json:"Uid,omitempty"` } func (x *ResRefuseFriend) Reset() { @@ -10908,7 +10908,7 @@ func (x *ResRefuseFriend) GetMsg() string { return "" } -func (x *ResRefuseFriend) GetUid() int32 { +func (x *ResRefuseFriend) GetUid() int64 { if x != nil { return x.Uid } @@ -10921,7 +10921,7 @@ type ReqDelFriend struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uid int32 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` + Uid int64 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` } func (x *ReqDelFriend) Reset() { @@ -10954,7 +10954,7 @@ func (*ReqDelFriend) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{188} } -func (x *ReqDelFriend) GetUid() int32 { +func (x *ReqDelFriend) GetUid() int64 { if x != nil { return x.Uid } @@ -10968,7 +10968,7 @@ type ResDelFriend struct { 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"` - Uid int32 `protobuf:"varint,3,opt,name=Uid,proto3" json:"Uid,omitempty"` + Uid int64 `protobuf:"varint,3,opt,name=Uid,proto3" json:"Uid,omitempty"` } func (x *ResDelFriend) Reset() { @@ -11015,7 +11015,7 @@ func (x *ResDelFriend) GetMsg() string { return "" } -func (x *ResDelFriend) GetUid() int32 { +func (x *ResDelFriend) GetUid() int64 { if x != nil { return x.Uid } @@ -13553,7 +13553,7 @@ type ReqInviteFriendData struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DwUin int32 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` + DwUin int64 `protobuf:"varint,1,opt,name=dwUin,proto3" json:"dwUin,omitempty"` } func (x *ReqInviteFriendData) Reset() { @@ -13586,7 +13586,7 @@ func (*ReqInviteFriendData) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{238} } -func (x *ReqInviteFriendData) GetDwUin() int32 { +func (x *ReqInviteFriendData) GetDwUin() int64 { if x != nil { return x.DwUin } @@ -15791,7 +15791,7 @@ type FriendRoom struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uid int32 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` + Uid int64 `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"` @@ -15828,7 +15828,7 @@ func (*FriendRoom) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{280} } -func (x *FriendRoom) GetUid() int32 { +func (x *FriendRoom) GetUid() int64 { if x != nil { return x.Uid } @@ -15868,7 +15868,7 @@ type RoomOpponent struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uid int32 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` + Uid int64 `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"` @@ -15905,7 +15905,7 @@ func (*RoomOpponent) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{281} } -func (x *RoomOpponent) GetUid() int32 { +func (x *RoomOpponent) GetUid() int64 { if x != nil { return x.Uid } @@ -15946,7 +15946,7 @@ type ReqPlayroomInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uid int32 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` + Uid int64 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` } func (x *ReqPlayroomInfo) Reset() { @@ -15979,7 +15979,7 @@ func (*ReqPlayroomInfo) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{282} } -func (x *ReqPlayroomInfo) GetUid() int32 { +func (x *ReqPlayroomInfo) GetUid() int64 { if x != nil { return x.Uid } @@ -15991,7 +15991,7 @@ type ResPlayroomInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uid int32 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` + Uid int64 `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"` @@ -16035,7 +16035,7 @@ func (*ResPlayroomInfo) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{283} } -func (x *ResPlayroomInfo) GetUid() int32 { +func (x *ResPlayroomInfo) GetUid() int64 { if x != nil { return x.Uid } @@ -17114,7 +17114,7 @@ func (x *ResPlayroomChip) GetMsg() string { return "" } -// 宠物宝藏 +// #region 宠物宝藏 type ReqFriendTreasure struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -17233,12 +17233,13 @@ type TreasureInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Pos int32 `protobuf:"varint,1,opt,name=Pos,proto3" json:"Pos,omitempty"` // 位置 - Type int32 `protobuf:"varint,2,opt,name=Type,proto3" json:"Type,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"` // 头像框 - Uid int32 `protobuf:"varint,5,opt,name=Uid,proto3" json:"Uid,omitempty"` // Uid - Status int32 `protobuf:"varint,6,opt,name=Status,proto3" json:"Status,omitempty"` // 0 未翻 1 已翻 + Pos int32 `protobuf:"varint,1,opt,name=Pos,proto3" json:"Pos,omitempty"` // 位置 + Type int32 `protobuf:"varint,2,opt,name=Type,proto3" json:"Type,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"` // 头像框 + Uid int64 `protobuf:"varint,5,opt,name=Uid,proto3" json:"Uid,omitempty"` // Uid + Status int32 `protobuf:"varint,6,opt,name=Status,proto3" json:"Status,omitempty"` // 0 未翻 1 已翻 + NickName string `protobuf:"bytes,7,opt,name=NickName,proto3" json:"NickName,omitempty"` // 昵称 } func (x *TreasureInfo) Reset() { @@ -17299,7 +17300,7 @@ func (x *TreasureInfo) GetAvatar() int32 { return 0 } -func (x *TreasureInfo) GetUid() int32 { +func (x *TreasureInfo) GetUid() int64 { if x != nil { return x.Uid } @@ -17313,6 +17314,13 @@ func (x *TreasureInfo) GetStatus() int32 { return 0 } +func (x *TreasureInfo) GetNickName() string { + if x != nil { + return x.NickName + } + return "" +} + type ReqFriendTreasureStart struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -17763,7 +17771,7 @@ type ReqAdminInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Uid int32 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` + Uid int64 `protobuf:"varint,1,opt,name=Uid,proto3" json:"Uid,omitempty"` } func (x *ReqAdminInfo) Reset() { @@ -17796,7 +17804,7 @@ func (*ReqAdminInfo) Descriptor() ([]byte, []int) { return file_proto_Gameapi_proto_rawDescGZIP(), []int{316} } -func (x *ReqAdminInfo) GetUid() int32 { +func (x *ReqAdminInfo) GetUid() int64 { if x != nil { return x.Uid } @@ -17866,39 +17874,39 @@ var file_proto_Gameapi_proto_rawDesc = []byte{ 0x73, 0x65, 0x72, 0x42, 0x61, 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x42, 0x61, 0x73, 0x65, 0x22, 0x2b, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0x14, - 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, + 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x22, 0x43, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, - 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, + 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x54, 0x0a, 0x16, 0x52, 0x65, 0x71, 0x42, 0x69, 0x6e, 0x64, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x69, 0x6e, + 0x28, 0x03, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x74, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x42, 0x69, 0x6e, 0x64, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, - 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, + 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x51, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x4f, 0x6e, 0x6c, 0x79, 0x42, 0x69, 0x6e, 0x64, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x14, 0x0a, 0x05, - 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, + 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x71, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x42, 0x69, 0x6e, 0x64, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x12, - 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x4f, 0x0a, 0x11, 0x52, 0x65, 0x71, 0x55, 0x6e, 0x42, 0x69, 0x6e, 0x64, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, - 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x59, 0x0a, 0x11, @@ -17909,11 +17917,11 @@ var file_proto_Gameapi_proto_rawDesc = []byte{ 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x40, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x53, 0x79, 0x6e, 0x47, 0x61, 0x6d, 0x65, 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, 0x12, + 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x4e, 0x65, 0x77, 0x46, 0x42, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4e, 0x65, 0x77, 0x46, 0x42, 0x49, 0x64, 0x22, 0x46, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x53, 0x79, 0x6e, 0x47, 0x61, 0x6d, 0x65, 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, + 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x0e, 0x0a, 0x0c, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x4b, 0x69, 0x63, 0x6b, 0x4f, 0x75, @@ -17953,16 +17961,16 @@ var file_proto_Gameapi_proto_rawDesc = []byte{ 0x69, 0x6e, 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, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, + 0x03, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x46, 0x61, 0x63, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x46, 0x61, 0x63, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x49, 0x64, 0x22, 0x29, 0x0a, 0x11, 0x52, 0x65, 0x71, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x42, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, - 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x22, + 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x22, 0xee, 0x05, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x42, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x65, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x65, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x74, 0x61, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x6f, 0x76, @@ -18009,7 +18017,7 @@ var file_proto_Gameapi_proto_rawDesc = []byte{ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x46, 0x61, 0x63, 0x65, 0x42, 0x6f, 0x6f, 0x6b, 0x49, 0x64, 0x22, 0xe5, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x41, 0x73, 0x73, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x65, + 0x28, 0x03, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x65, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x74, 0x61, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, @@ -18023,7 +18031,7 @@ var file_proto_Gameapi_proto_rawDesc = []byte{ 0x12, 0x16, 0x0a, 0x06, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x22, 0xbb, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x73, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x4f, 0x0a, 0x0b, 0x6d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x73, 0x65, @@ -18035,29 +18043,29 @@ var file_proto_Gameapi_proto_rawDesc = []byte{ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x47, 0x0a, 0x17, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x42, 0x75, 0x79, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x43, 0x6e, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x75, 0x72, 0x43, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, 0x75, 0x72, 0x43, 0x6e, 0x74, 0x22, 0x23, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x64, 0x12, 0x14, - 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, + 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x22, 0x2d, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 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, 0x3f, 0x0a, 0x0f, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x41, 0x64, 0x64, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x64, 0x64, 0x43, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x64, 0x64, 0x43, 0x6e, 0x74, 0x22, 0x25, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x22, 0x2f, 0x0a, 0x0d, 0x52, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x22, 0x2f, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x2a, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x68, 0x65, 0x73, 0x73, 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, 0xf3, 0x01, 0x0a, 0x12, 0x52, 0x65, 0x73, + 0x03, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x22, 0xf3, 0x01, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x68, 0x65, 0x73, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, - 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x4c, 0x0a, 0x0a, 0x6d, 0x43, 0x68, 0x65, 0x73, 0x73, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x68, @@ -18094,7 +18102,7 @@ var file_proto_Gameapi_proto_rawDesc = []byte{ 0x05, 0x52, 0x07, 0x41, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0xf8, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x68, 0x65, 0x73, 0x73, 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, 0x12, 0x4f, 0x0a, 0x0a, 0x6d, 0x43, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x4f, 0x0a, 0x0a, 0x6d, 0x43, 0x68, 0x65, 0x73, 0x73, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x68, 0x65, 0x73, 0x73, 0x44, 0x61, 0x74, 0x61, 0x2e, @@ -18231,10 +18239,10 @@ var file_proto_Gameapi_proto_rawDesc = []byte{ 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x2c, 0x0a, 0x14, 0x52, 0x65, 0x71, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 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, + 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x22, 0xa2, 0x02, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 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, 0x12, 0x1e, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, @@ -18252,11 +18260,11 @@ var file_proto_Gameapi_proto_rawDesc = []byte{ 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x31, 0x0a, 0x19, 0x52, 0x65, 0x71, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x42, 0x72, 0x69, 0x65, 0x66, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x61, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x22, 0xe5, 0x01, 0x0a, 0x19, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x42, 0x72, 0x69, 0x65, 0x66, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 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, 0x12, 0x1e, 0x0a, 0x0a, 0x49, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, @@ -18285,7 +18293,7 @@ var file_proto_Gameapi_proto_rawDesc = []byte{ 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x42, 0x75, 0x79, 0x22, 0x0d, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x9c, 0x02, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, - 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, + 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x76, 0x61, @@ -18464,7 +18472,7 @@ var file_proto_Gameapi_proto_rawDesc = []byte{ 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, 0x37, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x43, 0x61, 0x72, 0x64, 0x47, 0x69, 0x76, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, 0x72, + 0x20, 0x03, 0x28, 0x03, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x43, 0x61, 0x72, 0x64, 0x47, 0x69, 0x76, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, @@ -18488,7 +18496,7 @@ var file_proto_Gameapi_proto_rawDesc = []byte{ 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, 0x09, 0x52, 0x02, 0x49, 0x64, 0x22, 0x37, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x43, 0x61, 0x72, 0x64, 0x53, 0x65, 0x6e, 0x64, 0x12, - 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, + 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x43, 0x61, 0x72, 0x64, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, @@ -18497,7 +18505,7 @@ var file_proto_Gameapi_proto_rawDesc = []byte{ 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x3b, 0x0a, 0x0f, 0x52, 0x65, 0x71, 0x43, 0x61, 0x72, 0x64, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, + 0x28, 0x03, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, 0x61, 0x72, 0x64, 0x49, 0x64, 0x22, 0x4b, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x43, 0x61, 0x72, 0x64, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, @@ -18819,7 +18827,7 @@ var file_proto_Gameapi_proto_rawDesc = []byte{ 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xe3, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6d, 0x70, - 0x6c, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x6c, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 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, @@ -18834,7 +18842,7 @@ var file_proto_Gameapi_proto_rawDesc = []byte{ 0x62, 0x6f, 0x6f, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x46, 0x61, 0x63, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x22, 0x8d, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x61, 0x6e, 0x6b, 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, + 0x01, 0x28, 0x03, 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, @@ -18860,7 +18868,7 @@ var file_proto_Gameapi_proto_rawDesc = []byte{ 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xfb, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, + 0x01, 0x20, 0x01, 0x28, 0x03, 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, @@ -18891,7 +18899,7 @@ var file_proto_Gameapi_proto_rawDesc = []byte{ 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x23, 0x0a, 0x0f, 0x52, 0x65, 0x71, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x12, 0x10, 0x0a, 0x03, - 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0x4b, + 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0x4b, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x67, 0x6e, 0x6f, 0x72, 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, @@ -18934,39 +18942,39 @@ var file_proto_Gameapi_proto_rawDesc = []byte{ 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x22, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0x4a, 0x0a, 0x0e, 0x52, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0x4a, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x46, 0x72, 0x69, 0x65, 0x6e, 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, 0x22, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x41, 0x67, 0x72, 0x65, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0x8f, 0x01, 0x0a, 0x0e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0x8f, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x41, 0x67, 0x72, 0x65, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 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, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x31, 0x0a, 0x06, 0x50, 0x6c, + 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x31, 0x0a, 0x06, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x06, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x22, 0x23, 0x0a, 0x0f, 0x52, 0x65, 0x71, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, - 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, + 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0x5d, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x52, 0x65, 0x66, 0x75, 0x73, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 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, 0x12, - 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, + 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0x20, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x44, 0x65, 0x6c, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, + 0x64, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0x5a, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x46, 0x72, 0x69, 0x65, 0x6e, 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, 0x12, 0x10, 0x0a, - 0x03, 0x55, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, + 0x03, 0x55, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0x1d, 0x0a, 0x07, 0x52, 0x65, 0x71, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x22, 0xe4, 0x01, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, @@ -19253,7 +19261,7 @@ var file_proto_Gameapi_proto_rawDesc = []byte{ 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, + 0x12, 0x14, 0x0a, 0x05, 0x64, 0x77, 0x55, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 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, @@ -19499,7 +19507,7 @@ var file_proto_Gameapi_proto_rawDesc = []byte{ 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, 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, + 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 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, @@ -19507,7 +19515,7 @@ var file_proto_Gameapi_proto_rawDesc = []byte{ 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, + 0x03, 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, @@ -19515,9 +19523,9 @@ var file_proto_Gameapi_proto_rawDesc = []byte{ 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, 0xd9, 0x04, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x50, + 0x28, 0x03, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0xd9, 0x04, 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, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 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, @@ -19654,121 +19662,123 @@ var file_proto_Gameapi_proto_rawDesc = []byte{ 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x69, 0x73, 0x74, 0x32, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x05, 0x4c, 0x69, 0x73, 0x74, 0x32, 0x22, 0x8a, 0x01, 0x0a, 0x0c, 0x54, 0x72, 0x65, 0x61, + 0x52, 0x05, 0x4c, 0x69, 0x73, 0x74, 0x32, 0x22, 0xa6, 0x01, 0x0a, 0x0c, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 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, 0x10, 0x0a, 0x03, 0x55, 0x69, - 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x22, 0x5a, 0x0a, 0x16, 0x52, 0x65, 0x71, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x2a, - 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, - 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x69, - 0x73, 0x74, 0x32, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x69, 0x73, 0x74, 0x32, - 0x22, 0x52, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x72, 0x65, - 0x61, 0x73, 0x75, 0x72, 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, 0x16, 0x0a, 0x14, 0x52, 0x65, 0x71, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x45, 0x6e, 0x64, 0x22, 0x50, 0x0a, 0x14, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, + 0x22, 0x5a, 0x0a, 0x16, 0x52, 0x65, 0x71, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x72, 0x65, + 0x61, 0x73, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x2a, 0x0a, 0x04, 0x4c, 0x69, + 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x75, 0x74, 0x6f, 0x72, + 0x69, 0x61, 0x6c, 0x2e, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x69, 0x73, 0x74, 0x32, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x69, 0x73, 0x74, 0x32, 0x22, 0x52, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, - 0x65, 0x45, 0x6e, 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, 0x29, - 0x0a, 0x15, 0x52, 0x65, 0x71, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x72, 0x65, 0x61, 0x73, - 0x75, 0x72, 0x65, 0x46, 0x69, 0x6c, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x22, 0x51, 0x0a, 0x15, 0x52, 0x65, 0x73, - 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x46, 0x69, - 0x6c, 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, 0x2b, 0x0a, 0x15, - 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, - 0x65, 0x53, 0x74, 0x61, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x74, 0x61, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x74, 0x61, 0x72, 0x22, 0x32, 0x0a, 0x08, 0x41, 0x64, 0x6d, - 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x75, 0x6e, 0x63, 0x18, 0x01, 0x20, + 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, 0x16, 0x0a, 0x14, 0x52, 0x65, 0x71, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x72, 0x65, + 0x61, 0x73, 0x75, 0x72, 0x65, 0x45, 0x6e, 0x64, 0x22, 0x50, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x46, + 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x45, 0x6e, 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, 0x29, 0x0a, 0x15, 0x52, 0x65, + 0x71, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x46, + 0x69, 0x6c, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x03, 0x50, 0x6f, 0x73, 0x22, 0x51, 0x0a, 0x15, 0x52, 0x65, 0x73, 0x46, 0x72, 0x69, 0x65, + 0x6e, 0x64, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x46, 0x69, 0x6c, 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, 0x2b, 0x0a, 0x15, 0x52, 0x65, 0x73, 0x46, + 0x72, 0x69, 0x65, 0x6e, 0x64, 0x54, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, + 0x72, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x74, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x53, 0x74, 0x61, 0x72, 0x22, 0x32, 0x0a, 0x08, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, + 0x71, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x75, 0x6e, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x46, 0x75, 0x6e, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x32, 0x0a, 0x08, 0x41, 0x64, 0x6d, + 0x69, 0x6e, 0x52, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x75, 0x6e, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x46, 0x75, 0x6e, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x49, 0x6e, 0x66, - 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x32, 0x0a, - 0x08, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x75, 0x6e, - 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x46, 0x75, 0x6e, 0x63, 0x12, 0x12, 0x0a, - 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x49, 0x6e, 0x66, - 0x6f, 0x22, 0x20, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, - 0x55, 0x69, 0x64, 0x22, 0x22, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x2a, 0xf5, 0x06, 0x0a, 0x0e, 0x49, 0x54, 0x45, 0x4d, - 0x5f, 0x50, 0x4f, 0x50, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x6c, - 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x69, 0x67, 0x67, - 0x79, 0x42, 0x61, 0x6e, 0x6b, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x68, 0x61, 0x72, 0x67, - 0x65, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x10, 0x03, - 0x12, 0x0f, 0x0a, 0x0b, 0x4c, 0x65, 0x76, 0x55, 0x70, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, - 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x68, 0x65, 0x73, 0x73, - 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x48, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x65, 0x63, 0x6f, 0x72, - 0x61, 0x74, 0x65, 0x43, 0x6f, 0x73, 0x74, 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x65, 0x63, - 0x6f, 0x72, 0x61, 0x74, 0x65, 0x41, 0x64, 0x64, 0x10, 0x09, 0x12, 0x13, 0x0a, 0x0f, 0x42, 0x75, - 0x79, 0x43, 0x68, 0x65, 0x73, 0x73, 0x42, 0x61, 0x67, 0x47, 0x72, 0x69, 0x64, 0x10, 0x0a, 0x12, - 0x0b, 0x0a, 0x07, 0x43, 0x68, 0x65, 0x73, 0x73, 0x45, 0x78, 0x10, 0x0b, 0x12, 0x15, 0x0a, 0x11, - 0x43, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x10, 0x0c, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x78, 0x53, 0x74, 0x61, 0x72, 0x52, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x10, 0x0d, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0x0e, 0x12, 0x0f, 0x0a, 0x0b, 0x47, - 0x75, 0x69, 0x64, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0x0f, 0x12, 0x13, 0x0a, 0x0f, - 0x44, 0x61, 0x69, 0x6c, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, - 0x10, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x57, 0x65, 0x65, 0x6b, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x10, 0x11, 0x12, 0x0d, 0x0a, 0x09, 0x42, 0x75, 0x79, 0x45, 0x6e, 0x65, - 0x72, 0x67, 0x79, 0x10, 0x12, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x65, 0x76, 0x65, 0x6e, 0x4c, 0x6f, - 0x67, 0x69, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x10, 0x13, - 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x10, 0x14, 0x12, 0x15, 0x0a, 0x11, 0x46, 0x61, 0x73, 0x74, 0x50, 0x72, - 0x6f, 0x64, 0x75, 0x63, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0x15, 0x12, 0x14, 0x0a, - 0x10, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x53, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x10, 0x16, 0x12, 0x0e, 0x0a, 0x0a, 0x4d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x10, 0x17, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x53, 0x68, 0x6f, 0x70, 0x10, - 0x18, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, 0x10, 0x19, - 0x12, 0x14, 0x0a, 0x10, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x43, 0x68, 0x65, 0x73, 0x73, - 0x53, 0x68, 0x6f, 0x70, 0x10, 0x1a, 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, - 0x73, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0x1b, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x69, 0x67, - 0x67, 0x79, 0x42, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0x1c, 0x12, 0x13, - 0x0a, 0x0f, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x10, 0x1d, 0x12, 0x14, 0x0a, 0x10, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0x1e, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x68, 0x61, - 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x10, 0x1f, 0x12, 0x0a, 0x0a, 0x06, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0x20, 0x12, 0x14, - 0x0a, 0x10, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x10, 0x21, 0x12, 0x0e, 0x0a, 0x0a, 0x4d, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x54, 0x61, - 0x6b, 0x65, 0x10, 0x22, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x10, 0x23, 0x12, 0x0e, 0x0a, 0x0a, 0x47, 0x75, 0x65, 0x73, 0x73, 0x43, - 0x6f, 0x6c, 0x6f, 0x72, 0x10, 0x24, 0x12, 0x14, 0x0a, 0x10, 0x47, 0x75, 0x65, 0x73, 0x73, 0x43, - 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0x25, 0x12, 0x0e, 0x0a, 0x0a, - 0x52, 0x61, 0x63, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0x26, 0x12, 0x10, 0x0a, 0x0c, - 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x27, 0x12, 0x10, - 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x44, 0x72, 0x61, 0x77, 0x10, 0x28, - 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x43, 0x68, 0x69, 0x70, - 0x10, 0x29, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x46, 0x6c, - 0x69, 0x70, 0x10, 0x2a, 0x12, 0x16, 0x0a, 0x12, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x74, 0x72, - 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x46, 0x69, 0x6c, 0x70, 0x10, 0x2b, 0x12, 0x15, 0x0a, 0x11, - 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x74, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x45, 0x6e, - 0x64, 0x10, 0x2c, 0x12, 0x06, 0x0a, 0x02, 0x47, 0x4d, 0x10, 0x2d, 0x12, 0x12, 0x0a, 0x0e, 0x46, - 0x72, 0x69, 0x65, 0x6e, 0x64, 0x74, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x10, 0x2e, 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, + 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x20, 0x0a, + 0x0c, 0x52, 0x65, 0x71, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, + 0x03, 0x55, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, + 0x22, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x12, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, + 0x6e, 0x66, 0x6f, 0x2a, 0xf5, 0x06, 0x0a, 0x0e, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x50, 0x4f, 0x50, + 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, + 0x6f, 0x6d, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x69, 0x67, 0x67, 0x79, 0x42, 0x61, 0x6e, + 0x6b, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x10, 0x02, 0x12, + 0x0b, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, + 0x4c, 0x65, 0x76, 0x55, 0x70, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0x04, 0x12, 0x0f, 0x0a, + 0x0b, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x68, 0x65, 0x73, 0x73, 0x10, 0x05, 0x12, 0x12, + 0x0a, 0x0e, 0x48, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x43, + 0x6f, 0x73, 0x74, 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, + 0x65, 0x41, 0x64, 0x64, 0x10, 0x09, 0x12, 0x13, 0x0a, 0x0f, 0x42, 0x75, 0x79, 0x43, 0x68, 0x65, + 0x73, 0x73, 0x42, 0x61, 0x67, 0x47, 0x72, 0x69, 0x64, 0x10, 0x0a, 0x12, 0x0b, 0x0a, 0x07, 0x43, + 0x68, 0x65, 0x73, 0x73, 0x45, 0x78, 0x10, 0x0b, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x61, 0x72, 0x64, + 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0x0c, 0x12, + 0x10, 0x0a, 0x0c, 0x45, 0x78, 0x53, 0x74, 0x61, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, + 0x0d, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0x0e, 0x12, 0x0f, 0x0a, 0x0b, 0x47, 0x75, 0x69, 0x64, 0x65, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0x0f, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x61, 0x69, 0x6c, + 0x79, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0x10, 0x12, 0x13, 0x0a, + 0x0f, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x57, 0x65, 0x65, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x10, 0x11, 0x12, 0x0d, 0x0a, 0x09, 0x42, 0x75, 0x79, 0x45, 0x6e, 0x65, 0x72, 0x67, 0x79, 0x10, + 0x12, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x65, 0x76, 0x65, 0x6e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x10, 0x13, 0x12, 0x14, 0x0a, 0x10, + 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x10, 0x14, 0x12, 0x15, 0x0a, 0x11, 0x46, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0x15, 0x12, 0x14, 0x0a, 0x10, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x53, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0x16, 0x12, + 0x0e, 0x0a, 0x0a, 0x4d, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0x17, 0x12, + 0x0c, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x53, 0x68, 0x6f, 0x70, 0x10, 0x18, 0x12, 0x0d, 0x0a, + 0x09, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, 0x10, 0x19, 0x12, 0x14, 0x0a, 0x10, + 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x70, + 0x10, 0x1a, 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x52, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x10, 0x1b, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x69, 0x67, 0x67, 0x79, 0x42, 0x61, + 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0x1c, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x68, + 0x61, 0x6d, 0x70, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0x1d, 0x12, + 0x14, 0x0a, 0x10, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x10, 0x1e, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x68, 0x61, 0x6d, 0x70, 0x73, 0x68, + 0x69, 0x70, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0x1f, 0x12, 0x0a, + 0x0a, 0x06, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0x20, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x10, 0x21, + 0x12, 0x0e, 0x0a, 0x0a, 0x4d, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x6b, 0x65, 0x10, 0x22, + 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x10, 0x23, 0x12, 0x0e, 0x0a, 0x0a, 0x47, 0x75, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, + 0x10, 0x24, 0x12, 0x14, 0x0a, 0x10, 0x47, 0x75, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0x25, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x61, 0x63, 0x65, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0x26, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x79, + 0x72, 0x6f, 0x6f, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x27, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x6c, + 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x44, 0x72, 0x61, 0x77, 0x10, 0x28, 0x12, 0x10, 0x0a, 0x0c, + 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x43, 0x68, 0x69, 0x70, 0x10, 0x29, 0x12, 0x10, + 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x72, 0x6f, 0x6f, 0x6d, 0x46, 0x6c, 0x69, 0x70, 0x10, 0x2a, + 0x12, 0x16, 0x0a, 0x12, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x74, 0x72, 0x65, 0x61, 0x73, 0x75, + 0x72, 0x65, 0x46, 0x69, 0x6c, 0x70, 0x10, 0x2b, 0x12, 0x15, 0x0a, 0x11, 0x46, 0x72, 0x69, 0x65, + 0x6e, 0x64, 0x74, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x45, 0x6e, 0x64, 0x10, 0x2c, 0x12, + 0x06, 0x0a, 0x02, 0x47, 0x4d, 0x10, 0x2d, 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x72, 0x69, 0x65, 0x6e, + 0x64, 0x74, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x10, 0x2e, 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 (