syntax = "proto3";


// ========== 定义通用结构 =======
message p_id_num{
    optional int32 id = 1;              // id
    optional int32 num = 2;             // num
}

message p_v{
    optional int32 id = 1;
}

// ========== 定义通用结构 =======
message s2c_box_reward {
    repeated p_box_reward reward = 2; 		// 奖励详情
}
message p_box_reward {
    optional int32 boxid= 1;            // id
    repeated p_id_num reward = 2; 		// 奖励详情
}

//--------------登录注册-----------------
//玩家登录,如果玩家没帐号，那就自动注册
message c2s_login {
	optional string token = 1; 		    // token
	optional int32 platformID = 2;      // 平台号
	optional string channelID = 3;      // 渠道名字
	optional string deviceIMEI = 4;     // 设备号
	optional int32 inviteID = 5;        // 邀请人id
	optional string appsid = 6;         // app渠道sid
	optional string appuid = 7;         // app渠道uid
}
message s2c_login {
	optional e_code code = 1 [default = ok];
	optional int32 time = 2;  		    // 服务端unixtime
	repeated p_banner banner = 3; 		// banner概率
	optional int32 watchskip = 4;  		// (0为看视频,100为跳转游戏)
	optional int32 id = 5;              // 玩家id
}
message p_banner {
	optional int32 bhour = 1;           // 开始小时
	optional int32 ehour = 2;           // 结束小时
	optional int32 rate = 3;            // 立即弹出概率
}


// 获得玩家openid
message c2s_get_openid {
    optional string jscode = 1;
    optional string platform = 2;   //(微信wx;头条tt)
    optional string encryptedData = 3;   //
    optional string iv = 4;   //
}
message s2c_get_openid {
    optional string openid = 1;
    optional string sessionkey = 2;
}

//k = 1, v = 0  //战斗中banner套路开启时间（秒数）
//k = 2, v = 0  //战斗中banner中套路后下一次套路间隔（秒数）
//k = 3, v = 2  //战斗中banner套路次数
//k = 4，v = 80 //战斗死亡插屏出现几率（0-100）
//k = 5，v = 0 //（开启b列表套路,默认1开启0关闭）（玩家昵称在屏蔽库中，直接为0关闭）
//k = 6，ip屏蔽-已废弃
//k = 7,V = 0  //B列表套路概率
//k = 8,V = 0  //世界聊天开关-默认1开启0关闭
//k = 9,V = 0  //世界聊天CD-秒
//k = 10,V = 0  //局内聊天开关-默认1开启0关闭
//k = 11,V = 0  //免除非视频广告状态：1免广告，0不免广告        玩家数据，不配置
//k = 12,V = 0  //免视频广告剩余次数                                            玩家数据，不配置
//k = 13,V = 0  //玩家注册时间                                            玩家数据，不配置
message s2c_update_banner {
	repeated p_banner banner = 1; 		// banner概率
	optional int32 watchskip = 2;  		// (0为看视频,100为跳转游戏)
    optional int32 allswatch = 3;       // 总开关(0为关闭,1为开启)
    optional int32 shareswatch = 4;     // 分享开关(0为关闭,1为开启)
    optional int32 watchskipZTL = 5;    // 重套路跳转概率
    optional int32 finishBattle = 6;    // 当天完成战斗次数
    optional int32 stageBtl = 7;        // 开启b列表套路的星数
    repeated p_id_num kv = 8; 		    // kv列表
}

message s2c_is_new {
    optional int32 is_new = 1;    // 1新手；0老手
}

// oppo 渠道推送名字头像
message s2c_name_url {
    optional string name = 1;
    optional string txurl = 2;
}

// 删除账号
message c2s_clean_account {
}
message s2c_clean_account {
    optional e_code code = 1 [default = ok];
}

// 账号绑定openid 使用new字段，替换old字段
message c2s_bind {
    optional string old = 1;
    optional string new = 2;
}
message s2c_bind {
    optional e_code code = 1 [default = ok];
}

//--------------玩家信息-----------------
message c2s_get_player_info{
}
message s2c_get_player_info{
	optional int32 id = 1;
	optional int32 gold = 2;     // 金币
	optional int32 diamond = 3;  // 钻石
	optional int32 role_id = 4;  // 玩家使用的角色
	optional int32 stage = 5;    // 段位
	optional int32 score = 6;    // 段位积分
	optional int32 mwSP = 7;     // 铭文碎片数量
	optional int32 heroSP = 8;   // 英雄碎片数量
    optional int32 lv = 9;       // 等级
    optional int32 exp = 10;     // 经验(总值)
    optional int32 relive = 11;  // 复活币数量
    optional int32 shen = 12;     // 省
    optional int32 shi  = 13;     // 市
    optional int32 sstime = 14;   // 修改省市的时间戳（0表示当天未修改，其他表示时间戳）
    optional int32 kfrc = 15;     // kf_reward_count 客服今日领奖次数
    repeated p_id_num mw_info = 16; // 铭文碎片信息
    optional int32 yxdq = 17;       // 游戏点券
    optional int32 pfsp = 18;       // 皮肤碎片
    optional int32 yxsp = 19;       // 英雄碎片
    optional int32 cbym = 20;       // 翅膀羽毛数量
    repeated p_id_num itemkv = 21;  // 物品kv：id num
    optional int32 xxlv = 22;       // 休闲模式当前等级
    optional int32 xxmaxlv = 23;    // 休闲模式最高等级
    optional int32 kbcount = 24;    // 当天移动积分兑换次数
    optional int32 isnew = 25;    // 是否新玩家（一局都没有打过的玩家）
}

//玩家身上属性修改
message s2c_refresh_player_attr{
	repeated p_id_num attrs = 1; 		// 属性列表
}

//心跳包
message c2s_heart_check{
}
message s2c_heart_check{
	optional int64 time = 1;		// 服务器时间戳
}

// 修改微信相关信息
message c2s_update_wx_data {
    optional string name = 1;
    optional string txurl = 2;
    optional int32 sex = 3;     // 1男2女3未设置
    optional int32 client_version = 4;  // 前段版本号
}
message s2c_update_wx_data {
    optional e_code code = 1;
}

// 修改省市
message c2s_update_shen_shi {
    optional int32 shen = 1;        // 省
    optional int32 shi = 2;         // 市
}
message s2c_update_shen_shi {
    optional e_code code = 1;
    optional int32 shen = 2;     // 省
    optional int32 shi  = 3;     // 市
    optional int32 sstime = 4;   // 修改省市的时间戳（0表示当天未修改，其他表示时间戳）
}

// 修改名字
message c2s_update_name {
    optional string name = 1;
    optional string txurl = 2;
}
message s2c_update_name {
    optional e_code code = 1;
}

// 红点:
// 1七日签到;
// 2转盘;
// 3免费金币;
// 4免费钻石;
// 5铭文商店;
// 6免费碎片;
// 7休闲模式通关奖励;
// 8成就领奖;
// 9邀请好友;
// 10天梯战场排位领奖
// 其他为：活动id
message c2s_red_point {
}
message s2c_red_point {
    repeated p_id_num point = 1;   // 红点信息:1表示显示;0不显示
}

// oppo 语音签名
message c2s_oppo_yy_sign {
    optional string token = 1;
    optional string nonceStr = 2;
    optional int64 timeStamp = 3;
    optional string channelName = 4;
}
message s2c_oppo_yy_sign {
    optional string sign = 1;
}

// wx 语音签名
message c2s_wx_yy_sign {
    optional string groupId = 1;
    optional string nonceStr = 2;
    optional string timeStamp = 3;
    optional string session_key = 4;
}
message s2c_wx_yy_sign {
    optional string sign = 1;
}

// kb 渠道获取url
message c_get_kb_url {
}
message s_get_kb_url {
    optional string url = 1;
}

// 减少免视频广告次数
message c_decrease_noad_count {
}
message s_decrease_noad_count {
    optional e_code code = 1;
}

// 获取玩家展示数据
message c2s_player_show {
    optional int32 playerid = 1;
}
message s2c_player_show {
    optional string name = 1;       // 名字
    optional string url = 2;        // 头像url
    optional int32 showid = 3;      // 展示的英雄id
    optional int32 winnum = 4;      // 排位赛总胜场
    optional int32 failnum = 5;     // 排位赛总败场
    optional int32 mvpnum = 6;      // 排位赛mvp
    optional int32 regtime = 7;     // 注册时间
    optional int32 rolenum = 8;     // 英雄数量
    optional int32 skinnum = 9;     // 皮肤数量
    repeated p_shownum battlenuml = 10; // 地图对应的战斗场次
    repeated p_showrole rolel = 11;  // 地图对应的英雄使用详情
    repeated p_stage stagel = 12;  // 地图对应的最高段位
    optional int32 playerid = 13;
}
message p_shownum {
    optional int32 mapid = 1;   // 地图id
    optional int32 count = 2;   // 场次数
}
message p_showrole {
    optional int32 mapid = 1;   // 地图id
    repeated p_rs roleshow = 2;   // 角色场次展示
}
message p_rs {              // p_roleshow 的简称
    optional int32 id = 1;
    optional int32 win = 2;
    optional int32 fail = 3;
    optional int32 usetime = 4;
    optional int32 shuliandu = 5;       // 熟练度
    optional int32 rongyuzhi = 6;       // 荣誉值
}
message p_stage {
    optional int32 mapid = 1;   // 地图id
    optional int32 stage = 2;   // 当前赛季段位
    optional int32 maxstage = 3;   // 该地图最大段位
}

// 改变玩家展示的角色
message c2s_shange_show_id {
    optional int32 id = 1;
}
message s2c_shange_show_id {
    optional e_code code = 1;
}

// 成就奖励领奖
message c2s_get_achieve_reward {
    optional int32 index = 1;
    optional int32 type = 2;        // 1普通2视频
}
message s2c_get_achieve_reward {
    optional e_code code = 1;
}
// 视频开始时，上传协议
message c2s_ad_begin {
}

//-------------------下面是战斗协议----------------
// 自由匹配
message c2s_add_match{
}
message s2c_add_match{
    optional e_code code = 1;
}
// 取消匹配
message c2s_del_match{
}
message s2c_del_match{
    optional e_code code = 1;
}
// 匹配成功，双方信息
message s2c_match_success{
    repeated p_pvp_player player = 1;
    optional int32 is_new = 2;    // 1新手局；0正常局
    optional int32 mapid = 3;	  // 地图id
    optional int32 offline = 4;	  // 单机模式：1是 0否
    optional int32 frameCD = 5;	  // 战场帧率
}
message p_pvp_player{
    optional int32 id = 1;           // id
    optional int32 team = 2;	     // 队伍标志 1 蓝队 2 红队
    optional string wxname = 3;      // 微信名字
    optional string wxtxurl = 4;     // 微信头像url
    optional int32 role = 5;         // 角色
    optional int32 roleLv = 6;      // 选择的角色等级
    optional int32 state = 7;        // 状态：0匹配完成；1加载已完成；
    optional int32 stage = 8;        // 段位
    repeated p_id_num rank = 9;      // 排行 [{1全国2地区3省份,排名}]
    optional int32 client_version = 10;  // 前段版本号
    optional int32 temp_id = 11;    // 角色战场映射id：1-10
    optional int32 skillID = 12;    // 技能id
    optional int32 skillLv = 13;    // 技能lv
    repeated p_id_num attr = 14;     // 附加属性
    optional int32 kjfl = 15;       // 开局福利
    optional int32 ailevel = 16;   // ai等级
    optional int32 team_id = 17;   // 队伍id
    optional int32 wingShowID = 18;     // 翅膀id
    optional int32 wingLv = 19;         // 翅膀等级
    repeated p_id_num roleskill = 20;   // 该英雄的技能
}

// 匹配成功，推送id，用于oppo语音
message s2c_match_success_id{
    repeated p_id_num idl = 1;      // 原语音id列表
    repeated p_team_id teamidl = 2;  // 队伍id列表
}

message p_team_id{
    optional int32 id = 1;           // id
    optional int32 team = 2;	     // 队伍标志 1 蓝队 2 红队
    optional int32 teamid = 3;      // 队伍id
}

// 加载资源完成
message c2s_ready_battle{
}
message s2c_ready_battle{
    optional e_code code = 1;
}

// 全部准备完毕，开始战斗的协议
message s2c_begin_battle{
	optional int32 randomSeed = 1;	//随机种子
}

// 推送每一帧的操作
message s2c_send_frame_act {
    optional int32 frameid = 1;			   // 帧号
    repeated p_pvp_action action = 2;      // 操作列表
}

message p_pvp_action{
    optional int32 id = 1;		// 玩家id
    repeated p_v value = 2;   // 操作值
}

// 采集每帧的操作
message c2s_up_act{
    repeated p_pvp_action action= 1;  // 操作数据
}

// 战场定时器
message c2s_battle_timer{
}

// 战斗结算
message c2s_battle_result{
    repeated p_battle_result result= 1;  // 结算数据
    repeated p_id_num moster = 2;       // 击杀野怪统计：[{位置序号，击杀次数}]
}
message p_battle_result{
    optional int32 id = 1;           // 玩家id
    optional int32 winfail = 2;      // 胜利1，失败0
    optional int32 roleid = 3;      // 角色id
    optional int32 roleLv = 4;      // 选择的角色等级
    optional int32 gold = 5;         // 本局获得的金钱
    optional int32 diamond = 6;      // 本局总伤害
    optional int32 bediamond = 7;    // 本局受到的总伤害(新版本为通关时间)
    optional int32 killnum = 8;      // 击杀数
    optional int32 assistnum = 9;    // 助攻数
    optional int32 deadnum = 10;      // 死亡数
    optional int32 conkillnum = 11;  // 本局最高连续击杀数
    optional int32 isMVP = 12;       // 是否mvp:1是,0不是
    repeated p_id_num achieve = 13;  // 成就kv
    repeated p_v equip = 14;         // 装备kv
    optional int32 mapid = 15;       // 地图id
}

// 比赛结果
message s2c_battle_result{
    optional int32 result = 1;           // 结果：0失败1胜利2平局
    optional int32 stage = 2;            // 新段位
    optional int32 score = 3;            // 新段位积分
    optional int32 boxid = 4;            // 获得宝箱id
    optional int32 boxnumget = 5;        // 获得宝箱次数
    optional int32 boxnumlimit = 6;      // 获得宝箱次数限制
    repeated p_exp exp = 7;              // 经验信息
    optional int32 xxlv = 8;             // 休闲模式当前等级
}
message p_exp{
    optional int32 id = 1;              //
    optional int32 teamnum = 2;        // 队伍人数
    optional int32 exp = 3;             // 经验值（计算队伍人数加成后的总值）
}

// 组队模式，队伍信息（匹配已队伍为标准）
message c2s_team_info{
}
message p_team{
    optional int32 id = 1;           // 玩家id
    optional string name = 2;        // 昵称
    optional string url = 3;         // 头像
    optional int32 state = 4;        // 状态:0未准备;1已准备
    optional int32 isCreater = 5;    // 是否房主:0不是;1是
    optional int32 roleID = 6;       // 玩家选择的角色id
    optional int32 stage = 7;        // 段位
    optional int32 client_version = 8;  // 前段版本号
    optional int32 roleLv = 9;       // 玩家选择的角色等级
    optional int32 wingShowID = 10;     // 翅膀id
    optional int32 wingLv = 11;         // 翅膀等级
}
message s2c_team_info{
    optional e_code code = 1;            //
    optional int32 teamID = 2;          // 队伍id
    repeated p_team team = 3;   // 队员信息
    optional int32 mapID = 4;           // 地图id
    repeated p_team team2 = 5;   // 1v1中的对方信息
    optional int32 xxlv = 6;           // 休闲模式等级
}

// 加入队伍 全队伍推送s2c_team_info
message c2s_join_team{
    optional int32 teamID = 1;  // 0表示创建队伍，其他id表示队伍id
    optional int32 mapID = 2;   // 地图id，创建队伍时传入，加入队伍时无用
}
message s2c_join_team{
    optional e_code code = 1;
}


// 离开房间 全队伍推送s2c_team_info
message c2s_leave_team{
    optional int32 teamID = 1;  // 当前房间id
}

// 邀请好友（待定）
// 收到他人邀请（待定） - 走加入队伍c2s_join_team流程，根据s2c_team_info返回的错误码判断是否成功
// 踢出队伍（待定） - 走加入队伍c2s_join_team流程，根据s2c_team_info返回的错误码判断是否成功
message c2s_team_tiren {
    optional int32 otherid = 1;  // 被踢人id
}
message s2c_team_tiren {
    optional int32 otherid = 1;  // 踢人者id
}


// 队伍中准备，全队伍推送s2c_team_info
message c2s_team_ready{
    optional int32 teamID = 1;   // 队伍id
    optional int32 state = 2;    // 状态:0未准备;1已准备
}

// 进游戏时请求，当前是否有战场需要恢复
message c2s_battle_recover {
}
message s2c_battle_recover {
    optional int32 battleid = 1;                     // 战场id，0表示当前无战场
    optional int32 randomSeed = 2;	                // 随机种子
    repeated p_pvp_player player = 3;       // 双方对战信息
    optional int32 is_new = 4;              // 1新手局；0正常局
    optional int32 mapid = 5;	                // 地图id
    optional int32 offline = 6;	  // 单机模式：1是 0否
    optional int32 frameCD = 7;	  // 战场帧率
}

// 前端根据需求，主动获取战斗的帧数据
message c2s_get_frame {
    optional int32 index = 1;                     // 第几页：1:1-100  2:101-200   3:201-300
}
message s2c_get_frame {
    repeated p_f frameHistory = 1;         // 帧记录
}
message p_f{
    optional int32 frameid = 1;			           // 帧号
    repeated p_pvp_action action = 2;      // 操作列表
}

// 战斗结束,看视频升级宝箱
message c2s_pvp_up_box {
}
message s2c_pvp_up_box {
    optional e_code code = 1;
    optional int32 boxid = 2;            // 获得宝箱id
}

// 战斗结束开宝箱
message c2s_pvp_open_box {
}
message s2c_pvp_open_box {
    optional int32 team_num = 1;    // 队伍人数，用于展示奖励加成
    repeated p_id_num reward = 2;   // 开箱子的奖励
}

// 玩家个人战斗详情，获取战斗数据及成就kv
message c2s_pvp_achieve {
}
message s2c_pvp_achieve {
    optional int32 win = 1;         // 胜利场次
    optional int32 fail = 2;        // 失败场次
    optional int32 mvp = 3;         // mvp数量
    repeated p_id_num rank = 4;     // 排行 [{1全国2地区3省份,排名}]
    repeated p_id_num achieve = 5;  // 成就kv
    optional int32 achieveRI = 6;   // 成就奖励-已领取奖励阶段-achieveRewardIndex的简写
    optional int32 achievelv = 7;   // 成就等级
    repeated p_acheieve_reward config = 8;  // 奖励详情
}
message p_acheieve_reward {
    optional int32 index = 1;           // 序号
    optional int32 needLv = 2;          // 需要的成就等级
    repeated p_id_num reward = 3;         // 奖励
}

// 获取历史战绩
message c2s_pvp_history {
}
message s2c_pvp_history {
    repeated p_battle_result history = 1;  // 结算数据
}

// 获取技能信息
message c2s_skill_info {
}
message s2c_skill_info {
    optional int32 cid = 1;        // 当前选择的技能id
    repeated p_id_num skill = 2;   // 技能信息
    optional int32 free = 3;       // 当天免费升级次数 0表示未升级，其他表示次数
}

// 技能升级
message c2s_skill_up {
    optional int32 id = 1;          // id
    optional int32 type = 2;          // 1免费2收费
}
message s2c_skill_up {
    optional e_code code = 1;
    optional int32 id = 2;          // id
    optional int32 lv = 3;          // lv
}

// 修改选择的技能
message c2s_skill_choice {
    optional int32 id = 1;          // id
}
message s2c_skill_choice {
    optional e_code code = 1;
    optional int32 id = 2;          // id
}

// 匹配信息推送
message c2s_match_info {
}
message s2c_match_info {
    repeated p_match_player player = 1;
}
message p_match_player{
    optional int32 id = 1;           // id
    optional int32 team = 2;	     // 队伍标志 1 蓝队 2 红队
    optional string wxname = 3;      // 微信名字
    optional string wxtxurl = 4;     // 微信头像url
    optional int32 stage = 5;        // 段位
    optional int32 role = 6;         // 角色
}

// 修改休闲模式等级
message c2s_change_xxlv{
    optional int32 xxlv = 1;           // 休闲模式等级
}
message s2c_change_xxlv{
    optional e_code code = 1;            //
    optional int32 xxlv = 2;           // 休闲模式等级
}

// 休闲模式门票获取
message c2s_get_xxmp{
}
message s2c_get_xxmp{
    optional e_code code = 1;
    repeated p_id_num reward = 2;   // 门票内容
}

// 休闲模式通关奖励 - 详情
message c2s_xx_reward_info {
}
message s2c_xx_reward_info {
    repeated p_xx_reward info = 1;   //
}
message p_xx_reward {
    optional int32 lv = 1;          // 等级
    optional int32 rns = 2;         // 普通奖励：1已领取；0未领取；2可领取
    optional int32 rads = 3;        // 视频奖励：1已领取；0未领取；2可领取
    repeated p_id_num rn = 4;       // 普通奖励-展示
    repeated p_id_num rad = 5;      // 视频奖励-展示
}

// 休闲模式通关奖励 - 领取奖励
message c2s_xx_reward_get {
    optional int32 lv = 1;          // 等级
    optional int32 type = 2;        // 1普通领取；2视频领取
}
message s2c_xx_reward_get {
    optional e_code code = 1;
    optional int32 lv = 2;          // 等级
    optional int32 type = 3;        // 1普通领取；2视频领取
}

// 休闲模式门票消耗
message c2s_cost_xxmp{
}
message s2c_cost_xxmp{
    optional e_code code = 1;
}

// 离线模式结算
message c2s_offline_result {
    optional int32 mapid = 1;           // 地图id
    optional int32 win_fail = 2;        // 1胜利 0失败
    optional int32 xxlv = 3;            // 休闲等级
    repeated p_battle_result result= 4;  // 结算数据
}


//------------------- 角色协议 ----------------
// 获得玩家人物角色
message c2s_get_player_role {
}
message s2c_get_player_role {
	repeated p_role role_list = 1;
}
message p_role{
    optional int32 id = 1;              // id
    optional int32 lv = 2;              // 等级：0表示未激活；其他表示等级
    optional int32 exp = 3;             // 经验，也就是碎片
    optional int32 demo = 4;            // 1可试玩;0不可试玩
    repeated p_id_num buy = 5;          // 购买需要的货币，列表多个时表示 “或” 关系，列表为[]表示无法通过购买获取
    optional int32 useTime = 6;         // 使用英雄的时间戳
    optional int32 demoCount = 7;       // 试玩次数：-1表示：永久，其他表示：视频次数
    optional int32 demoEtime = 8;       // 试玩结束时间戳
    optional int32 demoTodayCount = 9;  // 今日试玩次数
    optional int32 demoTodayLimit = 10; // 今日试玩次数上限
    repeated p_id_num skill = 11;       // 该英雄的技能
    optional int32 demoConfig = 12;     // 配置：试玩需要的视频次数
}

// 购买人物角色
message c2s_buy_role {
	optional int32 role_id = 1;
	optional int32 type = 2; // 消耗类型
}
message s2c_buy_role {
    optional e_code code = 1;
}
// 改变正在使用的人物角色
message c2s_change_role {
	optional int32 role_id = 1;
}
message s2c_change_role {
    optional e_code code = 1;
}

// 获取试玩角色
message c2s_get_role_demo {
	optional int32 role_id = 1;
}
message s2c_get_role_demo {
    optional e_code code = 1;
}

// 角色升级
message c2s_lv_up {
	optional int32 role_id = 1;
}
message s2c_lv_up {
    optional e_code code = 1;
    optional int32 role_id = 2;
    optional int32 lv = 3;
    optional int32 exp = 4;
}

// 角色升级不消耗金币
message c2s_lv_up_no_gold {
    optional int32 role_id = 1;
}
message s2c_lv_up_no_gold {
    optional e_code code = 1;
    optional int32 role_id = 2;
    optional int32 lv = 3;
    optional int32 exp = 4;
}

// 获取翅膀信息
message c2s_wing_info {
}
message s2c_wing_info {
    optional int32 showid = 1;      // 展示的id
    optional int32 lv = 2;          // 等级
    repeated p_v has = 3;           // 已获得的翅膀id
}

// 翅膀升级
message c2s_wing_lvup {
    optional int32 cost = 1;            // 1消耗材料&金币2消耗材料&钻石3不消耗4消耗材料
}
message s2c_wing_lvup {
    optional e_code code = 1;
    optional int32 lv = 2;      // 最新等级
}

// 翅膀更换
message c2s_wing_change {
    optional int32 showid = 1;      // 修改展示的id
}
message s2c_wing_change {
    optional e_code code = 1;
}


// ------------- 赛季信息 ------------
message c2s_season {
}
message s2c_season {
    optional int32 season_id = 1;        // 当前赛季id
    repeated p_season season_list = 2;
}
message p_season{
    optional int32 id = 1;              // 赛季id
    optional int32 stage = 2;           // 赛季段位
    optional int32 btime = 3;           // 赛季开始时间
    optional int32 etime = 4;           // 赛季结束时间
    optional int32 rewardstate = 5;     // 赛季奖励状态（1已领取；0未领取）
    repeated p_id_num reward = 6;       // 奖励
}

message c2s_season_reward {
    optional int32 season_id = 1;
    optional int32 type = 2;        // 1普通；2视频
}
message s2c_season_reward {
    optional e_code code = 1;
    repeated p_id_num reward = 2;      // 开箱子的奖励
}

// 星数操作，保护卡之类：胜利额外加1，失败不扣
message c2s_star_active {
    optional int32 type = 1;        // 1胜利时加;2失败时不扣
}
message s2c_star_active {
    optional e_code code = 1;
    optional int32 type = 2;        // 1胜利时加;2失败时不扣
    optional int32 stage = 3;       // 最终段位

}

// 活动相关
// 活动总览，注意“is_new-新手活动”的开始时间和结束时间，这是所有活动的总览
message c2s_active_list {
}
message s2c_active_list {
    repeated p_active_list list = 1;
}
message p_active_list {
    optional int32 id = 1;
    optional int32 is_new = 2;      // 1新手活动：0全员活动
    optional int32 btime = 3;
    optional int32 etime = 4;
    optional int32 state = 5;       // 1奖励已领完；0奖励未领完
}
// 通用活动-单个活动的详情
message c2s_active_info {
    optional int32 id = 1;
}
message s2c_active_info {
    optional int32 id = 1;
    optional int32 is_new = 2;      // 1新手活动：0全员活动
    optional int32 btime = 3;
    optional int32 etime = 4;
    repeated p_active_index info = 5;      // 详情
}
message p_active_index {
	optional int32 index = 1;       // 序号
    optional int32 need = 2;        // 需要的次数
    optional int32 count = 3;       // 已看视频次数
	optional int32 state = 4;       // 领取状态：0未领取;1已领取;2可领取
	repeated p_id_num reward = 5;   // 奖励详情
}

// 通用活动-领奖
message c2s_active_get {
    optional int32 id = 1;
    optional int32 index = 2;       // 序号
}
message s2c_active_get {
    optional e_code code = 1;
}

// 通用活动-活动视频次数增加
message c2s_active_ad_add {
    optional int32 id = 1;
}
message s2c_active_ad_add {
    optional e_code code = 1;
}

// 大圣归来类活动-活动详情
message c2s_active_info_dsgl {
    optional int32 id = 1;
}
message s2c_active_info_dsgl {
    optional int32 id = 1;
    optional int32 is_new = 2;      // 1新手活动：0全员活动
    optional int32 btime = 3;
    optional int32 etime = 4;
    optional int32 allnum = 5;         // 当前总数值
    repeated p_active_dsgl info = 6;           // 奖励详情
    repeated p_active_dsgl_task task = 7;      // 任务详情
}
message p_active_dsgl {
	optional int32 index = 1;       // 序号
    optional int32 need = 2;        // 需要的数值
    optional int32 allnum = 3;      // 当前总数值
	optional int32 state = 4;       // 领取状态：0未领取;1已领取;2可领取
	repeated p_id_num reward = 5;   // 奖励详情
}
message p_active_dsgl_task {
	optional int32 id = 1;          // 任务id:1获得金币2获得钻石3战斗场次4使用不同英雄完成X场5超凡开局6铭文升级7祈愿次数
    optional int32 need = 2;        // 需要的数值
    optional int32 count = 3;       // 当前总数值
    optional int32 point = 4;       // 增加的数值（助力值）
	optional int32 state = 5;       // 领取状态：0未领取;1已领取;2可领取
	repeated p_id_num reward = 6;   // 奖励详情
}

// 大圣归来类活动-领奖
message c2s_active_get_dsgl {
    optional int32 id = 1;
    optional int32 index = 2;       // 序号
}
message s2c_active_get_dsgl {
    optional e_code code = 1;
}

// 大圣归来类活动-操作增加
message c2s_active_add_dsgl {
    optional int32 id = 1;          // 活动id
    optional int32 taskID = 2;      // 任务id
    optional int32 act = 3;         // 1普通领取2视频直接完成
}
message s2c_active_add_dsgl {
    optional e_code code = 1;
}

// 重返天庭类活动-活动详情
message c2s_active_info_cftt {
    optional int32 id = 1;
}
message s2c_active_info_cftt {
    optional int32 id = 1;
    optional int32 is_new = 2;      // 1新手活动：0全员活动
    optional int32 btime = 3;
    optional int32 etime = 4;
    optional int32 freetime= 5;         // 免费cd结束时间戳
    optional int32 freeaddsys= 6;       // 免费增加的数值
    optional int32 adcount = 7;         // 视频次数
    optional int32 adlimit = 8;         // 视频次数上限
    optional int32 adaddsys= 9;         // 视频增加的数值
    optional int32 allnum = 10;         // 当前总数值
    optional int32 cfodd = 11;          // 冲锋概率
    optional int32 cfcount = 12;        // 冲锋次数
    optional int32 cflimit = 13;        // 冲锋次数上限
    optional int32 cfaddsys = 14;       // 冲锋增加的数值
    repeated p_active_cftt info = 15;      // 详情
    repeated p_active_cftt_ad adreward = 16;      // 每次看视频获得的奖励
}
message p_active_cftt {
	optional int32 index = 1;       // 序号
    optional int32 need = 2;        // 需要的数值
    optional int32 allnum = 3;      // 当前总数值
	optional int32 state = 4;       // 领取状态：0未领取;1已领取;2可领取
	repeated p_id_num reward = 5;   // 奖励详情
}
message p_active_cftt_ad {
	optional int32 index = 1;       // 序号 - 天数
	optional int32 state = 2;       // 领取状态：0未领取;1已领取
	repeated p_id_num reward = 3;   // 奖励详情
}

// 重返天庭类活动-领奖
message c2s_active_get_cftt {
    optional int32 id = 1;
    optional int32 index = 2;       // 序号
}
message s2c_active_get_cftt {
    optional e_code code = 1;
}

// 重返天庭类活动-操作增加
message c2s_active_add_cftt {
    optional int32 id = 1;          // 活动id
    optional int32 type = 2;        // 1免费 2视频 3视频冲锋
}
message s2c_active_add_cftt {
    optional e_code code = 1;
}

// 转盘抽奖类
message c2s_active_info_wheel {
    optional int32 id = 1;
}
message s2c_active_info_wheel {
    optional int32 id = 1;
    optional int32 is_new = 2;      // 1新手活动：0全员活动
    optional int32 btime = 3;
    optional int32 etime = 4;
    optional int32 count = 5;       // 当前已抽次数
    repeated p_wheel info = 6;      // 详情
}

// 转盘抽奖类
message c2s_active_get_wheel {
    optional int32 id = 1;
}
message s2c_active_get_wheel {
    optional int32 id = 1;
    optional int32 index = 2;           // 抽中序号
}

// 抽奖兑换类
message c2s_active_info_cjdh {
    optional int32 id = 1;
}
message s2c_active_info_cjdh {
    optional int32 id = 1;
    optional int32 is_new = 2;      // 1新手活动：0全员活动
    optional int32 btime = 3;
    optional int32 etime = 4;
    optional int32 count = 5;           // 当天已抽次数
    optional int32 maxcount = 6;        // 当天次数上限
    repeated p_active_cjdh info = 7;      // 详情
}

message p_active_cjdh {
    optional int32 index = 1;
    repeated p_id_num get = 2;      // 兑换获得
    repeated p_id_num need = 3;     // 兑换需求
    optional int32 state = 4;       // 领取状态：0未领取;1已领取
}

// 抽奖兑换类-抽奖操作
message c2s_active_add_cjdh {
    optional int32 id = 1;          // 活动id
}
message s2c_active_add_cjdh {
    optional e_code code = 1;
    repeated p_id_num reward = 2;   // 详情
}

// 抽奖兑换类-兑换操作
message c2s_active_get_cjdh {
    optional int32 id = 1;
    optional int32 index = 2;       // 序号
}
message s2c_active_get_cjdh {
    optional e_code code = 1;
    optional int32 index = 2;       // 序号
    repeated p_id_num reward = 3;   // 详情
}


// 转盘抽奖,每天刷新
message c2s_active_info_wheel_daily {
    optional int32 id = 1;
}
message s2c_active_info_wheel_daily {
    optional int32 id = 1;
    optional int32 is_new = 2;      // 1新手活动：0全员活动
    optional int32 btime = 3;
    optional int32 etime = 4;
    optional int32 count = 5;       // 当前已抽次数
    repeated p_wheel info = 6;      // 详情
}

// 转盘抽奖,每天刷新
message c2s_active_get_wheel_daily {
    optional int32 id = 1;
}
message s2c_active_get_wheel_daily {
    optional e_code code = 1;
    optional int32 id = 2;
    optional int32 index = 3;           // 抽中序号
}

// 直接领奖类 - 前端根据需求，后端直接发奖
message c2s_active_info_zjlj {
    optional int32 id = 1;
}
message s2c_active_info_zjlj {
    optional int32 id = 1;
    optional int32 is_new = 2;      // 1新手活动：0全员活动
    optional int32 btime = 3;
    optional int32 etime = 4;
    optional int32 getcount = 5;        // 已获取次数
    optional int32 limitcount = 6;      // 限制次数
    repeated p_active_zjlj info = 7;    // 详情
}
message p_active_zjlj {
	optional int32 index = 1;       // 序号
	optional int32 state = 2;       // 领取状态：0未领取;1已领取
	repeated p_id_num reward = 3;   // 奖励详情
}
// 直接领奖类 - 获取奖励
message c2s_active_get_zjlj {
    optional int32 id = 1;
    optional int32 index = 2;       // 序号
}
message s2c_active_get_zjlj {
    optional e_code code = 1;
    optional int32 index = 2;       // 序号
    repeated p_id_num reward = 3;   // 详情
}
// 直接领奖类 - 增加次数
message c2s_active_add_zjlj {
    optional int32 id = 1;          // 活动id
}
message s2c_active_add_zjlj {
    optional e_code code = 1;
}

// “在线时长奖励-每日刷新-前端上传分钟数”
message c2s_active_info_ot {
    optional int32 id = 1;
}
message s2c_active_info_ot {
    optional int32 id = 1;
    optional int32 is_new = 2;      // 1新手活动：0全员活动
    optional int32 btime = 3;
    optional int32 etime = 4;
    optional int32 count = 5;       // 在线总时长
    repeated p_ot r1 = 6;         // 普通奖励详情
    repeated p_ot r2 = 7;         // 视频奖励详情
}
message p_ot {
    optional int32 index = 1;       //阶段
    optional int32 need = 2;        //需要的数值
    optional int32 state = 3;       //状态：0不可领取1可领取2已领取
    repeated p_id_num reward = 4;   //奖励
}

// “在线时长奖励-每日刷新-前端上传分钟数” - 增加分钟数
message c2s_active_add_ot {
    optional int32 id = 1;          // 活动id
}
message s2c_active_add_ot {
    optional e_code code = 1;
}
// “在线时长奖励-每日刷新-前端上传分钟数” - 获取奖励
message c2s_active_get_ot {
    optional int32 id = 1;
    optional int32 index = 2;       // 序号
    optional int32 type = 3;       // 1普通；2视频
}
message s2c_active_get_ot {
    optional e_code code = 1;
}

// 9英雄卡包-分时间段购买-每日刷新 - 活动详情
message c2s_active_info_tb {
    optional int32 id = 1;
}
message s2c_active_info_tb {
    optional int32 id = 1;
    optional int32 is_new = 2;      // 1新手活动：0全员活动
    optional int32 btime = 3;
    optional int32 etime = 4;
    repeated p_tb info = 5;         // 详情
}
message p_tb {
    optional int32 boxid = 1;       //礼包id
    optional int32 sbt = 2;         //展示开始时间 show begin time
    optional int32 set = 3;         //展示结束时间 show end time
    optional int32 bt = 4;          //开始时间 begin time
    optional int32 et = 5;          //结束时间 end time
    optional int32 get = 6;         //开启次数
    optional int32 limit = 7;       //开启次数上限
    repeated p_id_num reward = 8;   //奖励
}

// 9英雄卡包-分时间段购买-每日刷新 - 获取奖励
message c2s_active_get_tb {
    optional int32 id = 1;          //活动id
    optional int32 boxid = 2;       //礼包id
}
message s2c_active_get_tb {
    optional e_code code = 1;
}

// 10 新功能类型，通过type获取奖励列表，add增加次数，随便领取某一项，根据配置决定是否每日刷新
// ad_res_daily 领取资源，每天刷新
message c2s_active_info_ard {
    optional int32 id = 1;        //1分享;2额外分享
}
message s2c_active_info_ard {
    optional int32 id = 1;
    optional int32 is_new = 2;      // 1新手活动：0全员活动
    optional int32 btime = 3;
    optional int32 etime = 4;
    optional int32 count = 5;       //当前计数总次数
    repeated p_active_info_ard info = 6;   //详情
}
message p_active_info_ard {
    optional int32 index = 1;       //阶段
    optional int32 need = 2;        //需要的次数
    repeated p_id_num reward = 3;   //奖励
    optional int32 get = 4;         //1可领取；0不可领取；2已领取
}
message c2s_active_add_ard {
    optional int32 id = 1;
}
message s2c_active_add_ard {
    optional e_code code = 1;
}
message c2s_active_get_ard {
    optional int32 id = 1;
    optional int32 index = 2;       //阶段
}
message s2c_active_get_ard {
    optional e_code code = 1;
}



//------------------- 福利 ----------------
// 七日签到
message c2s_7day_info {
}
message s2c_7day_info {
    repeated p_7day info = 1;       // 视频奖励
    repeated p_7day info2 = 2;      // 普通奖励
}
message p_7day{
    optional int32 index = 1;           // 第几天
    optional int32 id = 2;              // 货币id或者宝箱id
    optional int32 num = 3;             // 货币数量或者宝箱数量
    optional int32 time = 4;            // 0未领取，其他为领取时间
    optional int32 state = 5;           // 0不可领取，1可领取，2已领取，3可补领
}

// 领取七日签到奖励
message c2s_7day_get {
    optional int32 index = 1;           // 第几天
    optional int32 type = 2;           // 0视频 1普通  兼容老系统
}
message s2c_7day_get {
    optional e_code code = 1;
    repeated p_id_num reward = 2;      // 开箱子的奖励
    optional int32 type = 3;           // 0视频 1普通  兼容老系统
}

// 看视频计数
message c2s_watch_ad {
    optional int32 type = 1;           // 0获取看视频次数；1看视频次数加一
}
message s2c_watch_ad {
    optional int32 count = 1;           // 最新次数
}

// 看视频计数
// 1七日登陆2铭文商店3每日抽奖4PVP结算5复活币6天赋升级7奖励额外增加40%;8试用英雄或者皮肤;9主界面宝箱;10成长之路视频奖励领取;
// 11商城免费领取钻石;12钻石换金币
// 100开始游戏101战斗数据异常玩家102版本异常玩家103竖版104横板
message c2s_watch_ad_upload {
    optional int32 type = 1;
}
// 永久计数：1跳转完成2视频完成
message c2s_watch_ad_upload_forever {
    optional int32 type = 1;
}

// 转盘抽奖详情
message c2s_wheel_info {
}
message s2c_wheel_info {
    optional int32 lun = 1;         // 当前第几轮
    optional int32 count = 2;       // 当前已抽次数
    repeated p_wheel info = 3;      // 详情
}
message p_wheel {
    optional int32 index = 1;        //序号
    optional int32 state = 2;        //状态：1已获得0未获得
    optional int32 baodi = 3;        //第几次保底
    repeated p_id_num reward = 4;    // 奖励
}

// 转盘抽奖-抽
message c2s_wheel_get {
}
message s2c_wheel_get {
    optional e_code code = 1;
    optional int32 index = 2;           // 抽中序号
}

// 查看当天复活币获取次数及限制次数
message c2s_relive_info {
}
message s2c_relive_info {
    optional int32 get = 1;             // 获得次数
    optional int32 limit = 2;           // 限制次数
}
// 复活币获得
message c2s_relive_get {
}
message s2c_relive_get {
    optional e_code code = 1;
}
// 复活币消耗
message c2s_relive_cost {
}
message s2c_relive_cost {
    optional e_code code = 1;
}

// 增加最近获得的奖励
message c2s_add_latest_reward {
    optional int32 per = 1;             // 增加比例（整数：40表示40%,0-100）
}
message s2c_add_latest_reward {
    optional e_code code = 1;
    optional int32 per = 2;             // 增加比例（整数：40表示40%,0-100）
    repeated p_id_num reward = 3;       // 奖励
}

// 直接领奖
message c2s_get_reward_once {
    optional int32 type = 1;        // 1查询 2领奖
}
message s2c_get_reward_once {
    optional e_code code = 1;
    optional int32 count = 2;           // 当天领取次数：0未领取；其他表示领取次数
    repeated p_id_num reward = 3;       // 奖励
}

// 直接领奖（头条需求2）
message c2s_get_reward_once2 {
    optional int32 type = 1;        // 1查询 2领奖
}
message s2c_get_reward_once2 {
    optional e_code code = 1;
    optional int32 count = 2;           // 当天领取次数：0未领取；其他表示领取次数
    repeated p_id_num reward = 3;       // 奖励
}

// 获取累计视频福利
message c2s_total_ad_info {
}
message s2c_total_ad_info {
    optional int32 reTime = 1;              // 重置时间戳
    repeated p_total_ad info = 2;           // 奖励
}
message p_total_ad{
    optional int32 countNow = 1;            // 当前次数
    optional int32 countNeed = 2;           // 需要的次数
    optional int32 getNormal = 3;           // 普通领奖；1已领取；0未领取
    optional int32 getAd = 4;               // 视频领奖；1已领取；0未领取
    repeated p_id_num rewardN = 5;          // 奖励-普通奖励
    repeated p_id_num rewardAD = 6;         // 奖励-视频奖励
}

// 领奖 - 累计视频福利
message c2s_total_ad_get {
    optional int32 count = 1;           // p_total_ad结构中的“需要的次数”countNeed
    optional int32 type = 2;            // 1普通；2视频翻倍
}
message s2c_total_ad_get {
    optional e_code code = 1;
    repeated p_id_num reward = 2;           // 奖励
}

// 获取累计战斗福利
message c2s_total_battle_info {
}
message s2c_total_battle_info {
    optional int32 reTime = 1;          // 重置时间戳
    repeated p_total_ad info = 2;       // 奖励
}

// 领奖 - 累计战斗福利
message c2s_total_battle_get {
    optional int32 count = 1;           // p_total_ad结构中的“需要的次数”countNeed
    optional int32 type = 2;            // 1普通；2视频翻倍
}
message s2c_total_battle_get {
    optional e_code code = 1;
    repeated p_id_num reward = 2;           // 奖励
}

// 累计视频次数上传，传一次加1
message c2s_total_ad_up {
}

// 成长之路
message c2s_czzl {
}
message s2c_czzl {
    optional int32 etime = 1;         // 结束时间戳
    optional int32 exp = 2;           // 当前经验
    repeated p_czzl list = 3;         // 普通及视频
    repeated p_czzl_lv list2 = 4;     // 等级

}
message p_czzl {
    optional int32 index = 1;           // 阶段
    optional int32 needExp = 2;         // 需要的经验值
    optional int32 rns = 3;             // 普通奖励领取状态：1已领取0未领取
    optional int32 rads = 4;            // 视频奖励领取状态：1已领取0未领取
    repeated p_id_num rn = 5;           // 普通奖励详情
    repeated p_id_num rad = 6;          // 视频奖励详情
}
message p_czzl_lv {
    optional int32 index = 1;           // 阶段
    optional int32 rs = 2;              // 奖励领取状态：1已领取0未领取
    repeated p_id_num r = 3;            // 奖励详情
}

message c2s_czzl_get {
    optional int32 index = 1;           // 阶段
    optional int32 type = 2;            // 1普通;2视频;3等级
}
message s2c_czzl_get {
    optional e_code code = 1;
    repeated p_id_num reward = 2;      // 奖励
}

message c2s_czzl_exp_add {
}
message s2c_czzl_exp_add {
    optional e_code code = 1;
}


// 主界面宝箱
message c2s_time_box {
}
message s2c_time_box {
    repeated p_time_box box = 1;
}
message p_time_box {
    optional int32 boxid = 1;           // 宝箱id
    optional int32 etime = 2;           // 结束时间戳
    optional int32 ad = 3;              // 1看过视频；0未看过视频
    optional int32 get = 4;             // 1表示已开启宝箱;0表示未开启宝箱
    optional int32 adTime = 5;          // 看视频减少的时间（秒）
}

// 看视频减时间
message c2s_time_box_ad {
    optional int32 boxid = 1;           // 宝箱id
}
message s2c_time_box_ad {
    optional e_code code = 1;
}

// 开宝箱
message c2s_time_box_open {
    optional int32 boxid = 1;           // 宝箱id
}
message s2c_time_box_open {
    optional e_code code = 1;
}

// 2跳用户记录
message c2s_ertiao {
}

// 扫码登录
message c2s_saoma {
}

// 离线奖励
message c2s_offline_reward {
    optional int32 type = 1;            // 1查询；2领取；3视频领取;4不领取直接删除
}
message s2c_offline_reward {
    optional int32 type = 1;            // 1查询；2领取；3视频领取;4不领取直接删除
    repeated p_id_num reward = 2;
}

// 幸运宝箱-空投奖励
message c2s_luck_box {
    optional int32 type = 1;            // 1查询；2领取
}
message s2c_luck_box {
    optional int32 type = 1;            // 1查询；2领取
    optional int32 ad = 2;              // 1视频，0直接领取
    optional int32 boxid = 3;            // 0表示当前无幸运宝箱，其他表示宝箱id
    repeated p_id_num reward = 4;
}

// 开局福利
message c2s_kjfl {
    optional int32 type = 1;        // 1查询 2领奖 3增加累计次数
}
message s2c_kjfl {
    optional e_code code = 1;
    optional int32 type = 2;            // 1查询 2领奖
    optional int32 state = 3;            // 拥有状态：1有0没有
    repeated p_id_num reward = 4;       // 奖励
    optional int32 todayCount = 5;      // 当天开局福利次数
    optional int32 limitCount = 6;      // 当天开局福利次数限制
}

// 领取宝箱额外奖励
message c2s_box_extra {
}
message s2c_box_extra {
    optional e_code code = 1;
    repeated p_id_num reward = 2;       // 奖励
}

// 视频得资源-奖励固定-次数限制-每天刷新次数
message c2s_ad_res {
    optional int32 type = 1;        //1钻石2金币
    optional int32 act = 2;         //操作：1查询次数；2获取奖励
}
message s2c_ad_res {
    optional int32 type = 1;        //1钻石2金币
    optional int32 act = 2;         //操作：1查询次数；2获取奖励
    optional int32 count = 3;       //已使用次数
    optional int32 limit = 4;       //限制次数
    repeated p_id_num reward = 5;   //开箱子的奖励
}

// 视频得资源-单次领奖-阶段性-每天刷新次数
message c2s_ad_res_index {
    optional int32 type = 1;        //1钻石2金币3免费碎片
    optional int32 act = 2;         //操作：1查询；2获取奖励
}
message s2c_ad_res_index {
    optional int32 type = 1;        //1钻石2金币
    optional int32 act = 2;         //操作：1查询；2获取奖励
    optional int32 index = 3;       //当前领奖阶段
    repeated p_id_num reward = 5;   // 获得的奖励
    repeated p_ad_res_index info = 4;   //奖励详情
}
message p_ad_res_index {
    optional int32 index = 1;       //阶段
    repeated p_id_num reward = 2;   //奖励
}

//游戏点券消耗-抵扣某些操作
message c2s_yxdq_cost {
    optional int32 type = 1;        //功能点
    optional int32 act = 2;         //操作：1查询；2消耗
}
message s2c_yxdq_cost {
    optional e_code code = 1;
    optional int32 type = 2;        //功能点
    optional int32 act = 3;         //操作：1查询；2消耗
    repeated p_id_num cost = 4;     //消耗资源
}

//兑换码
message c2s_use_dhm {
    optional string dhmcode = 1;
}
message s2c_use_dhm {
    optional e_code code = 1;
}


// 视频得资源-次数累计-阶段性-每天刷新次数
message c2s_ad_res_index_daily {
    optional int32 type = 1;        //1分享
    optional int32 act = 2;         //操作：1查询；2获取奖励
}
message s2c_ad_res_index_daily {
    optional int32 type = 1;        //1分享
    optional int32 act = 2;         //操作：1查询；2获取奖励
    optional int32 count = 3;       //当前视频次数
    optional int32 index = 4;       //当前领奖阶段
    repeated p_id_num reward = 5;   // 获得的奖励
    repeated p_ad_res_index_daily info = 6;   //奖励详情
}
message p_ad_res_index_daily {
    optional int32 index = 1;       //阶段
    optional int32 need = 2;        //需要得次数
    repeated p_id_num reward = 3;   //奖励
}
// 视频得资源-次数累计-阶段性-每天刷新次数-次数增加
message c2s_ad_res_index_daily_add {
    optional int32 type = 1;
}

// 视频得资源-次数累计-阶段性-永久次数
message c2s_ad_res_index_forever {
    optional int32 type = 1;        //1添加桌面2关注抖音公众号
    optional int32 act = 2;         //操作：1查询；2获取奖励
}
message s2c_ad_res_index_forever {
    optional int32 type = 1;
    optional int32 act = 2;         //操作：1查询；2获取奖励
    optional int32 count = 3;       //当前视频次数
    optional int32 index = 4;       //当前领奖阶段
    repeated p_id_num reward = 5;   // 获得的奖励
    repeated p_ad_res_index_forever info = 6;   //奖励详情
}
message p_ad_res_index_forever {
    optional int32 index = 1;       //阶段
    optional int32 need = 2;        //需要得次数
    repeated p_id_num reward = 3;   //奖励
}
// 视频得资源-次数累计-阶段性-永久次数-次数增加
message c2s_ad_res_index_forever_add {
    optional int32 type = 1;        //
}

// 直接领奖(不限制次数)
message c2s_get_reward_nolimit {
    optional int32 type = 1;        //1重返天庭用；2分享用；
}
message s2c_get_reward_nolimit {
    repeated p_id_num reward = 1;       // 奖励
    optional int32 type = 2;        //1重返天庭用；2分享用；
}

// 完成第一局战斗后-领取奖励
message c2s_first_battle_reward {
}
message s2c_first_battle_reward {
    optional e_code code = 1;
}

// 一轮结束接着一轮的活动：1视频有礼2邀请好友3在线时长
message c2s_ad_lun {
    optional int32 type = 1;        //1视频有礼2邀请好友3在线时长
    optional int32 act = 2;         //操作：1查询；2获取奖励；3视频领奖
}
message s2c_ad_lun {
    optional int32 type = 1;        //1视频有礼2邀请好友3在线时长
    optional int32 act = 2;         //操作：1查询；2获取奖励；3视频领奖
    optional int32 count = 3;       //总次数
    repeated p_ad_lun info = 4;     //奖励详情
    repeated p_id_num reward = 5;   //获得的奖励
}
message p_ad_lun {
    optional int32 index = 1;       //阶段
    optional int32 need = 2;        //需要的数值
    optional int32 state = 3;       //状态：0不可领取1可领取2已领取
    repeated p_id_num reward = 4;   //奖励
}
// 次数上传
message c2s_ad_lun_add_count {
    optional int32 type = 1;        //1视频有礼2邀请好友(邀请好友不需要做操作)3在线时长(不需要做操作)
}

// 邀请好友，填写我的邀请人
message c2s_ad_lun_invite_id {
    optional int32 id = 1;
}
message s2c_ad_lun_invite_id {
    optional e_code code = 1;
}

// 邀请有礼-填写他们邀请码，得奖励
message c2s_invite_info {
}
message s2c_invite_info {
    optional string code = 1;
    optional int32 count = 2;       //填写激活码总次数
    repeated p_ii info = 3;         //奖励详情
}
message p_ii {                      // p_invite_info
    optional int32 index = 1;       //阶段
    optional int32 need = 2;        //需要的数值
    optional int32 state = 3;       //状态：0不可领取1可领取2已领取
    repeated p_id_num reward = 4;   //奖励
}
message c2s_invite_get {
    optional int32 index = 1;       //阶段
    optional int32 act = 2;         //操作：1普通奖励；3视频奖励
}
message s2c_invite_get {
    optional e_code code = 1;
}
// 填写他人的邀请码
message c2s_invite_add {
    optional string code = 1;
}
message s2c_invite_add {
    optional e_code code = 1;
}


// ------------------- 铭文系统 ----------------
// 查看某一系的铭文数据
message c2s_mw_info {
}
message s2c_mw_info {
    repeated p_mw_info info = 3;       // 详情
}
message p_mw_info {
    optional int32 type = 1;           // 101-XXX
    optional int32 lv = 2;             // 等级
}

// 升级某个铭文
message c2s_mw_up {
    optional int32 type = 1;            // 101-XXX
    optional int32 cost = 2;            // 1消耗材料&金币;2消耗材料&钻石；3只消耗材料；4不消耗任何资源
}
message s2c_mw_up {
    optional e_code code = 1;
    optional int32 type = 2;            // 101-XXX
    optional int32 lv = 3;              // 最新等级
}

// 升级某个铭文不消耗金币
message c2s_mw_up_no_gold {
    optional int32 type = 1;            // 101-XXX
}
message s2c_mw_up_no_gold {
    optional e_code code = 1;
    optional int32 type = 2;            // 101-XXX
    optional int32 lv = 3;              // 最新等级
}

// 铭文商店 开宝箱信息
message c2s_mw_shop_info {
}
message s2c_mw_shop_info {
    optional int32 free_open_time = 1;      // 免费宝箱开箱时间戳
    optional int32 free_gold_ad = 2;        // 免费金币宝箱 剩余广告次数
    optional int32 gold_count = 3;          // 当天金币购买次数
    optional int32 gold_need = 4;           // 购买需要的金币数量
    optional int32 free_diamond_ad = 5;     // 免费钻石宝箱 剩余广告次数
    optional int32 diamond_count = 6;       // 当天钻石购买次数
    optional int32 diamond_need = 7;        // 购买需要的钻石数量
    optional int32 diff_count_super = 8;    // 距离超级铭文差多少次
    optional int32 ad_diamond_count = 9;    // 看视频得钻石剩余次数
    optional int32 ad_diamond_num = 10;     // 看视频得钻石的数量
    repeated p_id_num d2g = 11;             // 钻石换金币的详情
    optional int32 ad_diamond_etime = 12;   // 看视频得钻石,cd结束时间戳：0表示当天未换；其他表示具体时间戳
}

// 开铭文商店宝箱
message c2s_mw_shop_get {
    optional int32 type = 1;    //1免费单抽 3钻石单抽 4免费视频五连抽 5钻石五连抽 2无意义
}
message s2c_mw_shop_get {
    optional e_code code = 1;
    repeated p_id_num reward = 2;      // 开箱子的奖励
}

// 看视频得钻石
message c2s_shop_ad_diamond_get {
}
message s2c_shop_ad_diamond_get {
    optional e_code code = 1;
    optional int32 ad_diamond_count = 2;    // 看视频得钻石剩余次数
    optional int32 ad_diamond_etime = 3;    // 结束时间戳：0表示当天未换；其他表示具体时间戳
}

// 钻石换金币
message c2s_shop_d2g {
    optional int32 diamond_num = 1;     // 钻石档位
}
message s2c_shop_d2g {
    optional e_code code = 1;
    optional int32 gold_num = 2;    // 获得金币数量
}

// 铭文商店2 和商店1 一样
// 铭文商店 开宝箱信息
message c2s_mw_shop2_info {
}
message s2c_mw_shop2_info {
    optional int32 free_open_time = 1;      // 免费宝箱开箱时间戳
    optional int32 free_gold_ad = 2;        // 免费金币宝箱 剩余广告次数  - 无意义
    optional int32 gold_count = 3;          // 当天金币购买次数
    optional int32 gold_need = 4;           // 购买需要的金币数量
    optional int32 free_diamond_ad = 5;     // 免费钻石宝箱 剩余广告次数
    optional int32 diamond_count = 6;       // 当天钻石购买次数
    optional int32 diamond_need = 7;        // 购买需要的钻石数量
}

// 开铭文商店宝箱
message c2s_mw_shop2_get {
    optional int32 type = 1;    //1免费单抽 3钻石单抽 4免费视频五连抽 5钻石五连抽 2无意义
}
message s2c_mw_shop2_get {
    optional e_code code = 1;
    repeated p_id_num reward = 2;      // 开箱子的奖励
}


// ------------------- 邀请系统、好友系统 ----------------
// 获取已邀请人详情
message c2s_get_invite_list{
}
message s2c_get_invite_list {
    repeated p_invite invite = 1;      // 邀请人列表
    repeated p_invite_reward reward = 2;    // 邀请奖励列表
}
message p_invite {
	optional int64 id = 1;
	optional string wxname = 2;
	optional string wxtxurl = 3;
}
message p_invite_reward {
	optional int32 index = 1;       // 序号
	optional int32 state = 2;       // 领取状态：0未领取;1已领取;2可领取
	repeated p_id_num reward = 3;   // 奖励详情
}

// 获取邀请奖励
message c2s_get_invite_reward{
    optional int32 index = 1;       // 序号
}
message s2c_get_invite_reward {
    optional e_code code = 1;
    repeated p_id_num reward = 2;      // 开箱子的奖励
}

//获取好友列表
message c2s_get_friend_list{
    optional int32 index = 1;        // 第几页，从1开始，每页10个
}
message s2c_get_friend_list{
    optional int32 index = 1;        // 第几页，从1开始，每页10个
    optional int32 friendnum = 2;    // 自己得好友数量
    optional int32 friendlimit = 3;  // 好友数量上限
	repeated p_friend friend = 4;
}

message c2s_get_tuijian_list{
}
message s2c_get_tuijian_list{
	repeated p_friend tuijian = 1;  // 推荐好友
}


// 获取在线好友
message c2s_get_friend_online{
}
message s2c_get_friend_online{
	repeated p_friend online = 1;
}
message p_friend{
	optional int32 friendid = 1; 		// 好友玩家id
	optional string nickname = 2;       // 好友名字
	optional string url = 3;            // 头像
	optional int32 stage = 4;           // 段位
	optional int32 state = 5; 			// 玩家状态 0：不在线 1.在线 2.战斗中 3.在队伍中
	optional int32 client_version = 6;  // 前段版本号
}

//申请添加好友
message c2s_friend_add {
	optional int32 id = 1;
}
message s2c_friend_add {
	optional e_code code = 1;
}

//删除好友
message c2s_friend_del {
	optional int32 friendid = 1;
}
message s2c_friend_del {
    optional e_code code = 1;
	optional int32 friendid = 2;
}

// 邀请好友组队对战（无返回）
message c2s_friend_pvp_invite {
	optional int32 friendid = 1;
}
// 收到他人的邀请组队信息
message s2c_friend_pvp_invite {
    optional int32 friendid = 1;    // 邀请人id
    optional string name = 2;       // 邀请人名字
    optional string url = 3;        // 邀请人头像
    optional int32 stage = 4;       // 邀请人段位
    optional int32 team_id = 5;     // 队伍id
    optional int32 mapID = 6;       // 地图id
    optional int32 xxlv = 7;        // 休闲模式等级
}

// 将某人拉黑，XX分钟不接受某人邀请。（无返回）
message c2s_friend_block {
    optional int32 friendid = 1;    // 邀请人id
}

// 申请加B玩家-添加到B玩家申请列表
message c2s_friend_apply_toB {
	optional int32 bid = 1;
}
message s2c_friend_apply_toB {
    optional e_code code = 1;
}

// 玩家自己-获取申请列表
message c2s_friend_apply_get {
}
message s2c_friend_apply_get {
	repeated p_friend friend = 1;
}

// 玩家自己-管理申请列表
message c2s_friend_apply_act {
	optional int32 bid = 1;     // B玩家
	optional int32 act = 2;     // 1同意2拒绝(删除单条)3拒绝(清空)
}
message s2c_friend_apply_act {
    optional e_code code = 1;
}

// 发送聊天信息
message c2s_chat{
    optional int64 type = 1;        // 1好友聊天2组队聊天3世界聊天4游戏内己方聊天5游戏内双方聊天6招募信息
    optional int64 to_id = 2;       // 好友id
    optional string msg = 3;        // 消息
    optional string platform = 4;   //(微信wx;头条tt) 和c2s_get_openid中的平台名一致
}
message s2c_chat{
    optional e_code code = 1;
    optional int64 type = 2;        // 1好友聊天2组队聊天
    optional int64 to_id = 3;       // 好友id
    optional string reMsg = 4;       // 返回过滤后的文字
}

message s2c_push_chat{
    optional int64 type = 1;        // 1好友聊天2组队聊天
    optional p_friend player = 2;               // 玩家信息
    optional int32 time = 3;                    // 时间
    optional string msg = 4;                    // 详细聊天信息
}



// 获得自己的离线私聊信息
message c2s_get_offline_ids{
}
message s2c_get_offline_ids{
    repeated p_v offline = 1;        //离线消息的玩家id列表
}

// 获得自己的离线私聊信息
message c2s_get_offline_chat{
    optional int32 type = 1;     // 1获取；2删除
    optional int64 id = 2;       // id
}
message s2c_get_offline_chat{
    optional int32 type = 1;     // 1获取；2删除
    optional int64 id = 2;       // id
    optional p_friend player = 3;   // 玩家信息
    repeated p_get_offline_chat off_chat = 4; // 离线信息
}
message p_get_offline_chat {
    optional int32 time = 1;                    // 时间
    optional string msg = 2;                    // 详细聊天信息
}

// 上传聊天状态，当在某个状态时，才给玩家推送聊天消息
message c2s_set_chat_state{
    optional int32 type = 1;     // 1收取消息；0不收取消息
}
message s2c_set_chat_state{
    optional e_code code = 1;
}


//------------- 获取排行榜数据 ------------
message c2s_get_rank {
    optional int32 type = 1;        // 1全国；2省；3市；4-33时看55/55时看33 | 休闲模式：11全国；12省；13市 | 休闲模式多人：21全国；22省；23市
    optional int32 index = 2;        // 第几页，从1开始，每页10个
}
message s2c_get_rank {
    optional p_rank own = 1;        // 自己的信息
    repeated p_rank rank = 2;       // 排行信息
    optional int32 type = 3;        // 1全国；2省；3市
}
message p_rank {
    optional int32 rank = 1;
    optional int64 playe_id = 2;
    optional string wx_name = 3;
    optional string wx_txurl = 4;
    optional int32 sex = 5;
    optional int32 stage = 6;
    optional int32 win = 7;
    optional int32 fail = 8;
    optional int32 mvp = 9;
    optional int32 lv = 10;
    optional int32 shen = 11;
    optional int32 shi = 12;

}

// 历史赛季排行-只有总排行
message c2s_get_rank_oldseason {
    optional int32 seasonid = 1;     // 赛季id
    optional int32 index = 2;        // 第几页，从1开始，每页10个
}
message s2c_get_rank_oldseason {
    optional p_rank own = 1;        // 自己的信息
    repeated p_rank rank = 2;       // 排行信息
    optional int32 seasonid = 3;     // 赛季id
}



// ------------- 版本更新相关，公告及新版本领奖等 -------------
// 公告
message s2c_tip {
    optional string msg = 1;            // 公告消息
}

// 获取历史版本领取情况
message c2s_show_version {
}
message s2c_show_version {
	repeated p_v reward = 1;      // 已领取过奖励的版本
}

// 领取版本消息
message c2s_get_version_reward {
    optional int32 version = 1;        // 需要领取的版本号
}
message s2c_get_version_reward {
	optional int32 version = 1;         // 版本号
	repeated p_id_num reward = 2;       // 奖励详情
}

// 获取公告
message c2s_gonggao {
}
message s2c_gonggao {
    optional int32 etime = 1;           // 公告结束展示时间
    optional string msg = 2;            // 公告消息
}

//----------------------- 天梯战场 ---------------------------
// 自己的信息
message c_ttzc_own {
}
message s_ttzc_own {
    optional int32 id = 1;          //
    optional int32 rank = 2;        // 当前排名 99999为未上榜
    optional int32 count = 3;       // 当天挑战次数
    repeated p_v attack = 4;        // 进攻阵容
    repeated p_v defence = 5;       // 防守阵容
    optional int32 addcount = 6;    // 看视频增加次数-配置
}

// 排行信息
message c_ttzc_rank {
    optional int32 index = 1;        // 第几页，从1开始，每页10个
}
message s_ttzc_rank {
    optional p_ttzc_rank own = 1;         // 自己的信息
    repeated p_ttzc_rank rank = 2;       // 排行信息
}
message p_ttzc_rank {
     optional int32 rank = 1;
     optional int32 id = 2;
     optional string name = 3;
     optional string url = 4;
     optional int32 win = 5;
     optional int32 fail = 6;
     repeated p_v defence = 7;          // 防守阵容
     repeated p_id_num mwkv = 8;        // 铭文【{类型，等级}】
}

// 随机对手
message c_ttzc_rand {
}
message s_ttzc_rand {
     repeated p_ttzc_rank rand = 1;       // 排行信息 直接用排行信息作为展示
}

// 改变进攻阵容，或者防守阵容
message c_ttzc_change_role {
    optional int32 type = 1;            // 1进攻阵容；2防守阵容
    repeated p_v list = 2;              // 阵容详情
}
message s_ttzc_change_role {
     optional e_code code = 1;
     repeated p_v attack = 2;        // 进攻阵容
     repeated p_v defence = 3;       // 防守阵容
}

// 挑战某个排名
message c_attack_rank {
    optional int32 rank = 1;            // 排名
}
message s_attack_rank {
     optional e_code code = 1;
     optional int32 rank = 2;            // 排名
     optional p_attack_rank_player attack = 3;        // 进攻角色
     optional p_attack_rank_player defence = 4;       // 防守角色
     optional int32 noBattleBtime = 5;      // 不可进攻开始时间
     optional int32 noBattleEtime = 6;      // 不可进攻结束时间
}
message p_attack_rank_player {
     optional int32 id = 1;             // id
     optional string name = 2;          // 微信名字
     optional string url = 3;           // 微信头像url
     repeated p_v rolelist = 4;         // 进攻角色列表
     optional int32 skillID = 5;        // 技能id
     optional int32 skillLv = 6;        // 技能lv
     repeated p_id_num mwkv = 7;        // 铭文【{类型，等级}】
     optional int32 ailevel = 8;        // ai等级
     optional int32 wingShowID = 9;     // 翅膀id
     optional int32 wingLv = 10;        // 翅膀等级
     repeated p_id_num roleskill = 11;  // 该英雄的技能
}

// 挑战结果
message c_attack_rank_result {
    optional int32 win_fail = 1;        // 1胜利 0失败
    optional int32 rank = 2;            // 进攻的排名
    optional p_attack_rank_player defence = 3;  // 对手信息
}
message s_attack_rank_result {
    optional e_code code = 1;
}

// 排行榜展示-保存数据不多，9点后数据固定，仅仅作为展示
message c_ttzc_rank_show {
    optional int32 index = 1;        // 第几页，从1开始，每页10个
}
message s_ttzc_rank_show {
    repeated p_ttzc_rank rank = 1;       // 排行信息
    optional p_ttzc_rank own = 2;         // 自己的信息
}

// 排行榜奖励 - 详情 c_ttzc_rank_reward_info  排行奖励-排名相关
message c_ttzc_rr_info {
}
message s_ttzc_rr_info {
    repeated p_ttzc_rr info = 1;   //
    optional int32 maxRank = 2;        //历史最高
}
message p_ttzc_rr {
    optional int32 rank = 1;        //
    optional int32 rns = 2;         // 普通奖励：1已领取；0未领取；2可领取
    optional int32 rads = 3;        // 视频奖励：1已领取；0未领取；2可领取
    repeated p_id_num rn = 4;       // 普通奖励-展示
    repeated p_id_num rad = 5;      // 视频奖励-展示
}

// 排行榜奖励 - 领取奖励
message c_ttzc_rr_get {
    optional int32 rank = 1;        //
    optional int32 type = 2;        // 1普通领取；2视频领取
}
message s_ttzc_rr_get {
    optional e_code code = 1;
    optional int32 rank = 2;          // 
    optional int32 type = 3;        // 1普通领取；2视频领取
}

// 看视频增加挑战次数
message c_ttzc_add_count {
}
message s_ttzc_add_count {
    optional e_code code = 1;
    optional int32 nowCount = 2;          // 最新次数
}

// 9点后，排名奖励查询及领奖    c_ttzc_rank_reward_time 排行奖励-时间相关
message c_ttzc_rr_time {
    optional int32 type = 1;          // 1查询；2领奖
}
message s_ttzc_rr_time {
    optional int32 type = 1;            // 1查询；2领奖
    optional int32 rank = 2;            // 排名；0表示没有未上榜没有奖励
    optional int32 state = 3;           // 1已领奖；0未领奖
    repeated p_id_num reward = 4;       // 展示奖励数据
}
// 配置信息获取
message c_ttzc_rr_time_info {
}
message s_ttzc_rr_time_info {
    repeated p_ttzc_rr_time_info info = 1;
}
message p_ttzc_rr_time_info {
    optional int32 brank = 1;
    optional int32 erank = 2;
    repeated p_id_num reward = 3;
}

// 配置信息获取
message c_ttzc_player_role {
    repeated p_v ids = 1;
}
message s_ttzc_player_role {
    repeated p_id_num idrole = 1;
}

// 获取战斗记录
message c_ttzc_battle_log {
}
message s_ttzc_battle_log {
    repeated p_ttzc_battle_log info = 1;
}
message p_ttzc_battle_log {
    optional int32 type = 1;    // 1进攻2防守
    optional int32 winfail = 2; // 1胜利2失败
    optional int32 oldrank = 3; // 原排名
    optional int32 newrank = 4; // 现排名
    optional int32 otherid = 5; // 对方id
    optional string name = 6;
    optional string url = 7;
    repeated p_v rolelist = 8;  // 对方阵容
}

//-----------------------下面是协议好枚举---------------------------
//协议号
enum serviceNo {
	none=0;

	//帐号
	c2s_login               = 10000;
	s2c_login               = 10001;
	c2s_get_openid          = 10002;
	s2c_get_openid          = 10003;
	s2c_update_banner       = 10004;
	s2c_is_new              = 10005;
	s2c_name_url            = 10006;
	c2s_clean_account       = 10007;
	s2c_clean_account       = 10008;
	c2s_bind                = 10009;
	s2c_bind                = 10010;


	//玩家
	c2s_get_player_info     = 11001;
	s2c_get_player_info     = 11002;
	c2s_heart_check 	    = 11003;
	s2c_heart_check 	    = 11004;
	s2c_refresh_player_attr = 11005;
	c2s_update_wx_data      = 11006;
	s2c_update_wx_data      = 11007;
	c2s_update_shen_shi     = 11008;
	s2c_update_shen_shi     = 11009;
	s2c_box_reward          = 11010;
    c2s_update_name         = 11011;
    s2c_update_name         = 11012;
	c2s_red_point           = 11013;
	s2c_red_point           = 11014;
    c2s_oppo_yy_sign        = 11015;
    s2c_oppo_yy_sign        = 11016;
    c2s_wx_yy_sign          = 11017;
    s2c_wx_yy_sign          = 11018;
	c_get_kb_url            = 11019;
	s_get_kb_url            = 11020;
	c_decrease_noad_count   = 11021;
	s_decrease_noad_count   = 11022;
	c2s_player_show         = 11023;
	s2c_player_show         = 11024;
	c2s_shange_show_id      = 11025;
	s2c_shange_show_id      = 11026;
	c2s_get_achieve_reward  = 11027;
	s2c_get_achieve_reward  = 11028;
	c2s_ad_begin            = 11029;

	// pvp
	c2s_add_match           = 12001;
	s2c_add_match           = 12002;
	c2s_del_match           = 12003;
	s2c_del_match           = 12004;
	s2c_match_success       = 12005;
	c2s_ready_battle        = 12006;
	s2c_ready_battle        = 12007;
	s2c_begin_battle        = 12008;
	s2c_send_frame_act      = 12009;
	c2s_up_act              = 12010;
	c2s_battle_result       = 12011;
    s2c_battle_result       = 12012;
    c2s_team_info           = 12013;
    s2c_team_info           = 12014;
    c2s_join_team           = 12015;
    c2s_team_ready          = 12016;
    c2s_leave_team          = 12017;
    c2s_battle_recover      = 12018;
    s2c_battle_recover      = 12019;
    c2s_get_frame           = 12020;
    s2c_get_frame           = 12021;
    c2s_pvp_up_box          = 12022;
    s2c_pvp_up_box          = 12023;
    c2s_pvp_open_box        = 12024;
    s2c_pvp_open_box        = 12025;
    c2s_pvp_achieve         = 12026;
    s2c_pvp_achieve         = 12027;
    c2s_pvp_history         = 12028;
    s2c_pvp_history         = 12029;
    c2s_skill_info          = 12030;
    s2c_skill_info          = 12031;
    c2s_skill_up            = 12032;
    s2c_skill_up            = 12033;
    c2s_skill_choice        = 12034;
    s2c_skill_choice        = 12035;
    c2s_battle_timer        = 12036;
    c2s_match_info          = 12037;
    s2c_match_info          = 12038;
    s2c_join_team           = 12039;
    c2s_team_tiren          = 12040;
    s2c_team_tiren          = 12041;
    s2c_match_success_id    = 12042;
    c2s_change_xxlv         = 12043;
    s2c_change_xxlv         = 12044;
    c2s_get_xxmp            = 12045;
    s2c_get_xxmp            = 12046;
    c2s_xx_reward_info      = 12047;
    s2c_xx_reward_info      = 12048;
    c2s_xx_reward_get       = 12049;
    s2c_xx_reward_get       = 12050;
    c2s_cost_xxmp           = 12051;
    s2c_cost_xxmp           = 12052;
    c2s_offline_result      = 12053;


    // 角色管理
    c2s_get_player_role     = 13001;
    s2c_get_player_role     = 13002;
    c2s_buy_role            = 13003;
    s2c_buy_role            = 13004;
    c2s_change_role         = 13005;
    s2c_change_role         = 13006;
    c2s_get_role_demo       = 13007;
    s2c_get_role_demo       = 13008;
    c2s_lv_up               = 13009;
    s2c_lv_up               = 13010;
    c2s_lv_up_no_gold       = 13011;
    s2c_lv_up_no_gold       = 13012;
    c2s_wing_info           = 13013;
    s2c_wing_info           = 13014;
    c2s_wing_lvup           = 13015;
    s2c_wing_lvup           = 13016;
    c2s_wing_change         = 13017;
    s2c_wing_change         = 13018;

    // 赛季及活动
    c2s_season              = 14001;
    s2c_season              = 14002;
    c2s_get_rank            = 14003;
    s2c_get_rank            = 14004;
    c2s_season_reward       = 14005;
    s2c_season_reward       = 14006;
    c2s_star_active         = 14007;
    s2c_star_active         = 14008;
    c2s_active_list         = 14009;
    s2c_active_list         = 14010;
    c2s_active_info         = 14011;
    s2c_active_info         = 14012;
    c2s_active_get          = 14013;
    s2c_active_get          = 14014;
    c2s_active_ad_add       = 14015;
    s2c_active_ad_add       = 14016;
    c2s_active_info_dsgl    = 14017;
    s2c_active_info_dsgl    = 14018;
    c2s_active_get_dsgl     = 14019;
    s2c_active_get_dsgl     = 14020;
    c2s_active_add_dsgl     = 14021;
    s2c_active_add_dsgl     = 14022;
    c2s_active_info_cftt    = 14023;
    s2c_active_info_cftt    = 14024;
    c2s_active_get_cftt     = 14025;
    s2c_active_get_cftt     = 14026;
    c2s_active_add_cftt     = 14027;
    s2c_active_add_cftt     = 14028;
    c2s_active_info_wheel   = 14029;
    s2c_active_info_wheel   = 14030;
    c2s_active_get_wheel    = 14031;
    s2c_active_get_wheel    = 14032;
    c2s_get_rank_oldseason  = 14033;
    s2c_get_rank_oldseason  = 14034;
    c2s_active_info_cjdh    = 14035;
    s2c_active_info_cjdh    = 14036;
    c2s_active_add_cjdh     = 14037;
    s2c_active_add_cjdh     = 14038;
    c2s_active_get_cjdh     = 14039;
    s2c_active_get_cjdh     = 14040;
    c2s_active_info_wheel_daily     = 14041;
    s2c_active_info_wheel_daily     = 14042;
    c2s_active_get_wheel_daily      = 14043;
    s2c_active_get_wheel_daily      = 14044;
    c2s_active_info_zjlj            = 14045;
    s2c_active_info_zjlj            = 14046;
    c2s_active_get_zjlj             = 14047;
    s2c_active_get_zjlj             = 14048;
    c2s_active_add_zjlj             = 14049;
    s2c_active_add_zjlj             = 14050;
    c2s_active_info_ot              = 14051;
    s2c_active_info_ot              = 14052;
    c2s_active_add_ot               = 14053;
    s2c_active_add_ot               = 14054;
    c2s_active_get_ot               = 14055;
    s2c_active_get_ot               = 14056;
    c2s_active_info_tb              = 14057;
    s2c_active_info_tb              = 14058;
    c2s_active_get_tb               = 14059;
    s2c_active_get_tb               = 14060;
    c2s_active_info_ard             = 14061;
    s2c_active_info_ard             = 14062;
    c2s_active_add_ard              = 14063;
    s2c_active_add_ard              = 14064;
    c2s_active_get_ard              = 14065;
    s2c_active_get_ard              = 14066;



    // 福利
    c2s_7day_info           = 15001;
    s2c_7day_info           = 15002;
    c2s_7day_get            = 15003;
    s2c_7day_get            = 15004;
    c2s_watch_ad            = 15005;
    s2c_watch_ad            = 15006;
    c2s_wheel_info          = 15007;
    s2c_wheel_info          = 15008;
    c2s_wheel_get           = 15009;
    s2c_wheel_get           = 15010;
    c2s_watch_ad_upload     = 15011;
    c2s_relive_info         = 15012;
    s2c_relive_info         = 15013;
    c2s_relive_get          = 15014;
    s2c_relive_get          = 15015;
    c2s_relive_cost         = 15016;
    s2c_relive_cost         = 15017;
    c2s_add_latest_reward   = 15018;
    s2c_add_latest_reward   = 15019;
    c2s_get_reward_once     = 15020;
    s2c_get_reward_once     = 15021;
    c2s_get_reward_once2    = 15022;
    s2c_get_reward_once2    = 15023;
    c2s_total_ad_info       = 15024;
    s2c_total_ad_info       = 15025;
    c2s_total_ad_get        = 15026;
    s2c_total_ad_get        = 15027;
    c2s_total_battle_info   = 15028;
    s2c_total_battle_info   = 15029;
    c2s_total_battle_get    = 15030;
    s2c_total_battle_get    = 15031;
    c2s_total_ad_up         = 15032;
    c2s_czzl                = 15033;
    s2c_czzl                = 15034;
    c2s_czzl_get            = 15035;
    s2c_czzl_get            = 15036;
    c2s_czzl_exp_add        = 15037;
    s2c_czzl_exp_add        = 15038;
    c2s_time_box            = 15039;
    s2c_time_box            = 15040;
    c2s_time_box_ad         = 15041;
    s2c_time_box_ad         = 15042;
    c2s_time_box_open       = 15043;
    s2c_time_box_open       = 15044;
    c2s_ertiao              = 15045;
    c2s_offline_reward      = 15046;
    s2c_offline_reward      = 15047;
    c2s_luck_box            = 15048;
    s2c_luck_box            = 15049;
    c2s_kjfl                = 15050;
    s2c_kjfl                = 15051;
    c2s_box_extra           = 15052;
    s2c_box_extra           = 15053;
    c2s_saoma               = 15054;
    c2s_ad_res              = 15055;
    s2c_ad_res              = 15056;
    c2s_ad_res_index        = 15057;
    s2c_ad_res_index        = 15058;
    c2s_yxdq_cost           = 15059;
    s2c_yxdq_cost           = 15060;
    c2s_use_dhm             = 15061;
    s2c_use_dhm             = 15062;
    c2s_ad_res_index_daily          = 15063;
    s2c_ad_res_index_daily          = 15064;
    c2s_ad_res_index_daily_add      = 15065;
    c2s_ad_res_index_forever        = 15066;
    s2c_ad_res_index_forever        = 15067;
    c2s_ad_res_index_forever_add    = 15068;
    c2s_get_reward_nolimit          = 15069;
    s2c_get_reward_nolimit          = 15070;
    c2s_watch_ad_upload_forever     = 15071;
    s2c_first_battle_reward         = 15072;
    c2s_first_battle_reward         = 15073;
    c2s_ad_lun                      = 15074;
    s2c_ad_lun                      = 15075;
    c2s_ad_lun_add_count            = 15076;
    c2s_ad_lun_invite_id            = 15077;
    s2c_ad_lun_invite_id            = 15078;
    c2s_invite_info                 = 15079;
    s2c_invite_info                 = 15080;
    c2s_invite_get                  = 15081;
    s2c_invite_get                  = 15082;
    c2s_invite_add                  = 15083;
    s2c_invite_add                  = 15084;

    // 铭文
    c2s_mw_info             = 16001;
    s2c_mw_info             = 16002;
    c2s_mw_up               = 16003;
    s2c_mw_up               = 16004;
    c2s_mw_shop_info        = 16005;
    s2c_mw_shop_info        = 16006;
    c2s_mw_shop_get         = 16007;
    s2c_mw_shop_get         = 16008;
    c2s_mw_up_no_gold       = 16009;
    s2c_mw_up_no_gold       = 16010;
    c2s_shop_ad_diamond_get = 16011;
    s2c_shop_ad_diamond_get = 16012;
    c2s_shop_d2g            = 16013;
    s2c_shop_d2g            = 16014;
    c2s_mw_shop2_info       = 16015;
    s2c_mw_shop2_info       = 16016;
    c2s_mw_shop2_get        = 16017;
    s2c_mw_shop2_get        = 16018;

    // 邀请系统、好友系统
    c2s_get_invite_list     = 17001;
    s2c_get_invite_list     = 17002;
    c2s_get_invite_reward   = 17003;
    s2c_get_invite_reward   = 17004;
    c2s_get_friend_list     = 17005;
    s2c_get_friend_list     = 17006;
    c2s_get_friend_online   = 17007;
    s2c_get_friend_online   = 17008;
    c2s_friend_add          = 17009;
    s2c_friend_add          = 17010;
    c2s_friend_del          = 17011;
    s2c_friend_del          = 17012;
    c2s_friend_pvp_invite   = 17013;
    s2c_friend_pvp_invite   = 17014;
    c2s_friend_block        = 17015;
    c2s_get_tuijian_list    = 17016;
    s2c_get_tuijian_list    = 17017;
    c2s_friend_apply_toB    = 17018;
    s2c_friend_apply_toB    = 17019;
    c2s_friend_apply_get    = 17020;
    s2c_friend_apply_get    = 17021;
    c2s_friend_apply_act    = 17022;
    s2c_friend_apply_act    = 17023;
    c2s_chat                = 17024;
    s2c_chat                = 17025;
    s2c_push_chat           = 17026;
    c2s_get_offline_chat    = 17027;
    s2c_get_offline_chat    = 17028;
    c2s_get_offline_ids     = 17029;
    s2c_get_offline_ids     = 17030;
    c2s_set_chat_state      = 17031;
    s2c_set_chat_state      = 17032;

    // 公告及版本奖励
    s2c_tip                 = 18001;
    c2s_show_version        = 18002;
    s2c_show_version        = 18003;
    c2s_get_version_reward  = 18004;
    s2c_get_version_reward  = 18005;
    c2s_gonggao             = 18006;
    s2c_gonggao             = 18007;

    // 武道大会 天梯战场
    c_ttzc_own              = 19001;
    s_ttzc_own              = 19002;
    c_ttzc_rank             = 19003;
    s_ttzc_rank             = 19004;
    c_ttzc_rand             = 19005;
    s_ttzc_rand             = 19006;
    c_ttzc_change_role      = 19007;
    s_ttzc_change_role      = 19008;
    c_attack_rank           = 19009;
    s_attack_rank           = 19010;
    c_attack_rank_result    = 19011;
    s_attack_rank_result    = 19012;
    c_ttzc_rank_show        = 19013;
    s_ttzc_rank_show        = 19014;
    c_ttzc_rr_info          = 19015;
    s_ttzc_rr_info          = 19016;
    c_ttzc_rr_get           = 19017;
    s_ttzc_rr_get           = 19018;
    c_ttzc_add_count        = 19019;
    s_ttzc_add_count        = 19020;
    c_ttzc_rr_time          = 19021;
    s_ttzc_rr_time          = 19022;
    c_ttzc_rr_time_info     = 19023;
    s_ttzc_rr_time_info     = 19024;
    c_ttzc_player_role      = 19025;
    s_ttzc_player_role      = 19026;
    c_ttzc_battle_log       = 19027;
    s_ttzc_battle_log       = 19028;



}

//错误码
enum e_code{
	none = 0; 
	ok = 1;   									// 正常返回
	e_gold_not_enough = 2;						// 金币不足
	e_lv_not_enough = 3;						// 等级不足
	e_exception = 4;                      		// 异常
	e_item_not_enough = 5;						// 物品不足
	e_timeout            = 6;                  	// 网络连接超时
	e_diamond_not_enough = 7;					// 钻石不足
	e_lv_full = 8;                              // 等级已满
	e_num_limit = 9;                            // 次数限制
	e_num_err_id = 10;                          // 数字id错误
	e_num_not_enough = 11;                      // 数量不足
    e_num_overflow = 12;						// 超出允许数量
    e_time_limit = 13;						    // 时间-异常
	//上面是公用错误码

	//帐号错误码
	e_sense_nick = 1001;						// 玩家名含有敏感字符
	e_user_not_found = 1002;					// 玩家不存在
	e_be_ban = 1003;                           	// 您已被封号，请联系管理员
	e_login_timeout = 1004;                  	// 登录超时
	e_user_have_register = 1005;             	// 玩家已经注册
	e_nick_have_exists = 1006;					// 玩家名已经占用
	e_nick_len_error   = 1007;					// 玩家名只能是1-6个汉字
	e_nick_illegal	= 1008;						// 玩家名含有非法字符
	e_sign_error		= 1009;              	// 验证失败
	e_main_node_error = 1010;                   // 没有可用节点
	e_accname_error = 1011;						// 账号名不合法
	e_version_err = 1012;						// 版本号异常,过低等
    e_other_login = 1013;						// 他人顶号
    e_fenghao = 1014;						    // 封号

	//pvp
    e_team_not_or_full      = 1201;             // 队伍不存在或者已满
    e_team_err_teamid       = 1202;             // 错误的队伍id
    e_team_has_team         = 1203;             // 已有队伍
    e_team_err_roleid       = 1204;             // 错误的角色id
    e_team_no_right         = 1205;             // 没有修改的权力

    // role
    e_role_err_id           = 1301;             // 角色id错误

    // 好友
    e_have_in_friend = 1701;                    // 对方已经在你好友中
    e_my_friend_num_limit = 1702;               // 好友已达上线
    e_friend_repeat_apply = 1703;               // 您已经申请添加好友了
    e_friend_apply_frequently = 1704;           // 您申请过于频繁
    e_other_friend_full = 1705;					// 对方好友已满
    e_him_does_not_you_friend = 1706;           // 对方没有你好友
    e_chat_jinyan = 1707;                       // 已被禁言

    // 兑换码
    e_dhm_code_err = 1801;                          // 错误的兑换码
    e_dhm_code_geted = 1802;                        // 已获得过该兑换码
    e_dhm_code_type_geted = 1803;                   // 已获得过该兑换码
}