[1,0,0,[["cc.TextAsset",["_name","text"],1]],[[0,0,1,3]],[[0,"game","syntax = \"proto3\";\npackage msg;\n\r\n\r\n\r\n\r\n// ============================================================================\r\n// msgid range for GS <-> GS: [110600, 110700)\r\n// ============================================================================\r\n\r\n\r\n// ============================================================================\r\n\r\n// 参赛玩家\r\nmessage GuildFightAttendPlayer {\r\n    BattlePlayer PlrInfo = 1;\r\n    repeated BattleFighter Fighters = 2;\r\n    int32 Score = 3;\r\n}\r\n\r\n// 参赛公会\r\nmessage GuildFightAttendGuild { \r\n    int32 SvrId            = 1; // 服务器id\r\n    string GuildId         = 2; // 公会id\r\n\tstring GuildName       = 3; // 公会名字\r\n\tint32 GuildIcon        = 4; // 公会图标\r\n\tint32 Lv               = 5; // 公会等级\r\n    string Owner           = 6; // 会长\r\n    repeated GuildFightAttendPlayer Plrs = 7;\r\n}\r\n\r\n// 主服务器请求拉取各公会参赛数据\r\nmessage GS_GuildFightPrepareAttendGuilds { // msgid: 110601\r\n}\r\n\r\n// 参赛公会信息返回主服务器\r\nmessage GS_GuildFightPrepareAttendGuilds_R { // msgid: 110602\r\n    repeated GuildFightAttendGuild Data  = 1;\r\n}\r\n\r\n// 请求信息\r\nmessage GS_GuildFightInfoGame { // msgid: 110603\r\n    int32 SvrId = 1;\r\n    string GuildId = 2;\r\n    BattlePlayer PlrInfo = 3; // 更新玩家信息\r\n    int64 CacuTs = 4; // 计算时间戳，用来回复道具\r\n}\r\n\r\nmessage GS_GuildFightStartGame { // msgid: 110604\r\n    int32 SvrId = 1;\r\n    string GuildId = 2;\r\n    string PlrId = 3;\r\n    string FightGuildId = 4;\r\n}\r\n\r\nmessage GS_GuildFightStartGame_R { // msgid: 110605\r\n    int32 ErrorCode = 1;\r\n    string PlrId = 2;\r\n    bool High = 3;\r\n}\r\n\r\nmessage GS_GuildFightChooseGame { // msgid: 110606\r\n    int32 SvrId = 1;\r\n    string GuildId = 2;\r\n    string PlrId = 3;\r\n    int32 Idx = 4;\r\n}\r\n\r\nmessage GS_GuildFightChooseGame_R { // msgid: 110607\r\n    int32 ErrorCode = 1;\r\n    string PlrId = 2;\r\n    int32 Idx = 3;\r\n}\r\n\r\nmessage GS_GuildFightMatchFightGame { // msgid: 110608\r\n    int32 SvrId = 1;\r\n    string GuildId = 2;\r\n    string PlrId = 3;\r\n    int32 Idx = 4;\r\n}\r\n\r\n// 本局结算\r\nmessage GS_GuildFightMatchFightGame_R { // msgid: 110616\r\n    string PlrId = 1;\r\n    bool High = 2; // 高级挑战\r\n}\r\n\r\nmessage GS_GuildFightKillRankGame { // msgid: 110609\r\n    int32 SvrId = 1;\r\n    string GuildId = 2;\r\n    string PlrId = 3;\r\n}\r\n\r\nmessage GS_GuildFightEnemyRankGame { // msgid: 110610\r\n    int32 SvrId = 1;\r\n    string GuildId = 2;\r\n    string PlrId = 3;\r\n}\r\n\r\nmessage GS_GuildFightRankPlayerGame { // msgid: 110611\r\n    int32 SvrId = 1;\r\n    string GuildId = 2;\r\n    string PlrId = 3;\r\n}\r\n\r\nmessage GS_GuildFightRankGuildGame { // msgid: 110612\r\n    int32 SvrId = 1;\r\n    string GuildId = 2;\r\n    string PlrId = 3;\r\n}\r\n\r\n// 修改参赛公会信息\r\nmessage GS_GuildFightModifyGuild { // msgid: 110613         \r\n    string GuildId         = 1; // 公会id\r\n\tstring GuildName       = 2; // 公会名字\r\n\tint32 GuildIcon        = 3; // 公会图标\r\n\tint32 Lv               = 4; // 公会等级\r\n    string Owner           = 5; // 会长\r\n}\r\n\r\n// 结算公会奖励\r\nmessage GS_GuildFightMailGuildReward { // msgid: 110614\r\n    string GuildId         = 1; // 公会id\r\n    int32 Rank             = 2;\r\n    repeated string PlrIds = 3; // 参与的玩家\r\n}\r\n\r\nmessage GS_GuildFightMailPlayerReward { // msgid: 110615\r\n    map<string,int32> Rank = 1;\r\n}\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [7500, 7600)\n// ============================================================================\n\n\n// ============================================================================\n\nmessage BillData {\n    int32 SumBill                   = 1; // 总计充值钻石数\n    int32 DailyBill                 = 2; // 今日充值钻石数\n    map<int32, int32> DailyCnt      = 3; // 每日充值次数 typeid:cnt\n    map<int32, int32> DailyBillCnt  = 4; // 每日充值次数 id:cnt\n    map<int32, int32> TBuyCnt       = 5; // 翻倍档位购买次数 id:cnt\n    map<int32, int32> SumBuyCnt     = 6; // 累计档位购买次数 typeid:cnt\n}\n\n// ============================================================================\n\n// 推送：充值配置已变更\nmessage GS_BillConfChange { // msgid: 7500\n}\n\n// 推送：充值\nmessage GS_BillDone { // msgid: 7501\n    int32 ProdId = 1; // 充值id\n    BillData BillData = 2;\n}\n\n// 推送：每日充值次数\nmessage GS_BillDailyCnt { // msgid: 7502\n    map<int32, int32> DailyCnt      = 1; // 每日充值次数 typeid:cnt\n    map<int32, int32> DailyBillCnt  = 2; // 每日充值次数 id:cnt\n    map<int32, int32> TBuyCnt       = 3; // 翻倍档位购买次数 id:cnt\n}\n// ============================================================================\n\n// 拉取充值配置\nmessage C_BillConfGet { // msgid: 7510\n    string PlatId = 1;\n}\n\nmessage GS_BillConfGet_R { // msgid: 7511\n    int32 ErrorCode = 1;\n    bytes Data      = 2;\n}\n\n// 获取常规购买信息\nmessage C_BillNormalInfo { // msgid: 7512\n}\n\nmessage GS_BillNormalInfo_R { // msgid: 7513\n    int32 ErrorCode      = 1;\n    repeated Id_N BuyCnt = 2;\n}\n\n// 获取充值返利码\nmessage C_BillRefundCodeGet { // msgid: 7514\n}\n\nmessage GS_BillRefundCodeGet_R { // msgid: 7515\n    int32 ErrorCode = 1;\n    string Code     = 2;\n}\n\n// 领取返利\nmessage C_BillRefundTake { // msgid: 7516\n    string Code = 1;\n}\n\nmessage GS_BillRefundTake_R { // msgid: 7517\n    int32 ErrorCode = 1;\n    Rewards Rewards = 2;\n}\n\n// 伪充值-钻石\nmessage C_BillFakeDiamond { // msgid: 7518\n    int32 Id = 1;\n}\n\nmessage GS_BillFakeDiamond_R { // msgid: 7519\n    int32 ErrorCode = 1;\n}\n\n// 代币购买商品\nmessage C_BillTokenBuy { // msgid: 7520\n    int32 Id = 1;\n}\n\nmessage GS_BillTokenBuy_R { // msgid: 7521\n    int32 ErrorCode = 1;\n}\n\r\n\r\n\r\n\r\n// ============================================================================\r\n// msgid range for GS <-> GS: [110100, 110200)\r\n// ============================================================================\r\n\r\n\r\n// ============================================================================\r\n\r\nmessage CrossSmackDownPlrRec {\r\n  PlayerInfo Player = 1;\r\n  repeated BattleFighterTeam Fighters = 2;\r\n  int32 ZoneId = 4;\r\n}\r\n\r\nmessage CrossSmackDownGuessResult {\r\n  string PlrId = 1;\r\n  string Name = 2;\r\n  int32 Num = 3;\r\n}\r\n\r\nmessage CrossSmackDownMailReward {\r\n  string PlrId = 1;\r\n  int32 ConfId = 2;\r\n  int32 Rank = 3;\r\n}\r\n\r\n// ============================================================================\r\n\r\nmessage GS_CrossSmackDownRankGame { // msgid: 110100\r\n  string PlrId = 1;\r\n  int32 SvrId = 2;\r\n  int32 N = 3;\r\n  int32 ZoneId = 4;\r\n}\r\n\r\nmessage GS_BestPersonSmackGuessRateGame { // msgid: 110101\r\n  string PlrId = 1;\r\n  int32 Svr = 2;\r\n  int32 ZoneId = 3;\r\n  int32 BattleId = 4;\r\n}\r\n\r\nmessage GS_BestPersonSeasonLogListGame { // msgid: 110102\r\n  string PlrId = 1;\r\n  int32 Svr = 2;\r\n}\r\n\r\nmessage GS_CrossSmackDownGuessResultGame { // msgid: 110103\r\n  repeated CrossSmackDownGuessResult Results = 1;\r\n}\r\n\r\nmessage GS_CrossSmackDownInfoGame { // msgid: 110104\r\n  string PlrId = 1;\r\n  int32 SvrId = 2;\r\n  int32 ZoneId = 3;\r\n}\r\n\r\nmessage GS_CrossSmackDownGuessGame { // msgid: 110105\r\n  string PlrId = 1;\r\n  int32 Num    = 2;\r\n  string From  = 3;\r\n  int32 SvrId  = 4;\r\n  int32 ZoneId = 5;\r\n}\r\n\r\nmessage GS_CrossSmackDownGuessGame_R { // msgid: 110106\r\n  int32 ErrorCode = 1;\r\n  string PlrId    = 2;\r\n  int32 Num       = 3;\r\n  float Rate      = 4;\r\n  string From     = 5;\r\n}\r\n\r\nmessage GS_CrossSmackDownGuessListGame { // msgid: 110107\r\n  string PlrId = 1;\r\n  int32 SvrId = 2;\r\n  int32 ZoneId = 3;\r\n}\r\n\r\nmessage GS_CrossSmackDownBattleInfoGame { // msgid: 110108\r\n  string PlrId = 1;\r\n  int32 SvrId = 2;\r\n  int32 BattleId = 3;\r\n  int32 ZoneId = 4;\r\n}\r\n\r\nmessage GS_CrossSmackDownGroupInfoGame { // msgid: 110109\r\n  string PlrId = 1;\r\n  int32 SvrId = 2;\r\n  int32 Idx = 3;\r\n  int32 ZoneId = 4;\r\n}\r\n\r\nmessage GS_CrossSmackDownGroupReplayGame { // msgid: 110110\r\n  string PlrId = 1;\r\n  int32 SvrId = 2;\r\n  int32 BattleId = 3;\r\n  int32 ZoneId = 4;\r\n}\r\n\r\nmessage GS_CrossSmackDownGuessInfoGame { // msgid: 110111\r\n  string PlrId = 1;\r\n  int32 SvrId = 2;\r\n  int32 ZoneId = 3;\r\n}\r\n\r\nmessage GS_CrossSmackDownPlrRecUpdateGame { // msgid: 110112\r\n  repeated string PlrId = 1;\r\n  int32 ZoneId = 2;\r\n}\r\n\r\nmessage GS_CrossSmackDownPlrRecUpdateGame_R { // msgid: 110113\r\n  repeated CrossSmackDownPlrRec Rec = 1;\r\n}\r\n\r\nmessage GS_BestPersonLikeRewardGame { // msgid: 110114\r\n  string PlrId = 1;\r\n  int32 Svr = 2;\r\n}\r\n\r\nmessage GS_BestPersonLikeRewardGame_R { // msgid: 110115\r\n  int32 ErrorCode = 1;\r\n  repeated int32 ValidId = 2;\r\n  string PlrId = 3;\r\n}\r\n\r\nmessage GS_CrossSmackDownMailRewardGame { // msgid: 110116\r\n  repeated CrossSmackDownMailReward Reward = 1;\r\n}\r\n\r\nmessage GS_BestPersonSeasonIdSyncGame { // msgid: 110117\r\n  int32 SeasonId = 1;\r\n}\r\n\r\nmessage GS_CrossSmackDownGetPlayerInfo { // msgid: 110118\r\n  string PlrId = 1;\r\n  string From = 2;\r\n  int32 SvrId = 3;\r\n}\r\n\r\nmessage GS_CrossSmackDownFinalFour { // msgid: 110119\r\n  string PlrId = 1;\r\n  int32 SvrId = 2;\r\n}\r\n\r\n// 君临九霄积分赛开始\r\nmessage GS_BestPersonArenaOpenGame { // msgid: 110120\r\n  repeated CrossSmackDownPlrRec Rec = 1;\r\n  map<string, int32> Score = 2;\r\n  map<string, int64> Dmg = 3;\r\n}\r\n\r\n// 积分赛刷新敌人\r\nmessage GS_BestPersonArenaPickEnemyGame { // msgid: 110121\r\n  string PlrId = 1;\r\n  int32 Svr = 2;\r\n  int32 ZoneId = 3;\r\n}\r\n\r\nmessage GS_BestPersonArenaPickEnemyGame_R { // msgid: 110122\r\n  string PlrId = 1;\r\n  repeated ArenaEnemy Enemies = 2;\r\n}\r\n\r\n// 积分赛挑战\r\nmessage GS_BestPersonArenaFightGame { // msgid: 110123\r\n  string PlrId = 1;\r\n  int32 Svr = 2;\r\n  int32 ZoneId = 3;\r\n  string Target = 4;\r\n}\r\n\r\nmessage GS_BestPersonArenaFightGame_R { // msgid: 110124\r\n  string PlrId = 1;\r\n  int32 ErrorCode = 2;\r\n  repeated BPArenaRoundData Rounds = 3;\r\n  bool IsWin = 4;\r\n  int32 Score1 = 5;\r\n  int32 AddScore1 = 6; // 自己积分变化\r\n  int32 Score2 = 7;\r\n  int32 AddScore2 = 8; // 对手积分变化\r\n}\r\n\r\n// 战报更新\r\nmessage GS_BestPersonArenaReplayUpdateGame { // msgid: 110125\r\n  string PlrId = 1;\r\n  BPArenaRecord Replay = 2;\r\n}\r\n\r\n// 积分赛结算\r\nmessage GS_BestPersonArenaResultGame { // msgid: 110126\r\n  map<string, int32> Result = 1;\r\n  map<string, int32> ZoneId = 2;\r\n}\r\n\r\n// 积分赛排名\r\nmessage GS_BestPersonArenaRankListGame { // msgid: 110127\r\n  string PlrId = 1;\r\n  int32 Svr = 2;\r\n  int32 ZoneId = 3;\r\n  int32 Begin = 4;\r\n  int32 N = 5;\r\n}\r\n\r\nmessage GS_BestPersonSeasonLogGame { // msgid: 110128\r\n  string PlrId = 1;\r\n  int32 Svr = 2;\r\n  int32 SeasonId = 3;\r\n}\r\n\r\nmessage GS_BestPersonLikeGame { // msgid: 110129\r\n  string PlrId = 1;\r\n  int32 Svr = 2;\r\n  int32 SeasonId = 3;\r\n  string Target = 4;\r\n}\r\n\r\nmessage GS_BestPersonLikeGame_R { // msgid: 110130\r\n  int32 ErrorCode = 1;\r\n  int32 SeasonId = 3;\r\n  string Target = 4;\r\n  int32 BeLike = 5;\r\n  int32 SumLike = 6;\r\n  string PlrId = 7;\r\n}\r\n\r\nmessage GS_BestPersonInfoGame { // msgid: 110131\r\n  string PlrId = 1;\r\n  int32 Svr = 2;\r\n  int32 GuessNum = 3; // 竞猜币数量\r\n  int32 LikeCnt = 4; // 已点赞次数\r\n  repeated int32 LikeReward = 5; // 已领取的点赞奖励\r\n  int32 ZoneId = 6; // 战区id：1.A战区；2.B战区\r\n  int32 ArenaCnt = 7;\r\n  int32 ArenaWin = 8;\r\n}\r\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [12950, 13000)\n// ============================================================================\n\n\n// ============================================================================\n\n// 内测码\n\nmessage TestCode {\n    string Code          = 1;\n    repeated int32 Taken = 2; // 已领取奖励id\n}\n\n// ============================================================================\n\nmessage C_TestCodeInfo { // msgid: 12950\n}\n\nmessage GS_TestCodeInfo_R { // msgid: 12951\n    int32 ErrorCode = 1;\n    TestCode Data   = 2;\n}\n\n// 领取登录奖励\nmessage C_TestCodeTakeLogin { // msgid: 12952\n    int32 Day = 1;\n}\n\nmessage GS_TestCodeTakeLogin_R { // msgid: 12953\n    int32 ErrorCode = 1;\n    int32 Day       = 2;\n    Rewards Rewards = 3;\n}\n\n// 领取返利\nmessage C_TestCodeTakeRefund { // msgid: 12954\n    string Code = 1;\n}\n\nmessage GS_TestCodeTakeRefund_R { // msgid: 12955\n    int32 ErrorCode = 1;\n    Rewards Rewards = 2;\n}\n\n// ============================================================================\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [8950, 9000)\n// ============================================================================\n\n\n// ============================================================================\n\nmessage RankBaseData {\n    int32 Rk                    = 1; // 排行榜\n    int32 SelfIdx               = 2; // 自己的名次\n    int64 SelfScore             = 3; // 自己的排名值\n    int64 NextTs                = 4; // 下次排行时间\n    repeated RankRecord Records = 5; // 排名列表\n    int32 SelfEx1               = 6; // 自己的扩展字段\n}\n\nmessage RankRecord {\n    int32 Idx       = 1;\n    int64 Score     = 2;\n    PlayerInfo Info = 3;\n    int32 Ex1       = 4;\n    Hero TopHero    = 5; // 最高战力的神将（用于部分排行界面展示）\n    int64 Ts        = 6;\n}\n\nmessage RankNo1Record {\n    int32 Rk       = 1;\n    RankRecord Rec = 2;\n}\n\n// 玩家个人数据\nmessage Rank {\n    map<int32,Mobai> Mobai = 1; // 已膜拜过的\n}\n\nmessage Mobai {\n    int32 Rk            = 1;\n    repeated int32 N    = 2;\n}\n\n// ============================================================================\n\nmessage C_RankGetRegion { // msgid: 8950\n    int32 Rk    = 1;\n    int32 Begin = 2;\n    int32 N     = 3;\n}\n\nmessage GS_RankGetRegion_R { // msgid: 8951\n    int32 ErrorCode       = 1;\n    RankBaseData RankData = 2;\n}\n\n// 膜拜\nmessage C_RankMobai { // msgid: 8952\n    int32 Rk = 1;\n    int32 N = 2;\n}\n\nmessage GS_RankMobai_R { // msgid: 8953\n    int32 ErrorCode = 1;\n    int32 Rk        = 2;\n    int32 N         = 3;\n    Rewards Rewards = 4;\n}\n\n// 排行榜第一名的数据\nmessage C_RankNo1 { // msgid: 8954\n    repeated int32 Rks = 1;\n}\n\nmessage GS_RankNo1_R { // msgid: 8955\n    int32 ErrorCode             = 1;\n    repeated RankNo1Record Recs = 2;\n}\n\n// 排行榜刷新推送\nmessage GS_RankUpdate { // msgid: 8990\n}\n\n// ============================================================================\n\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [8200, 8300)\n// ============================================================================\n\nmessage LeaderData {\n    int32 Step = 1;               // 军衔等级\n    int32 Job = 2;                // 职业类型\n\tint32 Id = 3;                 // 主角Id\n    map<int32,int32> Peaks = 4;   // 巅峰等级加点\n}\n\n// ============================================================================\n\n\n// ============================================================================\n\n// 巅峰等级加点\nmessage C_LeaderPeakSet { // msgid: 8210\n    map<int32,int32> Peaks = 1;   // 巅峰等级加点\n}\n\nmessage GS_LeaderPeakSet_R { // msgid: 8211\n    int32 ErrorCode = 1;\n    map<int32,int32> Peaks = 2;   // 巅峰等级加点\n}\n\n// 军衔晋升\nmessage C_LeaderStepUp { // msgid: 8212\n}\n\nmessage GS_LeaderStepUp_R { // msgid: 8213\n    int32 ErrorCode = 1;\n    int32 Step = 2;\n}\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [8850, 8900)\n// ============================================================================\n\n\n// ============================================================================\n\n// 日常任务\nmessage DailyTaskData {\n    repeated DailyTaskItem Items = 1; // 任务\n    int32 Active                 = 2; // 活跃度\n    repeated int32 Taken         = 3; // 已领取宝箱id\n}\n\nmessage DailyTaskItem {\n    int32 Id  = 1;\n    int64 Val = 2;\n    bool Fin  = 3;\n    bool T    = 4;\n}\n\n// ============================================================================\n\n// 通知: 进度变化\nmessage GS_DailyTaskValueChanged { // msgid: 8850\n    Cond_Obj Obj = 1;\n}\n\n// ============================================================================\n\nmessage C_DailyTaskInfo { // msgid: 8860\n}\n\nmessage GS_DailyTaskInfo_R { // msgid: 8861\n    DailyTaskData Data = 1;\n}\n\nmessage C_DailyTaskTakeReward { // msgid: 8862\n}\n\nmessage GS_DailyTaskTakeReward_R { // msgid: 8863\n    int32 ErrorCode    = 1;\n    repeated int32 Ids = 2;\n    Rewards Rewards    = 3;\n    int32 Active       = 4;\n}\n\nmessage C_DailyTaskTakeBox { // msgid: 8864\n    int32 Id = 1;\n}\n\nmessage GS_DailyTaskTakeBox_R { // msgid: 8865\n    int32 ErrorCode = 1;\n    int32 Id        = 2;\n    Rewards Rewards = 3;\n}\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [8500, 8550)\n// ============================================================================\n\n\n// ============================================================================\n\n// 抽卡\nmessage DrawData {\n    repeated DrawTpData Tps = 1;\n}\n\nmessage DrawTpData {\n    string Tp            = 1; // 类型\n    int32 TotalCnt       = 2; // 总抽次数\n    int32 TodayCnt       = 3; // 今日抽卡次数\n    int32 ExtraCnt       = 4; // 上次触发基础保底后的次数\n    int32 CoreCnt        = 5; // 上次触发高级保底后的次数\n    int32 Lv             = 6; // 招募等级\n    int32 Exp            = 7; // 招募经验\n    repeated int32 Taken = 8; // 已领取等级奖励\n    int32 Score          = 9; // 积分\n}\n\n// ============================================================================\n\nmessage C_DrawGetInfo { // msgid: 8500\n}\n\nmessage GS_DrawGetInfo_R { // msgid: 8501\n    int32 ErrorCode = 1;\n    DrawData Draw   = 2;\n}\n\nmessage C_DrawTp { // msgid: 8502\n    string Tp = 1;\n    int32 N   = 2; // 几抽\n    bool AD   = 3; // 是否广告招募\n}\n\nmessage GS_DrawTp_R { // msgid: 8503\n    int32 ErrorCode     = 1;\n    DrawTpData DrawTp   = 2;\n    Rewards Rewards     = 3;\n    repeated Item Items = 4; // 道具显示\n}\n\nmessage C_DrawScoreBoxTake { // msgid: 8504\n    string Tp = 1;\n}\n\nmessage GS_DrawScoreBoxTake_R { // msgid: 8505\n    int32 ErrorCode = 1;\n    string Tp = 2;\n    int32 Score     = 3;\n    Rewards Rewards = 4;\n}\n\nmessage GS_DrawTpUpdate { // msgid: 8508\n    DrawTpData DrawTp = 1;\n}\n\n// 领取招募奖励\nmessage C_DrawTpLvReward { // msgid: 8509\n    string Tp = 1;\n    int32 Lv  = 2;\n}\n\nmessage GS_DrawTpLvReward_R { // msgid: 8510\n    int32 ErrorCode     = 1;\n    Rewards Rewards     = 2;\n}\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [5100, 5200)\n// ============================================================================\n\n\n// ============================================================================\n\nmessage PlayerInfo {\n    string PlrId            = 1;  // 玩家id\n    string Name             = 2;  // 玩家名\n    int32 SvrId             = 3;  // 服务器id\n    int32 Head              = 4;  // 头像\n    int32 HFrame            = 5;  // 头像框\n    int32 Figure            = 6;  // 形象\n    int32 Lv                = 7;  // 等级\n    int32 Vip               = 8;  // vip等级\n    string GuildId          = 9;  // 家族id\n    string GName            = 10; // 家族名\n    int64 AtkPwr            = 11; // 战力\n    int32 Title             = 12; // 称号\n    int32 GuildIcon         = 16; // 家族Icon\n    int64 GPower            = 17; // 家族战力\n    map<int32, double> Props = 18; // 属性\n    int32 LeaderId          = 20; // 主角Id\n    int32 Sex               = 21; // 性别\n    repeated EquipInfo Equips = 22; // 装备\n    int64 HaloId             = 23; // 光环Id（表Id）\n    int64 ExtraAtk           = 24; // 额外固定战力\n    map<int32,int32> Fashions = 25; // 幻化<slot,id>\n    int32 Wing               = 26; // 穿戴的翅膀，0表示隐藏\n    int32 WingLv             = 27; // 翅膀等级\n    repeated SkillInfo Skills = 28; // 技能符文\n    map<int32,int32> Gems    = 29; // 宝石\n    repeated MagicInfo Magics = 30; // 魔能\n    map<int32, Mount> Mounts = 31; // 上阵的坐骑\n\n}\n\n// 玩家简要信息\nmessage PlayerBaseInfo {\n    string PlrId            = 1;  // 玩家id\n    string Name             = 2;  // 玩家名\n    int32 SvrId             = 3;  // 服务器id\n    int32 Head              = 4;  // 头像\n    int32 HFrame            = 5;  // 头像框\n    int32 Figure            = 6;  // 形象\n    int32 Lv                = 7;  // 等级\n    string GuildId          = 8;  // 家族id\n    string GName            = 9;  // 家族名\n    int64 AtkPwr            = 10; // 战力\n    int32 Title             = 11; // 称号\n    int32 GuildIcon         = 12; // 家族Icon\n    int32 LeaderId          = 13; // 主角Id\n    map<int32,int32> Fashions = 14; // 幻化<slot,id>\n    int32 Wing               = 15; // 穿戴的翅膀，0表示隐藏\n    repeated int32 Equips    = 16; // 装备Id\n    int32 Mount              = 17; // 主坐骑\n}\n\n// 阵容信息\nmessage TeamInfo {\n    repeated HeroInfo Heroes = 1; // 上阵英雄\n}\n\n// 英雄信息\nmessage HeroInfo {\n    int32 Id                  = 1;  // 表Id\n    int32 Lv                  = 2;  // 等级\n    int32 Star                = 3;  // 星级\n    map<int32, double> Props  = 4;  // 属性列表\n    int64 AtkPwr              = 5;  // 战力\n    int32 Pos                 = 7;  // 上阵位置\n    int32 Step                = 8;  // 突破等级\n}\n\n// 主角装备信息\nmessage EquipInfo {\n    int64 Seq     = 1; // 序号\n    int32 Id      = 2; // 表 Id\n    int32 Color                    = 3; // 装备品质\n    int32 Lv                       = 4; // 装备等级\n    map<int32, double> BaseProp    = 5; // 随机主属性\n    repeated EquipSubProp SubProps = 6; // 随机副属性\n}\n\n// 主角魔能信息\nmessage MagicInfo {\n    int64 Seq     = 1; // 序号\n    int32 Id      = 2; // 表 Id\n    int32 Lv      = 3; // 物品等级\n    int32 Up      = 4; // 强化等级\n    repeated MagicSubProp SubProps = 5; // 随机副属性\n}\n\n// 主角技能信息\nmessage SkillInfo {\n    int32 Skill = 1;\n    int32 RuneId = 2; // 当前镶嵌的符文Id，item表\n    int32 Lv = 3; // 符文等级\n    int32 Step = 4; // 符文阶级（达到最高品质后才能升阶）\n}\n\n// 形象库\nmessage FigureStore {\n    map<int32, int32> Ids       = 1; // 已经获得的形象<id, lv>\n    map<int32, int32> HeroWear  = 2; // 神将穿戴形象<id, id>\n}\n\n// ============================================================================\n\n// 推送\nmessage GS_PlayerUpdate_Lv { // msgid: 5100\n    int32 Level     = 1;     // -1 表示无变化\n    int32 Exp       = 2;\n    Rewards Rewards = 3;\n}\n\nmessage GS_PlayerUpdate_AtkPower { // msgid: 5101\n    int64 AtkPwr = 1;\n}\n\nmessage GS_PlayerHeadNew { // msgid: 5102\n    int32 Id       = 1;\n    int64 ExpireTs = 2; // -1 代表永久激活\n}\n\nmessage GS_PlayerHFrameNew { // msgid: 5103\n    int32 Id       = 1;\n    int64 ExpireTs = 2; // -1 代表永久激活\n}\n\nmessage GS_PlayerFigureNew { // msgid: 5104\n    int32 Id       = 1;\n    bool Del       = 2; // 移除\n}\n\nmessage GS_PlayerTitleNew { // msgid: 5105\n    int32 Id       = 1;\n    int64 ExpireTs = 2; // -1 代表永久激活\n}\n\n// 每日重置\nmessage GS_PlayerDailyReset { // msgid: 5106\n}\n\nmessage GS_PlayerChatBoxNew { // msgid: 5107\n    int32 Id        = 1;\n    int64 ExpireTs  = 2; // -1 代表永久激活\n    Rewards Rewards = 3;\n}\n\n// ============================================================================\n\n// 创角\nmessage C_PlayerCreate { // msgid: 5130\n    string Name = 1;\n    int32 Job = 2; // 职业Id\n}\n\nmessage GS_PlayerCreate_R { // msgid: 5131\n    int32 ErrorCode = 1;\n    string Name     = 2;\n    int32 Id        = 4; // 主角Id\n}\n\n// 拉取玩家信息\nmessage C_PlayerInfo { // msgid: 5132\n    string PlrId = 1;\n    string Mod   = 2; // 战斗模块\n    int32 SvrId = 3;\n}\n\nmessage GS_PlayerInfo_R { // msgid:5133\n    int32 ErrorCode                = 1;\n    PlayerInfo PlrInfo             = 2; // 玩家信息\n    TeamInfo TeamInfo              = 3; // 阵容\n}\n\n// 设置头像\nmessage C_PlayerHeadSet { // msgid: 5134\n    int32 Id = 1;\n}\n\nmessage GS_PlayerHeadSet_R { // msgid: 5135\n    int32 ErrorCode = 1;\n    int32 Id        = 2;\n}\n\n// 设置头像框\nmessage C_PlayerHFrameSet { // msgid: 5136\n    int32 Id = 1;\n}\n\nmessage GS_PlayerHFrameSet_R { // msgid: 5137\n    int32 ErrorCode = 1;\n    int32 Id        = 2;\n}\n\n// 设置形象\nmessage C_PlayerFigureSet { // msgid: 5138\n    int32 Id = 1;\n}\n\nmessage GS_PlayerFigureSet_R { // msgid: 5139\n    int32 ErrorCode = 1;\n    int32 Id        = 2;\n}\n\n// 设置称号\nmessage C_PlayerTitleSet { // msgid: 5140\n    int32 Id = 1;\n}\n\nmessage GS_PlayerTitleSet_R { // msgid: 5141\n    int32 ErrorCode = 1;\n    int32 Id        = 2;\n}\n\n// 玩家切磋\nmessage C_PlayerFight { // msgid: 5142\n    string PlrId = 1;\n    int32 SvrId = 2;\n    string Mod = 3; // mod为空表示普通切磋\n}\n\nmessage GS_PlayerFight_R { // msgid: 5143\n    int32 ErrorCode = 1;\n    bytes Replay    = 2;\n}\n\n// 设置聊天框\nmessage C_PlayerChatBoxSet { // msgid: 5144\n    int32 Id = 1;\n}\n\nmessage GS_PlayerChatBoxSet_R { // msgid: 5145\n    int32 ErrorCode = 1;\n    int32 Id        = 2;\n}\n\n// 形象升级\nmessage C_PlayerFigureLvUp { // msgid: 5146\n    int32 Id = 1;\n}\n\nmessage GS_PlayerFigureLvUp_R { // msgid: 5147\n    int32 ErrorCode = 1;\n    int32 Id = 2;\n}\n\n// 角色改名\nmessage C_PlayerChangeName { // msgid: 5148\n    string Name = 1;\n}\n\nmessage GS_PlayerChangeName_R { // msgid: 5149\n    int32 ErrorCode = 1;\n    string Name     = 2;\n}\n\n// ============================================================================\n\n// 获取互动玩家数据（可能有相同的，客户端上传当前有的玩家排除）\nmessage C_PlayerInteractRand { // msgid: 5152\n    int32 Scene = 1; // 场景（1：主线，2：家园）\n    int32 Num = 2; // 数量（1-5）\n    repeated string Exclude = 3; // 排除掉的玩家\n}\n\nmessage GS_PlayerInteractRand_R { // msgid: 5153\n    int32 ErrorCode = 1;\n    int32 Scene = 2;\n    repeated PlayerInfo PlrInfo = 3;\n}\n\n// 打招呼\nmessage C_PlayerInteractSayHello { // msgid: 5154\n    string PlrId = 1;\n}\n\nmessage GS_PlayerInteractSayHello_R { // msgid: 5155\n    int32 ErrorCode = 1;\n    Rewards Rewards = 2;\n}\n\n// 踢人\nmessage C_PlayerInteractKick { // msgid: 5156\n    string PlrId = 1;\n}\n\nmessage GS_PlayerInteractKick_R { // msgid: 5157\n    int32 ErrorCode = 1;\n    bytes Replay    = 2;\n    bool IsWin      = 3;\n    Rewards Rewards = 4;\n}\n\r\n\r\n\r\n\r\n// ============================================================================\r\n// msgid range for C <-> GS: [12050, 12100)\r\n// ============================================================================\r\n\r\n\r\n// ============================================================================\r\n// 光环\r\n\r\nmessage HaloData {\r\n    map<int32,int32> Ids = 1;\r\n    int32 WearId = 2; // 光环Id\r\n}\r\n\r\n// ============================================================================\r\n\r\n// 升级或激活\r\nmessage C_HaloLvUp { // msgid: 12050\r\n    int32 Id = 1;\r\n}\r\n\r\nmessage GS_HaloLvUp_R { // msgid: 12051\r\n    int32 ErrorCode = 1;\r\n    int32 Id = 2;\r\n    int32 Lv = 3;\r\n}\r\n\r\n// 穿戴\r\nmessage C_HaloWear { // msgid: 12052\r\n    int32 Id = 1; //光环Id\r\n}\r\n\r\nmessage GS_HaloWear_R { // msgid: 12053\r\n    int32 ErrorCode = 1;\r\n    int32 WearId = 2;\r\n}\r\n\r\n\r\n\r\n\r\n// ============================================================================\r\n// msgid range for C <-> GS: [8300, 8400)\r\n// ============================================================================\r\n\r\n\r\n// ============================================================================\r\n\r\nmessage WorldBoss {\r\n  map<int32, int64> Dmg = 1; // 伤害记录<bossId, 历史最高伤害>\r\n  int64 MaxDmg = 2;          // 今日最大伤害(跨天需要重置)\r\n}\r\n\r\n// ============================================================================\r\n\r\nmessage C_WorldBossInfo { // msgid: 8312\r\n}\r\n\r\nmessage GS_WorldBossInfo_R { // msgid: 8313\r\n    int32 ErrorCode = 1;\r\n    WorldBoss Data = 2;\r\n}\r\n\r\nmessage C_WorldBossFight { // msgid: 8314\r\n}\r\n\r\nmessage GS_WorldBossFight_R { // msgid: 8315\r\n  int32 ErrorCode = 1;\r\n  int32 BossId = 2;\r\n  int64 Dmg = 3;\r\n  bytes Replay = 4;\r\n  Rewards Rewards = 5;\r\n}\r\n\r\n// 扫荡\r\nmessage C_WorldBossSweep { // msgid: 8316\r\n}\r\n\r\nmessage GS_WorldBossSweep_R { // msgid: 8317\r\n  int32 ErrorCode = 1;\r\n  Rewards Rewards = 2;\r\n}\r\n\r\n// 看广告\r\nmessage C_WorldBossAd { // msgid: 8318\r\n}\r\n\r\nmessage GS_WorldBossAd_R { // msgid: 8319\r\n  int32 ErrorCode = 1;\r\n}\r\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [7600, 7700)\n// ============================================================================\n\n\n// ============================================================================\n\nmessage MiscData {\n    int32 RenameCnt           = 1; // 改名次数\n    int64 SvrOpenTs           = 2; // 开服时间\n    int64 GuildLeaveTs        = 3; // 上次离开家族，下次加入时间\n    int32 GuildLeaveCnt       = 4; // 离开家族次数\n    int32 SvrOpenDay          = 5; // 开服天数\n    map<int32, bool> Official = 6; // 公众号相关按钮显示\n    int32 SvrMergeDay         = 7; // 合服天数\n    int32 WeChatRewards       = 8; // 领取公众号充值奖励\n    int32 MasterSvrOpenDay    = 9; // 跨服主服开服天数\n}\n\n// ============================================================================\n\n// 离开家族时间\nmessage GS_MiscGuildLeaveTs { // msgid: 7600\n    int64 GuildLeaveTs  = 1;  // 上次离开家族，下次加入时间\n    int32 GuildLeaveCnt = 2;  // 离开家族次数\n}\n\n// 公众号按钮显示更新\nmessage GS_MiscOfficialUpdate { // msgid: 7601\n    map<int32, bool> Official = 1;\n}\n\n// ============================================================================\n\n// 通用礼包码\nmessage C_GiftExchange { // msgid: 7620\n    string Code = 1;\n}\n\nmessage GS_GiftExchange_R { // msgid: 7621\n    int32 ErrorCode = 1;\n    Rewards Rewards = 2;\n}\n\n// ============================================================================\n\nmessage C_MiscBillLocal { // msgid: 7622\n    string J = 1;\n}\n\nmessage GS_MiscBillLocal_R { // msgid: 7623\n    int32 ErrorCode = 1;\n    string R        = 2;\n}\n\n// ============================================================================\n\nmessage C_MiscSkipTutorial { // msgid: 7624\n}\n\nmessage GS_MiscSkipTutorial_R { // msgid: 7625\n    int32 ErrorCode = 1;\n}\n\n// ============================================================================\n\n// 战斗回放\nmessage C_ReplayGet { // msgid: 7630\n    int64 ReplayId = 1;\n    bool Cross = 2;\n}\n\nmessage GS_ReplayGet_R { // msgid: 7631\n    int32 ErrorCode = 1;\n    bytes Replay    = 2;\n}\n\n// ============================================================================\n\n// 玩法统计\nmessage C_StatModuleOpen { // msgid: 7640\n    string Mod = 1;\n}\n\nmessage GS_StatModuleOpen_R { // msgid: 7641\n    int32 ErrorCode = 1;\n}\n\n// ============================================================================\n\n// 行为日志\nmessage C_UserAction { // msgid: 7642\n    string From = 1;\n    string Action = 2;\n}\n\nmessage GS_UserAction_R { // msgid: 7643\n    int32 ErrorCode = 1;\n}\n\n// 领取微信公众号充值奖励\nmessage C_WeChatRewardsTake { // msgid: 7644\n\n}\n\nmessage GS_WeChatRewardsTake_R { // msgid: 7645\n    int32 ErrorCode     = 1;\n    int32 WeChatRewards = 2; // 领取状态\n    Rewards Rewards     = 3;\n}\n\n// 微信公众号充值奖励状态改变 -- 推送\nmessage GS_WeChatRewardsChange { // msgid: 7646\n    int32 WeChatRewards = 1; // 领取状态\n}\n\n// ============================================================================\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [8000, 8100)\n// ============================================================================\n\nmessage GS_LampMsg {    // msgid:8000\n    string Content = 1; // 跑马灯内容\n    int32 Type     = 2; // type控制播放优先级\n    int32 Num      = 3; // 滚动播放次数\n    int32 LinkId   = 4; // 超链接ID\n    string Icon    = 5; // 图片ID\n    int32 Delay    = 6; // 延迟时间\n    string Effect  = 7; // 跑马灯特效\n    int32 ConfId   = 8; // 表Id\n}\n\r\n\r\n\r\n\r\n// ============================================================================\r\n// msgid range for C <-> GS: [5400, 5500)\r\n// ============================================================================\r\n\r\n\r\n// ============================================================================\r\n\r\nmessage ItemUseRet {\r\n    int32 Id     = 1; // 道具Id\r\n    string Func  = 2;\r\n    int32 UseCnt = 3; // 道具使用次数\r\n}\r\n\r\nmessage ItemLog {\r\n    string PlrId = 1;\r\n    string Name = 2;\r\n    int32 Svr = 3;\r\n    int32 Head = 4;\r\n    int32 HFrame = 5;\r\n    int64 Ts = 6;\r\n    int32 ItemId = 7;\r\n}\r\n\r\n// ============================================================================\r\n\r\n// 获得新圣物\r\nmessage GS_PlayerRelicNew { // msgid: 5401\r\n    int32 Id = 1;\r\n}\r\n\r\n// 道具使用\r\nmessage C_ItemUse { // msgid: 5430\r\n    int32 Id = 1;\r\n    int32 N  = 2;\r\n}\r\n\r\nmessage GS_ItemUse_R { // msgid: 5431\r\n    int32 ErrorCode     = 1;\r\n    Rewards Rewards     = 2;\r\n    string Func         = 3;\r\n    int32 UseCnt        = 4; // 道具使用次数\r\n    int32 Id            = 5; // 道具Id\r\n    repeated Item Items = 6; // 道具显示(如果没有就用Rewards显示)\r\n}\r\n\r\n// 道具分解\r\nmessage C_ItemDecompose { // msgid: 5432\r\n    int32 Id = 1;\r\n    int32 N  = 2;\r\n}\r\n\r\nmessage GS_ItemDecompose_R { // msgid: 5433\r\n    int32 ErrorCode = 1;\r\n    Rewards Rewards = 2;\r\n}\r\n\r\n// 道具购买\r\nmessage C_ItemBuy { // msgid: 5434\r\n    int32 Id = 1;\r\n    int32 N  = 2;\r\n}\r\n\r\nmessage GS_ItemBuy_R { // msgid: 5435\r\n    int32 ErrorCode = 1;\r\n    Rewards Rewards = 2;\r\n}\r\n\r\n// 物品选择兑换\r\nmessage C_ItemChoose { // msgid: 5436\r\n    int32 SrcId = 1;   // 使用的道具id\r\n    int32 N     = 2;   // 使用数量\r\n    int32 DstId = 3;   // 目标道具id\r\n}\r\n\r\nmessage GS_ItemChoose_R { // msgid: 5437\r\n    int32 ErrorCode = 1;\r\n    Rewards Rewards = 2;\r\n}\r\n\r\n// 物品出售\r\nmessage C_ItemSell { // msgid: 5438\r\n    int32 Id = 1;\r\n    int32 N = 2;\r\n}\r\n\r\nmessage GS_ItemSell_R { // msgid: 5439\r\n    int32 ErrorCode = 1;\r\n    Rewards Rewards = 2;\r\n}\r\n\r\nmessage C_ItemQuickSell { // msgid: 5440\r\n    repeated int32 Color = 1;\r\n    repeated int32 Star = 2;\r\n}\r\n\r\nmessage GS_ItemQuickSell_R { // msgid: 5441\r\n    int32 ErrorCode = 1;\r\n    Rewards Rewards = 2;\r\n}\r\n\r\n// 物品合成\r\nmessage C_ItemCompose { // msgid: 5442\r\n    int32 Id = 1;\r\n    int32 N = 2;\r\n}\r\n\r\nmessage GS_ItemCompose_R { // msgid: 5443\r\n    int32 ErrorCode = 1;\r\n    Rewards Rewards = 2;\r\n}\r\n\r\n// 推送 道具每日使用次数重置\r\nmessage GS_ItemUseCnt { // msgid: 5444\r\n    map<int32, int32>  UseCnt = 1; // 道具每日使用次数 道具Id : 次数\r\n}\r\n\r\n// 道具一键分解\r\nmessage C_ItemOneKeyDecompose { // msgid: 5445\r\n    repeated Item Items = 1; // 分解物品id和数量\r\n}\r\n\r\nmessage GS_ItemOneKeyDecompose_R { // msgid: 5446\r\n    int32 ErrorCode     = 1;\r\n    Rewards Rewards     = 2;\r\n    repeated Item Items = 3;\r\n}\r\n\r\nmessage C_ItemUseMulti { // msgid: 5447\r\n    repeated Id_N Items = 1;\r\n}\r\n\r\nmessage GS_ItemUseMulti_R { // msgid: 5448\r\n    int32 ErrorCode = 1;\r\n    Rewards Rewards = 2;\r\n    repeated ItemUseRet Items = 3;\r\n}\r\n\r\n// ============================================================================\r\n// 稀有道具记录\r\n\r\nmessage C_GetItemLog { // msgid: 5449\r\n    repeated int32 Ids = 1; // 道具id\r\n}\r\n\r\nmessage GS_GetItemLog_R { // msgid: 5450\r\n    int32 ErrorCode = 1;\r\n    repeated ItemLog Logs = 2;\r\n}\r\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [12150, 12200)\n// ============================================================================\n\n\n// ============================================================================\n\n// 虚空秘境\nmessage MagicFbData {\n    int32 Id      = 1; // 已通关关卡\n    MagicFbFight Fight = 2; // 可能没有\n}\n\n// 战斗数据\nmessage MagicFbFight {\n    int32 Id = 1; // 当前挑战层数\n    int32 Exp = 2; // 经验条\n    int64 Ts = 3; // 开始时间\n    int32 Multi = 4; // 几倍挑战\n    map<int32,int32> Items = 5; // 使用道具\n    MagicFbBag Bag = 6; // 背包\n    map<int32,int32> MonsterCnt = 7; // 本关小怪类型和数量<type,cnt>\n    int64 BossId  = 8;\n    repeated int32 BossBuffs = 9; // 词条\n    int32 Reborn = 10; // 复活次数\n}\n\n// 临时背包\nmessage MagicFbBag {\n    repeated Ccy Currency   = 1;\n    repeated Item Items     = 2;\n    repeated Magic Magics   = 3;\n}\n\n// ============================================================================\n\nmessage C_MagicFbInfo { // msgid: 12150\n}\n\nmessage GS_MagicFbInfo_R { // msgid: 12151\n    int32 ErrorCode        = 1;\n    MagicFbData Data     = 2;\n}\n\n// 进入挑战\nmessage C_MagicFbEnter { // msgid: 12152\n    int32 Id = 1;\n    int32 Multi = 2;\n    map<int32,int32> Items = 3;\n}\n\nmessage GS_MagicFbEnter_R { // msgid: 12153\n    int32 ErrorCode      = 1;\n    MagicFbFight Fight   = 2;\n}\n\n// 杀怪（成功才发）\nmessage C_MagicFbKillMon { // msgid: 12154\n    int32 Type = 1; // 怪物类型（1-3）\n}\n\nmessage GS_MagicFbKillMon_R { // msgid: 12155\n    int32 ErrorCode = 1;\n    int32 Type = 2; // 怪物类型（1-3）\n    MagicFbBag BagAdd = 3; // 增量\n    map<int32,int32> MonsterCnt = 4;  // 不为nil时怪物增量\n    int32 Exp = 5; // 经验\n}\n\n// 复活\nmessage C_MagicFbReborn { // msgid: 12156\n}\n\nmessage GS_MagicFbReborn_R { // msgid: 12157\n    int32 ErrorCode = 1;\n    int32 Reborn = 2;\n}\n\n// BOSS挑战（服务器先判断胜负）\nmessage C_MagicFbStartFight { // msgid: 12158\n    bool Test = 1;\n}\n\nmessage GS_MagicFbStartFight_R { // msgid: 12159\n    int32 ErrorCode = 1;\n    bool IsWin      = 2;\n    bytes Replay    = 3;\n}\n\n// BOSS挑战(死亡后不复活或者超时)\nmessage C_MagicFbFight { // msgid: 12160\n    bool Lose = 1; // 是否失败，用于统计\n}\n\nmessage GS_MagicFbFight_R { // msgid: 12161\n    int32 ErrorCode = 1;\n    MagicFbBag BagAdd = 2; // 增量\n    Rewards Rewards = 3;\n    int32 Id = 4; // 通关id（无变化表示失败）\n    bool IsWin = 5;\n    repeated int64 Magics  = 6; // 道具额外掉落的魔能\n}\n\n// 广告领取奖励\nmessage C_MagicFbIaa { // msgid: 12162\n}\n\nmessage GS_MagicFbIaa_R { // msgid: 12163\n    int32 ErrorCode = 1;\n    Rewards Rewards = 2;\n}\n\n// 领取每日免费奖励（客户端判断counter再发）\nmessage C_MagicFbDaily { // msgid: 12164\n}\n\nmessage GS_MagicFbDaily_R { // msgid: 12165\n    int32 ErrorCode        = 1;\n    Rewards Rewards = 2; // 每日奖励\n}\n\n\n// ============================================================================\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [12250, 12300)\n// ============================================================================\n\n\n// ============================================================================\n\n// 宝石\nmessage GemData {\n    map<int32,int32> Ids    = 1; // <gemid,itemid>，gemid=gem表id\n}\n\n// ============================================================================\n\nmessage C_GemInfo { // msgid: 12250\n}\n\nmessage GS_GemInfo_R { // msgid: 12251\n    int32 ErrorCode    = 1;\n    GemData Data       = 2;\n}\n\n// 宝石镶嵌或替换\nmessage C_GemWear { // msgid: 12252\n    int32 GemId  = 1; // gem表id\n    int32 Id = 2; // itemid\n}\n\nmessage GS_GemWear_R { // msgid: 12253\n    int32 ErrorCode         = 1;\n    int32 GemId             = 2; // gem表id\n    int32 Id                = 3; // itemid\n}\n\n// 宝石卸下\nmessage C_GemTakeOff { // msgid: 12254\n    int32 GemId = 1;\n}\n\nmessage GS_GemTakeOff_R { // msgid: 12255\n    int32 ErrorCode = 1;\n    int32 GemId     = 2;\n}\n\n// 宝石合成\nmessage C_GemCompose { // msgid: 12256\n}\n\nmessage GS_GemCompose_R { // msgid: 12257\n    int32 ErrorCode = 1;\n    Rewards Rewards = 2;\n}\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [9200, 9250)\n// ============================================================================\n\n\n// ============================================================================\n// 特权卡\n\nmessage PrivCard {\n    int32 Id                = 1; // 表id\n    int32 Days              = 2; // 剩余天数\n    int64 Charge            = 3; // 累充钻石数\n    bool  DailyRwd          = 4; // 已领取每日奖励\n    bool Free               = 5; // 免费天数是否领取\n    bool FirstBill          = 6; // 是否已付费购买\n    int64 Ts                = 7; // 特权卡结束时间\n}\n\nmessage PrivCardData {\n    repeated PrivCard Cards = 1; // 特权卡\n}\n\n// ============================================================================\n\n// 拉取信息\nmessage C_PrivCardGetInfo { // msgid: 9200\n}\n\nmessage GS_PrivCardGetInfo_R { // msgid: 9201\n    int32 ErrorCode   = 1;\n    PrivCardData Data = 2;\n}\n\n// 累充激活方式推送\nmessage GS_PrivCardRecharge { // msgid: 9202\n    PrivCard Card    = 1;\n}\n\n// 获得新卡推送\nmessage GS_PrivCardNew { // msgid: 9203\n    PrivCard Card   = 1;\n    Rewards Rewards = 2;\n}\n\n// 道具购买特权卡\nmessage C_PrivCardBuy { // msgid: 9204\n    int32 Id = 1;\n}\n\nmessage GS_PrivCardBuy_R { // msgid: 9205\n    int32 ErrorCode = 1;\n}\n\n// 每日奖励\nmessage C_PrivCardDailyReward { // msgid: 9206\n    int32 Id = 1;\n}\n\nmessage GS_PrivCardDailyReward_R { // msgid: 9207\n    int32 ErrorCode = 1;\n    int32 Id        = 2;\n    Rewards Rewards = 3;\n}\n\n// 领取免费天数\nmessage C_PrivCardFree { // msgid: 9208\n    int32 Id = 1;\n}\n\nmessage GS_PrivCardFree_R { // msgid: 9209\n    int32 ErrorCode = 1;\n}\n\n// 续费购买\nmessage C_PrivCardAfterBuy { // msgid: 9210\n    int32 Id = 1;\n}\n\nmessage GS_PrivCardAfterBuy_R { // msgid: 9211\n    int32 ErrorCode = 1;\n}\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [13050, 13100)\n// ============================================================================\n\n\n// ============================================================================\n\n//英雄图鉴\nmessage HeroMap {\n    map<int32, int32> Heroes = 1; //<英雄ID,图鉴星级>\n    int32 Lv = 2; // 图鉴等级\n    int32 Exp = 3; // 图鉴经验\n}\n\n// ============================================================================\n\n// ============================================================================\n\n// 升级图鉴英雄\nmessage C_HeroMapUp { // msgid: 13061\n    int32 HeroID = 1; // 英雄ID\n}\n\nmessage GS_HeroMapUp_R { // msgid: 13062\n    int32 ErrorCode = 1;\n    int32 HeroID = 2; // 英雄ID\n    int32 Star = 3;   // 图鉴星级\n    int32 Exp = 4; // 图鉴经验\n}\n\n// 升级图鉴\nmessage C_HeroMapLevelUp { // msgid: 13063\n}\n\nmessage GS_HeroMapLevelUp_R { // msgid: 13064\n    int32 ErrorCode = 1;\n    int32 Lv = 2;\n    int32 Exp = 3;\n    Rewards Rewards = 4;\n}\n\n// 升级图鉴英雄\nmessage C_HeroMapUpAll { // msgid: 13065\n\n}\n\nmessage GS_HeroMapUpAll_R { // msgid: 13066\n    int32 ErrorCode         = 1;\n    map<int32, int32> Stars = 2; // 本次升级图鉴星级 [heroid:图鉴星级]\n    int32 Exp               = 3; // 图鉴经验\n}\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [8750, 8800)\n// ============================================================================\n\n\n// ============================================================================\n// 主线任务\n\nmessage MainTaskData {\n    Cond_Obj Obj = 1; // 任务进度\n}\n\n// ============================================================================\n\n// 通知: 进度变化或新任务\nmessage GS_MainTaskValueChanged { // msgid: 8750\n    Cond_Obj Obj = 1;\n}\n\n// ============================================================================\n\n// 领取任务奖励\nmessage C_MainTaskTakeReward { // msgid: 8760\n}\n\nmessage GS_MainTaskTakeReward_R { // msgid: 8761\n    int32 ErrorCode = 1;\n    Rewards Rewards = 2;\n}\n\r\n\r\n\r\n\r\n// ============================================================================\r\n// msgid range for GS <-> GS: [110700, 110800)\r\n// ============================================================================\r\n\r\n// ============================================================================\r\n\r\n// 请求主服务器获取矿区消息\r\nmessage GS_GuildMinePlusGetInfoGame { // msgid: 110700\r\n  string PlrId  = 1;\r\n  int32 SvrId   = 2;\r\n  int32 Mid     = 3; // 区域id\r\n}\r\n\r\n// 请求主服务器获取矿区数量消息\r\nmessage GS_GuildMinePlusNumInfoGame { // msgid: 110701\r\n  string PlrId  = 1;\r\n  int32 SvrId   = 2;\r\n  string GId    = 3; // 工会id\r\n}\r\n\r\n// 推送到主服务器树防守阵容变更\r\nmessage GS_GuildMinePlusDefTeamChangeGame { // msgid: 110702\r\n  int32 MTreeId                   = 1; // 树id\r\n  string PlrId                    = 2; // 玩家id\r\n  repeated MineTeamHero DefTeam   = 3; // 防守阵容\r\n}\r\n\r\n// 推送到主服务器树归属变更\r\nmessage GS_GuildMinePlusOwnerChangeGame { // msgid: 110703\r\n  int32 MTreeId                   = 1; // 树id\r\n  MinePlayInfo Owner              = 2; // 占领者\r\n  int32 Way                       = 3; // 方式 0：正常 非零：其它\r\n}\r\n\r\n// 推送树迁矿(废弃)\r\nmessage GS_GuildMinePlusMovePointGame { // msgid: 110704\r\n  string PlrId                    = 1; // 玩家id\r\n  MineTree Tree                   = 2;\r\n  int32 Way                       = 3; // 发邮件的方式 1：打飞， 2：结束重置\r\n  repeated Item Items             = 4; // 奖励物品\r\n}\r\n\r\n// 占领/打野怪\r\nmessage GS_GuildMinePlusFightMonsterGame { // msgid: 110705\r\n  string PlrId      = 1;\r\n  int32 SvrId       = 2;\r\n  int32 MTreeId     = 3; // 树id\r\n  int32 FWay        = 4;\r\n  BattleInput Input = 5;\r\n  MinePlayInfo PInfo= 6; // 占领玩家信息\r\n  MineTree AtkTree  = 7;\r\n}\r\n\r\n// 占领/打野怪结果\r\nmessage GS_GuildMinePlusFightMonsterGame_R { // msgid: 110706\r\n  string PlrId      = 1;\r\n  int32 SvrId       = 2;\r\n  int32 FWay        = 3;\r\n  MineTree Tree     = 4;\r\n  bytes Replay      = 5;\r\n  bool Occupy       = 6; // 占领\r\n  BattleInput Input = 7;\r\n  bool Win          = 8;\r\n  int32 MonsterId   = 9; \r\n}\r\n\r\n// 占领空树\r\nmessage GS_GuildMinePlusOccupyEmptyGame { // msgid: 110707\r\n  string PlrId      = 1;\r\n  int32 SvrId       = 2;\r\n  int32 MTreeId     = 3; // 树id\r\n  int32 FWay        = 4;\r\n  MinePlayInfo PInfo= 5; // 占领玩家信息\r\n  MineTree AtkTree  = 6;\r\n}\r\n\r\n// 请求防守玩家服务器战斗\r\nmessage GS_GuildMinePlusFightGame { // msgid: 110708\r\n  string PlrId      = 1;\r\n  int32 SvrId       = 2;\r\n  int32 MTreeId     = 3; // 树id\r\n  int32 FWay        = 4;\r\n  BattleInput Input = 5;\r\n  MinePlayInfo PInfo= 6; // 占领玩家信息\r\n  string AtkPlrId   = 7; // 进攻玩家id\r\n  int32 AtkSvrId    = 8; // 进攻玩家服务器id\r\n  MineTree AtkTree  = 9;\r\n}\r\n\r\n// 战斗结果推送给挑战者\r\nmessage GS_GuildMinePlusFightGame_R { // msgid: 110709\r\n  int32 FWay          = 1;\r\n  string PlrId        = 2;\r\n  bool Occupy         = 3; // 占领\r\n  MineTree Tree       = 4;\r\n  int64 ReplayId      = 5; // 回放Id\r\n  bytes Replay        = 6;\r\n  BattleInput Input   = 7;\r\n  repeated Item Items = 8; // 奖励物品\r\n  bool Win            = 9;\r\n  int32 BreakCnt      = 10;\r\n  bool BreakCost      = 11; // 消耗破防值\r\n}\r\n\r\n// 推送到主服务器树变更\r\nmessage GS_GuildMinePlusTreeChangeGame { // msgid: 110710\r\n  MineTree Tree   = 1;\r\n  int32 Move      = 2; // 1:原玩家迁矿 2:掠夺打飞 3：更新\r\n  MineTree AtkTree= 3;\r\n  bool Rob        = 4;\r\n}\r\n\r\n// 主服务器推送到指定玩家服树变更\r\nmessage GS_GuildMinePlusTreeChangeGame_R { // msgid: 110711\r\n  string PlrId        = 1;\r\n  MineTree Tree       = 2;\r\n}\r\n\r\n// 主服务器推送其它服务器结束个人排名奖励\r\nmessage GS_GuildMinePlrRankEndRwds { // msgid: 110712\r\n  map<string, int32> Ranks = 1; // 排名 plr_id:rank\r\n}\r\n\r\n// 主服务器推送其它服务器结束工会排名奖励\r\nmessage GS_GuildMineGldRankEndRwds { // msgid: 110713\r\n  map<string, int32> Ranks = 1; // 排名 gld_id:rank\r\n}\r\n\r\n// 主服务器推送其它服务器即时奖励\r\nmessage GS_GuildMineGldNowRwds { // msgid: 110714\r\n  int32 Way           = 1; // 获奖方式 \r\n  repeated Item Items = 2; // 奖励物品\r\n  string PlrId        = 3;\r\n  MineTree Tree       = 4;\r\n}\r\n\r\n// 主服务器推送其它服务器邮件奖励\r\nmessage GS_GuildMineGldMailRwds { // msgid: 110715\r\n  string PlrId        = 1;\r\n  int32 Way           = 2; // 发邮件的方式 1：打飞， 2：结束重置\r\n  repeated Item Items = 3; // 奖励物品\r\n  string AtkPlrName   = 4; // 进攻玩家名字\r\n}\r\n\r\n\r\n// 领取产出奖励\r\nmessage GS_GuildMinePlusTakeProductRewardsGame { // msgid: 110716\r\n  string PlrId        = 1;\r\n  int32 SvrId         = 2;\r\n  int32 MTreeId       = 3;\r\n}\r\n\r\n// 领取产出奖励\r\nmessage GS_GuildMinePlusTakeProductRewardsGame_R { // msgid: 110717\r\n  string PlrId        = 1;\r\n  int32 SvrId         = 2;\r\n  int32 MTreeId       = 3;\r\n  repeated Item Items = 4; // 奖励物品\r\n  int64 GatherTs      = 5; // 正常产出时间戳 \r\n  repeated Item BItems= 6; // buff奖励物品\r\n  repeated Item NItems= 7; // 正常奖励奖励物品\r\n}\r\n\r\n// 拉取个人排行榜信息\r\nmessage GS_GuildMinePlusPullPlrRankGame { // msgid: 110718\r\n  string PlrId        = 1;\r\n  int32 SvrId         = 2;\r\n}\r\n\r\n// 拉取工会排行榜信息\r\nmessage GS_GuildMinePlusPullGldRankGame { // msgid: 110719\r\n  string PlrId        = 1;\r\n  int32 SvrId         = 2;\r\n}\r\n\r\n\r\n// 更新排名\r\nmessage GS_GuildMinePlusUpdateRank { // msgid: 110720\r\n  BattlePlayer PlrInfo   = 1; // 玩家信息\r\n  GldInfo GldInfo        = 2; // 共会信息\r\n  int32 Score            = 3; // 分数\r\n}\r\n\r\n// 加入工会更新工会排名\r\nmessage GS_GuildMinePlusUpdateGldRank { // msgid: 110721\r\n  GldInfo GldInfo        = 1; // 共会信息\r\n  string PlrId           = 2; // 玩家id\r\n  int32 Way              = 3; // 0:加入公会 1:离开公会\r\n}\r\n\r\n// 离开工会工会\r\nmessage GS_GuildMinePlusLeaveGuild { // msgid: 110722\r\n  string PlrId           = 1; // 玩家id\r\n}\r\n\r\n// 概率奖励\r\nmessage GS_GuildMinePlusProductItemsGame { // msgid: 110723\r\n  string PlrId        = 1;\r\n  int32 SvrId         = 2;\r\n  int32 MTreeId       = 3;\r\n}\r\n\r\n// 进场玩家信息\r\nmessage GuildMinePlusApprochPlrInfo { \r\n  string PlrId        = 1;\r\n  MineTree Tree       = 2;\r\n}\r\n\r\n// 游戏开始进场通知玩家\r\nmessage GS_GuildMinePlusApprochGame { // msgid: 110724\r\n  repeated GuildMinePlusApprochPlrInfo Data  = 1;  \r\n}\r\n\r\n// 离开错误处理\r\nmessage GS_GuildMinePlusErrorLeave { // msgid: 110725\r\n  string PlrId        = 1; // 玩家id\r\n  int32 MTreeId       = 2; // 树\r\n}\r\n\r\n\r\n// 放弃\r\nmessage GS_GuildMinePlusGiveUpGame { // msgid: 110726\r\n  string PlrId        = 1;\r\n  int32 SvrId         = 2;\r\n  int32 MTreeId       = 3;\r\n}\r\n\r\n// 放弃\r\nmessage GS_GuildMinePlusGiveUpGame_R { // msgid: 110727\r\n  string PlrId        = 1;\r\n  int32 SvrId         = 2;\r\n  int32 MTreeId       = 3;\r\n  repeated Item Items = 4; // 奖励物品\r\n  repeated Item BItems= 5; // buff奖励物品\r\n  repeated Item NItems= 6; // 正常奖励奖励物品\r\n}\r\n\r\n\r\nmessage GuildMineResetRwds { \r\n  string PlrId        = 1;\r\n  repeated Item Items = 2; // 奖励物品\r\n}\r\n\r\n// 主服务器推送其它服务器结束重置奖励\r\nmessage GS_GuildMineResetRwds { // msgid: 110728\r\n  repeated GuildMineResetRwds Data = 1; // 奖励物品\r\n}\r\n\r\n// 拉取防守阵容信息\r\nmessage GS_GuildMinePlusGetDefTeamInfoGame { // msgid: 110729\r\n  string PlrId        = 1;\r\n  int32 SvrId         = 2;\r\n  string TarPlrId     = 3; // 对手玩家id\r\n  int32 MTreeId       = 4; // 树id \r\n}\r\n\r\n\r\n// 拉取复仇信息\r\nmessage GS_GuildMinePlusRevengeInfoGame { // msgid: 110730\r\n  string TarPlrId           = 1; // 请求玩家id\r\n  int32 SvrId               = 2;\r\n  repeated Revenge Revenges = 3; // 列表信息 \r\n}\r\n\r\n// 玩家进入\r\nmessage GS_GuildMinePlusAttendIn { // msgid: 110731\r\n  string PlrId   = 1; // 请求玩家id\r\n  int32 SvrId    = 2;\r\n  int32 MFid     = 3; // 果林id = mid(区域)*100 + mfid(果林级)\r\n}\r\n\r\n\r\n// 玩家离开\r\nmessage GS_GuildMinePlusAttendOut { // msgid: 110732\r\n  string PlrId   = 1; // 请求玩家id\r\n  int32 SvrId    = 2;\r\n  int32 MFid     = 3; // 果林id = mid(区域)*100 + mfid(果林级)\r\n}\r\n\r\n// 使用矿镐\r\nmessage GS_GuildMinePlusUseItemGame { // msgid: 110733\r\n  string PlrId        = 1;\r\n  int32 SvrId         = 2;\r\n  int32 MTreeId       = 3;\r\n  int32 ItemId        = 4;\r\n  int32 ItemNum       = 5;\r\n}\r\n\r\n// 使用矿镐\r\nmessage GS_GuildMinePlusUseItemGame_R { // msgid: 110734\r\n  string PlrId        = 1;\r\n  int32 SvrId         = 2;\r\n  int32 MTreeId       = 3;\r\n  int32 ItemId        = 4;\r\n  int32 ItemNum       = 5;\r\n  repeated Item Items = 6; // 奖励物品\r\n}\r\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [9400, 9500)\n// ============================================================================\n\n\n// ============================================================================\n\n// 阵容管理\nmessage TeamMgrData {\n    Team AtkTeam                = 1; // 主线和养成的阵容\n    map<string, Team> ModTeam   = 2; // 其他玩法阵容\n}\n\n// ============================================================================\n\n// 上阵\nmessage C_TeamMgrAtkTeamOn { // msgid: 9400\n    int32 HeroId = 1;\n}\n\nmessage GS_TeamMgrAtkTeamOn_R { // msgid: 9401\n    int32 ErrorCode = 1;\n    TroopData Troop = 2;\n}\n\n// 下阵\nmessage C_TeamMgrAtkTeamOff { // msgid: 9402\n    int32 HeroId = 1;\n    bool ResetHero = 2;  // 是否重置\n}\n\nmessage GS_TeamMgrAtkTeamOff_R { // msgid: 9403\n    int32 ErrorCode = 1;\n    TroopData Troop = 2;\n    Rewards Rewards = 3;\n}\n\n// 无损替换\nmessage C_TeamMgrAtkTeamExchange { // msgid: 9404\n    int32 SrcHero = 1;\n    int32 DstHero = 2;\n}\n\nmessage GS_TeamMgrAtkTeamExchange_R { // msgid: 9405\n    int32 ErrorCode = 1;\n    TroopData Troop = 2;\n}\n\n\n// 设置AtkTeam阵容位置\nmessage C_TeamMgrSetAtkTeamTroop { // msgid: 9406\n    map<int32, int32> Heroes = 2; // <id,pos>\n}\n\nmessage GS_TeamMgrSetAtkTeamTroop_R { // msgid: 9407\n    int32 ErrorCode = 1;\n    TroopData Troop = 2;\n}\n\n// 设置其他Team阵容位置\nmessage C_TeamMgrSetModTeamTroop { // msgid: 9412\n    TroopData Troop     = 1;\n    string Mod          = 2;\n}\n\nmessage GS_TeamMgrSetModTeamTroop_R { // msgid: 9413\n    int32 ErrorCode = 1;\n}\n\n// 设置其他Team鱼灵\nmessage C_TeamMgrSetModTeamFish { // msgid: 9418\n    FishData Fish   = 1;\n    string Mod      = 2;\n}\n\nmessage GS_TeamMgrSetModTeamFish_R { // msgid: 9419\n    int32 ErrorCode   = 1;\n}\n\n// 设置AtkTeam的鱼灵\nmessage C_TeamMgrSetAtkTeamFish { // msgid: 9420\n   map<int32,FishOrder> Fishs = 1; // <1-5,FishOrder>\n}\n\nmessage GS_TeamMgrSetAtkTeamFish_R { // msgid: 9421\n    int32 ErrorCode = 1;\n}\n\n// 设置其他Team洗练\nmessage C_TeamMgrSetModTeamRefine { // msgid: 9422\n    RefineData Refine  = 1;\n    string Mod      = 2;\n}\n\nmessage GS_TeamMgrSetModTeamRefine_R { // msgid: 9423\n    int32 ErrorCode   = 1;\n}\n\n// 设置AtkTeam的洗练\nmessage C_TeamMgrSetAtkTeamRefine { // msgid: 9424\n   int32 PlanId = 1;\n}\n\nmessage GS_TeamMgrSetAtkTeamRefine_R { // msgid: 9425\n    int32 ErrorCode = 1;\n}\n\n// 装备AtkTeam的技能SkillData中的某个Skill\n// 每排最多只能选1个，比如装备了11，客户端需要自己删除12，13\nmessage C_TeamMgrSetAtkTeamSkillWear { // msgid: 9426\n    int32 Skill = 1; // 技能设置：11,12,13, 十位表示第几排，个位表示第几列\n}\n\nmessage GS_TeamMgrSetAtkTeamSkillWear_R { // msgid: 9427\n    int32 ErrorCode = 1;\n    int32 Skill = 2;\n}\n\n// 启用AtkTeam的技能SkillData中的某个Rune\n// 同一个技能只能启用一个符文，比如启用了1101，客户端需要自己删除1102，1103\nmessage C_TeamMgrSetAtkTeamRuneOn { // msgid: 9428\n    int32 Rune = 1; // 符文设置：1101，高两位数表示哪个技能，个位数表示第几号符文\n}\n\nmessage GS_TeamMgrSetAtkTeamRuneOn_R { // msgid: 9429\n    int32 ErrorCode = 1;\n}\n\n// 设置AtkTeam的技能SkillData中的Passives\nmessage C_TeamMgrSetAtkTeamPassives { // msgid: 9430\n   map<int32, int32> Passives = 1; // 被动技能设置：<id,pos> ，pos=1，2，3\n}\n\nmessage GS_TeamMgrSetAtkTeamPassives_R { // msgid: 9431\n    int32 ErrorCode = 1;\n}\n\n// 设置其他Team技能\nmessage C_TeamMgrSetModTeamSkill { // msgid: 9414\n    SkillData Skill   = 1;\n    string Mod          = 2;\n}\n\nmessage GS_TeamMgrSetModTeamSkill_R { // msgid: 9415\n    int32 ErrorCode     = 1;\n}\n\n\n// 设置AtkTeam坐骑位置\nmessage C_TeamMgrSetAtkTeamMount { // msgid: 9432\n    map<int64, int32> Mounts = 1; // <seq,pos>\n}\n\nmessage GS_TeamMgrSetAtkTeamMount_R { // msgid: 9433\n    int32 ErrorCode = 1;\n}\n\n// 设置其他Team阵容坐骑位置\nmessage C_TeamMgrSetModTeamMount { // msgid: 9434\n    MountData Mount     = 1;\n    string Mod          = 2;\n}\n\nmessage GS_TeamMgrSetModTeamMount_R { // msgid: 9435\n    int32 ErrorCode = 1;\n}\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [5500, 5600)\n// ============================================================================\n\n\n// ============================================================================\n\n// 装备更新\nmessage GS_EquipUpdate { // msgid: 5500\n    int64 Seq           = 1; // 装备Seq\n    bool IsEquipped     = 2; // 是否穿戴\n}\n\n// ============================================================================\n\n\n// 穿装备\nmessage C_EquipWear { // msgid: 5510\n    int64 Seq     = 1; // 装备Seq\n}\n\nmessage GS_EquipWear_R { // msgid: 5511\n    int32 ErrorCode = 1;\n}\n\n// 装备分解\nmessage C_EquipSell { // msgid: 5518\n    repeated int64 Seqs = 1;\n}\n\nmessage GS_EquipSell_R { // msgid: 5519\n    int32 ErrorCode = 1;\n    Rewards Rewards = 2;\n}\n\n\n\n\n// ============================================================================\n\n// NO msg should be defined here\n// !!! ONLY common data-structures\n\n// ============================================================================\n\n// 货币\nmessage Ccy {\n    int32 Id  = 1;\n    int64 Val = 2;\n}\n\n// 英雄基本信息\nmessage HeroBase {\n    int32 Id      = 1; // 表 Id\n    int32 Lv      = 2; // 等级\n    int32 Star    = 3; // 星级\n    int64 AtkPwr  = 4; // 战力\n    int32 Step    = 6; // 突破等级\n}\n\n// 英雄\nmessage Hero {\n    int32 Id                        = 1;  // 表Id\n    int32 Lv                        = 2;  // 等级\n    int32 Star                      = 3;  // 星级\n    map<int32, double> Props        = 4;  // 属性列表\n    int64 AtkPwr                    = 5;  // 战力\n    int32 Step                      = 7;  // 突破等级\n}\n\n// 道具\nmessage Item {\n    int32 Id  = 1; // 表 Id\n    int32 Num = 2; // 数量\n}\n\n// 装备副属性\nmessage EquipSubProp {\n    map<int32, double> Props = 1;\n}\n\n// 装备\nmessage Equip {\n    int64 Seq                      = 1; // 序号\n    int32 Id                       = 2; // 表 Id\n    int32 Color                    = 3; // 装备品质\n    int32 Lv                       = 4; // 装备等级\n    map<int32, double> BaseProp    = 5; // 随机主属性\n    repeated EquipSubProp SubProps = 6; // 随机副属性\n    bool IsEquipped                = 7; // 是否穿戴\n}\n\n\n// 魔能副属性\nmessage MagicSubProp {\n    int32 Id = 1;\n    map<int32, double> Props = 2;\n    int32 ReTime = 3; // 洗练次数\n    map<int32, double> ReProps = 4; // 未保存的洗练属性\n}\n\n// 装备\nmessage Magic {\n    int64 Seq                      = 1; // 序号\n    int32 Id                       = 2; // 表 Id\n    int32 Lv                       = 3; // 物品等级\n    repeated MagicSubProp SubProps = 4; // 随机副属性\n    bool IsEquipped                = 5; // 是否穿戴\n    bool Lock                      = 6; // 是否锁定\n}\n\n// 坐骑\nmessage Mount {\n    int64 Seq                      = 1; // 序号\n    int32 Id                       = 2; // 表 Id\n    int32 Star                     = 3; // 星级\n    int32 Lv                       = 4; // 等级\n    int32 WakeLv                   = 5; // 觉醒等级\n    map<int32,MountTalent> Talents = 6; // 天赋[1-n]\n}\n\n// 坐骑天赋\nmessage MountTalent {\n    int32 Id = 1;\n    int32 Lv = 2;\n    int32 Refine = 3; // 未保存的洗练天赋\n}\n\n// 藏品\nmessage Relic {\n    int32 Id = 1; // 表 Id\n    int32 Star = 2; // 星级\n}\n\n// 域\nmessage Field {\n    int32 Id  = 1;\n    int64 Val = 2;\n}\n\n// 奖励\nmessage Rewards {\n    repeated Ccy Ccy       = 1; // 货币\n    repeated int32 Heroes  = 2; // 英雄 Id 数组\n    repeated Item Items    = 3; // 道具\n    repeated int64 Equips  = 4; // 装备 Seq 数组\n    repeated int64 Magics  = 5; // 魔能 Seq 数组\n    repeated int64 Mounts  = 6; // 坐骑 Seq 数组\n    repeated int32 Relics  = 7; // 藏品 Id 数组\n}\n\nmessage Id_N {\n    int32 Id = 1;\n    int32 N  = 2;\n}\n\nmessage Id_N64 {\n    int32 Id = 1;\n    int64 N  = 2;\n}\n\nmessage Cond_Obj {\n    int32 Id   = 1;\n    int64 Val  = 2;\n    int32 Type = 3;\n    bool Fin   = 4;\n    bool Taken = 5;\n}\n\n// loading page info\nmessage ForLoading {\n    //\n}\n\n// 布阵方案\nmessage Team {\n    TroopData Troop      = 1; // 阵容编辑\n    SkillData Skill      = 2; // 技能方案\n    FishData Fish        = 3; // 鱼灵编辑\n    RefineData Refine    = 4; // 洗练编辑\n    MountData Mount      = 5; // 坐骑编辑\n}\n\n// 阵容编辑\nmessage TroopData {\n    repeated int32 Orders    = 1; // 英雄上阵顺序:heroid(0永远是主角,1-5是英雄,长度永远为6,用0占位)\n    map<int32, int32> Heroes = 2; // <id,pos>\n    bool Sync                = 3; // 是否同步主阵容\n}\n\nmessage FishBoxIdx {\n    int32 Id = 1; // 鱼Id\n    int32 Idx = 2; // Top3的index(0-2)\n}\n\nmessage FishSlot {\n    map<int32, FishBoxIdx> Boxes = 2; // 1-2:FishBoxIdx\n}\n\nmessage FishOrder {\n    int32 Order = 1; // 顺序1-5（主角没有）\n    map<int32,FishSlot> Slots = 2; // tp:FishSlot\n}\n\n// 鱼灵编辑\nmessage FishData {\n    map<int32,FishOrder> Fishs = 1; // <1-5,FishOrder>\n    bool Sync                 = 2; // 是否同步主阵容\n}\n\n// 洗练编辑\nmessage RefineData {\n    int32 PlanId = 1; // 洗练方案编号\n    bool Sync = 2; // 是否同步主阵容\n}\n\n// 技能编辑\nmessage SkillData {\n    repeated int32 Skills = 1; // 技能设置：11,21,31, 十位表示第几排，个位表示第几列，每排最多只能选1个\n    repeated int32 Runes = 2; // 符文设置：1101，高两位数表示哪个技能，个位数表示第几号符文，同一个技能只能启用一个符文\n    map<int32, int32> Passives = 3; // 被动技能设置：<id,pos> ，pos=1，2，3\n    bool Sync                  = 4; // 是否同步主阵容\n}\n\n// 坐骑编辑\nmessage MountData {\n    map<int64, int32> Mounts = 1; // <seq,pos>\n    bool Sync                = 2; // 是否同步主阵容\n}\n\n// 多队伍\nmessage Teams {\n    string Mod              = 1; // 主mod\n    map<string, Team> Teams = 2; // 多队伍 次mod:Team\n}\n\nmessage TeamWithId {\n    int32 Id = 1;\n    Team Team = 2;\n}\n\n// 成就等级\nmessage AchvLv {\n    int32 Lv  = 1; // 等级\n    int32 Num = 2; // 数量\n}\n\nmessage GuildBaseInfo {\n    int32 Icon          = 1;\n    int32 SvrId         = 2; // 服务器id\n    string GuildId      = 3; // 公会id\n    string GuildName    = 4; // 公会名字 \n}\n\n// ============================================================================\n\n\n\n\n// ============================================================================\n// msgid range for GS <-> GS: [111000, 111100)\n// ============================================================================\n\n\n// ============================================================================\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GW: [1000, 1200)\n// ============================================================================\n\n// 登录\nmessage C_Login { // msgid: 1000\n    string AuthId       = 1;\n    string AuthToken    = 2;  // 认证 token\n    string Svr0         = 3;  // 初始服名称\n    string Sdk          = 4;  // sdk\n    string Plat         = 5;  // 平台名称\n    string DevId        = 6;  // 设备码\n    string P1           = 7;  // 参数 1\n    string P2           = 8;  // 参数 2\n    string P3           = 9;  // 参数 3\n    string VerMajor     = 10; // 主版本号\n    string VerMinor     = 11; // 次版本号\n    string VerBuild     = 12; // build 版本号\n    string DistinctId   = 13; // 唯一标识\n    string DevMod       = 14; // 设备型号\n}\n\n// 登录回复\nmessage GW_Login_R { // msgid: 1001\n    int32 ErrorCode = 1;\n    string AuthId   = 2;\n    string C1       = 3;\n    int64 BanTs     = 4;\n}\n\n// 通知客户端被踢掉\nmessage GW_Kick_R { // msgid: 1002\n    int32 ErrorCode = 1;\n}\n\n\r\n\r\n\r\n\r\n// ============================================================================\r\n// msgid range for GS <-> CR: [120000, 121000)\r\n// ============================================================================\r\n\r\n\r\n// ============================================================================\r\n\r\nmessage SvrGroup {\r\n    int32 Id            = 1;\r\n    int32 Master        = 2;\r\n    repeated int32 Svrs = 3;\r\n    int64 MasterCts     = 4; // 主服务器开服时间\r\n}\r\n\r\nmessage CrossPlayer {\r\n  string PlrId   = 1;  // 玩家id\r\n  string Name    = 2;  // 玩家名\r\n  int32 SvrId    = 3;  // 服务器id\r\n  int32 Head     = 4;  // 头像\r\n  int32 HFrame   = 5;  // 头像框\r\n  int32 Figure   = 6;  // 形象\r\n  int32 Lv       = 7;  // 等级\r\n  int32 Vip      = 8;  // vip等级\r\n  string GuildId = 9;  // 家族id\r\n  string GName   = 10; // 家族名\r\n  int64 AtkPwr   = 11; // 战力\r\n  int32 Title    = 12; // 称号\r\n}\r\n\r\nmessage CrossHeroBase {\r\n  int32 Id      = 1; // 表 Id\r\n  int32 Lv      = 2; // 等级\r\n  int32 StarXp  = 3; // 星级分段\r\n  int32 Star    = 4; // 星级\r\n  int32 Wake    = 5; // 觉醒等级\r\n  int64 AtkPwr  = 6; // 战力\r\n  int32 Step    = 7; // 突破等级\r\n}\r\n\r\nmessage CrossReplayHero {\r\n  CrossHeroBase Base = 1;\r\n  int32 Pos = 2;\r\n}\r\n\r\nmessage CrossReplayPlr {\r\n  CrossPlayer Info = 1;\r\n  repeated CrossReplayHero Heroes = 2;\r\n  int64 TeamAtk = 3;\r\n}\r\n\r\nmessage CrossReplay {\r\n  int64 ReplayId = 1;\r\n  CrossReplayPlr Atk = 2;\r\n  CrossReplayPlr Def = 3;\r\n  string Winner = 4;\r\n  int32 Des = 5; // 描述表Id\r\n  int64 Ts = 6;\r\n  bool Watched = 7;\r\n  int32 Sum = 8; // 播放量\r\n  int32 BatIdx = 9;\r\n}\r\n\r\n// ============================================================================\r\n\r\nmessage GS_RegisterGameCr { // msgid: 120000\r\n  int32 Id = 1;\r\n}\r\n\r\nmessage CR_RegisterGameCr_R { // msgid: 120001\r\n  bool Success = 1;\r\n}\r\n\r\n// ============================================================================\r\n\r\n// gs同步玩家数据\r\nmessage GS_UpdatePlrData { // msgid: 120100\r\n    repeated CrossPlayer Data = 1;\r\n    bool Force                = 2; // 是否直接同步\r\n}\r\n\r\n// cr同步玩家数据\r\nmessage CR_SyncCrossPlrData { // msgid: 120101\r\n    repeated CrossPlayer Data = 1;\r\n}\r\n\r\n// gs请求玩家数据\r\nmessage GS_RequestPlrData { // msgid: 120102\r\n}\r\n\r\nmessage CR_SyncCrossSvrGroup { // msgid: 120103\r\n    repeated SvrGroup Data = 1;\r\n}\r\n\r\n// ============================================================================\r\n\r\nmessage GS_GetReplayCr { // msgid: 120200\r\n  int64 Id     = 1;\r\n  string PlrId = 2;\r\n}\r\n\r\nmessage CR_GetReplayCr_R { // msgid: 120201\r\n  int32 ErrorCode = 1;\r\n  bytes Replay    = 2;\r\n  string PlrId    = 3;\r\n}\r\n\r\nmessage GS_GetReplayListCr { // msgid: 120202\r\n  int32 Stage = 1;\r\n  string PlrId = 2;\r\n  string Mod = 3;\r\n}\r\n\r\nmessage CR_GetReplayListCr_R { // msgid: 120203\r\n  int32 ErrorCode = 1;\r\n  repeated CrossReplay List = 2;\r\n  string PlrId = 3;\r\n}\r\n\r\nmessage GS_NewReplayCr { // msgid: 120204\r\n  int64 ReplayId = 1;\r\n  CrossReplayPlr Atk = 2;\r\n  CrossReplayPlr Def = 3;\r\n  string Winner = 4;\r\n  int32 Des = 5; // 描述表Id\r\n  int32 BatIdx = 6;\r\n  string Mod = 7;\r\n}\r\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [8650, 8700)\n// ============================================================================\n\n\n// ============================================================================\n// 商店\n\nmessage Good {\n    int32 Id      = 1; // shopItem表id\n    int32 BuyCnt  = 2; // 购买次数\n    bool Lock     = 3; // 是否锁定\n    int32 MarkCnt = 4; // 关注数量\n}\n\nmessage Shop { \n    int32 ShopId = 1;\n    repeated Good Goods = 2; \n}\n\n// ============================================================================\n\nmessage C_ShopGetInfo { // msgid: 8650\n    int32 ShopId = 1;\n}\n\nmessage GS_ShopGetInfo_R { // msgid: 8651\n    int32 ErrorCode = 1;\n    Shop Shop       = 2;\n}\n\nmessage C_ShopBuy { // msgid: 8652\n    int32 ShopId = 1;\n    repeated Id_N Items = 2;\n}\n\nmessage GS_ShopBuy_R { // msgid: 8653\n    int32 ErrorCode = 1;\n}\n\nmessage C_ShopRefresh { // msgid: 8654\n    int32 ShopId = 1;\n}\n\nmessage GS_ShopRefresh_R { // msgid: 8655\n    int32 ErrorCode = 1;\n    Shop Shop       = 2;\n}\n\n// 关注或取消关注\nmessage C_ShopMark { // msgid: 8656\n    int32 ShopId  = 1;\n    int32 Id      = 2; // shopItem表id\n    int32 MarkCnt = 3; // 0表示取消\n}\n\nmessage GS_ShopMark_R { // msgid: 8657\n    int32 ErrorCode = 1;\n}\n\n// 一键购买关注的商品\nmessage C_ShopMarkBuy { // msgid: 8658\n}\n\nmessage GS_ShopMarkBuy_R { // msgid: 8659\n    int32 ErrorCode = 1;\n    Rewards Rewards = 2;\n}\n\n// 获取所有已关注商品\nmessage C_ShopGetMarkInfo { // msgid: 8660\n}\n\nmessage GS_ShopGetMarkInfo_R { // msgid: 8661\n    int32 ErrorCode     = 1;\n    repeated Shop Shops = 2; // 只包括关注商品\n}\n\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [9250, 9300)\n// ============================================================================\n\n\n// ============================================================================\n// 聊天\n\nmessage ChatData {\n    int32 Tp        = 1; // 消息类型: 1, 系统; 2, 世界; 3, 公会; 7, 私聊; 8, 跨服\n    PlayerInfo From = 2; // 发送者信息\n    int64 Ts        = 3; // 时间\n    string Content  = 4; // 内容\n    string To       = 5; // 私聊消息目标玩家Id\n    bool Read       = 6; // 已读=true\n}\n\n// 历史聊天记录\nmessage ChatHistroyMsgData { repeated ChatData Data = 1; }\n\n// ============================================================================\n// 聊天推送\nmessage GS_ChatMsg { // msgid: 9250\n    ChatData Data = 1;\n}\n\n// ============================================================================\n\n// 聊天发送信息\nmessage C_ChatSend { // msgid: 9260\n    int32 Tp       = 1;\n    string Content = 2;\n    bool Link      = 3; // 是否是链接\n    string Target  = 4; // 私聊玩家Id\n}\n\nmessage GS_ChatSend_R { // msgid: 9261\n    int32 ErrorCode = 1;\n}\n\nmessage C_PrivateChatRead { // msgid: 9262\n    string PlrId = 1;\n}\n\nmessage GS_PrivateChatRead_R { // msgid: 9263\n    int32 ErrorCode = 1;\n    string PlrId = 2;\n}\n\n// ============================================================================\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [7400, 7500)\n// ============================================================================\n\n// 成就表数据\nmessage AchvTabData {\n    repeated AchvObj Objs = 1; //\n}\n\nmessage AchvObj {\n    int32 OId = 1;\n    int64 Val = 2;\n}\n\n// ============================================================================\n\n// 通知: 进度变化\nmessage GS_AchvTabObjValueChanged { // msgid: 7400\n    int32 OId = 1;\n    int64 Val = 2;\n}\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [15400, 15450)\n// ============================================================================\n\n\n// ============================================================================\n\n// 排行记录\nmessage RankFirstRecord {\n    int32 Idx               = 1; // 排名\n    int32 CId               = 2; // 表id\n    PlayerInfo Info         = 3; // 玩家信息\n    GuildBaseInfo GInfo     = 4; // 公会信息\n}\n\n// 单个榜单数据\nmessage RankFirstBaseData {\n    int32 Rk                            = 1; // 排行榜\n    repeated RankFirstRecord Records    = 2; // 排名列表\n}\n\n// 玩家个人数据\nmessage RankFirstPlr {\n    map<int32,bool> Taken = 1; // 已领取奖励 id:bool\n}\n\n\n// ============================================================================\n\n// 拉取信息\nmessage C_RankFirstGetInfo { // msgid: 15400\n\n}\n\nmessage GS_RankFirstGetInfo_R { // msgid: 15401\n    int32 ErrorCode   = 1;\n    RankFirstPlr Data = 2;\n}\n\n\nmessage C_RankFirstGetRegion { // msgid: 15402\n    int32 Rk    = 1; // 0:所有排行\n}\n\nmessage GS_RankFirstGetRegion_R { // msgid: 15403\n    int32 ErrorCode                      = 1;\n    repeated RankFirstBaseData RankData  = 2;\n}\n\n// 领取单个奖励\nmessage C_RankFirstTakeOneRewards { // msgid: 15404\n    int32 Id = 1; // 表id\n}\n\nmessage GS_RankFirstTakeOneRewards_R { // msgid: 15405\n    int32 ErrorCode = 1;\n    int32 Id        = 2;\n    Rewards Rewards = 3;\n}\n\n// 领取单个榜所有奖励\nmessage C_RankFirstTakeAllRewards { // msgid: 15406\n    int32 Rk    = 1; // 排行id\n}\n\nmessage GS_RankFirstTakeAllRewards_R { // msgid: 15407\n    int32 ErrorCode         = 1;\n    Rewards Rewards         = 2;\n    map<int32, bool> Taken  = 3; // 已领取奖励\n    int32 Rk                = 4; // 排行id\n}\n\n\n// ============================================================================\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [200, 250)\n// ============================================================================\n\n\n// ============================================================================\nmessage C_LoadGS {  // msgid: 200\n}\n\nmessage GS_PushGS { // msgid: 201\n  bool Flag = 1; //是否为GS角色\n}\n\n//GS虚拟支付\nmessage C_GSFakePay { //msgid:202\n  int32 PayId = 1;\n}\n\nmessage GS_GSFakePay_R { //msgid:203\n  int32 ErrorCode = 1;\n}\n\n// ============================================================================\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [8800, 8850)\n// ============================================================================\n\n\n// ============================================================================\n\n// 探索派遣\n\nmessage ExploreData {\n    int32 TotalTake                  = 1; // 总完成次数\n    map<int32,ExploreLine> Lines     = 2; // 所有线路派遣数据，没有表示未开启\n    repeated int32 FinishTasks       = 3; // 已完成任务，任务Id可重复，超出上限需要停止自动\n    ExploreSetting Setting           = 4; // 自动采集设置\n}\n\nmessage ExploreSetting {\n    map<int32, int32> Items = 1; // <道具类型，lv>，不设置表示不自动接取\n    bool AutoRefresh = 2; // 是否自动刷新\n}\n\nmessage ExploreLine {\n    int32 LineId          = 1; // 线路Id\n    int32 Id              = 2; // 任务Id可重复\n    int32 RefreshCnt      = 3; // 刷新次数\n    int64 Ts              = 4; // 结束时间\n    repeated int32 Heroes = 5; // 上阵英雄，英雄不能复用\n}\n\n// ============================================================================\n\n// ============================================================================\n// info\nmessage C_ExploreInfo { // msgid: 8810\n}\n\nmessage GS_ExploreInfo_R { // msgid: 8811\n    int32 ErrorCode  = 1;\n    ExploreData Data = 2;\n}\n\n// 刷新\nmessage C_ExploreRefresh { // msgid: 8812\n    repeated int32 LineIds = 1; // 线路Id\n}\n\nmessage GS_ExploreRefresh_R { // msgid: 8813\n    int32 ErrorCode   = 1;\n    map<int32,ExploreLine> Lines = 2;\n}\n\n// 接取\nmessage C_ExploreTake { // msgid: 8814\n    int32 Id              = 1;\n    repeated int32 Heroes = 2;\n}\n\nmessage GS_ExploreTake_R { // msgid: 8815\n    int32 ErrorCode = 1;\n    ExploreLine One = 2;\n}\n\n// 一键领取\nmessage C_ExploreAwardOneKey { // msgid: 8816\n    int32 Id = 1; // 任务Id，为0表示领取全部\n}\n\nmessage GS_ExploreAwardOneKey_R { // msgid: 8817\n    int32 ErrorCode  = 1;\n    repeated int32 FinishTasks  = 2; // 更新仓库\n    Rewards Rewards  = 3;\n}\n\n// 购买线路\nmessage C_ExploreBuyLine { // msgid: 8818\n    int32 LineId = 1;\n}\n\nmessage GS_ExploreBuyLine_R { // msgid: 8819\n    int32 ErrorCode = 1;\n    ExploreLine One = 2;\n}\n\n// 设置自动采集\nmessage C_ExploreSetting { // msgid: 8820\n    ExploreSetting Setting = 1;\n}\n\nmessage GS_ExploreSetting_R { // msgid: 8821\n    int32 ErrorCode = 1;\n}\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [100, 200)\n// ============================================================================\n\n\n// ============================================================================\n\n// 测试\nmessage C_Test { // msgid: 100\n    string J = 1;\n}\n\nmessage GS_Test_R { // msgid: 101\n    string R = 1;\n}\n\n// ============================================================================\n\nmessage BattlePlayer {\n    string PlrId        = 1;\n    string Name         = 2;\n    int32 SvrId         = 3;\n    int32 Head          = 4;\n    int32 HFrame        = 5;\n    int32 Figure        = 6;\n    int32 Lv            = 7;\n    int32 Vip           = 8;\n    string GuildId      = 9;\n    string GName        = 10;\n    int64 AtkPowr       = 11;\n    int32 GuildIcon     = 12;\n    int64 GPower        = 13;\n    int32 LeaderId      = 14;\n    int64 HaloId        = 15; // 光环Id（表Id）\n    int32 Title         = 16;\n    int64 ExtraAtk      = 17; // 额外固定战力\n    repeated int32 Equips = 18; // 普通装备\n    map<int32,int32> Fashions = 19; // 幻化<slot,id>\n    int32 Wing               = 20; // 穿戴的翅膀，0表示隐藏\n    int32 Mount              = 21; // 主坐骑\n}\n\nmessage BattleFighter {\n    BattleHero Hero = 1;\n    int32 Team      = 2;\n    int32 Pos       = 3;\n}\n\nmessage BattleFighterTeam {\n    int32 Id = 1;\n    repeated BattleFighter Fighters = 2;\n}\n\nmessage BattleHero {\n    int32 Id                    = 1;\n    int32 Star                  = 2;\n    map<int32, double> Props    = 3; // 总属性\n    repeated int32 Buffs        = 4; // 词条\n    int32 Lv                    = 5;\n    double DecHp                = 8;\n    int64 AtkPwr                = 9;\n    repeated int32 Skill        = 10; // 主动技能\n    repeated int32 Passive      = 11; // 被动技能\n    int32 Step                  = 13; // 突破等级\n    map<int32, double> NoProps  = 14; // 不计算战力属性\n    int64 FixAtkPwr             = 15; // 固定战力\n    repeated int32 Equips       = 16; // 普通装备\n    map<int32,int32> Fashions   = 17; // 幻化<slot,id>\n    int32 Wing                  = 18; // 穿戴的翅膀，0表示隐藏\n    repeated int32 Runes        = 19; // 技能符文\n    map<int32,int32> MagicSuits = 20; // 魔能套装\n    int32 Mount                 = 21; // 主坐骑\n    repeated int32 Magics       = 22; // 魔能Ids\n}\n\n// 英雄养成信息\nmessage HeroInfo_Full {\n    HeroBase Base               = 1;\n    map<int32, double> Props    = 2;\n}\n\nmessage BattleInput {\n    repeated BattlePlayer Players   = 1;\n    repeated BattleFighter Fighters = 2;\n    map<string, string> Args        = 3;\n}\n\nmessage BattleDamage {\n    int64 Damage = 1;\n\tint64 Cure   = 2;\n\tint64 Hurt   = 3;\n\tint64 Heal   = 4;\n    int64 DamageBoss = 5;\n}\n\nmessage BattleResult {\n    int32 Ret                = 1;\n    map<int32, double> DecHp = 2;\n    map<string, string> Vars = 3;\n    map<int32, BattleDamage> Damages = 4;\n}\n\nmessage C_TestBatFight { // msgid: 102\n    int32 Id = 1;\n}\n\nmessage GS_TestBatFight_R { // msgid: 103\n    int32 ErrorCode = 1;\n    BattleInput BI  = 2;\n}\n\nmessage C_TestBatResult { // msgid: 104\n    BattleResult BR = 1;\n}\n\nmessage GS_TestBatResult_R { // msgid: 105\n    int32 ErrorCode = 1;\n    bytes Replay    = 2;\n    Rewards Rewards = 3;\n}\n\n// ============================================================================\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [12600, 12650)\n// ============================================================================\n\n\n// ============================================================================\n\n// 新服比拼\n\nmessage PushGift {\n    repeated Id_N64 Gifts = 1; // 礼包id：推送时间\n}\n\n// ============================================================================\n\n// 新礼包推送\nmessage GS_PushGiftNew { // msgid: 12600\n    Id_N64 Gift = 1;\n}\n\n// 购买推送奖励\nmessage GS_PushGiftBuy { // msgid: 12601\n    int32 Id        = 1;\n    Rewards Rewards = 2;\n}\n\n// ============================================================================\n\n// 非现金购买\nmessage C_BuyPushGift { // msgid: 12610\n    int32 Id = 1;\n}\n\nmessage GS_BuyPushGift_R { // msgid: 12611\n    int32 ErrorCode = 1;\n    int32 Id = 2;\n    Rewards Rewards = 3;\n}\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [12450, 12500)\n// ============================================================================\n\n\n// ============================================================================\n\n// 公会争霸\n\n// 参赛工会\nmessage GuildFightGuild {\n    int32 SvrId            = 1; // 服务器id\n\tstring GuildId         = 2; // 工会id\n\tstring GuildName       = 3; // 工会名字\n\tint32 GuildIcon        = 4; // 公会图标\n\tint32 Lv               = 5; // 公会等级\n\tint32 Num              = 6; // 公会人数\n\tint32 Score            = 7; // 积分\n}\n\n// 个人战功排行\nmessage GuildFightRankPlayer {\n\tint32 Rank      \t = 1; // 排名\n\tBattlePlayer PlrInfo = 2;\n\tint32 Point          = 3; // 战功\n}\n\n// 匹配对手\nmessage GuildFightMatchEnemy {\n\tBattlePlayer PlrInfo = 1;\n\tint32 Score          = 2; // 玩家积分（锁定积分用于计算战胜能获得多少）\n}\n\n// 当前比赛信息\nmessage GuildFightMatch {\n\tGuildFightGuild Guild = 1; // 匹配到的公会\n\tint32 Win             = 2; // 连胜场次\n\trepeated GuildFightMatchEnemy Enemies = 3; // 匹配对手\n\tdouble CutRat = 4; // 衰减系数\n\tmap<int32, double> BaseProp = 5; // 主角基础属性（衰减前）\n\tint32 AddAttrIdx = 6; // 选择属性加成Idx（-1表示未选择）\n\tint64 AtkPowr = 7; // 我当前战力（衰减后）\n}\n\n// 击杀榜\nmessage GuildFightKillPlayer {\n\tstring GuildId = 1;\n\tstring GuildName = 2;\n\tstring PlrId = 3;\n\tint32 Head = 4;\n\tint32 HFrame = 5;\n\tint32 Win = 6;\n\tstring KillGuildName = 7;\n\tstring Name = 8;\n}\n\n// 仇家榜\nmessage GuildFightEnemyPlayer {\n\tstring GuildId = 1;\n\tstring GuildName = 2;\n\tstring PlrId = 3;\n\tstring Name = 4;\n\tint32 Head = 5;\n\tint32 HFrame = 6;\n\tint32 Win = 7;\n\tint32 ReduceScore = 8;\n}\n\n// 公会积分榜\nmessage GuildFightRankGuild {\n\tint32 Rank      \t  = 1; // 排名\n\tGuildFightGuild Guild = 2;\n\tBattlePlayer PlrInfo  = 3; // 前三名的公会会长展示\n}\n\n// ============================================================================\n\nmessage C_GuildFightInfo { // msgid: 12450\n}\n\nmessage GS_GuildFightInfo_R { // msgid: 12451\n    int32 ErrorCode = 1;\n    repeated int64 ConfTs = 2; // 配置时间，和stage对应\n    int64 NextTs = 3; // 下次开始时间\n    int32 Stage = 4; // 当前阶段：1开启中 其余状态表示未开启\n\trepeated int32 GroupSvrIds = 5; // 分组服务器\n\tint32 Point = 6; // 我的战功\n\tint32 Rank = 7; // 我的排名（<1未上榜）\n\tGuildFightMatch Match = 8; // 当前比赛，可能没有\n\tbool Join = 9; // 自己是否有资格参加（开启中才有效）\n\tint64 CacuTs = 10; // 计算时间戳，用来回复道具\n\tint64 AtkPowr = 11; // 我的战力\n}\n\n// 开始挑战\nmessage C_GuildFightStart { // msgid: 12452\n    string GuildId = 1; // 指定公会挑战\n}\n\nmessage GS_GuildFightStart_R { // msgid: 12453\n    int32 ErrorCode = 1;\n\tGuildFightMatch Match = 2;\n}\n\n// 选择属性\nmessage C_GuildFightChoose { // msgid: 12454\n\tint32 Idx = 1; // [0-2]\n}\n\nmessage GS_GuildFightChoose_R { // msgid: 12455\n\tint32 ErrorCode = 1;\n\tint32 AddAttrIdx = 2; // 选择属性加成Idx\n\tmap<int32, double> BaseProp = 3; // 主角基础属性（衰减前）\n\tint64 AtkPowr = 4; // 我当前战力（衰减后）\n}\n\n// 挑战玩家\nmessage C_GuildFightMatchFight { // msgid: 12456\n\tint32 Idx = 1; // [0-2]\n}\n\nmessage GS_GuildFightMatchFight_R { // msgid: 12457\n\tint32 ErrorCode = 1;\n\tbytes Replay = 2;\n\tint32 Win = 3; // 连胜场次\n\tbool IsWin = 4; // 是否胜利，失败就结束并删除数据\n\trepeated GuildFightMatchEnemy Enemies = 5; // 匹配对手\n\tint32 Point = 6; // 本场战功\n\tint32 SumPoint = 7; // 累计战功\n\tint32 ReduceScore = 8; // 敌方公会减少积分\n\tRewards Rewards = 9;\n\tint64 AtkPowr = 10; // 我当前战力\n\tdouble CutRat = 11; // 衰减系数\n}\n\n// 查看击杀榜信息\nmessage C_GuildFightKillRank { // msgid: 12458\n}\n\nmessage GS_GuildFightKillRank_R { // msgid: 12459\n    int32 ErrorCode                    = 1;\n    repeated GuildFightKillPlayer Data = 2;\n}\n\n// 查看仇家榜信息\nmessage C_GuildFightEnemyRank { // msgid: 12460\n}\n\nmessage GS_GuildFightEnemyRank_R { // msgid: 12461\n    int32 ErrorCode                     = 1;\n    repeated GuildFightEnemyPlayer Data = 2;\n}\n\n// 查看个人排行榜\nmessage C_GuildFightRankPlayer { // msgid: 12462\n}\n\nmessage GS_GuildFightRankPlayer_R { // msgid: 12463\n    int32 ErrorCode                    = 1;\n    repeated GuildFightRankPlayer Data = 2;\n}\n\n// 查看公会排行榜\nmessage C_GuildFightRankGuild { // msgid: 12464\n}\n\nmessage GS_GuildFightRankGuild_R { // msgid: 12465\n    int32 ErrorCode                   = 1;\n    repeated GuildFightRankGuild Data = 2;\n}\n\n// 到点客户端请求计算\nmessage C_GuildFightCacuItem { // msgid: 12466\n}\n\nmessage GS_GuildFightCacuItem_R { // msgid: 12467\n    int32 ErrorCode = 1;\n}\n\nmessage GS_GuildFightUpateTs { // msgid: 12468\n\tint64 CacuTs = 1; // 计算时间戳\n}\n \n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [12300, 12350)\n// ============================================================================\n\n\n// ============================================================================\n\n// 三消花\n\nmessage TripleFlower {\n    int32 LvNum          = 1; // 当前通关序号\n    repeated int32 Taken = 2; // 已领取进度宝箱奖励\n}\n\n// ============================================================================\n\n// 获取信息\nmessage C_TripleFlowerInfo { // msgid: 12301\n}\n\nmessage GS_TripleFlowerInfo_R { // msgid: 12302\n    int32 ErrorCode           = 1;\n    TripleFlower TripleFlower = 2;\n}\n\n// 通关\nmessage C_TripleFlowerPass { // msgid: 12303\n    bool Skip = 1; // 是否使用广告跳过\n}\n\nmessage GS_TripleFlowerPass_R { // msgid: 12304\n    int32 ErrorCode = 1;\n    int32 LvNum     = 2;\n    Rewards Rewards = 3;\n}\n\n// 进度宝箱奖励\nmessage C_TripleFlowerBox { // msgid: 12305\n    int32 Id = 1;       // 配置Id\n}\n\nmessage GS_TripleFlowerBox_R { // msgid: 12306\n    int32 ErrorCode = 1;\n    int32 Id        = 2;\n    Rewards Rewards = 3;\n}\n\n// 重新开始发送埋点\nmessage C_TripleFlowerRestart { // msgid: 12307\n\n}\n\nmessage GS_TripleFlowerRestart_R { // msgid: 12308\n    int32 ErrorCode = 1;\n}\n\n// ============================================================================\n\r\n\r\n\r\n\r\n// ============================================================================\r\n// msgid range for C <-> GS: [15200, 15250)\r\n// ============================================================================\r\n\r\n\r\n// ============================================================================\r\n\r\n// 玩家信息\r\nmessage MinePlayInfo {\r\n    int32 BreakCnt                  = 1; // 剩余破防次数\r\n    BattlePlayer  Owner             = 2; // 占领玩家\r\n    repeated MineTeamHero DefTeam   = 3; // 防守阵容\r\n}\r\n\r\n// 产量\r\nmessage MineProduct {\r\n    int64 OccupyTs          = 1; // 占领时间戳\r\n    int64 GatherTs          = 2; // 正常产出时间戳\r\n\tint64 OddTs             = 3; // 概率产出时间戳\r\n    repeated Item OddItems  = 4; // 概率已产出物品\r\n}\r\n\r\n// 果树\r\nmessage MineTree {\r\n    int32 MTreeId       = 1; // 果树id 区域id*10000+果林id*100+果树id\r\n    int32 TreeId        = 2; // 果树id\r\n    int32 MonsterId     = 3; // 野怪id\r\n    int64 GatherTs      = 4; // 正常产出时间戳\r\n    MinePlayInfo PInfo  = 5; // 占领玩家信息\r\n    MineProduct Product = 6; // 产出\r\n}\r\n\r\n// 果林\r\nmessage MineForest {\r\n    int32 MFId                = 1; // 果林id\r\n    repeated int32 EvtIds     = 2; // 随机事件id\r\n    repeated MineTree Mtrees  = 3; // 所有果树\r\n}\r\n\r\n// 区域\r\nmessage MineAreas {\r\n    int32 MId                   = 1; // 区域id\r\n    repeated MineForest Mines   = 2; // 所有果林\r\n}\r\n\r\n// 个人排行\r\nmessage MinePlrRank {\r\n    int32 Score             = 1; // 开采数量\r\n    int64  Ts               = 2; // 更新分数时间戳\r\n    BattlePlayer  PlrInfo   = 3; // 玩家信息\r\n    int32 Rank              = 4; // 排名\r\n}\r\n\r\n// 工会信息\r\nmessage GldInfo {\r\n    int32 SvrId   = 1;  // 服务器id\r\n    int32 Icon    = 2;  // 工会icon\r\n    string GId    = 3;  // 工会id\r\n    string GName  = 4;  // 工会名字\r\n}\r\n\r\n// 工会排行\r\nmessage MineGldRank {\r\n    int32 Score     = 1; // 开采数量\r\n    int64  Ts       = 2; // 更新分数时间戳\r\n    GldInfo GInfo   = 3; // 玩家信息\r\n    int32 Rank      = 4; // 排名\r\n}\r\n\r\n// 上阵英雄\r\nmessage MineTeamHero {\r\n    HeroBase Base = 1; // 英雄信息\r\n    int32 Pos     = 2; // 位置\r\n}\r\n\r\n// 计数器\r\nmessage MineCounter {\r\n    int32 UseedCnt  = 1; // 已使用次数\r\n\tint32 TotalCnt  = 2; // 可用总次数\r\n\tint32 BuyCnt    = 3; // 已购买次数\r\n}\r\n\r\nmessage GuildMinePlus {\r\n    MineCounter AtkCounter          = 1;  // 精力值\r\n    MineCounter DefCounter          = 2;  // 破防值\r\n    int32 MaxLv                     = 3;  // 占过最大等级\r\n}\r\n\r\n// 日志方信息\r\nmessage LogInfo {\r\n    string PlrId        = 1;   \r\n\tstring PlrName      = 2;\r\n\tstring GuildId      = 3;\r\n\tstring GuildName    = 4; \r\n    int32 SvrId         = 5;\r\n}\r\n\r\n// 日志信息\r\nmessage MineLog {\r\n    bool Win            = 1; // 胜利\r\n\tint32 Tp            = 2; // 类型\r\n\tint32 HeroId        = 3; // 神将id\r\n\tint32 MonsterId     = 4; // 野怪表id\r\n\tint32 BreakCnt      = 5; // 剩余破防值\r\n\tLogInfo Send        = 6; // 发起方\r\n\tLogInfo Recv        = 7; // 接收方\r\n    int64 Ts            = 8; // 时间戳\r\n    MineTree MTree      = 9; // 树\r\n    int64 ReplayId      = 10; // 回放Id可能没有\r\n}\r\n\r\nmessage Revenge {\r\n    BattlePlayer PInfo  = 1; // 复仇玩家信息\r\n    int64 Ts            = 2;\r\n    int64 ReplayId      = 3; // 回放Id可能没有\r\n}\r\n\r\n// 复仇信息\r\nmessage RevengeInfo {\r\n    int32 MTreeId       = 1; // 果树id 区域id*10000+果林id*100+果树id\r\n    int64 Ts            = 2; // 时间戳\r\n    BattlePlayer PInfo  = 3; // 复仇玩家信息\r\n    int32 TreeId        = 4; // 果树id\r\n    int64 ReplayId      = 5; // 回放Id可能没有\r\n}\r\n\r\n\r\n// ============================================================================\r\nmessage C_GuildMinePlusInfo { // msgid: 15200\r\n}\r\n\r\nmessage GS_GuildMinePlusInfo_R { // msgid: 15201\r\n    int32 ErrorCode           = 1;\r\n    GuildMinePlus Data        = 2;\r\n}\r\n\r\n// 拉取区域消息\r\nmessage C_GuildMinePlusMinesInfo { // msgid: 15202\r\n  int32 Mid     = 1; // 区域id 0：全区域\r\n}\r\n\r\nmessage GS_GuildMinePlusMinesInfo_R { // msgid: 15203\r\n  int32 ErrorCode                 = 1;\r\n  repeated MineAreas MineAreas    = 2; // 所有区域\r\n}\r\n\r\n// 攻打\r\nmessage C_GuildMinePlusFight { // msgid: 15212\r\n    int32 MTreeId   = 1; // 树id\r\n    int32 FWay      = 2; // 攻打方式 1：驱逐野怪 2：攻占野怪  3：掠夺玩家 4：攻占玩家 5：占领空树\r\n    int32 TarSvrId  = 3; // 对手服务器id\r\n    string TarPlrId = 4; // 对手玩家id\r\n}\r\n\r\nmessage GS_GuildMinePlusFight_R { // msgid: 15213\r\n    int32 ErrorCode         = 1;\r\n    bytes Replay            = 2;\r\n    Rewards Rewards         = 3; // 奖励\r\n    MineTree Tree           = 4; // 果树信息\r\n    int32 FWay              = 5; // 攻打方式 1：驱逐野怪 2：攻占野怪  3：掠夺玩家 4：攻占玩家 5：占领空树\r\n    int32 MTreeId           = 6; // 树id\r\n    bool Win                = 7; // 胜利\r\n}\r\n\r\n// 领取奖励\r\nmessage C_GuildMinePlusTakeRewards { // msgid: 15218\r\n    int32 MTreeId   = 1; // 树id \r\n}\r\n\r\nmessage GS_GuildMinePlusTakeRewards_R { // msgid: 15219\r\n    int32 ErrorCode         = 1;\r\n    int32 MTreeId           = 2; // 树id \r\n    Rewards Rewards         = 3; // 奖励\r\n    int64 GatherTs          = 4; // 正常产出时间戳\r\n    repeated Item BItems    = 5; // buff奖励\r\n    repeated Item NItems    = 6; // 正常奖励\r\n}\r\n\r\n// 拉取个人排行榜\r\nmessage C_GuildMinePlusPullPlrRank { // msgid: 15220\r\n}\r\n\r\nmessage GS_GuildMinePlusPullPlrRank_R { // msgid: 15221\r\n    int32 ErrorCode              = 1;\r\n    repeated MinePlrRank Data    = 2;\r\n}\r\n\r\n// 拉取g工会排行榜\r\nmessage C_GuildMinePlusPullGuildRank { // msgid: 15222\r\n}\r\n\r\nmessage GS_GuildMinePlusPullGuildRank_R { // msgid: 15223\r\n    int32 ErrorCode              = 1;\r\n    repeated MineGldRank Data    = 2;\r\n}\r\n\r\n\r\n// 拉取区域数\r\nmessage C_GuildMinePlusPullMineAreas { // msgid: 15224\r\n}\r\n\r\nmessage GS_GuildMinePlusPullMineAreas_R { // msgid: 15225\r\n    int32 Num                 = 1; // 区域总数\r\n    map<int32, int32> GldNum  = 2; // 区域id: 工会所在人数\r\n    MineTree MyTree           = 3; // 我的树\r\n}\r\n\r\n// 重置推送\r\nmessage GS_GuildMinePlusReset { // msgid: 15228\r\n    GuildMinePlus Data = 1;\r\n}\r\n\r\n// 树变化推送\r\nmessage GS_GuildMineTreeChange { // msgid: 15229\r\n    MineTree Tree = 1;\r\n}\r\n\r\n// 拉取日志\r\nmessage C_GuildMinePlusPullLogs { // msgid: 15230 \r\n}\r\n\r\nmessage GS_GuildMinePlusPullLogs_R { // msgid: 15231\r\n    repeated MineLog Logs  = 1;\r\n}\r\n\r\n// 计数器购买\r\nmessage C_GuildMinePlusCounterBuy { // msgid: 15232 \r\n    int32 Tp = 1; // 类型 1：精力值 2：破防值\r\n    int32 N  = 2; // 次数\r\n}\r\n\r\nmessage GS_GuildMinePlusCounterBuy_R { // msgid: 15233\r\n    int32 ErrorCode              = 1;\r\n    int32 Tp                     = 2; // 类型 1：精力值 2：破防值\r\n    MineCounter MC               = 3; // 计数\r\n}\r\n\r\n// 更新\r\nmessage GS_GuildMinePlusCounterUpdate { // msgid: 15234\r\n    int32 Tp                     = 1; // 类型 1：精力值 2：破防值\r\n    MineCounter MC               = 2; // 计数\r\n}\r\n\r\n// 拉取概率奖励\r\nmessage C_GuildMinePlusProductItems { // msgid: 15235 \r\n    int32 MTreeId   = 1; // 树id \r\n}\r\n\r\nmessage GS_GuildMinePlusProductItems_R { // msgid: 15236\r\n    int32 ErrorCode              = 1;\r\n    repeated Item Items          = 2; // 奖励\r\n}\r\n\r\n// 增加新区域\r\nmessage GS_GuildMinePlusNewArea { // msgid: 15237\r\n    int32 AreaNums      = 1; // 总区域数\r\n}\r\n\r\n// 放弃\r\nmessage C_GuildMinePlusGiveUp { // msgid: 15238\r\n    int32 MTreeId   = 1; // 树id \r\n}\r\n\r\nmessage GS_GuildMinePlusGiveUp_R { // msgid: 15239\r\n    int32 ErrorCode         = 1;\r\n    int32 MTreeId           = 2; // 树id \r\n    repeated Item BItems    = 3; // buff奖励\r\n    repeated Item NItems    = 4; // 正常奖励\r\n}\r\n\r\n// 拉取防守阵容消息 \r\nmessage C_GuildMinePlusGetDefTeamsInfo { // msgid: 15240\r\n    int32 MTreeId   = 1; // 树id \r\n    int32 TarSvrId  = 2; // 对手服务器id\r\n    string TarPlrId = 3; // 对手玩家id\r\n}\r\n\r\nmessage GS_GuildMinePlusGetDefTeamsInfo_R { // msgid: 15241\r\n    int32 ErrorCode                 = 1;\r\n    int32 MTreeId                   = 2; // 树id \r\n    repeated MineTeamHero DefTeam   = 3; // 防守阵容\r\n    string TarPlrId                 = 4; // 对手玩家id\r\n}\r\n\r\n// 拉取复仇消息 \r\nmessage C_GuildMinePlusRevengeInfo { // msgid: 15242\r\n}\r\n\r\nmessage GS_GuildMinePlusRevengeInfo_R { // msgid: 15243\r\n    int32 ErrorCode                 = 1; \r\n    repeated RevengeInfo RInfo      = 2; // 复仇列表消息\r\n}\r\n\r\n\r\n// 进入某个区域的某级果林\r\nmessage C_GuildMinePlusAttendIn { // msgid: 15244\r\n    int32 MFid     = 1; // 果林id = mid(区域)*100 + mfid(果林级)\r\n}\r\n\r\nmessage GS_GuildMinePlusAttendIn_R { // msgid: 15245\r\n    int32 ErrorCode         = 1; \r\n}\r\n\r\n// 进入某个区域的某级果林\r\nmessage C_GuildMinePlusAttendOut { // msgid: 15246\r\n    int32 MFid     = 1; // 果林id = mid(区域)*100 + mfid(果林级)\r\n}\r\n\r\nmessage GS_GuildMinePlusAttendOut_R { // msgid: 15247\r\n    int32 ErrorCode         = 1; \r\n}\r\n\r\n// 使用矿镐\r\nmessage C_GuildMinePlusUseItem { // msgid: 15248\r\n    int32 MTreeId = 1; // 树id \r\n    int32 ItemId = 2;\r\n    int32 ItemNum = 3;\r\n}\r\n\r\nmessage GS_GuildMinePlusUseItem_R { // msgid: 15249\r\n    int32 ErrorCode = 1;\r\n    Rewards Rewards = 2; // 奖励\r\n}\r\n\r\n\r\n\n\n\n\n// ============================================================================\n// msgid range for GS <-> RT: [1400, 1600)\n// ============================================================================\n\n// 注册游戏服\nmessage GS_RegisterGame { // msgid: 1400\n    int32 Id = 1;\n}\n\nmessage RT_RegisterGame_R { // msgid: 1401\n    bool Success = 1;\n}\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [12200, 12250)\n// ============================================================================\n\n\n// ============================================================================\n\n// 幻化\nmessage FashionData {\n    map<int32, bool> Ids = 1; // 已经获得的幻化<id, 领取奖励>\n    map<int32, int32> MakeUp = 2; // 保存的幻化<slot,id>,slot=[0,3]\n}\n\n// ============================================================================\n\nmessage GS_FashionNew { // msgid: 12200\n    int32 Id  = 1;\n}\n\n// 领取幻化奖励\nmessage C_FashionTaken { // msgid: 12210\n    repeated int32 Ids = 1;\n}\n\nmessage GS_FashionTaken_R { // msgid: 12211\n    int32 ErrorCode = 1;\n    repeated int32 Ids = 2;\n    Rewards Rewards = 3;\n}\n\n// 保存幻化\nmessage C_FashionMakeUp { // msgid: 12212\n    map<int32, int32> MakeUp = 1; // 所有位置都要发\n}\n\nmessage GS_FashionMakeUp_R { // msgid: 12213\n    int32 ErrorCode = 1;\n    map<int32, int32> MakeUp = 2;\n}\n\n// 清除幻化，把MakeUp删掉\nmessage C_FashionClear { // msgid: 12214\n}\n\nmessage GS_FashionClear_R { // msgid: 12215\n    int32 ErrorCode = 1;\n}\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [7800, 7900)\n// ============================================================================\n\n\n// ============================================================================\n\nmessage GuildPlr {\n    GuildBossPlr Boss     = 1; // 公会Boss\n    GuildSign Sign        = 2; // 公会祈福\n    GuildHelp Help        = 3; // 公会援助\n    GuildPddPlr Pdd       = 4; // 公会砍价\n}\n\n// ============================================================================\n\n// 公会捐献\nmessage GuildSign {\n    repeated int32 Sign   = 1; // 已捐献的id\n}\n\nmessage GuildSignRank {\n    PlayerBaseInfo PlrBaseInfo = 1; // 个人信息\n    int32 Sum = 2; // 累计捐赠次数\n    int32 Cnt = 3; // 今日捐赠次数\n}\n\n// 公会捐献\nmessage C_GuildSign { // msgid: 7820\n    int32 Id = 1;\n}\n\nmessage GS_GuildSign_R { // msgid: 7821\n    int32 ErrorCode = 1;\n    Rewards Rewards = 2;\n    int32 Id = 3;\n}\n\n// 公会捐献排名\nmessage C_GuildSignRank { // msgid: 7822\n}\n\n// 客户端自行排名\nmessage GS_GuildSignRank_R { // msgid: 7823\n    int32 ErrorCode = 1;\n    repeated GuildSignRank Data = 2;\n}\n\n// ============================================================================\n\n// 公会动态\nmessage GuildLog {\n    int32 Id        = 1;  // 配置id\n\tstring Content  = 2;  // 内容\n    int64 Ts        = 3;  // 时间戳\n}\n\n// 拉取公会动态\nmessage C_GuildLogInfo  { // msgid: 7850\n    int32 MoudleId  = 1; // 模块id\n}\n\nmessage GS_GuildLogInfo_R { // msgid: 7851\n    int32 ErrorCode         = 1;\n    repeated GuildLog Logs  = 2;\n}\n\n// ============================================================================\n\n// 公会BOSS\nmessage GuildBossPlr {\n    int64 Dmg = 1;   // 本周累计伤害\n    int32 Taken = 2; // 本周已领取血条奖励，小于公会的KillCnt表示还有奖励领取，如果大于配置则领取最后一条配置\n}\n\n// 领取血条奖励\nmessage C_GuildBossTakeReward { // msgid:7830\n}\n\nmessage GS_GuildBossTakeReward_R { // msgid:7831\n    int32 ErrorCode = 1;\n    Rewards Rewards  = 2;\n    int32 Taken = 3; // 本周已领取血条奖励\n}\n\n// ============================================================================\n\n// 公会援助\nmessage GuildHelp {\n    GuildHelpT Help = 1; // 当前发布的援助\n}\n\nmessage GuildHelpT {\n    int32 Id    = 1;\n    int32 Cnt   = 2; // 被援助个数\n}\n\n// 玩家援助信息\nmessage GuildHelpPlr {\n    string PlrId = 1;\n    string Name  = 2;\n    int32 Head   = 3;\n    int32 HFrame = 4;\n    int32 Id     = 5;\n    int32 Cnt    = 6; // 被援助个数\n}\n\n// 推送\nmessage GS_GuildHelpUpdate { // msgid: 7834\n    GuildHelpT Data = 1;\n}\n\n// 发布援助\nmessage C_GuildHelpIssue { // msgid: 7835\n    int32 Id = 1;\n}\n\nmessage GS_GuildHelpIssue_R { // msgid: 7836\n    int32 ErrorCode = 1;\n}\n\n// 取消援助\nmessage C_GuildHelpCancel { // msgid: 7837\n}\n\nmessage GS_GuildHelpCancel_R { // msgid: 7838\n    int32 ErrorCode = 1;\n}\n\n// 援助目标\nmessage C_GuildHelpTar { // msgid: 7839\n    string PlrId = 1;\n}\n\nmessage GS_GuildHelpTar_R { // msgid: 7840\n    int32 ErrorCode  = 1;\n    Rewards Rewards  = 2;\n}\n\n// 援助所有目标\nmessage C_GuildHelpTarAll { // msgid: 7841\n}\n\nmessage GS_GuildHelpTarAll_R { // msgid: 7842\n    int32 ErrorCode  = 1;\n    Rewards Rewards  = 3;\n}\n\n// 获取可援助目标列表\nmessage C_GuildHelpList { // msgid: 7843\n}\n\nmessage GS_GuildHelpList_R { // msgid: 7844\n    int32 ErrorCode            = 1;\n    repeated GuildHelpPlr List = 2;\n}\n\n// 领取求援\nmessage C_GuildHelpTakeHelp { // msgid: 7845\n}\n\nmessage GS_GuildHelpTakeHelp_R { // msgid: 7846\n    int32 ErrorCode = 1;\n    Rewards Rewards = 2;\n}\n\n// 有人需要援助推送\nmessage GS_GuildHelpPlrUpdate { // msgid: 7847\n    GuildHelpPlr Data = 1;\n}\n\n// ============================================================================\n\n// 公会砍价\nmessage GuildPddPlr {\n    bool Pdd = 1; // 今日是否已砍价\n    bool Buy = 2; // 今日是否已购买\n}\n\r\n\r\n\r\n\r\n// ============================================================================\r\n// msgid range for C <-> GS: [15250, 15300)\r\n// ============================================================================\r\n\r\n\r\n// ============================================================================\r\n\r\nmessage BestPerson {\r\n  int32 GuessNum = 1; // 竞猜币数量\r\n  int32 LikeCnt = 2; // 已点赞次数\r\n  repeated int32 LikeReward = 3; // 已领取的点赞奖励\r\n  repeated int64 ConfTs = 4; // 配置时间，和stage对应\r\n  int64 NextTs = 5; // 下次开始时间\r\n  int32 Stage = 6; // 当前阶段：0选拔赛 1积分赛 2~8巅峰赛 9~14冠军赛\r\n  bool Contestant = 7; // 当前是否参赛\r\n  int32 ZoneId = 8; // 战区id：1.A战区；2.B战区\r\n  int32 SeasonId = 9; // 当前赛季id\r\n  int32 ArenaWin = 10; // 积分赛胜利场数\r\n  int32 ArenaCnt = 11; // 积分赛总场数\r\n  bool CanGuess = 12; // 当前是否可以竞猜\r\n  int32 BossId  = 13;\r\n}\r\n\r\nmessage BPArenaRecord {\r\n  string PlrId = 1; // 对手id\r\n  string Name = 2; // 对手名字\r\n  int32 Head = 3; // 对手头像\r\n  int32 HFrame  = 4; // 对手头像框\r\n  bool IsAtk = 5; // 是否是攻击方\r\n  repeated BPArenaRoundReplay Replays = 6; // 回放\r\n  int32 AddScore = 7; // 积分变化\r\n  int64 Ts = 8; // 战斗时间\r\n}\r\n\r\nmessage BPArenaRoundReplay {\r\n  int32 Round = 1; // 场次\r\n  bool IsWin = 2; // 单场胜负\r\n  int64 ReplayId = 3; // 回放id\r\n  int32 AtkVic = 4; // 攻击方连胜\r\n  int32 DefVic = 5; // 防守方连胜\r\n}\r\n\r\nmessage BPArenaRoundData {\r\n  int32 Round = 1;\r\n  bool IsWin = 2;\r\n  bytes Replay = 3;\r\n  int32 AtkVic = 4;\r\n  int32 DefVic = 5;\r\n}\r\n\r\nmessage BestPersonWinner {\r\n  PlayerInfo Info = 1;\r\n  repeated SmackDownHeroTeam Teams = 2;\r\n  int32 BeLike = 3;\r\n  int32 ZoneId = 4;\r\n}\r\n\r\nmessage BPSeasonLog {\r\n  int32 SeasonId = 1;\r\n  repeated BestPersonWinner Winners = 2;\r\n  int32 SumLike = 3; // 点赞总数\r\n  int64 StartTs = 4;\r\n  int64 EndTs = 5;\r\n}\r\n\r\nmessage BPSeasonLogTs {\r\n  int32 SeasonId = 1;\r\n  int64 StartTs = 2;\r\n  int64 EndTs = 3;\r\n}\r\n\r\n// ============================================================================\r\n\r\nmessage C_BestPersonInfo { // msgid: 15260\r\n}\r\n\r\nmessage GS_BestPersonInfo_R { // msgid: 15261\r\n  int32 ErrorCode = 1;\r\n  BestPerson Info = 2;\r\n}\r\n\r\n// 选拔赛挑战\r\nmessage C_BestPersonDummyFight { // msgid: 15262\r\n}\r\n\r\nmessage GS_BestPersonDummyFight_R { // msgid: 15263\r\n  int32 ErrorCode = 1;\r\n  int64 Dmg = 2; // 本次伤害\r\n  bytes Replay = 3;\r\n  int64 DummyTs = 4; // 冷却时间\r\n}\r\n\r\n\r\n// 选拔赛排行榜\r\nmessage C_BestPersonDummyRankList { // msgid: 15264\r\n  int32 Begin = 1;\r\n  int32 N     = 2;\r\n}\r\n\r\nmessage GS_BestPersonDummyRankList_R { // msgid: 15265\r\n  int32 ErrorCode = 1;\r\n  repeated RankRecord List = 2;\r\n  int32 SelfIdx = 3;\r\n  int64 SelfScore = 4;\r\n}\r\n\r\n// 积分赛刷新对手\r\nmessage C_BestPersonArenaUpdateEnemy { // msgid: 15270\r\n}\r\n\r\nmessage GS_BestPersonArenaUpdateEnemy_R { // msgid: 15271\r\n  int32 ErrorCode = 1;\r\n  repeated ArenaEnemy Enemies = 2;\r\n}\r\n\r\n// 积分赛挑战\r\nmessage C_BestPersonArenaFight { // msgid: 15272\r\n  string Target = 1; // 对手玩家id\r\n}\r\n\r\nmessage GS_BestPersonArenaFight_R { // msgid: 15273\r\n  int32 ErrorCode = 1;\r\n  repeated BPArenaRoundData Data = 2;\r\n  bool IsWin = 3;\r\n  Rewards Rewards = 4;\r\n  int32 Score1 = 5; // 变化后的积分\r\n  int32 AddScore1 = 6; // 自己积分变化\r\n  int32 Score2 = 7;\r\n  int32 AddScore2 = 8; // 对手积分变化\r\n}\r\n\r\n// 积分赛排行榜\r\nmessage C_BestPersonArenaRankList { // msgid: 15274\r\n  int32 ZoneId = 1;\r\n  int32 Begin = 2;\r\n  int32 N     = 3;\r\n}\r\n\r\nmessage GS_BestPersonArenaRankList_R { // msgid: 15275\r\n  int32 ErrorCode = 1;\r\n  repeated RankRecord List = 2;\r\n  int32 SelfIdx = 3;\r\n  int64 SelfScore = 4;\r\n  int32 ZoneId = 5;\r\n}\r\n\r\n// 冠军展示列表\r\nmessage C_BestPersonGetSeasonLog { // msgid: 15276\r\n  int32 SvrId = 1;\r\n  int32 SeasonId = 2;\r\n}\r\n\r\nmessage GS_BestPersonGetSeasonLog_R { // msgid: 15277\r\n  int32 ErrorCode = 1;\r\n  BPSeasonLog Logs = 2;\r\n  int32 SvrId = 3;\r\n}\r\n\r\n// 点赞\r\nmessage C_BestPersonLike { // msgid: 15278\r\n  int32 SeasonId = 1;\r\n  string Target = 2;\r\n}\r\n\r\nmessage GS_BestPersonLike_R { // msgid: 15279\r\n  int32 ErrorCode = 1;\r\n  int32 LikeCnt = 2; // 已点赞次数\r\n  int32 SeasonId = 3;\r\n  string Target = 4;\r\n  int32 BeLike = 5;\r\n  int32 SumLike = 6; // 点赞总数，如果是给过往赛季点赞则不会更新\r\n  Rewards Rewards = 7;\r\n}\r\n\r\n// 点赞奖励\r\nmessage C_BestPersonLikeReward { // msgid: 15280\r\n}\r\n\r\nmessage GS_BestPersonLikeReward_R { // msgid: 15281\r\n  int32 ErrorCode = 1;\r\n  Rewards Rewards = 2;\r\n  repeated int32 Taken = 3; // 仅更新本次领取的id\r\n}\r\n\r\n// 积分赛战报\r\nmessage C_BestPersonArenaLog { // msgid: 15282\r\n}\r\n\r\nmessage GS_BestPersonArenaLog_R { // msgid: 15283\r\n  int32 ErrorCode = 1;\r\n  repeated BPArenaRecord Logs = 2;\r\n}\r\n\r\n// 拉取赛季列表\r\nmessage C_BestPersonGetSeasonLogList { // msgid: 15284\r\n  int32 SvrId = 1;\r\n}\r\n\r\nmessage GS_BestPersonGetSeasonLogList_R { // msgid: 15285\r\n  int32 ErrorCode = 1;\r\n  repeated BPSeasonLogTs List = 2;\r\n}\r\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [8450, 8500)\n// ============================================================================\n\n\n// ============================================================================\n\n// vip\n\nmessage Vip {\n    int32 Lv = 1; // 等级\n    repeated int32 Gifts = 2; // 已购礼包\n    bool DailyFree = 3; // 每日奖励领取状态，false未领取，true已领取\n}\n\n// ============================================================================\n\n// 买礼包\nmessage C_VipBuyGift { // msgid: 8450\n    int32 Lv = 1;\n}\n\nmessage GS_VipBuyGift_R { // msgid: 8451\n    int32 ErrorCode = 1;\n}\n\n// 礼包购买更新\nmessage GS_VipGiftsUpdate { // msgid: 8452\n    repeated int32 Gifts = 1;\n    Rewards Rewards = 2;\n}\n\n// 等级更新\nmessage GS_VipLvUpdate { // msgid: 8453\n    int32 Lv = 1;\n}\n\n// 领取每日奖励\nmessage C_VipDailyFree { // msgid: 8454\n}\n\nmessage GS_VipDailyFree_R { // msgid: 8455\n    int32 ErrorCode = 1;\n    Rewards Rewards = 2;\n}\n\n// 直升VIP10\nmessage C_VipFreeLvUp { // msgid: 8456\n}\n\nmessage GS_VipFreeLvUp_R { // msgid: 8457\n    int32 ErrorCode = 1;\n}\n\n// ============================================================================\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [12750, 12800)\n// ============================================================================\n\n\n// ============================================================================\n\n// 巅峰对决\n\nmessage SmackDownState {\n    int32 State   = 1; // 当前状态：0无 1战斗 2准备 3竞猜\n    int32 GuessId = 2; // 竞猜战斗id\n    int32 FightId = 3; // 我的战斗id\n    int64 StateTs = 4; // 下个阶段时间\n    int32 BatIdx  = 5; // 比赛总轮数\n    int32 GroupId = 6; // 组id\n}\n\nmessage SmackDownPlr {\n    PlayerInfo Info               = 1; // 玩家信息\n    repeated SmackDownHero Heroes = 2; // 上阵英雄\n    int64 TeamAtk                 = 3; // 队伍战力\n}\n\nmessage SmackDownInfoPlr {\n    PlayerInfo Info = 1; // 玩家信息\n    repeated SmackDownHeroTeam Teams = 2; // 上阵英雄\n}\n\nmessage SmackDownHero {\n    HeroBase Base = 1; // 基本信息\n    int32 Pos     = 2; // 上阵位置\n    double DecHp  = 3;\n}\n\nmessage SmackDownHeroTeam {\n    int32 Id = 1;\n    repeated SmackDownHero Heroes = 2;\n    int64 Atk = 3;\n}\n\nmessage SmackDownBattle {\n    int32 Id        = 1; // 战斗id\n    int32 AtkWin    = 2; // 攻击方胜场\n    int32 DefWin    = 3; // 防守方胜场\n    string AtkPlrId = 4; // 攻击方玩家id\n    string DefPlrId = 5; // 防守方玩家id\n    string Winner   = 6; // 获胜玩家id\n}\n\nmessage SmackDownReplay {\n    int64 Id         = 1; // 录像id\n    SmackDownPlr Atk = 2; // 攻击方\n    SmackDownPlr Def = 3; // 防守方\n    string PlrId     = 4; // 获胜玩家id\n    int32 AtkVic     = 5; // 攻击方连胜\n    int32 DefVic     = 6; // 防守方连胜\n}\n\nmessage SmackDownRank {\n    int32 SelfIdx               = 1; // 自己的名次\n    int64 SelfScore             = 2; // 自己的排名值\n    repeated RankRecord Records = 3; // 排名列表\n}\n\nmessage SmackDownGuessOne {\n    PlayerInfo Info = 1; // 玩家信息\n    int32 GuessNum  = 2; // 投注\n    float Rate = 3; // 下注时的赔率\n    float CurRate = 4; // 当前赔率\n    int32 SumNum = 5; // 总投注\n    int32 GuessPlr  = 6; // 投注人数\n}\n\nmessage SmackDownGuessBase {\n    SmackDownGuessOne Atk = 1; // 进攻方\n    SmackDownGuessOne Def = 2; // 防守方\n    bool AtkWin           = 3; // 是否是进攻方胜利\n    int32 BattleId        = 4; // 战斗Id\n}\n\nmessage SmackDownGuessPlr {\n    PlayerInfo Info = 1; // 玩家信息\n    repeated SmackDownHeroTeam Teams = 2;\n    int32 GuessNum  = 3; // 投注\n    float Rate = 4; // 下注时的赔率\n    float CurRate = 5; // 当前赔率\n    int32 SumNum = 6; // 总投注\n    int32 GuessPlr  = 7; // 投注人数\n}\n\nmessage SmackDownGuessFull {\n    SmackDownGuessPlr Atk = 1; // 进攻方\n    SmackDownGuessPlr Def = 2; // 防守方\n    bool AtkWin           = 3; // 是否是进攻方胜利\n    int32 BattleId        = 4; // 战斗Id\n}\n\nmessage SmackDownGroup {\n    repeated PlayerInfo Plrs      = 1; // 玩家\n    repeated SmackDownBattle Bats = 2; // 战斗\n}\n\n// ============================================================================\n\n// info\nmessage C_SmackDownInfo { // msgid: 12750\n    int32 ZoneId = 1;\n}\n\nmessage GS_SmackDownInfo_R { // msgid: 12751\n    int32 ErrorCode = 1;\n    SmackDownState State = 2;\n    int32 ZoneId = 3;\n}\n\n// 排行榜\nmessage C_SmackDownRank { // msgid: 12752\n    int32 N = 1;\n}\n\nmessage GS_SmackDownRank_R { // msgid: 12753\n    int32 ErrorCode    = 1;\n    SmackDownRank Data = 2;\n}\n\n// 竞猜\nmessage C_SmackDownGuess { // msgid: 12754\n    string PlrId = 1;\n    int32 Num    = 2;\n    int32 ZoneId = 3;\n}\n\nmessage GS_SmackDownGuess_R { // msgid: 12755\n    int32 ErrorCode = 1;\n    string PlrId    = 2;\n    int32 Num       = 3;\n    float Rate      = 4;\n    int32 GuessNum  = 5; // 当前竞猜币数量\n}\n\n// 查看竞猜历史记录\nmessage C_SmackDownGuessList { // msgid: 12756\n    int32 ZoneId = 1;\n}\n\nmessage GS_SmackDownGuessList_R { // msgid: 12757\n    int32 ErrorCode              = 1;\n    repeated SmackDownGuessBase Data = 2;\n}\n\n// 战斗信息\nmessage C_SmackDownBattleInfo { // msgid: 12758\n    int32 Id = 1;               // 战斗id\n    int32 ZoneId = 2;\n}\n\nmessage GS_SmackDownBattleInfo_R { // msgid: 12759\n    int32 ErrorCode       = 1;\n    SmackDownInfoPlr Atk  = 2; // 进攻方\n    SmackDownInfoPlr Def  = 3; // 防守方\n    int64 ReplayId        = 4; // 当前回放id\n    string PlrId = 5; // 获胜玩家id\n}\n\n// 小组赛信息\nmessage C_SmackDownGroupInfo { // msgid: 12760\n    int32 Idx = 1;             // 第几组，0-3小组赛，4冠军赛\n    int32 ZoneId = 2;\n}\n\nmessage GS_SmackDownGroupInfo_R { // msgid: 12761\n    int32 ErrorCode      = 1;\n    SmackDownGroup Group = 2;\n}\n\n// 战报\nmessage C_SmackDownGroupReplay { // msgid: 12762\n    int32 Id = 1;                // 战斗id\n    int32 ZoneId = 2;\n}\n\nmessage GS_SmackDownGroupReplay_R { // msgid: 12763\n    int32 ErrorCode               = 1;\n    repeated SmackDownReplay Reps = 2;\n    int32 AtkSurvive = 3;\n    int32 DefSurvive = 4;\n}\n\n// 获取当前竞猜信息\nmessage C_SmackDownGetGuessInfo { // msgid: 12764\n    int32 ZoneId = 1;\n}\n\nmessage GS_SmackDownGetGuessInfo_R { // msgid: 12765\n    int32 ErrorCode = 1;\n    SmackDownGuessFull Info = 2;\n}\n\n// 玩家信息获取\nmessage C_SmackDownGetPlayerInfo { // msgid: 12766\n    string PlrId = 1;\n    int32 SvrId = 2;\n}\n\nmessage GS_SmackDownGetPlayerInfo_R { // msgid: 12767\n    int32 ErrorCode = 1;\n    SmackDownInfoPlr Info = 2;\n}\n\n// 获取对战记录列表\nmessage C_GetCrossReplayList { // msgid: 12768\n    int32 BatIdx = 1; // 1.32强赛; ... 5.决赛\n    string Mod = 2; // 功能id，为空表示巅峰对决\n}\n\nmessage GS_GetCrossReplayList_R { // msgid: 12769\n    int32 ErrorCode = 1;\n    repeated CrossReplay List = 2;\n}\n\n// 单独更新赔率\nmessage C_SmackDownGuessRate { // msgid: 12770\n    int32 ZoneId = 1;\n    int32 BattleId = 2;\n}\n\nmessage GS_SmackDownGuessRate_R { // msgid: 12771\n    int32 ErrorCode = 1;\n    float AtkRate = 2;\n    float DefRate = 3;\n}\n\n// ============================================================================\n\r\n\r\n\r\n\r\n// ============================================================================\r\n// msgid range for C <-> GS: [5000, 5100)\r\n// ============================================================================\r\n\r\n\r\n// ============================================================================\r\n\r\nmessage UserInfo {\r\n    string UserId  = 1;\r\n    string Name    = 2;\r\n    int32 Head     = 3;\r\n    int32 HFrame   = 4;\r\n    int32 Figure   = 5;\r\n    int32 Lv       = 6;\r\n    int32 Exp      = 7;\r\n    int64 AtkPwr   = 10;\r\n    int64 CreateTs = 11;\r\n    bool IsNew     = 12;\r\n    string LoginIP = 13;\r\n\r\n    string GuildId   = 14;\r\n    string GuildName = 15;\r\n    int32 GuildRank  = 16;\r\n    \r\n    ForLoading ForLoading = 17; // loading 界面需要的数据\r\n\r\n    map<int32, int64> HeadStore     = 18; // 头像库\r\n    map<int32, int64> HFrameStore   = 19; // 头像框库\r\n    FigureStore FigureStore         = 20; // 形象库\r\n    BagData Bag                     = 21; // 背包\r\n    FieldData Fields                = 22; // 域数据\r\n    AchvTabData AchvTab             = 23; // 成就表数据\r\n    repeated Mail Mails             = 24; // 邮件\r\n    MOpenData MOpen                 = 25; // 模块开启数据\r\n    TutorialData Tutorial           = 26; // 新手数据\r\n    MiscData Misc                   = 27; // 杂项数据\r\n    CounterData Counter             = 28; // 计数器相关数据\r\n    Vip Vip                         = 29; // vip\r\n    DrawData Draw                   = 30; // 抽卡\r\n    WLevelData WLevel               = 31; // 世界关卡\r\n    TowerData Tower                 = 32; // 爬塔\r\n    PushGift PushGift               = 33; // 推送礼包\r\n    DailyTaskData DailyTask         = 36; // 日常任务\r\n    TargetTaskData TargetTask       = 37; // 模块目标任务\r\n    Rank Rank                       = 38; // 排行榜\r\n    ChatHistroyMsgData Chat         = 39; // 聊天记录\r\n    FriendData Friend               = 40; // 好友\r\n    TeamMgrData TeamMgr             = 41; // 阵容管理\r\n    int32 LoginSumDays              = 42; // 累计登陆天数\r\n    GuildPlr GuildPlr               = 46; // 公会玩法信息\r\n    BillData BillData               = 47; // 充值数据\r\n    int32 LoginCtDays               = 48; // 连续登陆天数\r\n    map<int32, int64> TitleStore    = 49; // 称号库\r\n    int32 Title                     = 50; // 当前使用的称号\r\n    HeroMap HeroMap                 = 52; // 英雄图鉴\r\n    map<int32, int64> ChatBoxStore  = 53; // 聊天框库\r\n    int32 ChatBox                   = 54; // 当前使用的聊天框\r\n    int32 Sex                       = 57; // 性别\r\n    map<int32, int32> ItemUse       = 60; // 道具使用 itemid : cnt\r\n    int64  LogInTs                  = 61; // 登录时间戳\r\n    LineUp LineUp                   = 62; // 阵容推荐\r\n    LeaderData Leader               = 66; // 主角养成\r\n    MainTaskData MainTask           = 68; // 主线任务\r\n    LostTreasure LostTreasure       = 69; // 上古遗迹\r\n    int32 SvrId                     = 70; // 服务器Id\r\n    RelicCupData RelicCup           = 71; // 圣杯 \r\n    HaloData Halo                   = 72; // 光环\r\n    FashionData Fashion             = 73; // 幻化\r\n    WingData Wing                   = 74; // 翅膀\r\n    SkillRuneData SkillRune         = 75; // 技能符文\r\n    MagicData Magic                 = 76; // 魔能强化\r\n    MountDraw MountDraw             = 77; // 坐骑招募\r\n}\r\n\r\n// ============================================================================\r\n\r\n// 登录错误\r\nmessage GS_LoginError { // msgid: 5000\r\n    int32 ErrorCode = 1;\r\n}\r\n\r\n// 玩家信息\r\nmessage GS_UserInfo { // msgid: 5001\r\n    UserInfo Info = 1;\r\n}\r\n\r\n// 时间同步\r\nmessage C_TimeSync { // msgid: 5002\r\n}\r\n\r\nmessage GS_TimeSync_R { // msgid: 5003\r\n    int64 Ts = 1;\r\n}\r\n\r\n// 拉取userinfo\r\nmessage C_GetUserInfo { // msgid: 5004\r\n}\r\n\r\nmessage GS_GetUserInfo_R { // msgid: 5005\r\n    int32 ErrorCode  = 1;\r\n    UserInfo Info = 2;\r\n}\r\n\r\n// 拉取世界等级\r\nmessage C_GetWorldLv { // msgid: 5006\r\n}\r\n\r\nmessage GS_GetWorldLv_R { // msgid: 5007\r\n    int32 ErrorCode = 1;\r\n    int32 WorldLv = 2; // 世界等级\r\n    double ExpRat = 3; // 经验加成\r\n}\r\n\r\n// 拉取跨服主服务器\r\nmessage C_GetCrossMasters { // msgid: 5008\r\n}\r\n\r\nmessage GS_GetCrossMasters_R { // msgid: 5009\r\n    int32 ErrorCode = 1;\r\n    repeated int32 MasterSvrs = 2;\r\n    int32 MasterId = 3; // 本服的主服务器id\r\n}\r\n\r\nmessage C_LoadComplete { // msgid: 5010\r\n}\r\n\r\nmessage GS_LoadComplete_R { // msgid: 5011\r\n    int32 ErrorCode = 1;\r\n}\r\n\r\n// ============================================================================\r\n\r\n\r\n\r\n\r\n\r\n// ============================================================================\r\n// msgid range for GS <-> GS: [110400, 110500)\r\n// ============================================================================\r\n\r\n\r\n// ============================================================================\r\n\r\n// 拉取参赛信息完成-通知各参赛工会准备自己工会数据\r\nmessage PrepareAttendData { \r\n  string MyGid    = 1; // 自己的工会id\r\n  string RivalGid = 2; // 对手工会id\r\n  int32 RSvrId    = 3; // 对手服务器id\r\n  int32 MaxNum    = 4; // 最大活跃人数\r\n}\r\n\r\n\r\n// 主服务器请求拉取各工会参赛数据\r\nmessage GS_GuildWarPrepareAttendGuild { // msgid: 110401\r\n}\r\n\r\n// 参赛工会信息返回主服务器\r\nmessage GS_GuildWarPrepareAttendGuilds_R { // msgid: 110402\r\n  repeated AttendGuilds Data  = 1;\r\n}\r\n\r\n// 拉取参赛信息完成-通知各参赛工会准备自己工会数据\r\nmessage GS_GuildWarPrepareAttendData { // msgid: 110403\r\n  repeated PrepareAttendData Data = 1; \r\n}\r\n\r\n// 同步对手信息\r\nmessage GS_GuildWarRivalGroup { // msgid: 110404\r\n  GroupInfo Rival             = 1; // 对手信息 \r\n  string RGid                 = 2; // 对手工会id\r\n  repeated PlrAtkRank PRanks  = 3; // 玩家排行\r\n}\r\n\r\n// 拉取参赛信息\r\nmessage GS_GuildWarAttendData { // msgid: 110405\r\n  string PlrId  = 1; // 玩家id\r\n  int32 SvrId   = 2; // 服务器id\r\n}\r\n\r\n// 拉取工会战绩排行信息\r\nmessage GS_GuildWarPlrRankData { // msgid: 110406\r\n  string PlrId  = 1; // 玩家id\r\n  int32 SvrId   = 2; // 服务器id\r\n  string Gid    = 3; // 工会id\r\n}\r\n\r\n\r\n// 新增战斗日志\r\nmessage GS_GuildWarAddFightLog { // msgid: 110407\r\n  string Gid    = 1; // 工会id\r\n  FightLog FLog = 2; // 日志\r\n  bool RDefWin  = 3; // 对手防守成功\r\n  string RPlrId = 4; // 对手玩家id\r\n  int32 Star    = 5; // 扣除星级\r\n  DefLog DefLog = 6; // 防守日志\r\n}\r\n\r\n\r\n// 修改对手数据\r\nmessage GS_GuildWarModifyRivalData { // msgid: 110408\r\n  string Gid    = 1; // 工会id\r\n  int32 Stars   = 2; // 总星级数\r\n  int32 AtkVal  = 3; // 总战绩值\r\n}\r\n\r\n// 修改参赛工会信息\r\nmessage GS_GuildWarModifyAttendGuilds { // msgid: 110409         \r\n  AGuildInfo Data  = 1;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n// ============================================================================\r\n// msgid range for C <-> GS: [14300, 14350)\r\n// ============================================================================\r\n\r\n\r\n// ============================================================================\r\n\r\n// 阵容推荐\r\nmessage LineUp {\r\n    bool Vote = 1; // 当日是否投票\r\n    map<int32, int32> Get = 2; // 已取得的奖励，<阵容Id, 已领取的最高奖励Id>\r\n}\r\n\r\n// ============================================================================\r\n\r\n// 全服投票信息\r\nmessage C_GetLineUpVoteInfo { // msgid: 14300\r\n}\r\n\r\nmessage GS_GetLineUpVoteInfo_R { // msgid: 14301\r\n    int32 ErrorCode = 1;\r\n    map<int32, int32> Vote = 2;\r\n}\r\n\r\n// 投票\r\nmessage C_VoteLineUp { // msgid: 14302\r\n    int32 Id = 1; // 阵容Id\r\n}\r\n\r\nmessage GS_VoteLineUp_R { // msgid: 14303\r\n    int32 ErrorCode = 1;\r\n    map<int32, int32> Vote = 2;\r\n}\r\n\r\n// 领奖\r\nmessage C_LineUpReward { // msgid: 14304\r\n    int32 Id = 1; // 阵容Id\r\n}\r\n\r\nmessage GS_LineUpReward_R { // msgid: 14305\r\n    int32 ErrorCode = 1;\r\n    Rewards Rewards = 2;\r\n    int32 Id = 3;\r\n    int32 RewardId = 4;\r\n}\r\n\r\n// 阵营一键领奖\r\nmessage C_LineUpCampReward { // msgid: 14306\r\n    int32 Camp = 1; // 阵营\r\n}\r\n\r\nmessage GS_LineUpCampReward_R { // msgid: 14307\r\n    int32 ErrorCode = 1;\r\n    Rewards Rewards = 2;\r\n    map<int32, int32> Get = 3;\r\n}\r\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [7100, 7200)\n// ============================================================================\n\n// 获取数据\nmessage C_CloudGet { // msgid: 7100\n    string Key = 1;\n}\n\nmessage GS_CloudGet_R { // msgid: 7101\n    int32 ErrorCode = 1;\n    string Key      = 2;\n    string Val      = 3;\n}\n\n// 设置数据\nmessage C_CloudSet { // msgid: 7102\n    string Key = 1;\n    string Val = 2;\n}\n\nmessage GS_CloudSet_R { // msgid: 7103\n    int32 ErrorCode = 1;\n    string Key = 2;\n}\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [5600, 5700)\n// ============================================================================\n\n\n// ============================================================================\n\n// 魔能强化\nmessage MagicData {\n    map<int32,int32> Slots = 1; // <slot,up>\n    map<int32, bool> Ids = 2; // 已经获得的图鉴<id, 领取奖励>\n}\n\n// 魔能更新\nmessage GS_MagicUpdate { // msgid: 5600\n    int64 Seq           = 1; // 魔能Seq\n    bool IsEquipped     = 2; // 是否穿戴\n}\n\n// 图鉴更新\nmessage GS_MagicNew { // msgid: 5601\n    int32 Id  = 1;\n}\n\n// ============================================================================\n\n\n\n// 穿魔能\nmessage C_MagicWear { // msgid: 5610\n    int64 Seq     = 1; // 魔能Seq\n}\n\nmessage GS_MagicWear_R { // msgid: 5611\n    int32 ErrorCode = 1;\n}\n\n// 魔能分解\nmessage C_MagicSell { // msgid: 5614\n    repeated int64 Seqs = 1;\n}\n\nmessage GS_MagicSell_R { // msgid: 5615\n    int32 ErrorCode = 1;\n    Rewards Rewards = 2;\n}\n\n// 魔能强化\nmessage C_MagicUp { // msgid: 5616\n    int32 Slot = 1;\n}\n\nmessage GS_MagicUp_R { // msgid: 5617\n    int32 ErrorCode = 1;\n    int32 Slot  = 2;\n    int32 Lv = 3;\n}\n\n// 魔能快速强化\nmessage C_MagicUpOneKey { // msgid: 5618\n}\n\nmessage GS_MagicUpOneKey_R { // msgid: 5619\n    int32 ErrorCode = 1;\n    map<int32,int32> Slots = 2; // <slot,lv>\n}\n\n// 魔能洗练\nmessage C_MagicRefine { // msgid: 5620\n    int64 Seq = 1;\n    int32 Idx = 2; // 副属性的数组Idx\n}\n\nmessage GS_MagicRefine_R { // msgid: 5621\n    int32 ErrorCode = 1;\n    int64 Seq = 2;\n    int32 Idx = 3; // 副属性的数组Idx\n    MagicSubProp Prop = 4;\n}\n\n// 魔能洗练结果处理\nmessage C_MagicRefineDone { // msgid: 5622\n    int64 Seq = 1;\n    int32 Idx = 2; // 副属性的数组Idx\n    bool Save = 3;\n}\n\nmessage GS_MagicRefineDone_R { // msgid: 5623\n    int32 ErrorCode = 1;\n    int64 Seq = 2;\n    int32 Idx = 3; // 副属性的数组Idx\n    MagicSubProp Prop = 4;\n}\n\n// 领取图鉴奖励\nmessage C_MagicTaken { // msgid: 5624\n}\n\nmessage GS_MagicTaken_R { // msgid: 5625\n    int32 ErrorCode = 1;\n    repeated int32 Ids = 2;\n    Rewards Rewards = 3;\n}\n\n// 锁定或解锁\nmessage C_MagicLock { // msgid: 5626\n    int64 Seq = 1;\n}\n\nmessage GS_MagicLock_R { // msgid: 5627\n    int32 ErrorCode = 1;\n    int64 Seq = 2;\n    bool Lock = 3;\n}\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [8900, 8950)\n// ============================================================================\n\n\n// ============================================================================\n\n// 模块目标任务\nmessage TargetTaskData {\n    repeated int32 Taken \t    = 1; // 已领取的任务id\n    repeated int32 TAchvLvTaken  = 4; // 成就等级奖励领取\n    int64 TAchvScore            = 5; // 成就积分\n}\n\n// ============================================================================\n\n// 领取模块目标任务\nmessage C_TargetTaskTake { // msgid: 8900\n    repeated int32 Id \t= 1;\n    bool OneKey = 2;\n    int32 Tp = 3; // 成就类型，一键领取必要参数\n}\n\nmessage GS_TargetTaskTake_R { // msgid: 8901\n    int32 ErrorCode \t\t= 1;\n    repeated int32 Id \t= 2;\n    Rewards Rewards \t\t= 3;\n    int64 TAchvScore        = 5; // 成就积分\n}\n\n// 领取成就等级奖励\nmessage C_TargetTaskAchvLvTake { // msgid: 8903\n    int32 Id \t= 1;\n}\n\nmessage GS_TargetTaskAchvLvTake_R { // msgid: 8904\n    int32 ErrorCode \t\t    = 1;\n    int32 Id                    = 2; // 成就等级\n    Rewards Rewards \t\t    = 3;\n}\n\n\n\n\n// ============================================================================\n// msgid range for GW <-> GS: [1200, 1400)\n// ============================================================================\n\n// 注册网关\nmessage GW_RegisterGate { // msgid: 1200\n    int32 Id = 1;\n}\n\nmessage GS_RegisterGate_R { // msgid: 1201\n    bool Success = 1;\n}\n\n// 玩家上线\nmessage GW_UserOnline { // msgid: 1202\n    uint64 Sid     = 1;\n    string UserId  = 2;\n    string AuthId  = 3;\n    string Svr0    = 4;\n    string Sdk     = 5;\n    string Plat    = 6;\n    string DevId   = 7;\n    string LoginIP = 8;\n    int32 PackageId = 9;\n    string DistinctId = 10;\n    bool IsRolling = 11; // 是否滚服\n    string DevMod = 12; // 设备型号\n    //GS账号模块\n    int32 GSAmount = 13; //充值金额\n    int32 GSLoginWeekly = 14; //每周需要登录的次数\n}\n\n// 通知 game 玩家登出\nmessage GW_LogoutPlayer { // msgid: 1203\n    uint64 Sid = 1;\n}\n\n// game 踢人\nmessage GS_Kick { // msgid: 1204\n    uint64 Sid = 1;\n}\n\r\n\r\n\r\n\r\n// ============================================================================\r\n// msgid range for C <-> GS: [12000, 12050)\r\n// ============================================================================\r\n\r\n\r\n// ============================================================================\r\n// 洗练\r\n\r\nmessage Refine {\r\n    int32 Lv = 1;\r\n    int32 Exp = 2;\r\n    map<int32,RefinePlan> Plans = 3;\r\n}\r\n\r\n// 一个方案\r\nmessage RefinePlan {\r\n    int32 PlanId = 1;\r\n    string Name = 2; // 如果空客户端自行显示\r\n    repeated RefineLine Lines = 3;\r\n}\r\n\r\n// 一条\r\nmessage RefineLine {\r\n    bool Lock = 1; // 是否锁定\r\n    int32 PoolId = 2; // 品质\r\n    int32 Id = 3; // 属性Id\r\n    double Val = 4; // 属性值\r\n}\r\n\r\n// ============================================================================\r\n\r\n// 等级发生变化\r\nmessage GS_RefineUpdate { // msgid: 12000\r\n    int32 Lv = 1;\r\n    int32 Exp = 2;\r\n}\r\n\r\n// ============================================================================\r\n\r\nmessage C_RefineInfo { // msgid: 12010\r\n}\r\n\r\nmessage GS_RefineInfo_R { // msgid: 12011\r\n    int32 ErrorCode = 1;\r\n    Refine Refine = 2;\r\n}\r\n\r\n// 锁定/解锁\r\nmessage C_RefineLineLock { // msgid: 12014\r\n    int32 PlanId = 1;\r\n    int32 Idx = 2; //(0-N)\r\n}\r\n\r\nmessage GS_RefineLineLock_R { // msgid: 12015\r\n    int32 ErrorCode = 1;\r\n    int32 PlanId = 2;\r\n    int32 Idx = 3;\r\n    bool Lock = 4;\r\n}\r\n\r\n// 洗练\r\nmessage C_RefineMake { // msgid: 12016\r\n    int32 PlanId = 1;\r\n}\r\n\r\nmessage GS_RefineMake_R { // msgid: 12017\r\n    int32 ErrorCode = 1;\r\n    int32 PlanId = 2;\r\n    repeated RefineLine Lines = 3;\r\n}\r\n\r\n// 修改方案名字\r\nmessage C_RefinePlanChangeName { // msgid: 12018\r\n    int32 PlanId = 1;\r\n    string Name = 2;\r\n}\r\n\r\nmessage GS_RefinePlanChangeName_R { // msgid: 12019\r\n    int32 ErrorCode = 1;\r\n    int32 PlanId = 2;\r\n    string Name = 3;\r\n}\r\n\r\n\r\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [5700, 5800)\n// ============================================================================\n\n\n\n// ============================================================================\n\n// 坐骑招募\nmessage MountDraw {\n    map<int32,bool> Ids = 1; // 图鉴记录\n    repeated int32 Taken = 2; // 图鉴奖励\n    int32 Wish = 3; // 设置的心愿\n    int32 WishCnt = 4; // 心愿保底计数\n    int32 CoreCnt = 5; // 保底计数\n    map<int32,MountDrawStatus> Mounts = 6; // 待招募坐骑<pos:1-3,>\n}\n\n// 坐骑招募状态\nmessage MountDrawStatus {\n    int32 Id = 1;\n    bool Buy = 2;\n}\n\n// 坐骑升级\nmessage C_MountLvUp { // msgid: 5700\n    int64 Seq     = 1; // 坐骑Seq\n}\n\nmessage GS_MountLvUp_R { // msgid: 5701\n    int32 ErrorCode = 1;\n    int64 Seq       = 2;\n    int32 Lv        = 3;\n}\n\n// 坐骑升星\nmessage C_MountStarUp { // msgid: 5702\n    int64 Seq     = 1; // 坐骑Seq\n    int64 CostSeq = 2; // 消耗的坐骑Seq\n}\n\nmessage GS_MountStarUp_R { // msgid: 5703\n    int32 ErrorCode = 1;\n    int64 Seq       = 2;\n    int32 Star      = 3;\n    Rewards Rewards = 4;\n    map<int32,MountTalent> Talents = 5;\n}\n\n// 坐骑觉醒\nmessage C_MountWakeUp { // msgid: 5704\n    int64 Seq     = 1;\n}\n\nmessage GS_MountWakeUp_R { // msgid: 5705\n    int32 ErrorCode = 1;\n    int64 Seq       = 2;\n    int32 WakeLv    = 3;\n}\n\n// 坐骑放逐\nmessage C_MountSell { // msgid: 5706\n    int64 Seq       = 1;\n}\n\nmessage GS_MountSell_R { // msgid: 5707\n    int32 ErrorCode = 1;\n    Rewards Rewards = 2;\n}\n\n// 坐骑重置(必须大于1级)\nmessage C_MountReset { // msgid: 5708\n    int64 Seq       = 1;\n}\n\nmessage GS_MountReset_R { // msgid: 5709\n    int32 ErrorCode = 1;\n    int64 Seq       = 2;\n    Rewards Rewards = 3;\n}\n\n// 坐骑洗练\nmessage C_MountRefine { // msgid: 5710\n    int64 Seq            = 1;\n    repeated int32 Locks = 2; // [1-n]，至少保留一个\n}\n\nmessage GS_MountRefine_R { // msgid: 5711\n    int32 ErrorCode = 1;\n    int64 Seq = 2;\n    map<int32,MountTalent> Talents = 3; // 变化的天赋\n}\n\n// 坐骑洗练结果处理\nmessage C_MountRefineDone { // msgid: 5712\n    int64 Seq = 1;\n    bool Save = 2;\n}\n\nmessage GS_MountRefineDone_R { // msgid: 5713\n    int32 ErrorCode = 1;\n    int64 Seq = 2;\n    map<int32,MountTalent> Talents = 3;\n}\n\n// 领取图鉴奖励\nmessage C_MountMapTaken { // msgid: 5714\n    int32 Id = 1;\n}\n\nmessage GS_MountMapTaken_R { // msgid: 5715\n    int32 ErrorCode = 1;\n    int32 Id = 2;\n    Rewards Rewards = 3;\n}\n\n// 招募刷新\nmessage C_MountDrawRefresh { // msgid: 5716\n    bool IsAd = 1;\n}\n\nmessage GS_MountDrawRefresh_R { // msgid: 5717\n    int32 ErrorCode = 1;\n    int32 WishCnt = 2; // 心愿保底计数\n    int32 CoreCnt = 3; // 保底计数\n    map<int32,MountDrawStatus> Mounts = 4; // 待招募坐骑\n}\n\n// 设置心愿\nmessage C_MountDrawWish { // msgid: 5718\n    int32 Id = 1; // mountid\n}\nmessage GS_MountDrawWish_R { // msgid: 5719\n    int32 ErrorCode = 1;\n    int32 Wish = 2;\n}\n\n// 购买\nmessage C_MountDrawBuy { // msgid: 5720\n    int32 Pos = 1;\n}\n\nmessage GS_MountDrawBuy_R { // msgid: 5721\n    int32 ErrorCode = 1;\n    int32 Pos = 2;\n    int64 Seq = 3;\n}\n\n\n\r\n\r\n\r\n\r\n// ============================================================================\r\n// msgid range for C <-> GS: [5800, 5900)\r\n// ============================================================================\r\n\r\n\r\n// ============================================================================\r\n\r\n// 圣杯\r\nmessage RelicCupData {\r\n    int32 Lv = 1; // 等级\r\n    repeated Cond_Obj Objs  = 2;\r\n}\r\n\r\n// ============================================================================\r\n\r\n// 藏品变化\r\nmessage GS_RelicUpdate { // msgid: 5800\r\n    Relic Relic = 1;\r\n}\r\n\r\n// 通知: 进度变化或新任务\r\nmessage GS_RelicValueChanged { // msgid: 5805\r\n    Cond_Obj Obj = 1;\r\n}\r\n\r\n// ============================================================================\r\n\r\n// 圣杯升级\r\nmessage C_RelicCupLvUp { // msgid: 5801\r\n}\r\n\r\nmessage GS_RelicCupLvUp_R { // msgid: 5802\r\n    int32 ErrorCode = 1;\r\n    int32 Lv        = 2;\r\n}\r\n\r\n// 藏品升星\r\nmessage C_RelicStarUp { // msgid: 5803\r\n    int32 Id = 1;   // 藏品Id\r\n}\r\n\r\nmessage GS_RelicStarUp_R { // msgid: 5804\r\n    int32 ErrorCode = 1;\r\n    int32 Id = 2;\r\n    int32 Star = 3;\r\n}\r\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [9000, 9100)\n// ============================================================================\n\n\n// ============================================================================\n\n// 公会战\n\n// 工会信息\nmessage AGuildInfo {\n\tint32 SvrId      = 1; // 服务器id\n\tstring GuildId   = 2; // 工会id\n\tstring GuildName = 3; // 工会名字\n\tint32  GuildIcon = 4; // 工会图标\n\tint32 GuildLv    = 5; // 公会等级\n}\n\n// 参赛工会\nmessage AttendGuilds {\n    int32 Rank            = 1; // 本服排名\n\tint32 ActiveCnt       = 2; // 活跃人数\n\tint64 AtkPwr          = 3; // 工会战力\n\tAGuildInfo GInfo      = 4; // 工会信息\n\tint32 LastWin \t      = 5; // 上次胜负情况 2:胜 1:平 0:负\n}\n\n// 个人战绩排行\nmessage PlrAtkRank {\n    int32 Rank      \t= 1; // 排名\n\tint32 AtkVal    \t= 2; // 战绩值\n\tBattlePlayer Pinfo \t= 3; // 人员信息\n}\n\n// 玩家信息\nmessage PlayInfo {\n\tbool Robot                 = 1; // 是否是机器人\n\tBattleInput InputInfo      = 2; // 战斗人员信息\n\tint32 Ranks \t\t\t   = 3; // 排名\n\tint32 GuildRank            = 4; // 公会职位\n}\n\n// 单人参赛信息\nmessage AttendPlayer {\n\tint32 Star    \t\t\t= 1; // 已挑战星数\n\tint32 AtkVal            = 2; // 战绩值\n\tPlayInfo PInfo          = 3; // 玩家信息\n\tint32 DefWinCnt \t\t= 4; // 防守成功次数\n}\n\n// 挑战人员信息\nmessage FightPlayer {\n\tstring PlrName   = 1; // 玩家名\n\tstring GuildName = 2; // 公会名\n\tstring PlrId     = 3; // 玩家id\n\tint32 SvrId \t = 4; // 服务器id\n}\n\n// 战斗日志\nmessage FightLog  {\n\tbool Win                   = 1; // 是否胜利\n\tint32 GotStars             = 2; // 挑战获得星星数\n\tint32 GotAtkVal            = 3; // 挑战获得战绩值\n\tint32 DefCurStart          = 4; // 防守方当前星数\n\tFightPlayer Atk            = 5; // 挑战方\n\tFightPlayer Def            = 6; // 防守方\n    int64 ReplayId             = 7; // 回放id\n    int64 Ts                   = 8; // 时间戳\n}\n\n// 单个参赛组信息\nmessage GroupInfo {\n\tbool Send                       = 1; // 是否发送奖励\n\tint32 Stars                     = 2; // 工会获得总星数\n\tint32 BuffLv                    = 3; // buff等级\n\trepeated AttendPlayer Players   = 4; // 参赛人员\n\tAGuildInfo GuildInfo \t\t\t= 5; // 工会信息\n}\n\n// 匹配组信息\nmessage MatchGroup {\n\tGroupInfo Self  = 1; // 自己\n\tGroupInfo Rival = 2; // 对手\n}\n\n\nmessage GuildWar {\n    MatchGroup Groups      = 1; // 匹配组信息\n    int32 BoxId            = 2; // 已领取宝箱id 0：未领取 非零：已领取 \n\trepeated int32 Taken   = 3; // 已领取成就奖励 表id\n\tint32 ShopExp \t\t   = 4; // 商店格子开启经验值\n}\n\n// 宝箱奖励\nmessage GuildWarBox {\n    int32 Idx           = 1; // 宝箱位置\n    repeated Id_N64 Rwd = 2; // 奖励\n    BattlePlayer Plr    = 3; // 玩家信息\n}\n\nmessage GuildWarBoxList {\n    int32 Id                  = 1; // 宝箱id\n    int32 Num                 = 2; // 数量\n    repeated GuildWarBox Boxs = 3; // 已领取的奖励\n    bool Available            = 4; // 是否可领奖\n}\n\n// 防守日志\nmessage DefLog {\n\tint64 ReplayId      \t\t\t= 1; // 回放id\n\tint64 Ts\t\t    \t\t\t= 2; // 时间戳\n\tBattlePlayer Pinfo \t\t\t\t= 3; // 人员信息\n\trepeated BattleFighter AtkFgts  = 4; // 进攻阵容\n}\n\n// ============================================================================\n\nmessage C_GuildWarInfo { // msgid: 9000\n}\n\nmessage GS_GuildWarInfo_R { // msgid: 9001\n    int32 ErrorCode = 1;\n    GuildWar Data   = 2;\n}\n\n// 挑战\nmessage C_GuildWarFight { // msgid: 9002\n    int32 Star      = 1; // 星级\n    string RPlrId   = 2; // 对手玩家id\n}\n\nmessage GS_GuildWarFight_R { // msgid: 9003\n    int32 ErrorCode = 1;\n    bytes Replay    = 2;\n    Rewards Rewards = 3;\n    MatchGroup MGrp = 4;\n\tint32 AtkVal    = 5; // 本场获得战绩值\n\tint32 GotStar \t= 6; // 获得星级\n}\n\n// 领取宝箱奖励\nmessage C_GuildWarTakeBox { // msgid: 9004\n\tint32 Idx = 1; // 宝箱位置\n}\n\nmessage GS_GuildWarTakeBox_R { // msgid: 9005\n    int32 ErrorCode = 1;\n    Rewards Rewards = 2;\n    int32 BoxId     = 3; // 宝箱id 0:未领取 非0:已领取\n\tint32 Idx \t\t= 4; // 宝箱位置\n}\n\n// ============================================================================\n\n// 拉取参赛信息\nmessage C_GuildWarAttendGuilds { // msgid: 9006\n}\n\nmessage GS_GuildWarAttendGuilds_R { // msgid: 9007\n    int32 ErrorCode             = 1;\n    repeated AttendGuilds Data  = 2;\n}\n\n// 拉取战绩排行\nmessage C_GuildWarPlrAtkRank { // msgid: 9008\n\tbool Self  = 1; // 是否是自己工会\n}\n\nmessage GS_GuildWarPlrAtkRank_R { // msgid: 9009\n    int32 ErrorCode             = 1;\n    repeated PlrAtkRank Data    = 2;\n}\n\n// 拉取战斗日志\nmessage C_GuildWarFightLogs { // msgid: 9010\n    \n}\n\nmessage GS_GuildWarFightLogs_R { // msgid: 9011\n    int32 ErrorCode             = 1;\n    repeated FightLog FLog      = 2; // 战斗日志\n}\n\n// 宝箱列表\nmessage C_GuildWarBoxList { // msgid: 9012\n}\n\nmessage GS_GuildWarBoxList_R { // msgid: 9013\n    int32 ErrorCode      = 1;\n    GuildWarBoxList List = 2;\n}\n\n// 领取成就奖励\nmessage C_GuildWarTakeAchvRewards { // msgid: 9014\n\tint32 Id = 1; // 表id\n}\n\nmessage GS_GuildWarTakeAchvRewards_R { // msgid: 9015\n    int32 ErrorCode = 1;\n    Rewards Rewards = 2;\n    int32 Id     \t= 3; // 表id\n}\n\n// 拉取防守战斗日志\nmessage C_GuildWarGetDefLogs { // msgid: 9016\n\tstring PlrId \t= 1; // 玩家名字\n\tstring GId \t\t= 2; // 工会id\n}\n\nmessage GS_GuildWarGetDefLogs_R { // msgid: 9017\n    int32 ErrorCode \t     = 1;\n    repeated DefLog DLog     = 2; // 防守日志\n}\n\n// 同步组信息\nmessage GS_GuildWarSyncMatchGroup { // msgid: 9018\n    MatchGroup MGroup \t= 1;\n}\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [12550, 12600)\n// ============================================================================\n\n\n// ============================================================================\n\n// 新服比拼\n\n// ============================================================================\n\nmessage C_GetNewSvrRank { // msgid: 12556\n    int32 Rk    = 1;\n    int32 Begin = 2;\n    int32 N     = 3;\n}\n\nmessage GS_GetNewSvrRank_R { // msgid: 12557\n    int32 ErrorCode       = 1;\n    RankBaseData RankData = 2;\n}\n\n// ============================================================================\n\r\n\r\n\r\n\r\n// ============================================================================\r\n// msgid range for GS <-> GS: [110000, 110100)\r\n// ============================================================================\r\n\r\n\r\n// ============================================================================\r\n\r\nmessage GS_GetPlayerInfoGame { // msgid: 110000\r\n    string PlrId = 1;\r\n    string Mod = 2;\r\n    string From = 3;\r\n    int32 SvrId = 4;\r\n}\r\n\r\nmessage GS_PlayerOfflineGame { // msgid: 110001\r\n    string PlrId = 1;\r\n}\r\n\r\nmessage GS_ReplayGetGame { // msgid: 110002\r\n    string PlrId = 1;\r\n    int32 SvrId = 2;\r\n    int64 ReplayId = 3;\r\n}\r\n\r\nmessage GS_GetHeroInfoGame { // msgid: 110003\r\n    string PlrId = 1;\r\n    int32 Id = 2;\r\n    string From = 3;\r\n    int32 SvrId = 4;\r\n}\r\n\r\n// 跨服聊天推送\r\nmessage GS_ChatMsgGame { // msgid: 110005\r\n    ChatData Data = 1;\r\n}\r\n\r\n// 跨服切磋\r\nmessage GS_PlayerFightGame { // msgid: 110007\r\n    string PlrId = 1;\r\n    int32 SvrId = 2;\r\n    string Target = 3;\r\n    BattleInput Input = 4;\r\n}\r\n\r\n\r\n\r\n\r\n// ============================================================================\r\n// msgid range for C <-> GS: [9700, 12000)\r\n// ============================================================================\r\n\r\n\r\n// ============================================================================\r\n// 纳鲁祝福\r\n\r\nmessage ActBlessingData {\r\n    int32 Id = 1; // 0表示还未购买\r\n    int32 Num = 2; // 消耗的面包，购买后才计数\r\n    int32 Gold = 3; // 今日已经额外获得金币\r\n    int32 Exp = 4; // 今日已经额外获得经验\r\n}\r\n\r\nmessage C_ActBlessingInfo { // msgid: 9700\r\n}\r\n\r\nmessage GS_ActBlessingInfo_R { // msgid: 9701\r\n    int32 ErrorCode        = 1;\r\n    ActBlessingData Data   = 2;\r\n}\r\n\r\n// 升到下一级\r\nmessage C_ActBlessingLvUp { // msgid: 9702\r\n}\r\n\r\n// 购买或者升级推送\r\nmessage GS_ActBlessingLvUp_R { // msgid: 9703\r\n    int32 ErrorCode        = 1;\r\n    int32 Id               = 2;\r\n}\r\n\r\n// ============================================================================\r\n// 冲刺任务\r\n\r\nmessage ActSprintData {\r\n    repeated Cond_Obj Items  = 1;\r\n    map<int32,int32> GiftBuy = 2;\r\n}\r\n\r\nmessage C_ActSprintInfo { // msgid: 9710 \r\n}\r\n\r\nmessage GS_ActSprintInfo_R { // msgid: 9711\r\n    int32 ErrorCode      = 1;\r\n    ActSprintData Data   = 2;\r\n}\r\n\r\n\r\n// 领任务目标奖励\r\nmessage C_ActSprintTake { // msgid: 9712\r\n    int32 Id = 1;\r\n}\r\n\r\nmessage GS_ActSprintTake_R { // msgid: 9713\r\n    int32 ErrorCode = 1;\r\n    int32 Id        = 2;\r\n    Rewards Rewards = 3;\r\n}\r\n\r\n// 通知: 进度变化\r\nmessage GS_ActSprintValueChanged { // msgid: 9714\r\n    Cond_Obj Obj = 1;\r\n}\r\n\r\n\r\n// 购买礼包(免费的)\r\nmessage C_ActSprintGiftBuy { // msgid: 9715\r\n    int32 Id = 1;\r\n}\r\n\r\n// 付费购买也会通知\r\nmessage GS_ActSprintGiftBuy_R { // msgid: 9716\r\n    int32 ErrorCode = 1;\r\n    int32 Id        = 2;\r\n    Rewards Rewards = 3;\r\n}\r\n\r\n\r\n\r\n// ============================================================================\r\n// 藏品奇遇\r\n\r\nmessage ActCollectionData {\r\n    repeated Cond_Obj Items  = 1;\r\n    map<int32,int32> GiftBuy = 2;\r\n}\r\n\r\nmessage C_ActCollectionInfo { // msgid: 9720 \r\n}\r\n\r\nmessage GS_ActCollectionInfo_R { // msgid: 9721\r\n    int32 ErrorCode      = 1;\r\n    ActCollectionData Data   = 2;\r\n}\r\n\r\n// 领任务目标奖励\r\nmessage C_ActCollectionTake { // msgid: 9722\r\n    int32 Id = 1;\r\n}\r\n\r\nmessage GS_ActCollectionTake_R { // msgid: 9723\r\n    int32 ErrorCode = 1;\r\n    int32 Id        = 2;\r\n    Rewards Rewards = 3;\r\n}\r\n\r\n// 通知: 进度变化\r\nmessage GS_ActCollectionValueChanged { // msgid: 9724\r\n    Cond_Obj Obj = 1;\r\n}\r\n\r\n// 购买礼包(免费的)\r\nmessage C_ActCollectionGiftBuy { // msgid: 9725\r\n    int32 Id = 1;\r\n}\r\n\r\n// 付费购买也会通知\r\nmessage GS_ActCollectionGiftBuy_R { // msgid: 9726\r\n    int32 ErrorCode = 1;\r\n    int32 Id        = 2;\r\n    Rewards Rewards = 3;\r\n}\r\n\r\nmessage GS_ActCollectionTaskCondUpdate { // msgid: 9727\r\n    repeated Cond_Obj Items = 2;\r\n}\r\n\r\n\r\n// ============================================================================\r\n// 七日目标\r\n\r\nmessage ActSevenDayData {\r\n    repeated Cond_Obj Items  = 1;\r\n    int32 Score              = 2;\r\n    repeated int32 GiftTaken = 3;\r\n    map<int32,int32> ShopBuy = 4;\r\n}\r\n\r\nmessage C_ActSevenDayInfo { // msgid: 9730\r\n}\r\n\r\nmessage GS_ActSevenDayInfo_R { // msgid: 9731\r\n    int32 ErrorCode      = 1;\r\n    ActSevenDayData Data = 2;\r\n}\r\n\r\n// 领任务目标奖励\r\nmessage C_ActSevenDayTake { // msgid: 9732\r\n    int32 Id = 1;\r\n}\r\n\r\nmessage GS_ActSevenDayTake_R { // msgid: 9733\r\n    int32 ErrorCode = 1;\r\n    int32 Id        = 2;\r\n    Rewards Rewards = 3;\r\n}\r\n\r\n// 领宝箱奖励\r\nmessage C_ActSevenDayGiftTake { // msgid: 9734\r\n    int32 Id = 1;\r\n}\r\n\r\nmessage GS_ActSevenDayGiftTake_R { // msgid: 9735\r\n    int32 ErrorCode = 1;\r\n    int32 Id        = 2;\r\n    Rewards Rewards = 3;\r\n}\r\n\r\n// 通知: 进度变化\r\nmessage GS_ActSevenDayValueChanged { // msgid: 9739\r\n    Cond_Obj Obj = 1;\r\n}\r\n\r\n// 领一天的目标奖励\r\nmessage C_ActSevenDayTakeDay { // msgid: 9736\r\n    int32 Day = 1;\r\n}\r\n\r\nmessage GS_ActSevenDayTakeDay_R { // msgid: 9737\r\n    int32 ErrorCode = 1;\r\n    repeated int32 Ids = 2;\r\n    Rewards Rewards = 3;\r\n}\r\n\r\n// 购买礼包(免费的)\r\nmessage C_ActSevenDayShopBuy { // msgid: 9738\r\n    int32 Id = 1;\r\n}\r\n\r\n// 付费购买也会通知\r\nmessage GS_ActSevenDayShopBuy_R { // msgid: 9729\r\n    int32 ErrorCode = 1;\r\n    int32 Id        = 2;\r\n    Rewards Rewards = 3;\r\n}\r\n\r\n// ============================================================================\r\n// 7日签到\r\n\r\nmessage Act7DaysData {\r\n    int32 Day               = 1; // 这期第几天，对用表的day字段\r\n    map<int32,bool> Taken   = 2; // 签到情况，key表示第几天有登录，bool表示是否领取奖励，如果有缺失的key可以进行补签\r\n}\r\n\r\nmessage C_Act7DaysInfo { // msgid: 9740\r\n}\r\n\r\nmessage GS_Act7DaysInfo_R { // msgid: 9741\r\n    int32 ErrorCode       = 1;\r\n    Act7DaysData Data     = 2;\r\n}\r\n\r\n// 领取/补签\r\nmessage C_Act7DaysTake { // msgid: 9742\r\n    int32 Day = 1;\r\n}\r\n\r\nmessage GS_Act7DaysTake_R { // msgid: 9743\r\n    int32 ErrorCode       = 1;\r\n    int32 Day             = 2;\r\n    Rewards Rewards       = 3;\r\n}\r\n\r\n// ============================================================================\r\n// 幸运夺宝\r\n\r\nmessage ActTreasureData {\r\n    map<int32,int32> Blanks = 1; // 有次数限制的已抽到次数\r\n    int32 Score = 2; // 积分\r\n    int32 Total = 3; // 本轮抽取次数\r\n    repeated Cond_Obj Items  = 4; // 任务\r\n    repeated int32 ScoreTaken = 5; // 积分进度奖励\r\n    map<int32,int32> GiftTaken = 6; // 礼包购买次数\r\n}\r\n\r\nmessage C_ActTreasureInfo { // msgid: 9750\r\n}\r\n\r\nmessage GS_ActTreasureInfo_R { // msgid: 9751\r\n    int32 ErrorCode  = 1;\r\n    ActTreasureData Data = 2;\r\n}\r\n\r\nmessage C_ActTreasureDraw { // msgid: 9752\r\n    int32 N = 1; // 几抽(1或10)\r\n}\r\n\r\nmessage GS_ActTreasureDraw_R { // msgid: 9753\r\n    int32 ErrorCode = 1;\r\n    int32 Score = 2; // 积分\r\n    int32 Total = 3; // 本轮抽取次数\r\n    Rewards Rewards = 4;\r\n    repeated int32 Blanks = 5; // 本次抽到的格子（如果其中有大奖，需要重置Blanks然后继续转）\r\n}\r\n\r\n// 领任务目标奖励\r\nmessage C_ActTreasureTaskTake { // msgid: 9754\r\n    int32 Id = 1;\r\n}\r\n\r\nmessage GS_ActTreasureTaskTake_R { // msgid: 9755\r\n    int32 ErrorCode = 1;\r\n    int32 Id        = 2;\r\n    Rewards Rewards = 3;\r\n}\r\n\r\n// 通知: 进度变化\r\nmessage GS_ActTreasureTaskValueChanged { // msgid: 9756\r\n    Cond_Obj Obj = 1;\r\n}\r\n\r\n// 购买礼包\r\nmessage C_ActTreasureBuy { // msgid: 9757\r\n    int32 Id = 1;\r\n}\r\n\r\n// 通知：购买礼包\r\nmessage GS_ActTreasureBuyDone { // msgid: 9758\r\n    int32 Id = 1;\r\n    Rewards Rewards = 2;\r\n}\r\n\r\n// 通知：跨天重置礼包购买次数 \r\nmessage GS_ActTreasureGiftChanged { // msgid: 9759\r\n    map<int32,int32> GiftTaken = 1; // 礼包购买次数\r\n}\r\n\r\n// 获取抽奖记录\r\nmessage C_ActTreasureGetLog { // msgid: 9760\r\n}\r\n\r\nmessage GS_ActTreasureGetLog_R { // msgid: 9761\r\n    int32 ErrorCode = 1;\r\n    map<int32,int32> Logs = 2; // 抽奖记录<blank,次数>\r\n}\r\n\r\n// 领取积分奖励\r\nmessage C_ActTreasureScoreTake { // msgid: 9762\r\n    int32 Id = 1;\r\n}\r\n\r\nmessage GS_ActTreasureScoreTake_R { // msgid: 9763\r\n    int32 ErrorCode = 1;\r\n    int32 Id        = 2;\r\n    Rewards Rewards = 3;\r\n}\r\n\r\n// ============================================================================\r\n// 首充奖励\r\n\r\nmessage ActFirstRecharge {\r\n    int32 SumBill = 1; // 充值钻石数\r\n    repeated int32 Bought = 2; // 已购买typeId\r\n    repeated int32 Taken = 3; // 已领奖励id\r\n    int32 Day = 4; // 购买或满足最低充值金额后经过的天数\r\n}\r\n\r\nmessage C_ActFirstRechargeInfo { // msgid: 9770\r\n}\r\n\r\nmessage GS_ActFirstRechargeInfo_R { // msgid: 9771\r\n    int32 ErrorCode       = 1;\r\n    ActFirstRecharge Data = 2;\r\n}\r\n\r\n// 领奖励\r\nmessage C_ActFirstRechargeTake { // msgid: 9772\r\n    repeated int32 Id = 1;\r\n}\r\n\r\nmessage GS_ActFirstRechargeTake_R { // msgid: 9773\r\n    int32 ErrorCode = 1;\r\n    repeated int32 Id = 2;\r\n    Rewards Rewards = 3;\r\n}\r\n\r\n// ============================================================================\r\n// 超值基金\r\n\r\nmessage ActFund {\r\n    repeated int32 Funds    = 1; // 已购买基金\r\n    map<int32, int32> Taken = 2; // id:领取状态(1普通2高级)\r\n}\r\n\r\nmessage C_ActFundInfo { // msgid: 9780\r\n}\r\n\r\nmessage GS_ActFundInfo_R { // msgid: 9781\r\n    int32 ErrorCode = 1;\r\n    ActFund Data    = 2;\r\n}\r\n\r\n// 领奖励\r\nmessage C_ActFundTake { // msgid: 9782\r\n    int32 Tp = 1;\r\n}\r\n\r\nmessage GS_ActFundTake_R { // msgid: 9783\r\n    int32 ErrorCode = 1;\r\n    Rewards Rewards = 2;\r\n}\r\n\r\n// 推送\r\nmessage GS_ActFundUpdate { // msgid: 9784\r\n    ActFund Data = 1;\r\n}\r\n\r\n// 购买奖励\r\nmessage GS_ActFundBuyReward { // msgid: 9785\r\n    Rewards Rewards = 1;\r\n}\r\n\r\n// ============================================================================\r\n// 幸运礼包\r\n\r\nmessage ActLuckyGift {\r\n    map<int32, int32> Gifts = 1;\r\n    map<int32, int32> Shop = 2;  // key为表id，value为购买次数\r\n}\r\n\r\nmessage GS_ActLuckyGiftBillDone { // msgid: 9790\r\n    Rewards Rewards = 1;\r\n}\r\n\r\nmessage C_ActLuckyGiftInfo { // msgid: 9791\r\n}\r\n\r\nmessage GS_ActLuckyGiftInfo_R { // msgid: 9792\r\n    int32 ErrorCode = 1;\r\n    ActLuckyGift Data = 2;\r\n}\r\n\r\nmessage C_ActLuckyGiftShopBuy { // msgid: 9793\r\n    int32 Id = 1;\r\n    int32 Num = 2;\r\n}\r\n\r\nmessage GS_ActLuckyGiftShopBuy_R { // msgid: 9794\r\n    int32 ErrorCode = 1;\r\n    Rewards Rewards = 2;\r\n}\r\n\r\nmessage C_ActLuckyGiftFree { // msgid: 9795\r\n    int32 Id = 1;\r\n}\r\n\r\nmessage GS_ActLuckyGiftFree_R { // msgid: 9796\r\n    int32 ErrorCode = 1;\r\n    Rewards Rewards = 2;\r\n}\r\n\r\n// ============================================================================\r\n// 每日广告福利\r\n\r\n// 跨天客户端自己重置\r\nmessage ActAd {\r\n    int64 Ts = 1; // 上次观看领取时间\r\n    int32 Cnt = 2; // 今日已领取次数\r\n}\r\n\r\nmessage C_ActAdInfo { // msgid: 9800\r\n}\r\n\r\nmessage GS_ActAdInfo_R { // msgid: 9801\r\n    int32 ErrorCode = 1;\r\n    ActAd Data = 2;\r\n}\r\n\r\nmessage C_ActAdTake { // msgid: 9802\r\n}\r\n\r\nmessage GS_ActAdTake_R { // msgid: 9803\r\n    int32 ErrorCode = 1;\r\n    Rewards Rewards = 2;\r\n}\r\n\r\n// ============================================================================\r\n// 新服限购\r\n\r\nmessage ActLimitBuy {\r\n    map<int32, int32> Buy = 1; // 已购买 表id:cnt\r\n}\r\n\r\nmessage C_ActLimitBuyInfo { // msgid: 9930\r\n}\r\n\r\nmessage GS_ActLimitBuyInfo_R { // msgid: 9931\r\n    int32 ErrorCode        = 1;\r\n    ActLimitBuy Data       = 2;\r\n}\r\n\r\n// 领奖励\r\nmessage GS_ActLimitBuyRewards { // msgid: 9932\r\n    int32 Id        = 1;\r\n    int32 Cnt       = 2;\r\n    Rewards Rewards = 3;\r\n}\r\n\r\nmessage C_ActLimitBuyFreeRewards { // msgid: 9933\r\n    int32 Id = 1;\r\n}\r\n\r\nmessage GS_ActLimitBuyFreeRewards_R { // msgid: 9934\r\n    int32 ErrorCode = 1;\r\n    Rewards Rewards = 2;\r\n    int32 Id = 3;\r\n    int32 Cnt = 4;\r\n}\r\n\r\nmessage C_ActLimitBuyDiamBuy { // msgid: 9935\r\n    int32 Id = 1;\r\n}\r\n\r\nmessage GS_ActLimitBuyDiamBuy_R { // msgid: 9936\r\n    int32 ErrorCode = 1;\r\n    Rewards Rewards = 2;\r\n    int32 Id = 3;\r\n    int32 Cnt = 4;\r\n}\r\n\r\n// ============================================================================\r\n// 合服累计充值\r\n\r\nmessage ActMergeSumRecharge {\r\n    int64 Sum            = 1; // 元宝数\r\n    repeated int32 Taken = 2; // 已领取 表id\r\n}\r\n\r\nmessage C_ActMergeSumRechargeInfo { // msgid: 10120\r\n}\r\n\r\nmessage GS_ActMergeSumRechargeInfo_R { // msgid: 10121\r\n    int32 ErrorCode     = 1;\r\n    ActMergeSumRecharge Data = 2;\r\n}\r\n\r\n// 领奖励\r\nmessage C_ActMergeSumRechargeTake { // msgid: 10122\r\n    int32 Id = 1; // 表Id\r\n}\r\n\r\nmessage GS_ActMergeSumRechargeTake_R { // msgid: 10123\r\n    int32 ErrorCode = 1;\r\n    int32 Id        = 2;\r\n    Rewards Rewards = 3;\r\n}\r\n\r\n// 值改变推送\r\nmessage GS_ActMergeSumRechargeValueChanged { // msgid: 10124\r\n    int64 Sum = 1; // 元宝数\r\n}\r\n\r\n// ============================================================================\r\n// 合服登录奖励\r\n\r\nmessage ActMergeFirstWeek {\r\n    int32 Login = 1; // 登录天数\r\n    int32 Get = 2; // 已领奖天数\r\n}\r\n\r\nmessage GS_ActMergeFirstWeekLoginUpdate { // msgid: 10150\r\n    int32 Login = 1;\r\n}\r\n\r\nmessage C_ActMergeFirstWeekInfo { // msgid: 10151\r\n}\r\n\r\nmessage GS_ActMergeFirstWeekInfo_R { // msgid: 10152\r\n    int32 ErrorCode = 1;\r\n    ActMergeFirstWeek Data = 2;\r\n}\r\n\r\nmessage C_ActMergeFirstWeekTakeReward { // msgid: 10153\r\n}\r\n\r\nmessage GS_ActMergeFirstWeekTakeReward_R { // msgid: 10154\r\n    int32 ErrorCode = 1;\r\n    Rewards Rewards = 2;\r\n    int32 Get = 3;\r\n}\r\n\r\n// ============================================================================\r\n// 节日任务\r\n\r\nmessage ActFestivalTask {\r\n    repeated Cond_Obj Items  = 1; // 任务数据\r\n    int32 HeroId = 2;\r\n    int32 Score = 3;\r\n    repeated int32 Taken = 4; // 已领取的积分奖励，表Id\r\n}\r\n\r\nmessage GS_ActFestivalTaskCondUpdate { // msgid: 10210\r\n    repeated Cond_Obj Items = 2;\r\n}\r\n\r\nmessage C_ActFestivalTaskInfo { // msgid: 10211\r\n}\r\n\r\nmessage GS_ActFestivalTaskInfo_R { // msgid: 10212\r\n    int32 ErrorCode = 1;\r\n    ActFestivalTask Data  = 2;\r\n}\r\n\r\nmessage C_ActFestivalTaskSetHero { // msgid: 10213\r\n    int32 HeroId = 1;\r\n}\r\n\r\nmessage GS_ActFestivalTaskSetHero_R { // msgid: 10214\r\n    int32 ErrorCode = 1;\r\n    int32 HeroId = 2;\r\n}\r\n\r\n// 领任务目标奖励\r\nmessage C_ActFestivalTaskReward { // msgid: 10215\r\n    int32 Id = 1; // 表Id\r\n}\r\n\r\nmessage GS_ActFestivalTaskReward_R { // msgid: 10216\r\n    int32 ErrorCode = 1;\r\n    int32 Id        = 2;\r\n    int32 Score     = 3;\r\n    Rewards Rewards = 4;\r\n}\r\n\r\n// 领取积分奖励\r\nmessage C_ActFestivalTaskScore { // msgid: 10217\r\n    int32 Id = 1; // 表Id\r\n}\r\n\r\nmessage GS_ActFestivalTaskScore_R { // msgid: 10218\r\n    int32 ErrorCode = 1;\r\n    int32 Id = 2;\r\n    Rewards Rewards = 3;\r\n}\r\n\r\n// ============================================================================\r\n// 特惠云购\r\n\r\nmessage ActCloudBuy {\r\n    map<int32, int32> Gifts = 1;\r\n}\r\n\r\nmessage GS_ActCloudBuyBillDone { // msgid: 10280\r\n    Rewards Rewards = 1;\r\n}\r\n\r\nmessage C_ActCloudBuyInfo { // msgid: 10281\r\n}\r\n\r\nmessage GS_ActCloudBuyInfo_R { // msgid: 10282\r\n    int32 ErrorCode = 1;\r\n    ActCloudBuy Data = 2;\r\n}\r\n\r\nmessage C_ActCloudBuyFreeReward { // msgid: 10283\r\n    int32 Id = 1;\r\n}\r\n\r\nmessage GS_ActCloudBuyFreeReward_R { // msgid: 10284\r\n    int32 ErrorCode = 1;\r\n    Rewards Rewards = 2;\r\n    int32 Id = 3;\r\n}\r\n\r\n// ============================================================================\r\n// 限时招募\r\n\r\nmessage ActWishRound {\r\n    int32 Num = 1; // 招募次数\r\n    repeated int32 Taken = 2; // 已领取奖励\r\n    int32 ConfKey = 3; // 当前使用的配置Id\r\n}\r\n\r\nmessage C_ActWishRoundGetInfo { // msgid: 10300\r\n}\r\n\r\nmessage GS_ActWishRoundGetInfo_R { // msgid: 10301\r\n    int32 ErrorCode = 1;\r\n    ActWishRound Data = 2;\r\n}\r\n\r\nmessage C_ActWishRoundTakeReward { // msgid: 10302\r\n    int32 Id = 1;\r\n}\r\n\r\nmessage GS_ActWishRoundTakeReward_R { // msgid: 10303\r\n    int32 ErrorCode = 1;\r\n    Rewards Rewards = 2;\r\n}\r\n\r\n// ============================================================================\r\n// 连续充值\r\n\r\nmessage ActFirstContinueRecharge {\r\n    map<int32, int32> ConCharge = 1; // 充值时间戳：充值钻石数\r\n    repeated int32 Taken        = 2; // 已领奖励id\r\n    int32 Day                   = 3; // 活动开启天数\r\n    bool DailyFree              = 4; // 每日免费奖励\r\n}\r\n\r\nmessage GS_ActFirstContinueRechargeUpdate_Diamond { // msgid: 10420\r\n    int32 Diamond = 1;\r\n    int32 Day = 2;\r\n}\r\n\r\nmessage C_ActFirstContinueRechargeInfo { // msgid: 10421\r\n}\r\n\r\nmessage GS_ActFirstContinueRechargeInfo_R { // msgid: 10422\r\n    int32 ErrorCode = 1;\r\n    ActFirstContinueRecharge Data = 2;\r\n}\r\n\r\nmessage C_ActFirstContinueRechargeTakeReward { // msgid: 10423\r\n    int32 Id = 1;   \r\n}\r\n\r\nmessage GS_ActFirstContinueRechargeTakeReward_R { // msgid: 10424\r\n    int32 ErrorCode = 1;\r\n    Rewards Rewards = 2;\r\n    int32 Id = 3;\r\n}\r\n\r\nmessage C_ActFirstContinueRechargeTakeFree { // msgid: 10425\r\n}\r\n\r\nmessage GS_ActFirstContinueRechargeTakeFree_R { // msgid: 10426\r\n    int32 ErrorCode = 1;\r\n    Rewards Rewards = 2;\r\n}\r\n\r\n// ============================================================================\r\n// 时装商城\r\n\r\nmessage ActFashionShop {\r\n    repeated int32 Bought = 1;\r\n}\r\n\r\nmessage C_ActFashionShopInfo { // msgid: 10440\r\n}\r\n\r\nmessage GS_ActFashionShopInfo_R { // msgid: 10441\r\n    int32 ErrorCode = 1;\r\n    ActFashionShop Data = 2;\r\n}\r\n\r\nmessage GS_ActFashionShopBillDone { // msgid: 10442\r\n    int32 Id = 1;\r\n    Rewards Rewards = 2;\r\n}\r\n\r\n// ============================================================================\r\n// 师门累充\r\n\r\nmessage ActAfterFirst {\r\n    int32 Diamond = 1;\r\n    repeated int32 Taken = 2;\r\n}\r\n\r\nmessage GS_ActAfterFirstUpdate { // msgid: 10450\r\n    int32 Diamond = 1;\r\n}\r\n\r\nmessage C_ActAfterFirstInfo { // msgid: 10451\r\n}\r\n\r\nmessage GS_ActAfterFirstInfo_R { // msgid: 10452\r\n    int32 ErrorCode = 1;\r\n    ActAfterFirst Data = 2;\r\n}\r\n\r\nmessage C_ActAfterFirstTakeReward { // msgid: 10453\r\n    int32 Id = 1;\r\n}\r\n\r\nmessage GS_ActAfterFirstTakeReward_R { // msgid: 10454\r\n    int32 ErrorCode = 1;\r\n    Rewards Rewards = 2;\r\n    int32 Id = 3;\r\n}\r\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [7900, 8000)\n// ============================================================================\n\n\n// ============================================================================\n\nmessage MOpenData {\n    map<int32, bool> M = 1; //\n    repeated int32 RewardsTaken = 2;\n}\n\n// ============================================================================\n\n// 推送\nmessage GS_MOpenModuleNew { // msgid: 7900\n    int32 MId = 1;\n}\n\n// ============================================================================\n\n// 预告板领奖\nmessage C_MOpenNoticeReward { // msgid: 7910\n}\n\nmessage GS_MOpenNoticeReward_R { // msgid: 7911\n    int32 ErrorCode = 1;\n    Rewards Rewards = 2;\n    repeated int32 MId = 3;\n}\n\r\n\r\n\r\n\r\n// ============================================================================\r\n// msgid range for C <-> GS: [12100, 12150)\r\n// ============================================================================\r\n\r\n\r\n// ============================================================================\r\n// 技能符文\r\n\r\nmessage SkillRuneData {\r\n    map<int32,RuneSlot> Runes = 1;\r\n}\r\n\r\nmessage RuneSlot {\r\n    int32 Slot = 1; // 槽位：1101，1102，1201，1202\r\n    int32 RuneId = 2; // 当前镶嵌的符文Id，item表\r\n    int32 Lv = 3; // 符文等级\r\n    int32 Step = 4; // 符文阶级（达到最高品质后才能升阶）\r\n}\r\n\r\n// ============================================================================\r\n\r\n// 激活或者突破或者升阶\r\nmessage C_SkillRuneStepUp { // msgid: 12100\r\n    int32 RuneId = 1;\r\n}\r\n\r\nmessage GS_SkillRuneStepUp_R { // msgid: 12101\r\n    int32 ErrorCode = 1;\r\n    RuneSlot Rune = 2; \r\n}\r\n\r\n// 符文升级\r\nmessage C_SkillRuneLvUp { // msgid: 12102\r\n    int32 Slot = 1;\r\n}\r\n\r\nmessage GS_SkillRuneLvUp_R { // msgid: 12103\r\n    int32 ErrorCode = 1;\r\n    int32 Slot = 2;\r\n    int32 Lv = 3;\r\n}\r\n\r\n// 一键升级\r\nmessage C_SkillRuneLvUpOneKey { // msgid: 12104\r\n    repeated int32 Slots = 1;\r\n}\r\n\r\nmessage GS_SkillRuneLvUpOneKey_R { // msgid: 12105\r\n    int32 ErrorCode = 1;\r\n    map<int32,int32> Slots = 2; // <slot,lv>\r\n}\r\n\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [8400, 8450)\n// ============================================================================\n\nmessage CounterData {\n    repeated CounterTs LastTs = 1; // 上次恢复时间\n}\n\nmessage CounterTs {\n    int32 Id = 1;\n    int64 Ts = 2;\n    int32 RecoverLimit = 3; // recover类型，dailylimit>0\n}\n\n// ============================================================================\n\n// 推送计数器恢复时间\nmessage GS_CounterUpdateTs { // msgid: 8400\n    CounterTs C = 1;\n}\n\n// ============================================================================\n\n// 要求计算计数器恢复\nmessage C_CounterRecover { // msgid: 8410\n    int32 Id = 1;\n}\n\nmessage GS_CounterRecover_R { // msgid: 8411\n    int32 ErrorCode = 1;\n}\n\n// 要求计算计数器恢复\nmessage C_CounterBuy { // msgid: 8412\n    int32 Id = 1;\n}\n\nmessage GS_CounterBuy_R { // msgid: 8413\n    int32 ErrorCode = 1;\n}\n\n// 计数器重置\nmessage GS_CounterReset { // msgid: 8416\n    repeated Field MaxCnt     = 1; // 计数器最大次数 \n}\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [12350, 12400)\n// ============================================================================\n\n\n// ============================================================================\n\n// 翅膀\nmessage WingData {\n    map<int32, int64> Ids = 1; // 已经获得的翅膀<id, 时间>,-1 代表永久激活\n    int32 Lv = 2; // 翅膀养成等级\n    int32 Wear = 3; // 当前穿的翅膀，0表示隐藏\n}\n\n// ============================================================================\n\nmessage GS_WingNew { // msgid: 12350\n    int32 Id  = 1;\n    int64 ExpireTs = 2; // -1 代表永久激活\n}\n\n// 翅膀升级或进阶\nmessage C_WingLvUp { // msgid: 12351\n}\n\nmessage GS_WingLvUp_R { // msgid: 12352\n    int32 ErrorCode = 1;\n    int32 Lv = 2;\n}\n\n// 翅膀穿戴\nmessage C_WingWear { // msgid: 12353\n    int32 Id = 1; // 0表示隐藏\n}\n\nmessage GS_WingWear_R { // msgid: 12354\n    int32 ErrorCode = 1;\n    int32 Id = 2;\n}\n\n// 翅膀手动消耗道具激活\nmessage C_WingActive { // msgid: 12355\n    int32 Id  = 1;\n}\n\nmessage GS_WingActive_R { // msgid: 12356\n    int32 ErrorCode = 1;\n}\n\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [7000, 7100)\n// ============================================================================\n\n\n// ============================================================================\n\nmessage Mail {\n    int32 Id                 = 1;  // mail id\n    int32 Key                = 2;  // mail key\n    string Sender            = 3;  // sender\n    string Title             = 4;  // mail title (id | string)\n    string Text              = 5;  // mail text  (id | string)\n    map<string, string> Dict = 6;  // dict\n    repeated MailRes A       = 7;  // attachment\n    bool Read                = 8;  // read flag\n    bool Taken               = 9;  // taken flag\n    int64 Ts                 = 10; // create timestamp\n    int64 ETs                = 11; // expire timestamp\n    BagData SeqDatas         = 12; // 带seq装备的信息\n}\n\nmessage MailRes {\n    int32 Id = 1;\n    int64 N  = 2;\n}\n\nmessage MailExpire {\n    int32 Id  = 1;\n    int64 ETs = 2;\n}\n\n// ============================================================================\n\n// 新邮件推送\nmessage GS_MailNew { // msgid: 7000\n    Mail M = 1;\n}\n\n// 删除邮件推送\nmessage GS_MailDel { // msgid: 7001\n    repeated int32 Ids = 1;\n}\n\n// ============================================================================\n\n// 读邮件\nmessage C_MailRead { // msgid: 7010\n    int32 Id = 1;\n}\n\nmessage GS_MailRead_R { // msgid: 7011\n    int32 ErrorCode   = 1;\n    MailExpire Expire = 2;\n}\n\n// 删邮件\nmessage C_MailDel { // msgid: 7012\n    int32 Id = 1;\n}\n\nmessage GS_MailDel_R { // msgid: 7013\n    int32 ErrorCode = 1;\n    int32 Id        = 2;\n}\n\n// 取附件\nmessage C_MailTakeAttachment { // msgid: 7014\n    int32 Id = 1;\n}\n\nmessage GS_MailTakeAttachment_R { // msgid: 7015\n    int32 ErrorCode   = 1;\n    MailExpire Expire = 2;\n    Rewards Rewards = 3;\n}\n\n// 取全部附件\nmessage C_MailTakeAttachmentAll { // msgid: 7016\n}\n\nmessage GS_MailTakeAttachmentAll_R { // msgid: 7017\n    int32 ErrorCode             = 1;\n    repeated MailExpire Expires = 2;\n    Rewards Rewards = 3;\n}\n\n// 一键删除\nmessage C_MailDelOnekey { // msgid: 7018\n}\n\nmessage GS_MailDelOnekey_R { // msgid: 7019\n    int32 ErrorCode    = 1;\n    repeated int32 Ids = 2;\n}\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [5200, 5300)\n// ============================================================================\n\n\n// ============================================================================\n\n// 背包数据\nmessage BagData {\n    repeated Ccy Currency   = 1;\n    repeated Hero Heroes    = 2;\n    repeated Item Items     = 3;\n    repeated Equip Equips   = 4;\n    repeated Magic Magics   = 5;\n    repeated Mount Mounts   = 6;\n    repeated Relic Relics   = 7;\n}\n\n// 域数据\nmessage FieldData {\n    repeated Field Fields = 1; // all\n}\n\n// ============================================================================\n\n// 背包变化推送\nmessage GS_BagUpdate { // msgid: 5200\n    repeated Ccy Currency     = 1;\n    repeated Hero Heroes      = 2;\n    repeated Item Items       = 3;\n    repeated Equip Equips     = 4;\n    repeated int64 EquipsDel  = 5;\n    repeated Magic Magics     = 6;\n    repeated int64 MagicsDel  = 7;\n    repeated Mount Mounts     = 8;\n    repeated int64 MountsDel  = 9;\n    repeated Relic Relics     = 10;\n    string From               = 11;\n}\n\n// 域变化推送\nmessage GS_FieldUpdate { // msgid: 5201\n    repeated Field Fields = 1;\n}\n\n\r\n\r\n\r\n\r\n// ============================================================================\r\n// msgid range for C <-> GS: [8550, 8600)\r\n// ============================================================================\r\n\r\n\r\n// ============================================================================\r\n\r\n// 世界关卡\r\nmessage WLevelData {\r\n    int32 LvNum   = 1;                  // 当前通关序号\r\n    int32 MaxNum  = 3;                  // 已通过的最大关卡序号\r\n    BoxData Box   = 5;                  // 宝箱数据\r\n    int32 KillNum = 6;                  // 杀怪数量\r\n    int32 LoseCnt = 7;                  // 失败次数\r\n    map<int32,int32> MonsterCnt = 8;    // 本关小怪类型和数量<type,cnt>\r\n    int32 MultiFight = 9;               // 多倍消耗\r\n    map<int32,int32> DailyLimit = 10;   // 每日关卡掉落道具上限(跨天需要清除)\r\n}\r\n\r\n// 宝箱\r\nmessage BoxData {\r\n    int32 Lv        = 1; // 宝箱等级\r\n    bool IsLvUp     = 2; // 升级中\r\n    int64 Ts        = 3; // 升级结束时间\r\n    int64 ReduceTs  = 4; // 广告或钻石升级加速\r\n}\r\n\r\n// ============================================================================\r\n\r\n// ============================================================================\r\n\r\n// BOSS挑战\r\nmessage C_WLevelFight { // msgid: 8550\r\n    bool Lose = 1; // 是否失败，用于统计\r\n}\r\n\r\nmessage GS_WLevelFight_R { // msgid: 8551\r\n    int32 ErrorCode = 1;\r\n    Rewards Rewards = 2;\r\n    int32 LvNum     = 3; // 当前通关序号\r\n    map<int32,int32> MonsterCnt = 4; // 不为nil时刷怪需要清除之前的\r\n}\r\n\r\n// 释放技能\r\nmessage C_WLevelClickSkill { // msgid: 8552\r\n}\r\n\r\nmessage GS_WLevelClickSkill_R { // msgid: 8553\r\n    int32 ErrorCode = 1;\r\n    int32 Exp = 2; // 经验\r\n}\r\n\r\n// 设置几倍消耗\r\nmessage C_WLevelMultiFight { // msgid: 8554\r\n    int32 Multi = 1;\r\n}\r\n\r\nmessage GS_WLevelMultiFight_R { // msgid: 8555\r\n    int32 ErrorCode = 1;\r\n    int32 Multi = 2;\r\n}\r\n\r\n// 杀怪（成功才发）\r\nmessage C_WLevelKillMon { // msgid: 8556\r\n    int32 Type = 1; // 怪物类型（1-3）\r\n}\r\n\r\nmessage GS_WLevelKillMon_R { // msgid: 8557\r\n    int32 ErrorCode = 1;\r\n    int32 KillNum = 2;\r\n    int32 Type = 3; // 怪物类型（1-3）\r\n    Rewards Rewards = 4;\r\n    map<int32,int32> MonsterCnt = 5;  // 不为nil时怪物增量\r\n    map<int32,int32> DailyLimit = 6; // 每日关卡掉落道具上限\r\n}\r\n\r\n// 升级宝箱等级\r\nmessage C_WLevelBoxLvUp { // msgid: 8558\r\n}\r\n\r\nmessage GS_WLevelBoxLvUp_R { // msgid: 8559\r\n    int32 ErrorCode = 1;\r\n    int64 Ts = 2; // 升级结束时间\r\n}\r\n\r\n// 道具升级加速\r\nmessage C_WLevelBoxLvSpeedUp { // msgid: 8560\r\n    int32 N = 1; // 道具数量\r\n}\r\n\r\nmessage GS_WLevelBoxLvSpeedUp_R { // msgid: 8561\r\n    int32 ErrorCode = 1;\r\n    int32 Lv = 2; \r\n    int64 Ts = 3; // 升级结束时间\r\n}\r\n\r\n// 广告或钻石升级加速\r\nmessage C_WLevelBoxReduceTs { // msgid: 8562\r\n    bool IsAd = 1;\r\n}\r\n\r\nmessage GS_WLevelBoxReduceTs_R { // msgid: 8563\r\n    int32 ErrorCode = 1;\r\n    int32 Lv = 2; \r\n    int64 Ts = 3; // 升级结束时间\r\n    int64 ReduceTs  = 4; // 广告或钻石升级加速\r\n}\r\n\r\n// 检查宝箱升级是否结束(倒计时结束请求)\r\nmessage C_WLevelBoxLvUpCheck { // msgid: 8566\r\n}\r\n\r\nmessage GS_WLevelBoxLvUpCheck_R { // msgid: 8567\r\n    int32 ErrorCode = 1;\r\n    int32 Lv        = 2; // 宝箱等级\r\n    bool IsLvUp     = 3; // 升级中\r\n}\r\n\r\n// BOSS挑战\r\nmessage C_WLevelStartFight { // msgid: 8568\r\n    bool Test = 1;\r\n}\r\n\r\nmessage GS_WLevelStartFight_R { // msgid: 8569\r\n    int32 ErrorCode = 1;\r\n    bool IsWin      = 2;\r\n    bytes Replay    = 3;\r\n}\r\n\r\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [9100, 9200)\n// ============================================================================\n\n\n// ============================================================================\n\n// 竞技场\nmessage ArenaData {\n    int32 Idx                = 1; // 名次\n    int32 Score              = 2; // 排位积分\n    map<string, int32> Mobai = 4; // 膜拜别人及其次数\n    int32 MobaiCnt           = 5; // 被膜拜的次数\n    int32 FightCnt           = 6; // 战斗次数\n    Team T                   = 7; // 防守阵容\n    repeated int32 TakeIds   = 8; // 已领取历史排名奖励Id\n    int64 ResetTs            = 9; // 重置时间\n    int32 MaxRank            = 10; // 历史最高排名(注意是越小排名越高)\n}\n\n// 对手信息\nmessage ArenaEnemy {\n    string PlrId   = 1;\n    string Name    = 2; // 名字\n    int64 AtkPower = 3; // 战力\n    int32 Score    = 4; // 积分\n    int32 Figure   = 5; // 形象\n    int32 Head     = 6; // 头像\n    int32 HFrame   = 7; // 头像框\n    int32 SvrId    = 8;\n}\n\n// 顶部被大家膜拜玩家\nmessage ArenaMobaiTopPlr {\n    string PlrId   = 1;\n    string Name    = 2;\n    int32 Head     = 3;\n    int32 HFrame   = 4;\n    int32 MobaiCnt = 5; // 被膜拜的次数\n    int32 Figure   = 6; // 形象\n}\n\n// 战报\nmessage ArenaReplay {\n    int64 Id       = 1; // 战报\n    string PlrId   = 2; // 对手id\n    string Name    = 3; // 对手名字\n    int32 Head     = 4; // 对手头像\n    int32 HFrame   = 5; // 对手头像框\n    bool IsAtk     = 6; // 是否是攻击方\n    bool IsWin     = 7; // 自己是否胜利\n    int32 AddScore = 8; // 积分变化\n    int64 Ts       = 9; // 战斗时间\n    bool Revenge   = 10; // 是否已复仇\n}\n\n// ============================================================================\n// 推送\n\n// 打架通知\nmessage GS_ArenaFighted { // msgid: 9100\n    int32 Score = 1;\n}\n\n// ============================================================================\n// 获取info\nmessage C_ArenaGetInfo { // msgid: 9110\n}\n\nmessage GS_ArenaGetInfo_R { // msgid: 9111\n    int32 ErrorCode                  = 1;\n    ArenaData Data                   = 2;\n    repeated ArenaEnemy Enemies      = 3;\n    repeated ArenaMobaiTopPlr TopPlr = 4;\n}\n\n// 刷新对手\nmessage C_ArenaUpdateEnemy { // msgid: 9112\n}\n\nmessage GS_ArenaUpdateEnemy_R { // msgid: 9113\n    int32 ErrorCode             = 1;\n    repeated ArenaEnemy Enemies = 2;\n}\n\n// 膜拜\nmessage C_ArenaMobai { // msgid: 9114\n    string PlrId = 1;\n}\n\nmessage GS_ArenaMobai_R { // msgid: 9115\n    int32 ErrorCode = 1;\n    string PlrId    = 2;\n    int32 MobaiCnt  = 3;\n    Rewards Rewards = 4;\n}\n\n// 打架\nmessage C_ArenaFight { // msgid: 9116\n    string PlrId = 1;\n}\n\nmessage GS_ArenaFight_R { // msgid: 9117\n    int32 ErrorCode = 1;\n    bool IsWin      = 2;\n    bytes Replay    = 3;\n    Rewards Rewards = 4;\n    int32 AddScore1 = 5; // 自己积分变化\n    int32 AddScore2 = 6; // 对手积分变化\n    int32 FightCnt  = 7; // 战斗次数\n}\n\n// 获取战报\nmessage C_ArenaReplayList { // msgid: 9118\n}\n\nmessage GS_ArenaReplayList_R { // msgid: 9119\n    int32 ErrorCode              = 1;\n    repeated ArenaReplay Replays = 2;\n}\n\n// 领取历史排名奖励\nmessage C_ArenaTakeHistoryReward { // msgid: 9122\n    int32 Id = 1;\n}\n\nmessage GS_ArenaTakeHistoryReward_R { // msgid: 9123\n    int32 ErrorCode = 1;\n    Rewards Rewards = 2;\n    int32 Id        = 3;\n}\n\n// 复仇\nmessage C_ArenaRevenge { // msgid: 9124\n    int64 Id = 1; // 战报Id\n}\n\nmessage GS_ArenaRevenge_R { // msgid: 9125\n    int32 ErrorCode = 1;\n    bool IsWin      = 2;\n    bytes Replay    = 3;\n    Rewards Rewards = 4;\n    int32 AddScore1 = 5; // 自己积分变化\n    int32 AddScore2 = 6; // 对手积分变化\n    int32 FightCnt  = 7; // 战斗次数\n}\n\n\n// ============================================================================\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [8100, 8200)\n// ============================================================================\n\n\n// ============================================================================\n\nmessage FarmLandBase {\n    int32 Lv = 1; // 农场等级\n    int32 Exp = 2; // 农场经验\n    map<int32, FarmLandBuild> Builds = 3; // 建筑<tp,FarmLandBuild>\n    map<int32, FarmLandBlank> Blanks = 4; // 地块<id,FarmLandBlank>，未解锁或未种植没有\n    int64 FeedCacuTs = 5; // 肥料恢复计算时间戳\n    repeated FarmLandSteal Steals = 6; // 正在偷取别人队列\n}\n\nmessage FarmLandBuild {\n    int32 Tp = 1; // 类型\n    int32 Lv = 2; // 等级\n    bool IsLvUp = 3; // 是否在升级中\n    int64 Ts = 4; // 升级结束时间\n}\n\nmessage FarmLandBlank {\n    int32 Id = 1; // 地块Id\n    int32 PlantId = 2; // 作物Id（0表示没有）\n    FarmLandSteal Steal = 3; // 正在被偷取\n    int32 StealCnt = 4; // 被偷取了几次\n    int32 Produce = 5; // 未领取的产出\n    int64 Ts = 6; // 生长结束时间\n}\n\nmessage FarmLandSteal {\n    FarmLandPlrInfo Plr = 1; // 玩家（偷取者或被偷取者）\n    int32 Id = 2; // 地块Id\n    int64 Ts = 3; // 偷取结束时间\n}\n\nmessage FarmLandLog {\n    int32 Tp = 1; // 类型\n    int64 Ts = 2; // 时间\n    repeated string Param1 = 3; // 参数1(部分参数需要读配置转化)\n    repeated string Param2 = 4; // 参数2(部分参数需要读配置转化)\n}\n\nmessage FarmLandPlrInfo {\n    string PlrId = 1;\n    string Name = 2;\n    int32 Head = 3;\n    int32 HFrame = 4;\n}\n\nmessage FarmLandReplay {\n    int64 Id = 1; // 战报Id\n    FarmLandPlrInfo Send = 2; // 发起方\n    FarmLandPlrInfo Recv = 3; // 接收方\n    bool IsWin = 4; // 自己是否胜利\n    int64 Ts = 5; // 战斗时间\n}\n\n// 搜寻信息\nmessage FarmLandSearchInfo {\n    FarmLandPlrInfo Plr = 1;\n    int32 Lv = 2;\n    int64 Ts = 3; // (-1:没有可偷取，0：已成熟，>0多少时间后成熟)\n    int64 OfflineTs = 4; // 离线时间（0：在线，>0离线时间）\n}\n\nmessage FarmLandVisitInfo {\n    FarmLandPlrInfo Plr = 1;\n    int32 Lv = 2; // 农场等级\n    int32 Exp = 3; // 农场经验\n    map<int32, FarmLandBuild> Builds = 4; // 建筑<tp,FarmLandBuild>\n    map<int32, FarmLandBlank> Blanks = 5; // 地块<id,FarmLandBlank>，未解锁或未种植没有\n    bool PrivCard = 6;\n}\n\n// ============================================================================\n\n// 农场等级经验发生变化\nmessage GS_FarmLandUpdate { // msgid: 8100\n    int32 Lv = 1; // 农场等级\n    int32 Exp = 2; // 农场经验\n}\n\n// 通知玩家有人偷取\nmessage GS_FarmLandStealNotice { // msgid: 8101\n    FarmLandSteal Steal = 1; // 正在偷取\n}\n\n// 通知被偷取者驱赶成功（从地块上移除偷取）\nmessage GS_FarmLandFightNotice { // msgid: 8102\n    int32 Id = 1; // 地块Id\n}\n\n// 通知偷取者（移除偷取队列）\nmessage GS_FarmLandStealRemove { // msgid: 8103\n    string PlrId = 1;\n    int32 Id = 2; // 地块Id\n}\n\n// 更新肥料恢复计算时间戳\nmessage GS_FarmLandFeedUpateTs { // msgid: 8104\n    int64 FeedCacuTs = 1; // 计算时间戳\n}\n\n// 建筑升级导致成熟时间改变\nmessage GS_FarmLandBlankUpdate { // msgid: 8105\n    map<int32, FarmLandBlank> Blanks = 1; // 地块<id,FarmLandBlank>,发生改变的\n}\n\n// ============================================================================\n\n// 基础信息\nmessage C_FarmLandBaseInfo { // msgid: 8110\n}\n\nmessage GS_FarmLandBaseInfo_R { // msgid: 8111\n  int32 ErrorCode = 1;\n  FarmLandBase Info = 2;\n}\n\n// 日志\nmessage C_FarmLandGetLogs { // msgid: 8112\n}\n\nmessage GS_FarmLandGetLogs_R { // msgid: 8113\n  int32 ErrorCode = 1;\n  repeated FarmLandLog Logs = 2;\n}\n\n// 战报\nmessage C_FarmLandGetReplays { // msgid: 8114\n}\n\nmessage GS_FarmLandGetReplays_R { // msgid: 8115\n  int32 ErrorCode = 1;\n  repeated FarmLandReplay Replays = 2;\n}\n\n// 播种\nmessage C_FarmLandSeed { // msgid: 8116\n    int32 Id = 1; // 地块Id\n    int32 SeedId = 2; // 种子id（1，2，3...）\n}\n\nmessage GS_FarmLandSeed_R { // msgid: 8117\n    int32 ErrorCode = 1;\n    FarmLandBlank Blank = 2;\n}\n\n// 施肥\nmessage C_FarmLandFeed { // msgid: 8118\n    int32 Id = 1; // 地块Id\n    int32 ItemId = 2; // 使用道具\n    int32 ItemNum = 3; // 数量\n}\n\nmessage GS_FarmLandFeed_R { // msgid: 8119\n    int32 ErrorCode = 1;\n    FarmLandBlank Blank = 2;\n}\n\n// 采摘（加农场经验和建筑点数，不领取道具）\nmessage C_FarmLandPick { // msgid: 8120\n    int32 Id = 1; // 地块Id\n}\n\nmessage GS_FarmLandPick_R { // msgid: 8121\n    int32 ErrorCode = 1;\n    FarmLandBlank Blank = 2;\n    Rewards Rewards = 3;\n}\n\n// 收获\nmessage C_FarmLandHarvest { // msgid: 8122\n    int32 Id = 1; // 地块Id\n}\n\nmessage GS_FarmLandHarvest_R { // msgid: 8123\n    int32 ErrorCode = 1;\n    int32 Id = 2; // 删除地块\n    Rewards Rewards = 3;\n}\n\n// 搜寻\nmessage C_FarmLandSearch { // msgid: 8124\n    int32 Tp = 1; // (1:随机，2:仇人，3:好友)\n    bool Refresh = 2; // 是否刷新\n}\n\nmessage GS_FarmLandSearch_R { // msgid: 8125\n    int32 ErrorCode = 1;\n    repeated FarmLandSearchInfo Infos = 2;\n    int64 Ts = 3; // 对于1：随机，上次刷新时间\n}\n\n// 拜访\nmessage C_FarmLandVisit { // msgid: 8126\n    string PlrId = 1;\n}\n\nmessage GS_FarmLandVisit_R { // msgid: 8127\n    int32 ErrorCode = 1;\n    FarmLandVisitInfo Info = 2;\n}\n\n// 偷取\nmessage C_FarmLandSteal { // msgid: 8128\n    string PlrId = 1;\n    int32 Id = 2; // 地块Id\n}\n\nmessage GS_FarmLandSteal_R { // msgid: 8129\n    int32 ErrorCode = 1;\n    FarmLandSteal Steal = 2; // 更新自己的偷取队列(可能没有)\n    FarmLandBlank Blank = 3; // 数据可能发生改变，更新当前拜访玩家的数据(可能没有)\n}\n\n// 检查偷取是否结束(任意一个倒计时结束请求)\nmessage C_FarmLandStealCheck { // msgid: 8130\n}\n\nmessage GS_FarmLandStealCheck_R { // msgid: 8131\n    int32 ErrorCode = 1;\n    Rewards Rewards = 2;\n}\n\n// 驱赶\nmessage C_FarmLandFight { // msgid: 8132\n    string PlrId = 1;\n    int32 Id = 2; // 地块Id\n}\n\nmessage GS_FarmLandFight_R { // msgid: 8133\n    int32 ErrorCode = 1;\n    bytes Replay    = 2;\n    bool IsWin  = 3;\n}\n\n// 建筑升级\nmessage C_FarmLandBuildLvUp { // msgid: 8134\n    int32 Tp = 1;\n}\n\nmessage GS_FarmLandBuildLvUp_R { // msgid: 8135\n    int32 ErrorCode = 1;\n    int32 Tp = 2;\n    int64 Ts = 3; // 升级结束时间\n}\n\n// 升级加速\nmessage C_FarmLandBuildLvSpeedUp { // msgid: 8136\n    int32 Tp = 1;\n    bool AD = 2; // 是否广告加速\n    int32 N = 3; // 道具数量\n}\n\nmessage GS_FarmLandBuildLvSpeedUp_R { // msgid: 8137\n    int32 ErrorCode = 1;\n    int32 Tp = 2;\n    int32 Lv = 3;\n    int64 Ts = 4; // 升级结束时间\n}\n\n// 到点客户端请求计算肥料恢复数量\nmessage C_FarmLandFeedCacuItem { // msgid: 8138\n}\n\nmessage GS_FarmLandFeedCacuItem_R { // msgid: 8139\n    int32 ErrorCode = 1;\n}\n\n// 看广告给种子\nmessage C_FarmLandSeedAd { // msgid: 8140\n}\n\nmessage GS_FarmLandSeedAd_R { // msgid: 8141\n    int32 ErrorCode = 1;\n    Rewards Rewards = 2;\n}\n\n// 看广告给肥料\nmessage C_FarmLandFeedAd { // msgid: 8142\n}\n\nmessage GS_FarmLandFeedAd_R { // msgid: 8143\n    int32 ErrorCode = 1;\n    Rewards Rewards = 2;\n}\n\n// 检查建筑升级是否结束(倒计时结束请求)\nmessage C_FarmLandBuildLvUpCheck { // msgid: 8144\n    int32 Tp = 1;\n}\n\nmessage GS_FarmLandBuildLvUpCheck_R { // msgid: 8145\n    int32 ErrorCode = 1;\n    int32 Tp = 2;\n    int32 Lv = 3;\n    bool IsLvUp = 4;\n}\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [9300, 9400)\n// ============================================================================\n\n\n// ============================================================================\n// 好友\nmessage FriendData {\n    repeated FriendInfo Frds     = 1; // 好友列表\n    repeated FriendPlr ApplyList = 2; // 申请列表\n    repeated FriendPlr BlackList = 3; // 黑白名单列表\n}\n\nmessage FriendPlr {\n    PlayerInfo Info = 1; // 玩家基础信息\n    bool IsOnline   = 2; // 是否在线\n    int64 OffTs     = 3; // 离线时间\n}\n\nmessage FriendInfo {\n    FriendPlr PlrBase = 1; // 玩家基础信息\n    int64 Ts          = 2; // 玩家添加好友时间\n    int32 Exp         = 3; // 玩家与对方的好友值\n    bool Give         = 4; // 玩家是否给对方礼物\n    int32 Gift        = 5; // 玩家是否收到对方的礼物(0: 没收到; 1: 收到; 2: 已经领取)\n}\n\n// ============================================================================\n// 推送\n\n// 新的好友申请\nmessage GS_FriendNewApplied { // msgid: 9300\n    string PlrId = 1;\n}\n\n// 新的好友\nmessage GS_FriendNewFriend { // msgid: 9301\n    FriendInfo Frd = 1;\n}\n\nmessage GS_FriendRemoveFriend { // msgid: 9302\n    string PlrId = 1;\n}\n\n// 礼物\nmessage GS_FriendGift { // msgid: 9303\n    string PlrId = 1;\n}\n\n// 好友上线\nmessage GS_FriendOnline { // msgid: 9304\n    string Name = 1; // 好友名字\n}\n\n// ============================================================================\n// 好友列表\nmessage C_FriendGetFrds { // msgid: 9310\n}\n\nmessage GS_FriendGetFrds_R { // msgid: 9311\n    repeated FriendInfo Frds = 1;\n}\n\n// 搜索好友列表\nmessage C_FriendSearchFrds { // msgid: 9312\n    string Name = 1;\n}\n\nmessage GS_FriendSearchFrds_R { // msgid: 9313\n    repeated FriendPlr Plrs = 1;\n}\n\n// 移除好友\nmessage C_FriendRemoveFrds { // msgid: 9314\n    repeated string PlrId = 1;\n}\n\nmessage GS_FriendRemoveFrds_R { // msgid: 9315\n    int32 ErrorCode = 1;\n    repeated string PlrId = 2;\n}\n\n// 申请列表\nmessage C_FriendGetApplyList { // msgid: 9316\n}\n\nmessage GS_FriendGetApplyList_R { // msgid: 9317\n    repeated FriendPlr ApplyList = 1;\n}\n\n// 申请好友\nmessage C_FriendApply { // msgid: 9318\n    string PlrId = 1;\n}\n\nmessage GS_FriendApply_R { // msgid: 9319\n    int32 ErrorCode = 1;\n}\n\n// 接受好友\nmessage C_FriendAccept {        // msgid: 9320\n    bool IsAccept          = 1; // 接受，拒绝\n    repeated string PlrIds = 2;\n}\n\nmessage GS_FriendAccept_R { // msgid: 9321\n    int32 ErrorCode = 1;\n}\n\n// 黑白名单列表\nmessage C_FriendGetBlackList { // msgid: 9322\n}\n\nmessage GS_FriendGetBlackList_R { // msgid: 9323\n    repeated FriendPlr BlackList = 1;\n}\n\n// 添加移除黑白名单\nmessage C_FriendAddBlackList { // msgid: 9324\n    bool IsAdd   = 1;          // 添加，移除\n    string PlrId = 2;\n}\n\nmessage GS_FriendAddBlackList_R { // msgid: 9325\n    int32 ErrorCode = 1;\n    bool IsAdd      = 2; // 添加，移除\n    string PlrId    = 3;\n}\n\n// 赠送礼物\nmessage C_FriendGiveGift { // msgid: 9326\n    repeated string PlrIds = 1;\n}\n\nmessage GS_FriendGiveGift_R { // msgid: 9327\n    int32 ErrorCode        = 1;\n    repeated string PlrIds = 2;\n    Rewards Rewards        = 3;\n}\n\n// 领取礼物\nmessage C_FriendTakeGift { // msgid: 9328\n    repeated string PlrIds = 1;\n}\n\nmessage GS_FriendTakeGift_R { // msgid: 9329\n    int32 ErrorCode        = 1;\n    repeated string PlrIds = 2;\n    Rewards Rewards        = 3;\n}\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [8600, 8650)\n// ============================================================================\n\n\n// ============================================================================\n\n// 爬塔\nmessage TowerData {\n    int32 LvNum             = 1; // 当前通关序号\n    int64 CacuTs            = 2; // 计算时间戳\n    int32 LastLv            = 3; // 前一天的最高层数\n    map<int32, bool> ETaken = 4; // 额外层已领取奖励 表id:bool\n}\n\nmessage TowerLevelInfo {\n    repeated TowerReplay Top  = 1; // 首通3人\n    repeated TowerReplay Last = 2; // 最近3人\n}\n\n// 通关记录\nmessage TowerReplay {\n    int64 Id       = 1; // 战报\n    string PlrId   = 2; \n    string Name    = 3; \n    int32 Head     = 4; \n    int32 HFrame   = 5;\n    int64 AtkPower = 6;\n    int64 Ts       = 7; // 战斗时间\n}\n\n// ============================================================================\n\n// 挑战\nmessage C_TowerFight { // msgid: 8600\n}\n\nmessage GS_TowerFight_R { // msgid: 8601\n    int32 ErrorCode = 1;\n    bytes Replay    = 2;\n    Rewards Rewards = 3;\n    int32 LvNum     = 4; // 当前通关序号\n}\n\n// 获取每层信息\nmessage C_TowerGetLevelInfo { // msgid: 8604\n    int32 LvNum = 1;\n}\n\nmessage GS_TowerGetLevelInfo_R { // msgid: 8605\n    int32 ErrorCode     = 1;\n    TowerLevelInfo Info = 2;\n    int32 LvNum         = 3;\n}\n\n// 领取额外层奖励\nmessage C_TowerTakeRewards { // msgid: 8607\n    int32 LvNum = 1;\n}\n\nmessage GS_TowerTakeRewards_R { // msgid: 8608\n    int32 ErrorCode = 1;\n    Rewards Rewards = 2;\n    int32 LvNum     = 3;\n}\n\n// 更新时间戳\nmessage GS_TowerUpateTs { // msgid: 8609\n    int64 CacuTs            = 1; // 计算时间戳\n}\n\n// 到点客户端请求计算\nmessage C_TowerCacuItem { // msgid: 8610\n    \n}\n\nmessage GS_TowerCacuItem_R { // msgid: 8611\n    int32 ErrorCode = 1;\n}\n\n// 每日更新\nmessage GS_TowerUpdateLastLv { // msgid: 8616\n    int32 LastLv = 1;\n}\n\n\n// 自动挑战\nmessage C_TowerAutoFight { // msgid: 8617\n}\n\nmessage GS_TowerAutoFight_R { // msgid: 8618\n    int32 ErrorCode = 1;\n    bool Win        = 2;\n    Rewards Rewards = 3;\n    int32 LvNum     = 4; // 当前通关序号\n    int32 Code      = 5; // 内部错误码\n}\n\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [7700, 7800)\n// ============================================================================\n\n\n// ============================================================================\n\n// 公会信息\nmessage GuildRow {\n    string Id        = 1; // 公会ID\n    string Name      = 2; // 公会名\n    int32 Lv         = 3; // 公会等级\n    int32 MemberN    = 4; // 成员数量\n    int32 AMode      = 5; // 申请类型\n    int32 NeedLv     = 6; // 申请所需等级\n    int64 AtkPwr     = 7; // 公会战力\n    int32 Rank       = 8; // 公会排名\n    string OwnerName = 9; // 会长名字\n    int32 Icon       = 10; // 公会图标\n    string NoticeOut = 11; // 对外公告\n}\n\nmessage GuildInfo {\n    GuildRow Row        = 1;\n    string Notice       = 2; // 对内公告\n}\n\nmessage GuildInfo_Full {\n    GuildRow Row                 = 1;\n    int32 Exp                    = 2;\n    string Notice                = 3;\n    repeated GuildMemberInfo Mbs = 4;\n}\n\n// 成员信息\nmessage GuildMemberInfo {\n    string Id                = 1;  // 玩家id\n    string Name              = 2;  // 玩家名\n    int32 Head               = 3;  // 头像\n    int32 HFrame             = 4;  // 头像框\n    int32 Figure             = 5;  // 形象id\n    int32 Title              = 6;  // 称号\n    int32 Lv                 = 7;  // 等级\n    int32 Rank               = 8;  // 公会职位\n    int64 AtkPwr             = 9;  // 战力\n    bool Online              = 10; // 是否在线\n    int64 OfflineTs          = 11; // 离线时间\n    int32 Contribution       = 13; // 总贡献\n    int32 DailyContribution  = 14; // 今日贡献\n    int32 WeeklyContribution = 15; // 每周贡献\n    bool GuildWar            = 16; // 公会战参加资格\n    int64 JoinTs             = 17; // 加入工会时间戳\n}\n\n// 申请人信息\nmessage GuildApplyRow {\n    string Id       = 1; // 玩家id\n    string Name     = 2; // 玩家名\n    int32 Head      = 3; // 头像\n    int32 HFrame    = 4; // 头像框\n    int32 Lv        = 5; // 等级\n    int64 AtkPwr    = 6; // 战力\n    bool Online     = 7; // 是否在线\n    int64 OfflineTs = 8; // 离线时间\n}\n\nmessage GuildRankRec {\n    string PlrId = 1;\n    double Score = 2;\n}\n\n// ============================================================================\n// 推送\n\nmessage GS_Guild_Join { // msgid: 7700\n    string GuildId     = 1;\n    string GuildName   = 2;\n    GuildMemberInfo Mb = 3;\n}\n\nmessage GS_Guild_Leave { // msgid: 7701\n    int32 Reason = 1;\n    string PId   = 2;\n    string PName = 3;\n}\n\nmessage GS_Guild_Rank { // msgid: 7702\n    string PId   = 1;\n    string PName = 2;\n    int32 Rank   = 3;\n}\n\nmessage GS_Guild_Lv { // msgid: 7703\n    int32 Level = 1;  // -1 表示无变化\n    int32 Exp   = 2;\n}\n\n// ============================================================================\n\n// 创建公会\nmessage C_GuildCreate { // msgid: 7710\n    string Name         = 1;\n    int32 AMode         = 2;\n    string Notice       = 3;\n    int32 Icon          = 4;\n    string NoticeOut    = 5;\n    int32 NeedLv        = 6; // 等级\n}\n\nmessage GS_GuildCreate_R { // msgid: 7711\n    int32 ErrorCode = 1;\n}\n\n// 解散公会\nmessage C_GuildDestroy { // msgid: 7712\n}\n\nmessage GS_GuildDestroy_R { // msgid: 7713\n    int32 ErrorCode = 1;\n}\n\n// 更改设置\nmessage C_GuildChangeSetting { // msgid: 7714\n    int32 AMode         = 1;\n    int32 NeedLv        = 2;\n    string Notice       = 3;\n    int32 Icon          = 4;\n    string NoticeOut    = 5;\n}\n\nmessage GS_GuildChangeSetting_R { // msgid: 7715\n    int32 ErrorCode = 1;\n    int32 AMode     = 2;\n    int32 NeedLv    = 3;\n    string Notice   = 4;\n    int32 Icon      = 5;\n    string NoticeOut= 6;\n}\n\n// 拉取公会列表\nmessage C_GuildList { // msgid: 7716\n}\n\nmessage GS_GuildList_R { // msgid: 7717\n    int32 ErrorCode        = 1;\n    repeated GuildRow Rows = 2;\n}\n\n// 拉取玩家自己申请的公会列表\nmessage C_GuildPlrApplyList { // msgid: 7718\n}\n\nmessage GS_GuildPlrApplyList_R { // msgid: 7719\n    int32 ErrorCode        = 1;\n    repeated GuildRow Rows = 2;\n}\n\n// 公会查找\nmessage C_GuildSearch { // msgid: 7720\n    string Id = 1;\n}\n\nmessage GS_GuildSearch_R { // msgid: 7721\n    int32 ErrorCode        = 1;\n    repeated GuildRow Rows = 2;\n}\n\n// 拉取公会接收的申请列表\nmessage C_GuildApplyList { // msgid: 7722\n}\n\nmessage GS_GuildApplyList_R { // msgid: 7723\n    int32 ErrorCode             = 1;\n    repeated GuildApplyRow Rows = 2;\n}\n\n// 拉取公会信息\nmessage C_GuildInfo { // msgid: 7724\n    string GuildId = 1;\n}\n\nmessage GS_GuildInfo_R { // msgid: 7725\n    int32 ErrorCode = 1;\n    GuildInfo Info  = 2;\n}\n\n// 拉取完整公会信息\nmessage C_GuildInfoFull { // msgid: 7726\n}\n\nmessage GS_GuildInfoFull_R { // msgid: 7727\n    int32 ErrorCode     = 1;\n    GuildInfo_Full Info = 2;\n}\n\n// 申请入会\nmessage C_GuildApply { // msgid: 7728\n    string GuildId = 1;\n}\n\nmessage GS_GuildApply_R { // msgid: 7729\n    int32 ErrorCode = 1;\n    string GuildId  = 2;\n}\n\n// 取消申请\nmessage C_GuildApplyCancel { // msgid: 7730\n    string GuildId = 1;\n}\n\nmessage GS_GuildApplyCancel_R { // msgid: 7731\n    int32 ErrorCode = 1;\n    string GuildId  = 2;\n}\n\n// 接受申请\nmessage C_GuildApplyAccept { // msgid: 7732\n    string PId = 1;\n}\n\nmessage GS_GuildApplyAccept_R { // msgid: 7733\n    int32 ErrorCode = 1;\n}\n\n// 拒绝申请\nmessage C_GuildApplyDeny { // msgid: 7734\n    string PId = 1;\n}\n\nmessage GS_GuildApplyDeny_R { // msgid: 7735\n    int32 ErrorCode = 1;\n}\n\n// 退出公会\nmessage C_GuildLeave { // msgid: 7736\n}\n\nmessage GS_GuildLeave_R { // msgid: 7737\n    int32 ErrorCode = 1;\n}\n\n// 踢出公会\nmessage C_GuildKick { // msgid: 7738\n    string PId = 1;\n}\n\nmessage GS_GuildKick_R { // msgid: 7739\n    int32 ErrorCode = 1;\n}\n\n// 设置职务\nmessage C_GuildSetRank { // msgid: 7740\n    string PId = 1;\n    int32 Rank = 2;\n}\n\nmessage GS_GuildSetRank_R { // msgid: 7741\n    int32 ErrorCode = 1;\n}\n\n// 公会改名\nmessage C_GuildChangeName { // msgid: 7744\n    string Name = 1;\n}\n\nmessage GS_GuildChangeName_R { // msgid: 7745\n    int32 ErrorCode = 1;\n    string Name     = 2;\n}\n\n// 一键拒绝申请\nmessage C_GuildApplyDenyOneKey { // msgid: 7746\n}\n\nmessage GS_GuildApplyDenyOneKey_R { // msgid: 7747\n    int32 ErrorCode = 1;\n}\n\n// 弹劾族长\nmessage C_GuildKickOwner { // msgid: 7748\n}\n\nmessage GS_GuildKickOwner_R { // msgid: 7749\n    int32 ErrorCode = 1;\n}\n\n// 一键接受申请\nmessage C_GuildApplyAcceptOneKey { // msgid: 7750\n}\n\nmessage GS_GuildApplyAcceptOneKey_R { // msgid: 7751\n    int32 ErrorCode = 1;\n}\n\n// 拉取其他公会完整信息\nmessage C_OtherGuildInfoFull { // msgid: 7752\n    string GuildId = 1;\n}\n\nmessage GS_OtherGuildInfoFull_R { // msgid: 7753\n    int32 ErrorCode = 1;\n    GuildInfo_Full Info = 2;\n}\n\n// 通过名字查找公会\nmessage C_GuildSearchByName { // msgid: 7754\n    string GuildName = 1;\n}\n\nmessage GS_GuildSearchByName_R { // msgid: 7755\n    int32 ErrorCode         = 1;\n    repeated GuildRow Rows  = 2;\n}\n\n// ============================================================================\n\n// 公会仓库\n\nmessage GuildStoreGoods {\n    int64 Seq         = 1; // 唯一Id\n    GuildStorePlr Plr = 2; // 谁提供的\n    int64 Ts          = 3; // 放入时间\n    Item Item         = 4; // 道具物品\n}\n\nmessage GuildStorePlr {\n    string PlrId = 1;\n    string Name = 2;\n    int32 Head = 3;\n    int32 HFrame = 4;\n}\n\n// 仓库发生变化\nmessage GS_GuildStoreChanged { // msgid: 7760\n    GuildStoreGoods NewGoods = 1; // 新的上架\n}\n\nmessage C_GuildStoreInfo { // msgid: 7761\n}\n\nmessage GS_GuildStoreInfo_R { // msgid: 7762\n    int32 ErrorCode = 1;\n    repeated GuildStoreGoods Goods = 2; // 所有物品（客户端自行排序和移除超时的）\n}\n\n// 放入仓库\nmessage C_GuildStoreSell { // msgid: 7763\n    Item Item = 1;\n}\n\nmessage GS_GuildStoreSell_R { // msgid: 7764\n    int32 ErrorCode = 1;\n    Rewards Rewards = 2;\n}\n\n// 购买\nmessage C_GuildStoreBuy { // msgid: 7765\n    int64 Seq = 1;\n}\n\nmessage GS_GuildStoreBuy_R { // msgid: 7766\n    int32 ErrorCode = 1;\n    Rewards Rewards = 2;\n}\n\n// ============================================================================\n\n// 公会砍价\n\nmessage GuildPddLog {\n    string PlrId = 1;\n    string Name = 2;\n    int32 Cut = 3;\n    bool Buy = 4; // 是否已购买\n}\n\nmessage C_GuildPddInfo { // msgid: 7767\n}\n\nmessage GS_GuildPddInfo_R { // msgid: 7768\n    int32 ErrorCode = 1;\n    repeated GuildPddLog Logs = 2;\n    int32 Price = 3; // 现价\n}\n\nmessage C_GuildPddCut { // msgid: 7769\n}\n\nmessage GS_GuildPddCut_R { // msgid: 7770\n    int32 ErrorCode = 1;\n    GuildPddLog Log = 2;\n    int32 Price = 3; // 现价\n}\n\nmessage C_GuildPddBuy { // msgid: 7771\n}\n\nmessage GS_GuildPddBuy_R { // msgid: 7772\n    int32 ErrorCode = 1;\n    Rewards Rewards = 2;\n}\n\n\n// ============================================================================\n\n// 公会BOSS\n\nmessage GuildBoss {\n    int32 Id = 1; // boss血条Id\n    int64 Dmg = 2; // 当前血条累计伤害\n    int32 KillCnt = 3; // 击杀了多少血条\n    int32 GuildRank = 4; // 公会排名\n    int32 MyRank = 5; // 个人排名\n    repeated int32 Buffs = 6; // 词条\n    int64 BuffTs = 7; // 词条上次刷新时间\n}\n\n// 公会BOSS公会排名\nmessage GuildBossGuildRank {\n    string Id        = 1; // 公会ID\n    string Name      = 2; // 公会名\n    int32 Lv         = 3; // 公会等级\n    int32 MemberN    = 4; // 成员数量\n    int32 Icon       = 5; // 公会图标\n    int64 Dmg        = 6; // 总伤害\n    int32 Rank       = 7; // 排名\n}\n\n// 公会BOSS成员个人战绩排行（客户端自己排序）\nmessage GuildBossPlrRank {\n    int64 Dmg          = 1; // 本周累计伤害\n    PlayerBaseInfo PlrBaseInfo = 2; // 个人信息\n    int32 Cnt          = 3; // 今日挑战次数\n}\n\n// 公会BOSS全服个人排行\nmessage GuildBossPlrSvrRank {\n    int64 Dmg        = 1; // 本周累计伤害\n    PlayerBaseInfo PlrBaseInfo = 2; // 个人信息\n    int32 Rank       = 3; // 排名\n}\n\n// 获取公会BOSS信息\nmessage C_GuildBossInfo { // msgid: 7773\n}\n\nmessage GS_GuildBossInfo_R { // msgid: 7774\n    int32 ErrorCode = 1;\n    GuildBoss Data = 2;\n}\n\n// 挑战公会BOSS\nmessage C_GuildBossFight { // msgid: 7775\n}\n\nmessage GS_GuildBossFight_R { // msgid: 7776\n    int32 ErrorCode = 1;\n    bytes Replay    = 2;\n    Rewards Rewards = 3;\n    int64 Dmg       = 4; // 本次造成伤害\n}\n\n// 拉取公会BOSS公会排名\nmessage C_GuildBossGuildRank { // msgid: 7777\n} \n\nmessage GS_GuildBossGuildRank_R { // msgid: 7778\n    int32 ErrorCode = 1;\n    int32 SelfIdx               = 2; // 自己的名次\n    int64 SelfScore             = 3; // 自己的排名值\n    repeated GuildBossGuildRank Data = 4;\n}\n\n// 公会BOSS成员个人战绩排行（客户端自己排序）\nmessage C_GuildBossPlrRank { // msgid: 7779\n} \n\nmessage GS_GuildBossPlrRank_R { // msgid: 7780\n    int32 ErrorCode = 1;\n    repeated GuildBossPlrRank Data = 2;\n}\n\n// 公会BOSS全服个人排行\nmessage C_GuildBossPlrSvrRank { // msgid: 7781\n} \n\nmessage GS_GuildBossPlrSvrRank_R { // msgid: 7782\n    int32 ErrorCode = 1;\n    int32 SelfIdx               = 2; // 自己的名次\n    int64 SelfScore             = 3; // 自己的排名值\n    repeated GuildBossPlrSvrRank Data = 4;\n}\n\n\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [15350, 15400)\n// ============================================================================\n\n\n// ============================================================================\n// 单个渔具\nmessage FishTool {\n  int32 Tp                  = 1; // 类型\n  int32 Lv                  = 2; // 等级\n}\n\n// 鱼\nmessage Fish {\n  int32 Id                  = 1; // 鱼id [表id]\n  int32 FSize               = 2; // 鱼尺寸\n  map<int32, double> Props  = 3; // 鱼属性列表\n}\n\n// 历史最长3条鱼\nmessage FishBox {\n  int32 Id                  = 1; // 鱼id [表id]\n  repeated Fish Top3        = 2; // 鱼集合\n  int32 Lv                  = 3; // 鱼等级\n  int32 Exp                 = 4; // 鱼经验\n}\n\n// 任务\nmessage FishTask {\n  int32 ConfId = 1;\n  int32 Val = 2;\n  bool Fin = 3;\n  bool Taken = 4;\n}\n\n//钓鱼图鉴\nmessage FishHandBook {\n    int32 Lv = 1; // 图鉴等级\n    int32 Exp = 2; // 图鉴经验\n}\n\n// 鱼群\nmessage FishPoint {\n    int64 Seq = 1;\n    int32 Id  = 2;\n    int64 Ts  = 3; // 产生时间(需要客户端判断消失)\n    FishPlrInfo Master = 4; // 召唤者(空表示系统产生)\n    repeated FishPlrInfo Plrs = 5; // 当前垂钓玩家\n}\n\n// 鱼池\nmessage FishPool {\n    int32 PoolId = 1;\n    repeated FishPoint Points = 2;\n}\n\n// 钓鱼日志(鱼篓)\nmessage FishRecord {\n    int32 Status = 1; // (0：钓到鱼，1：鱼逃跑， 2：鱼线断)\n    Fish Fish = 2; // 鱼或垃圾\n}\n\nmessage Fishing {\n  repeated FishRecord Records = 1; // 当前渔获\n  repeated FishTool FishTools = 2; // 渔具集\n  repeated FishBox FishBoxes  = 3; // 鱼灵\n  FishHandBook FishHandBook   = 4; // 图鉴\n  repeated FishTask Tasks     = 5; // 任务\n  int32 Lv                    = 6; // 渔人等级\n  int32 PoolId                = 7; // 池子id\n}\n\nmessage FishPlrInfo {\n    string PlrId  = 1;  // 玩家id\n    string Name   = 2;  // 玩家名\n    int32 SvrId   = 3;  // 服务器id\n    int32 Sex     = 4;  // 性别\n}\n\n// ============================================================================\n\nmessage C_FishingInfo { // msgid: 15350\n}\n\nmessage GS_FishingInfo_R { // msgid: 15351\n    int32 ErrorCode  = 1;\n    Fishing Info     = 2;\n}\n\nmessage C_FishingFishPoolInfo { // msgid: 15352\n}\n\nmessage GS_FishingFishPoolInfo_R { // msgid: 15353\n    int32 ErrorCode  = 1;\n    repeated FishPool Pools = 2;\n}\n\n// 进入或切换鱼池\nmessage C_FishingEnterPool { // msgid: 15354\n    int32 PoolId = 1;\n    int64 PointSeq = 2; // 可以为0\n}\n\nmessage GS_FishingEnterPool_R { // msgid: 15355\n    int32 ErrorCode  = 1;\n}\n\n// 召唤鱼群\nmessage C_FishingPointCreate { // msgid: 15356\n}\n\nmessage GS_FishingPointCreate_R { // msgid: 15357\n    int32 ErrorCode = 1;\n    Rewards Rewards = 2; // 奖励\n}\n\n// 主动退出鱼群\nmessage C_FishingPointExit { // msgid: 15358\n}\n\nmessage GS_FishingPointExit_R { // msgid: 15359\n    int32 ErrorCode = 1;\n}\n\n// 剔出鱼群\nmessage C_FishingPointKick { // msgid: 15360\n    string PlrId = 1;\n}\n\nmessage GS_FishingPointKick_R { // msgid: 15361\n    int32 ErrorCode = 1;\n}\n\n// 当前鱼群更新\nmessage GS_FishingPointUpdate { // msgid: 15362\n    int32 PoolId = 1;\n    FishPoint Point = 2;\n}\n\n// 钓鱼\nmessage C_FishingFish { // msgid: 15363\n}\n\nmessage GS_FishingFish_R { // msgid: 15364\n    int32 ErrorCode   = 1;\n    FishRecord Record = 2;\n}\n\n// 一键领取\nmessage C_FishingTaken { // msgid: 15365\n}\n\nmessage GS_FishingTaken_R { // msgid: 15366\n    int32 ErrorCode = 1;\n    repeated FishBox FishBoxes  = 2; // 鱼灵\n    Rewards Rewards = 3; // 奖励\n}\n\n// 渔具升级/突破\nmessage C_FishingFishToolLvUp { // msgid: 15367\n    int32 Tp    = 1; // 渔具类型(配置表中类型)\n}\n\nmessage GS_FishingFishToolLvUp_R { // msgid: 15368\n    int32 ErrorCode = 1;\n    int32 Tp        = 2;\n    FishTool Tool   = 3;\n}\n\n// 升级渔人等级\nmessage C_FishingLvUp { // msgid: 15369\n}\n\nmessage GS_FishingLvUp_R { // msgid: 15370\n    int32 ErrorCode = 1;\n    int32 Lv = 2;\n}\n\n// 购买体力\nmessage C_FishingBuyEnergy { // msgid: 15371\n}\n\nmessage GS_FishingBuyEnergy_R { // msgid: 15372\n    int32 ErrorCode = 1;\n    Rewards Rewards = 2; // 奖励\n}\n\n// 领取任务奖励\nmessage C_FishingFishTakeTaskRewards { // msgid: 15373\n    int32 Id  = 1;\n}\n\nmessage GS_FishingFishTakeTaskRewards_R { // msgid: 15374\n    int32 ErrorCode         = 1;\n    int32 Id                = 2; // 任务表id\n    Rewards Rewards         = 3; // 奖励 \n}\n\n// 任务变化 -- 推送\nmessage GS_FishingValueChanged { // msgid: 15375\n    repeated FishTask Obj  = 1;\n}\n\n// 重置 -- 推送\nmessage GS_FishingReset { // msgid: 15376\n    repeated FishTask Tasks  = 1; // 任务\n}\n\n// 升级图鉴鱼\nmessage C_FishingFishBoxUp { // msgid: 15377\n    int32 Id = 1; // 鱼Id\n}\n\nmessage GS_FishingFishBoxUp_R { // msgid: 15378\n    int32 ErrorCode = 1;\n    int32 Id = 2;  // 鱼Id\n    int32 Lv = 3;  // 鱼等级\n    int32 Exp = 4; // 鱼经验\n}\n\n// 升级图鉴\nmessage C_FishingHandBookLevelUp { // msgid: 15379\n}\n\nmessage GS_FishingHandBookLevelUp_R { // msgid: 15380\n    int32 ErrorCode = 1;\n    int32 Lv = 2;\n    int32 Exp = 3;\n}\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [7300, 7400)\n// ============================================================================\n\nmessage StatusTab {\n    int32 StatusId = 1;\n    int32 Val = 2;\n}\n\nmessage ActCalendarData {\n    int32 Id                 = 1;  // actid\n    int32 Sort               = 2;  // sort\n    string Name              = 3;  // name\n    string Desc              = 4;  // description\n    int32 Type               = 5;  // type\n    int32 ConfKey            = 6;  // current act confkey\n    string Flag              = 7;  // flag string\n    int64 Open               = 8;  // open timestamp\n    int64 Start              = 9;  // start timestamp\n    int64 End                = 10; // stop timestamp\n    int64 Close              = 11; // close timestamp\n    int32 Stage              = 12; // current stage\n    repeated int32 BanServer = 13; // client cant see\n    repeated StatusTab Status = 14;\n    int32 NeedDays           = 15;\n}\n\nmessage ActConfData {\n    string Name = 1; // conf name\n    bytes Data  = 2; // marshalled binary\n}\n\n// ============================================================================\n\nmessage GS_ActCalendarChange { // msgid: 7300\n}\n\nmessage GS_ActConfChange {   // msgid: 7301\n    int32 Id            = 1; // actid\n    int32 ConfKey       = 2; // current confkey\n    bool Force          = 3; // force pull  是否是热加载\n    ActCalendarData Act = 4;\n}\n\nmessage GS_ActStageChange { // msgid: 7302\n    int32 Id    = 1;        // actid\n    int32 Stage = 2;\n}\n\n// ============================================================================\n\nmessage C_ActCalendarGet { // msgid: 7320\n}\n\nmessage GS_ActCalendarGet_R { // msgid: 7321\n    int32 ErrorCode               = 1;\n    repeated ActCalendarData Acts = 2;\n}\n\nmessage C_ActConfGet { // msgid: 7322\n    int32 Id = 1;      // actid\n}\n\nmessage GS_ActConfGet_R { // msgid: 7323\n    int32 ErrorCode            = 1;\n    int32 Id                   = 2;\n    repeated ActConfData Confs = 3;\n}\n\r\n\r\n\r\n\r\n// ============================================================================\r\n// msgid range for C <-> GS: [5300, 5400)\r\n// ============================================================================\r\n\r\n\r\n// ============================================================================\r\n\r\n\r\n// ============================================================================\r\n\r\n// 英雄变化\r\nmessage GS_HeroUpdate { // msgid: 5300\r\n    Hero Hero = 1;\r\n}\r\n\r\n// ============================================================================\r\n\r\n// 英雄升级\r\nmessage C_HeroLevelUp { // msgid: 5310\r\n    int32 Id = 1;       // 英雄Id\r\n    int32 AddLv  = 2;   // 递增升级数\r\n}\r\n\r\nmessage GS_HeroLevelUp_R { // msgid: 5311\r\n    int32 ErrorCode = 1;\r\n}\r\n\r\n// 英雄升星\r\nmessage C_HeroStarUp { // msgid: 5314\r\n    int32 Id = 1;   // 英雄Id\r\n}\r\n\r\nmessage GS_HeroStarUp_R { // msgid: 5315\r\n    int32 ErrorCode = 1;\r\n    int32 Id = 2;\r\n    int32 Star = 3;\r\n}\r\n\r\n// 获取英雄养成信息\r\nmessage C_GetHeroInfo { // msgid: 5345\r\n    string PlrId = 1;\r\n    int32 SvrId = 2;\r\n    int32 Id = 3;\r\n}\r\n\r\nmessage GS_GetHeroInfo_R { // msgid: 5346\r\n    int32 ErrorCode = 1;\r\n    HeroInfo_Full Info = 2;\r\n}\r\n\r\n// 英雄突破\r\nmessage C_HeroStepUp { // msgid: 5347\r\n    int32 Id = 1;       // 英雄Id\r\n}\r\n\r\nmessage GS_HeroStepUp_R { // msgid: 5348\r\n    int32 ErrorCode = 1;\r\n}\r\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [7200, 7300)\n// ============================================================================\n\n\n// ============================================================================\n\nmessage TutorialData {\n    int32 Step = 1; //\n}\n\n// ============================================================================\n\n// 设置步骤\nmessage C_TutorialSet { // msgid: 7200\n    int32 Step = 1;\n    string Key = 2;\n}\n\nmessage GS_TutorialSet_R { // msgid: 7201\n    int32 ErrorCode = 1;\n    Rewards Rewards = 2;\n}\n\n\n\n\n// ============================================================================\n// msgid range for C <-> GS: [9500, 9600)\n// ============================================================================\n\n\n// ============================================================================\n// 藏宝海湾\n\nmessage LostTreasure {\n    int32 Id  = 1; // 第几关，初始0\n}\n\n// ============================================================================\n\nmessage C_LostTreasureFight { // msgid: 9500\n}\n\nmessage GS_LostTreasureFight_R { // msgid: 9501\n    int32 ErrorCode            = 1;\n    bytes Replay               = 2;\n    Rewards Rewards            = 3; // 通关奖励\n    int32 Id                   = 4; // 当前通关序号\n}\n\n// 扫荡\nmessage C_LostTreasureSweep { // msgid: 9502\n    bool IsAd = 1; // 是否广告\n}\n\nmessage GS_LostTreasureSweep_R { // msgid: 9503\n    int32 ErrorCode            = 1;\n    Rewards Rewards            = 2;\n}\n"]],0,0,[],[],[]]