syntax = "proto3";

package tutorial;  
option go_package ="../msg"; // 指定RPC文件生成路径地址  


enum ITEM_POP_LABEL { // item弹窗标签
	Playroom = 0;
	PiggyBank = 1;
	Charge = 2;
	Endless = 3;
	LevUpReward = 4;
	HandleChess = 5;
	HandbookReward = 6;
	OrderReward = 7;
	DecorateCost = 8;
	DecorateAdd = 9;
	BuyChessBagGrid = 10;
	ChessEx = 11;
	CardCollectReward = 12;
	ExStarReward = 13;
	AllCollectReward = 14;
	GuideReward = 15;
	DailyTaskReward = 16;
	DailyWeekReward = 17;
	BuyEnergy = 18;
	SevenLoginRewardLabel = 19;
	MonthLoginReward = 20;
	FastProduceReward = 21;
	LimitSenceReward = 22;
	MailReward = 23;
	FreeShop = 24;
	ChessShop = 25;
	RefreshChessShop = 26;
	EndlessReward = 27;
	PiggyBankReward = 28;
	ChampshipReward = 29;
	LimitEventReward = 30;
	ChampshipRankReward = 31;
	invite = 32;
	SelectLimitEvent = 33;
	MiningTake = 34;
	MiningReward = 35;
	GuessColor = 36;
	GuessColorReward = 37;
	RaceReward = 38;
	PlayroomGame = 39;
	PlayroomDraw = 40;
	PlayroomChip = 41;
	PlayroomFlip = 42; 
	FriendtreasureFilp = 43; // 宠物宝藏翻牌
	FriendtreasureEnd = 44; 
	GM = 45;
	Friendtreasure = 46;
	CardHandbookReward = 47; // 卡牌图鉴奖励
	LimitEventChestRain = 48; // 限时事件宝箱雨
	GetEnergyByAD = 49; // 看广告获取体力
	SourceChest = 50; // 开启资源宝箱
	PlayroomBuyItem = 51; // playroom打工购买物品
	CardSeasonFirstReward = 52; // 卡牌赛季初奖励
	AllCollectRewardHB = 53; // 图鉴全收集奖励 图鉴体力补发
	PlayroomShop = 54; // playroom商店
	HandbookAllReward = 55; // 图鉴收集奖励
	TLUpvote = 56; // 时间线点赞
	Collect = 57; // 收集
	ActivityGift = 58; // 活动礼包
	ActivityReward = 59; // 活动奖励
	CatTrickReward = 60; // 猫咪恶作剧奖励
	AddWish = 61; // 心愿单奖励
	GetWish = 62; // 心愿单奖励
	PlayroomTask = 63; // playroom任务
	PlayroomTaskReward = 64; // playroom任务奖励 大奖
	PlayroomUpvote = 65; // 玩家点赞
	DecorateReward = 66; // 装饰奖励
	CatnipReward = 67; // 猫草大作战奖励
	CatnipGrandReward = 68; // 猫草大作战大奖奖励
	CatnipPlay = 69; // 猫草大作战玩法奖励
	FriendTReward = 70; // 好友时间线奖励
	PetTheif = 71; // 宠物小偷奖励
	GuideTaskReward = 72; // 新手任务奖励
	GuideActiveReward = 73; // 新手任务活跃度奖励
	PassCharge = 74; // 通行证充值
	ActPassReward = 75; // 通行证奖励
	FriendReplyHandle = 76; // 好友请求处理
	GetChessRetireReward = 77; // 退役奖励
	ApplyFriendSponsor = 78; // 申请好友赞助
}
enum HANDLE_TYPE {
	ADD = 0;
	COMPOSE = 1;
	BUY = 2;
	SELL = 3;
	REMOVE = 4;
}

enum RES_CODE {
	FAIL = 0;
	SUCCESS = 1;
	Protocol_Error_Account_Exist              = 100; // 账号已存在
	Protocol_Error_Account_OR_PWD_ERROR       = 101; // 账号或密码错误
	Protocol_Error_Account_OR_PWD_Short       = 102; // 账号或密码过短
	Protocol_Error_Account_Fail               = 103; // 账号操作失败
	Protocol_Error_Account_NoExsit            = 104; // 账号不存在
	Protocol_Error_Account_Code_Error 	      = 105; // 验证码错误
	Protocol_Error_Account_Device_Error       = 106; // 设备号错误
	Protocol_Error_Id_Not_Verify       		  = 107; // 未实名认证
	Protocol_Error_Id_Verify_Error 	  	      = 108; // 实名认证失败
}

enum ITEM_TYPE {
	ENERGY = 0;
	STAR = 1;
	DIAMOND = 2;
}

//活动类型
enum ACTIVITY_TYPE {
	ACTIVITY_TYPE_DEFAULT = 0;
	ACT_TYPE_MINING        = 1; // 挖矿
	ACT_TYPE_GUESS_COLOR   = 2; // 猜颜色
	ACT_TYPE_RACE          = 3; // 赛跑
	ACT_TYPE_DISCOUNT_GIFT = 4; // 折扣礼包
	ACT_TYPE_ADD_GIFT      = 5; // 一加一礼包
}

enum ORDER_TYPE {
	ORDER_TYPE_DEFAULT = 0;
	Common_type      = 1;  // 普通订单
	Extra_type       = 2;  // 额外订单
	Super_type       = 3;  // 超级订单
	Preheat_type     = 4;  // 预热订单
	Trigger_type     = 5;  // 触发订单
	Clean_type       = 6;  // 退役发射器清理订单
	Clean_Order_type = 7;  // 清理无法生成订单的棋子
	Clean_type2      = 8;  // 棋盘空格不足清理棋子的订单
	COMFORT_TYPE     = 9;  // 安慰订单
	Guide_type       = 10; // 引导订单
	Pet_type         = 11; // 宠物订单
	Preview_type     = 12; // 预览订单
	Fixed_type 	     = 13; // 修复订单
	Playroom_type   = 14; // playroom订单
}

enum LOGIN_TYPE {
	ACCOUNT_LOGIN = 0; // 账号密码登录
	CODE_LOGIN = 1; // 验证码登录
	DEVICE_LOGIN = 2; // 设备号登录
	SDK_LOGIN = 3; // 第三方SDK登录
}

// 时间线类型
enum TIME_LINE_TYPE {
	DEFAULT = 0;
	LOG_TYPE_FRIEND_APPLY      = 1;  // 收到申请好友
	LOG_TYPE_FRIEND_BECOME     = 2;  // 成为好友
	LOG_TYPE_CARD_EX_SEND      = 3;  // 发起卡牌交换申请
	LOG_TYPE_CARD_SEND         = 4;  // 赠送卡牌
	LOG_TYPE_CARD_GIVE         = 5;  // 请求卡牌
	LOG_TYPE_CARD_SELECT_GET   = 6;  // 选择卡牌交换
	LOG_TYPE_CARD_ACCEPT_GIVE  = 7;  // 接受卡牌
	LOG_TYPE_CARD_EX_GET       = 8;  // 收到卡牌交换申请
	LOG_TYPE_CARD_SELECT_SEND  = 9;  // 选择卡牌交换
	LOG_TYPE_CARD_EX_SUCCESS_1 = 10; // 卡牌交换成功
	LOG_TYPE_CARD_EX_SUCCESS_2 = 11; // 卡牌交换成功
	LOG_TYPE_FRIEND_DELETE     = 14; // 删除好友
	LOG_TYPE_PLAYROOM_VISIT    = 15; // 非小猫游戏，他人偷走了玩家的猫币
	LOG_TYPE_HANDBOOK          = 16; // 图鉴收集
	LOG_TYPE_HANDBOOK_UPVOTE   = 17; // 图鉴点赞
	LOG_TYPE_CHARGE_SEND 	   = 18; // 充值赠送
	LOG_TYPE_CHARGE_RECEIVED   = 19; // 充值接受
	LOG_TYPE_WISH	           = 20; // 心愿单
	LOG_TYPE_FRIEND_BECOME_NPC     = 21;  // NPC成为好友
	LOG_TYPE_PLAYROOM_UPVOTE   = 22; // playroom点赞
	LOG_TYPE_PLAYROOM_CHAMPSHIP = 23; // 竞标赛排名
	LOG_TYPE_TREASURE = 24; // 宠物宝藏
	LOG_TYPE_CARD_SEND_ACCEPT   = 25; // 收到赠送卡牌
	LOG_TYPE_PLAYROOM_CAT_WIN   = 26; // 小猫游戏，给小猫成功装箱
	LOG_TYPE_PLAYROOM_CAT_LOSE  = 27; // 小猫游戏，装箱小猫未成功
	LOG_TYPE_CARD_GIVE_ACCEPT   = 28; // 接受卡牌请求
	LOG_TYPE_FRIEND_INVITE      = 29; // 邀请注册
	LOG_TYPE_TREASURE_HELP = 30; // 宠物宝藏帮助
	LOG_TYPE_FRIEND_SPONSOR     = 31; // 好友赞助体力
	LOG_TYPE_FRIEND_SPONSOR_GET = 32; // 获得好友赞助体力
}


message ClientReq{   //客户都请求数据
  string func = 1;  //  serverMode/functionID
  string cid = 2;
  bytes info = 3;
  string sessionId = 4;
  string gatewayId = 5;
  string userId = 6;
  string userBase = 7;
}

message ReqOfflineReconnect{
	int64 dwUin = 1;
	
}
message ResOfflineReconnect{
	int64 dwUin = 1;
	int32 Result = 2;
}
message ReqBindFacebookAccount{
	int64 dwUin = 1;
	string BindAccountId = 2;
}

message ResBindFacebookAccount{
	int64 dwUin = 1;
	string BindAccountId = 2;
	int32 ResultCode = 3;
}
////请求强制绑定已绑过其他设备的fb并且不同步数据
message ReqOnlyBindFacebook{
	int64 dwUin = 1;
	string BindAccountId = 2;
}

message ResOnlyBindFacebook{
	int64 dwUin = 1;
	string BindAccountId = 2;
	int32 ResultCode = 3;
}
////请求接触绑定
message ReqUnBindFacebook{
	int64 dwUin = 1;
	string BindAccountId = 2;
}

message ResUnBindFacebook{
	int32 ResultCode = 1;
	string BindAccountId = 2;
}
////请求强制绑定已绑过其他设备的fb并且同步数据
message ReqSynGameData{
	int64 dwUin = 1;
	string NewFBId = 2;
}

message ResSynGameData{
	int64 dwUin = 1;
	int32 ResultCode = 2;
}
message ForceKickOut{
	
}
message ResServerVersion{
	int32 Version = 1;
}
message ResChessColorData{
	map<string,int32> mChessColorData = 1;
}
message ClientRes{   //客户都请求数据返回 和主动推送
   	string func = 1;
  	string cid = 2;
  	bytes info = 3;
}
////请求注册账号
message ReqRegisterAccount{
	string UserName = 1;
	string UserPwd = 2;
	int32   dwUin = 3;
	string Device = 4; // 设备标识
}

////响应注册账号
message ResRegisterAccount{
	int32 ResultCode = 1;
}
////请求登录
message ReqLogin{
	string UserName = 1;
	string UserPwd = 2; 
	string Code = 3; // 验证码
	string Device = 4; // 设备标识
	LOGIN_TYPE type = 5; // 登录方式
}

message ReqLoginCode{
 string TelPhone = 1; // 手机号码
}

message ResLoginCode{
 int32 ResultCode = 1; // 0 成功 其他失败
 string Msg = 2; // 错误信息
 string Code = 3; // 验证码 TODO 测试
}

message ReqId2Verify{
 string Id = 1; // 身份证号码
 string Name = 2; // 姓名
}

message ResId2Verify{
 	RES_CODE ResultCode = 1; // 0 成功 其他失败
	string Msg = 2; // 错误信息
}

////响应登录
message ResLogin{
	int32 ResultCode = 1;
	int64 dwUin = 2;
	string UserName = 3;
	string FaceBookId = 4;
	string Msg = 5;	// 错误信息
}

message ReqChangePassword{
	string UserName = 1;
	string OldPwd = 2; // -1表示不校验旧密码
	string NewPwd = 3;
}

message ResChangePassword{
	int32 ResultCode = 1;
}

///请求玩家基本信息（玩家登入成功后，第一条请求信息）
message ReqPlayerBaseInfo{
	int64 dwUin = 1;
}

//响应基本信息
message ResPlayerBaseInfo{
	int64 dwUin = 1;
	int32 energy = 2;
	int32 star = 3;
	int32 recover_time = 4;
	int32 diamond = 5;
	int32 level = 6;
	int32 exp = 7;
	string start_order_id = 8;
	int32 music_code = 9;
	int32 guild = 10;
	int32 pack_unlock_count = 11;
	int32 last_play_time = 12;
	int64 ban = 13;
	string user_name = 14;
	int32 login_time = 15;
	int32 logout_time = 16;
	int32 node = 17;
	int32 rolecreatetime = 18;
	int32 EmitOrderCnt = 19;
	int32 NoAd = 20;
	int32 ChampshipsGroupID = 21;
	int32 LastChampGroupID = 22;
	string FaceBookId = 23;
	int32 register_time = 24;
}
message ReqPlayerAsset{}
// 玩家资产
message ResPlayerAsset{
	int64 dwUin = 1;
	int32 energy = 2;
	int32 star = 3;
	int32 recover_time = 4;	
	int32 diamond = 5;
	int32 level = 6;
	int32 exp = 7;
	int32 Login = 8;
	int32 Logout = 9;
	int32 PExp = 10; // 玩家经验
	int32 LoginDay = 11; // 登录天数
}

//客户端向服务器请求更新基本信息条目（没有响应）
message UpdateBaseItemInfo{
	int64 dwUin = 1;
	map<int32, int32> mUpdateItem = 2;
}

message NotifyRenewBuyEnergyCnt{
	int64 dwUin = 1;
	int32 CurCnt = 2;
}

///请求移除广告
message ReqRemoveAd {
  int64 dwUin = 1;
}
////响应移除广告
message ResRemoveAd {
  int32 ResultCode = 1;
}

//服务器向客户端通知间隔增长的体力
message NotifyAddEnergy{
	int64 dwUin = 1;
	int32 addCnt = 2;
}
///请求服务器时间
message ReqServerTime {
  int64 dwUin = 1;
}
////响应服务器时间
message ResServerTime {
  int32 ServerTime = 1;
}

/////////////请求棋盘数据

message ReqPlayerChessData{
  int64 dwUin = 1;
}
///响应棋盘数据
message ResPlayerChessData{
	int64 dwUin = 1;
	map<string, int32> mChessData = 2;
	repeated int32 ChessList = 3;
	repeated int32 ChessBuff = 4;
}

message ResPlayerChessInfo{
	repeated int32 ChessList = 1;
	repeated int32 ChessBuff = 2;
	ChessBag ChessBag = 3;
	repeated string RetireEmit = 4;
	repeated int32 Honor = 5;
	PartBag PartBag = 6; // 满级零件
	repeated string RetireReward = 7; // 退役奖励
}

message ReqGetChessRetireReward{
	string Id = 1; // 发射器系列ID：A、B、C...
}

message ResGetChessRetireReward{
	RES_CODE code = 1;
	string msg = 2;
	string Id = 3; // 发射器系列ID：A、B、C...
}

message PartBag{
	repeated PartBagGrid PartBagGrids = 1; //已解锁零件背包格子
}

message PartBagGrid{
	int32 PartId = 1; //零件ID
	int32 Count = 2; //数量
}

message ReqPutPartInBag{
	int32 ChessId = 1; //零件ID
	map<string, int32> mChessData = 2;
}

message ResPutPartInBag{
	RES_CODE code = 1;
	string msg = 2;
}


// 棋盘操作队列
message ChessHandle{
    HANDLE_TYPE type = 1;
    int32 Emit = 2;
    int32 ChessId = 3;
	int32 Id = 4;
	repeated int32 ActType = 5; // 活动类型
}

/////同步棋盘数据
message UpdatePlayerChessData{
	int64 dwUin = 1;
	map<string, int32> mChessData = 2;
	repeated ChessHandle mChessHandle = 3;
}

message ResUpdatePlayerChessData{
    RES_CODE code = 1;
    string msg = 2;
}

// 分离器
message ReqSeparateChess{
	int32 ChessId = 1;
	map<string, int32> mChessData = 2;
}

message ResSeparateChess{
	RES_CODE code = 1;
	string msg = 2;
}

// 神奇魔术棒（升级器）
message ReqUpgradeChess{
	int32 ChessId = 1;
	map<string, int32> mChessData = 2;
}

message ResUpgradeChess{
	RES_CODE code = 1;
	string msg = 2;
}

// 从缓存中获取棋子
message ReqGetChessFromBuff{
	int32 ChessId = 1;
	map<string, int32> mChessData = 2;
}

message ResGetChessFromBuff{
	RES_CODE code = 1;
	string msg = 2;
}

enum CHESS_EX_TYPE {
	CHESS_EX_NONE = 0; // 无
	CHESS_EX_BUBBLE = 1; // 气泡
	CHESS_EX_BOX = 2; // 宝箱解锁
	CHESS_EX_QUICK_BUY = 3; // 快捷购买
	CHESS_EX_EVENT = 4; // 限时事件气泡
	CHESS_EX_EVENT_LITTLE_APPRENTICE = 5; // 限时事件小学徒
}

// 棋子转换
message ReqChessEx{
	int32 OldChessId = 1;
	int32 NewChessId = 2;
	int32 CostDia = 3;
	CHESS_EX_TYPE Type = 4; //1 气泡 2 宝箱解锁 3 快捷购买 4 限时事件气泡 
	map<string, int32> mChessData = 5;
	int32 CostStar = 6; // 消耗星星
}

message ResChessEx{
	RES_CODE code = 1;
    string msg = 2;
}

// 开启资源宝箱
message ReqSourceChest{
	int32 ChestId = 1;
	map<string, int32> mChessData = 2;
}

message ResSourceChest{
	RES_CODE code = 1;
	string msg = 2;
}

// playroom 打工离线
message ReqPlayroomOutline{
	int32 OldChessId = 1;
	int32 NewChessId = 2;
	int32 CostDia = 3;
	int32 Type = 4; //1 气泡 2 宝箱解锁 3 快捷购买 4 打工离线
	map<string, int32> mChessData = 5;
}

message ResPlayroomOutline{
	RES_CODE code = 1;
    string msg = 2;
}

// 棋盘背包
message ChessBag{
	repeated ChessBagGrid ChessBagGrids = 1; //已解锁棋盘背包格子
	int32 ChessBuyCnt = 2; //已购买棋盘格子数
	int32 ChessFreeCnt = 3; //剩余免费解锁次数
}

message ChessBagGrid{
	int32 Id = 1; //格子ID
	int32 ChessId = 2; //棋子ID
	int32 EmitId = 3; //发射器ID
}

// 放置棋子进背包
message ReqPutChessInBag{
	int32 ChessId = 1;
	int32 BagId = 2;	
	int32 EmitId = 3; //发射器ID
	map<string, int32> mChessData = 4;
}

message ResPutChessInBag{
	RES_CODE code = 1;
	string msg = 2;
}

// 从背包取出棋子
message ReqTakeChessOutBag{
	int32 BagId = 1;
	map<string, int32> mChessData = 2;
}

message ResTakeChessOutBag{
	RES_CODE code = 1;
	string msg = 2;
}

// 购买棋盘格子
message ReqBuyChessBagGrid{
}

message ResBuyChessBagGrid{
	RES_CODE code = 1;
	string msg = 2;
}

///请求玩家身份信息
message ReqPlayerProfileData{
	int64 dwUin = 1;	
}

message ResPlayerProfileData{
	int64 dwUin = 1;
	int32 ImageFrame = 2;
	int32 ImageIcon = 3;
	int32 DecorateCnt = 4;
	string NickName = 5;
	string PicURL = 6;
	string UnlockFrame = 7;
	string UnlockIcon = 8;
	int32 ActiveTime = 9;
}

///请求玩家身份信息
message ReqPlayerBriefProfileData{
	int64 dwUin = 1;	
}

message ResPlayerBriefProfileData{
	int64 dwUin = 1;
	int32 ImageFrame = 2;
	int32 ImageIcon = 3;
	int32 DecorateCnt = 4;
	string NickName = 5;
	string PicURL = 6;
	int32 ActiveTime = 7;
	map<int32, int32> SetEmoji = 11; // 已设置的头像

}

//******************NEW VERSION*****************

// 设置能量倍数
message ReqSetEnergyMul{
	int32 EnergyMul = 1;
}

message ResSetEnergyMul{
	RES_CODE ResultCode = 1;
	string Msg = 2;
}

enum LANG_TYPE {
	LANG_CN = 0; // 中文
	LANG_EN = 1; // 英文
	LANG_PTBR = 2; // 葡萄牙语
	LANG_ES_LATAM = 3;// 西班牙语-拉丁美洲
}

// 设置能量倍数
message ReqLang{
	LANG_TYPE Lang = 1; // 语言 1 英文 0 中文
}

message ResLang{
	RES_CODE ResultCode = 1;
	string Msg = 2;
}

message BaseInfo {
	int32 EnergyMul = 1;  // 能量倍数
	bool IsFirstBuy = 2;  // 是否已第一次购买体力商店
	int32 EnergyBuy = 3; // 今日体力商店购买次数
	int32 EnergyAD = 4; // 今日看广告获取体力次数
	LANG_TYPE Lang = 5; // 语言 1 英文 2 中文
}

message ReqUserInfo{}

message UserInfo {
	int64 Uid = 1;
	string Nickname = 2;
	int32 Avatar = 3;
	int32 Face = 4;
	int32 DecorateCnt = 5;
	repeated AvatarInfo AvatarList = 6;
	repeated FaceInfo FaceList = 7;
	int32 Login = 8; // 登录
	string PetName = 9; //宠物名字
	repeated EmojiInfo EmojiList = 10; // 表情列表
	map<int32, int32> SetEmoji = 11; // 已设置的头像
	string IdNum = 12; // 身份证号码
	string AddCode = 13; // 邀请码
}

// 设置昵称
message ReqSetName {
	string Name = 1;
}

message ResSetName {
	RES_CODE ResultCode = 1;
	string Msg = 2;
}

// 设置宠物名字
message ReqSetPetName {
	string Name = 1;
}

message ResSetPetName {
	RES_CODE ResultCode = 1;
	string Msg = 2;
}

//	购买能量
message ReqBuyEnergy{
	int32 Energy = 1; // 购买体力
}

message ResBuyEnergy{
	RES_CODE Code = 1;
	string Msg = 2;
}

//	看广告获取能量
message ReqGetEnergyByAD{}
message ResGetEnergyByAD{
	RES_CODE Code = 1;
	string Msg = 2;
}

message ReqGetHandbookReward {
	int32 ChessId = 1;
}

message ResGetHandbookReward{
	RES_CODE Code = 1;
	string Msg = 2;
}

message HandbookInfo {
	int32 ChessId = 1;
	int32 Status = 2;
}

message Handbook {
	repeated HandbookInfo Handbooks = 1;
	repeated string Collect = 2;// 全收集奖励
}

message RegHandbookAllReward{
	string Type = 1; // "棋子系列 A B C"
}

message ResHandbookAllReward{
	RES_CODE Code = 1;
	string Msg = 2;
}


message ReqRewardOrder{
	int32 OrderId = 1;
	map<string, int32> mChessData = 2;
	repeated int32 ActType = 3; // 活动类型
}

message ResRewardOrder{
	RES_CODE Code = 1;
	string Msg = 2;
}

message ReqCreatePetOrder{}

// 删除订单
message ReqDelOrder{
	int32 OrderId = 1;
}

message ResDelOrder{
	RES_CODE Code = 1;
	string Msg = 2;
}

// 获取出售棋子获得的星星数量
message ReqSellChessNum{
	int32 ChessId = 1;
}

message ResSellChessNum{
	int32 Num = 1;
}

message Order{
	int32 Id = 1;
	repeated int32 ChessId = 2;
	int32 type = 3;
	repeated ItemInfo Items = 4; // 奖励
}

message ResOrderList{
	repeated Order OrderList = 1;
}

// 装饰信息
message ResDecorateInfo {
	int32 AreaId = 1;
	repeated int32 mFinishList = 2;
	repeated int32 RewardArea = 3; // 已领取区域奖励
	repeated DecoratePart Parts = 4; // 零件
}

message DecoratePart{
	int32 Id = 1;
	repeated ItemInfo Items = 2; // 零件
}

// 请求装饰基础信息
message ReqDecorate{
	int32 AreaId = 1;
	int32 DecorateId = 2;
}

message ResDecorate{
	RES_CODE Code = 1;
	string Msg = 2;
}

// 一键装饰
message ReqDecorateAll{

}

message ResDecorateAll{
	RES_CODE Code = 1;
	string Msg = 2;
}

message ReqAreaReward{
 int32 AreaId = 1;
}

message ResAreaReward{
 RES_CODE Code = 1;
 string Msg = 2;
}


// 请求Gm命令
message ReqGmCommand{
	string Command = 1;
	string args = 2;
}

//--------------卡牌------------
message Card {
	int32 Id = 1;
	int32 Count = 2;
}

message ReqCardInfo{}

message ResCardInfo{
	repeated Card CardList = 1; // 卡牌列表
	int32 ExStar = 2; // 额外星级
	int32 Status = 3; // 全收集奖励0:未领取 1:已领取
	repeated int32 CollectId = 4; // 已领取的收集奖励
	int32 ExTimes = 5; //剩余交换次数
	int32 ReqTimes = 6; //剩余请求次数
	map<int32, int32> AllCard = 7; // 万能卡牌
	int32 EndTime = 8; //周期结束时间
	repeated int64 ReqUid = 9; // 今日已请求的Uid
	repeated int64 ExUid = 10; // 今日已置换的Uid
	int32 GoldTimes = 11; //剩余金卡交换次数
	int32 Round  = 12; // 轮次
	map<int32, int32> Handbook = 13; // 图鉴 CardId => Status 1:已解锁 2:已领取
	bool SeasonFirst = 14; // 是否已领取赛季初奖励
}

message ResNotifyCardTimes{
    int32 ExTimes = 1; //剩余兑换次数
    int32 ReqTimes = 2; //剩余请求次数
	repeated int64 ReqUid = 3; // 今日已请求的Uid
    repeated int64 ExUid = 4; // 今日已置换的Uid
	int32 GoldTimes = 5; //剩余金卡交换次数
}

message ReqCardSeasonFirstReward{}

message ResCardSeasonFirstReward{
	RES_CODE Code = 1;
	string Msg = 2;
}

// 领取卡牌图鉴奖励
message ReqCardHandbookReward{
	int32 CardId = 1;
}

message ResCardHandbookReward{
	RES_CODE Code = 1;
	string Msg = 2;
	int32 CardId = 3;
}

// 万能卡兑换
message ReqMasterCard{
    int32 Id = 1; // 万能卡id 6 普通 7 金卡
    int32 CardId = 2; // 兑换的卡id
}

message ResMasterCard{
	RES_CODE Code = 1;
	string Msg = 2;
	int32 MasterId = 3;
	int32 CardId = 4;
}

// 领取卡牌系列收集奖励
message ReqCardCollectReward{
	int32 Color = 1;
}

message ResCardCollectReward{
	RES_CODE Code = 1;
	string Msg = 2;
}	

// 兑换收集星星奖励
message ReqExStarReward{
	int32 Id = 1;
}

message ResExStarReward{
	RES_CODE Code = 1;
	string Msg = 2;
}

// 领取全收集奖励
message ReqAllCollectReward{
	
}

message ResAllCollectReward{
	RES_CODE Code = 1;
	string Msg = 2;
}

// 请求赠送卡片
message ReqCardGive{
	repeated int64 Uid = 1;
	int32 CardId = 2;
}

message ResCardGive{
	RES_CODE Code = 1;
	string Msg = 2;
}

// 同意请求卡牌
message ReqAgreeCardGive{
	string Id = 1; // Id
}

message ResAgreeCardGive{
	RES_CODE Code = 1;
	string Msg = 2;
	string Id = 3;
}

// 拒绝请求卡牌
message ReqRefuseCardGive{
	string Id = 1; // Id
}

message ResRefuseCardGive{
	RES_CODE Code = 1;
	string Msg = 2;
	string Id = 3;
}

// 直接赠送卡牌
message ReqCardSend{
	int64 Uid = 1;
	int32 CardId = 2;
	int32 Emoji = 3; // 表情Id
}
   
message ResCardSend{
	RES_CODE Code = 1;
	string Msg = 2;
}

// 请求卡牌交换
message ReqCardExchange{
	int64 Uid = 1;
	int32 CardId = 2;
	int32 Emoji = 3; // 表情Id
}

message ResCardExchange{
	RES_CODE Code = 1;
	string Msg = 2;
}

// 选择交换的卡牌
message ReqSelectCardExchange{
	string Id = 1;
	int32 CardId = 2;	
}

message ResSelectCardExchange{
	RES_CODE Code = 1;
	string Msg = 2;
	string Id = 3;
}


// 同意卡牌交换
message ReqAgreeCardExchange{
	string Id = 1;	
}
message ResAgreeCardExchange{
	RES_CODE Code = 1;
	string Msg = 2;
	string Id = 3;
	int32 Emoji = 4; // 表情Id
}
// 拒绝选择卡牌进行交换
message ReqRefuseCardSelect{
	string Id = 1;
}
message ResRefuseCardSelect{
	RES_CODE Code = 1;
	string Msg = 2;
	string Id = 3;
}
// 拒绝卡牌交换
message ReqRefuseCardExchange{
	string Id = 1;
}
message ResRefuseCardExchange{
	RES_CODE Code = 1;
	string Msg = 2;
	string Id = 3;
}

// 领取卡牌
message ReqGetFriendCard{
    string Id = 1;
}

message ResGetFriendCard{
	RES_CODE Code = 1;
	string Msg = 2;
	string Id = 3;
	int32 CardId = 4;
	int32 Emoji = 5; // 表情Id
}

// 获取可以交换的金卡
message ReqGetGoldCard{}
message ResGetGoldCard{
    int32 Four = 1; // 四星金卡
    int32 Five = 2; // 五星金卡
}


// 领取引导奖励
message ReqGuideReward{
	int32 Id = 1;
}

message ResGuideReward{
	RES_CODE Code = 1;
	string Msg = 2;
}

message ReqGuidePlayroom{
	int32 Id = 1;
}

message ResGuidePlayroom{
	RES_CODE Code = 1;
	string Msg = 2;
}

message ResGuildInfo{
	map<int32, int32> Reward = 1;
}
message ResGuideInfo{
	map<int32, int32> Reward = 1;
}

// 弹窗

message ResItemPop{
	int32 Id = 1;
	repeated ItemInfo Items = 2; // 道具
	repeated CardPack CardPacks = 3; // 卡包
	string Lable = 4; // 标签
}





message ItemInfo{
	int32 Id = 1;
	int32 Num = 2;
}

message CardPack{
	int32 Id = 1; // 卡包id
	repeated int32 Card = 2;
}

// 新手任务
message ResGuideTask{
	repeated int32 ActiveReward = 1; //已领取活跃度奖励
	map<int32, GuideTask> Task = 2; //任务进度
	int32 Active = 3; //活跃度
	int32 UnlockTime = 4; // 功能解锁时间
}
message GuideTask{
	int32 Status = 1;	//状态 0:未完成， 1已完成 2已领取
	QuestProgress Progress = 2; //任务进度
	int32 Id = 3; //任务id
}

message ReqGetGuideTaskReward{
	int32 Id = 1;// 任务id
}

message ResGetGuideTaskReward{
	RES_CODE Code = 1;
	string Msg = 2;
	int32 Id = 3;// 任务id
}

message ReqGetGuideActiveReward{
	int32 Id = 1;// 进度奖励id
}

message ResGetGuideActiveReward{
	RES_CODE Code = 1;
	string Msg = 2;
	int32 Id = 3;// 进度奖励id
}

//日常任务
message ResDailyTask{
	map<int32, DailyWeek> WeekReward = 1; //周奖励
	map<int32, DailyTask> DailyTask = 2; //任务进度
	int32 Active = 3; //活跃度
	int32 DayEnd = 4; // 日结束时间戳
	int32 WeekEnd = 5; //周结束时间戳
}



message DailyWeek{
	repeated ItemInfo Items = 1; //奖励
	bool Status = 2; //状态 0:未领取 1:已领取
	int32 NeedActive = 3; //需要的活跃度
}

message DailyTask{
	int32 Status = 1;	//状态 0:未完成， 1已完成 2已领取
	bool UnLock = 2; //是否解锁 0:未解锁 1:已解锁
	QuestProgress Progress = 3; //任务进度
	repeated ItemInfo Items = 4; //奖励
	int32 Id = 5; //任务id
	int32 Index = 6; //任务索引
}

message QuestProgress{
	string Label = 1; //任务标签
	int32 Num = 2; //当前进度
	int32 Target = 3;	//目标
	bool Status = 4; //状态 0:未完成， 1已完成
	int32 Param = 5; //参数
}

// 领取日常任务奖励
message ReqGetDailyTaskReward{
	int32 Id = 1;
}

message ResGetDailyTaskReward{
	RES_CODE Code = 1;
	string Msg = 2;
}

// 领取日常周奖励
message ReqGetDailyWeekReward{
	int32 Id = 1;
}

message ResGetDailyWeekReward{
	RES_CODE Code = 1;
	string Msg = 2;
}
message ReqDailyUnlock{}
message ResDailyUnlock{
	RES_CODE Code = 1;
	string Msg = 2;
}
// 头像

message ResFaceInfo{
	repeated FaceInfo FaceList = 1;
	int32 SetId = 2;
}
message FaceInfo{
	int32 Id = 1; // 头像id
	int64 EndTime = 2; // 结束时间
	int64 AddTime = 3; // 添加时间
}

message ReqSetFace{
	int32 Face = 1;
}

message ResSetFace{
	RES_CODE Code = 1;
	string Msg = 2;
}

// 头像框

message ResAvatarInfo{
	repeated AvatarInfo AvatarList = 1;
	int32 SetId = 2;
}

message AvatarInfo{
	int32 Id = 1; // 头像框id
	int64 EndTime = 2; // 结束时间
	int64 AddTime = 3; // 添加时间
}
message ReqSetAvatar{
	int32 Avatar = 1;
}

message ResSetAvatar{
	RES_CODE Code = 1;
	string Msg = 2;
}

// 表情 Emoji
message EmojiInfo{
	int32 Id = 1; // 表情id
	int64 EndTime = 2; // 结束时间
	int64 AddTime = 3; // 添加时间
}

// 设置表情
message ReqSetEmoji{
	int32 Id = 1; // 表情Id
	int32 Type = 2; // 表情类型 Greeting = 0, Happy = 1, Taunt = 2, Fail = 3
}

message ResSetEmoji{
	RES_CODE Code = 1;
	string Msg = 2;
}

// 七日签到
message ResSevenLogin{
	repeated SevenLoginReward WeekReward = 1; //周奖励
	repeated SevenLoginReward MonthReward = 2; //月奖励
	int32 Active = 3; //活跃度
	bool IsBack = 4; //是否召回
}

message SevenLoginReward{
	repeated ItemInfo Item1 = 1; //奖励1
	repeated ItemInfo Item2 = 2; //奖励2
	repeated ItemInfo Item3 = 3; //奖励3
	int32 Status = 4; //状态 0:未领取 1:可领取 2：已领取
	int32 Id = 5; //id
}
// 领取周奖励
message ReqGetSevenLoginReward{
	int32 Id = 1;
}

message ResGetSevenLoginReward{
	RES_CODE Code = 1;
	string Msg = 2;
}

// 领取月奖励
message ReqGetMonthLoginReward{
	int32 Id = 1;
}

message ResGetMonthLoginReward{
	RES_CODE Code = 1;
	string Msg = 2;
}

// 活动
message ResActivity{
	repeated ActivityInfo ActiveList = 1;
}

message ActivityInfo{
	int32 Id = 1; //id
	int32 Type = 2; //类型
	int32 StartTime = 3; //开始时间
	int32 EndTime = 4; //结束时间
	int32 Status = 5; //状态 0:未开始 1:进行中 2:已结束
	string Title = 6; //标题
	int32 Red = 7; //红点
}

// 领取活动奖励
message ReqActivityReward{
	int32 Id = 1; //活动id
}

message ResActivityReward{
	RES_CODE Code = 1;
	string Msg = 2;
}

// #region 限时事件
// 限时事件
message ReqLimitEvent{}

message ResLimitEvent{
	map<int32, LimitEvent> LimitEventList = 1; //限时事件列表
}
message ResLimitEventProgress{
	int32 ProgressMax = 1; //最大进度
	int32 Progress = 2; //进度
	map<int32, int32> ProgressReward = 3; //奖励 可以选择的奖励 Id =》 RewardId
}
message ReqLimitEventReward{ // 领取限时事件奖励
	int32 Id = 1; 
}

message ResLimitEventReward{
	RES_CODE Code = 1;
	string Msg = 2;
}

message ReqSelectLimitEvent{
    int32 Id = 1;
}
message ResSelectLimitEvent{
	RES_CODE Code = 1;
	string Msg = 2;
}

// 限时事件参数 key值对
enum LimitEventParam{
	LEP_NONE = 0; //无
	CAT_TRICK_ENERGY = 1; //猫咪能量
	CAT_TRICK_TYPE = 2; //猫咪类型
	PAYBACK_DAY_COUNT = 3; //回收日
	LUCKY_CAT_EARNINGS = 4; //幸运猫
}

message LimitEvent {
	int32 EndTime = 1; //结束时间	
	int32 Cd = 2; //cd
	float mul = 3; //倍数
	int32 StartTime 	= 4; //开始时间
	map<string, int32> Param = 5; //key 为枚举 LimitEventParam
	int32 ShowTime = 6; //显示时间
}


message LimitEventNotify {
	int32 Id = 1; // 限时事件类型	
	int32 Type = 2; // 0 开始 1 结束
	int32 EndTime = 3; //结束时间
	int32 Cd = 4; //cd
}

message ReqLimitEventLuckyCat{
	int32 ChessId = 1;
	map<string, int32> mChessData = 2;
}

message ResLimitEventLuckyCat{
	RES_CODE Code = 1;
	string Msg = 2;
}


message ReqLimitSenceReward{}

message ResLimitSenceReward{
	RES_CODE Code = 1;
	string Msg = 2;
}

message ResChessRainReward{
	repeated ItemInfo Items = 1; //奖励道具
	int32 Id = 2; // 转盘id
}

message ReqFastProduceInfo{}
message ResFastProduceInfo{
	int32 Energy = 1; // 快手能量
	int32 Num = 2; // 快手次数
	int64 EndTime = 3; // 结束时间
}

// 连技快手奖励
message ReqFastProduceReward{
	int32 Energy = 1; 
}

message ResFastProduceReward{
	RES_CODE Code = 1;
	string Msg = 2;
	int64 EndTime = 3;
	int32 Num = 4;
}

message ReqCatTrickReward{}

message ResCatTrickReward{
	RES_CODE Code = 1;
	string Msg = 2;
	bool IsClose = 3; // 是否关闭
}

// 好友

// 搜索好友
message ReqSearchPlayer{
	string Uid = 1;
}


message ResSearchPlayer{
	int32 Code = 1;
	repeated ResPlayerSimple List = 2;
}

message ReqFriendPlayerSimple{
	int64 Uid = 1;
}
message ResFriendPlayerSimple{
	int64 Uid = 1;
	string Name = 2;
	int32 Face = 3;
	int32 Avatar = 4;
	int32 Level = 5;
	int32 Decorate = 6;
	int32 login = 7; 
	int32 loginout = 8;
	string Facebook = 9;
	map<int32, int32> Emoji = 10; // 表情
	int64 AddTime = 11; // 添加时间
	int64 Interact = 12; // 最后一次互动的时间
	map<int32, int32> Playroom = 13; // 空间装饰 位置 =》 装饰id
	map<int32, int32> DressSet = 14; // 服装装饰 位置 =》 服装id
	repeated int32 Friend = 15; // 好友列表
	ActLog Last = 16; // 最后一次动态
	map<int32, int32> Physiology = 17; // 生理状态 位置 =》 状态
	string PetName = 18; //宠物名字;
}

message ResPlayerSimple{
	int64 Uid = 1;
	string Name = 2;
	int32 Face = 3;
	int32 Avatar = 4;
	int32 Level = 5;
	int32 Decorate = 6;
	int32 login = 7; 
	int32 loginout = 8;
	string Facebook = 9;
	map<int32, int32> Emoji = 10; // 表情
	int64 AddTime = 11; // 添加时间
	int64 Interact = 12; // 最后一次互动的时间
}

enum ActLogType {
	ACT_LOG_TYPE_NONE = 0; // 默认
	ACT_LOG_TYPE_FIRST_LOGIN = 1; // 首次登入游戏
	ACT_LOG_TYPE_COMPLETE_RESTROOM = 2; // 完成休息室
	ACT_LOG_TYPE_COMPLETE_RESTAURANT = 3; // 完成餐厅
	ACT_LOG_TYPE_COMPLETE_BATHROOM = 4; // 完成浴室
	ACT_LOG_TYPE_COMPLETE_CLOAKROOM = 5; // 完成衣帽间
	ACT_LOG_TYPE_GET_NEW_AVATAR = 6; // 获得新头像
	ACT_LOG_TYPE_GET_NEW_AVATAR_FRAME = 7; // 获得新头像框
	ACT_LOG_TYPE_GET_NEW_EMOTION = 8; // 获得新表情
	ACT_LOG_TYPE_GET_NEW_DECORATION = 9; // 获得新装饰品
	ACT_LOG_TYPE_GET_NEW_COSTUME = 10; // 获得新服装
	ACT_LOG_TYPE_COMPLETE_CARD_ALBUM = 11; // 完成卡册收集
	ACT_LOG_TYPE_COMPLETE_ALL_CARDS = 12; // 完成全卡牌收集
	ACT_LOG_TYPE_GET_CHAMPIONSHIP_RANK = 13; // 获得锦标赛名次
	ACT_LOG_TYPE_GET_CHAMPIONSHIP_PRIZE = 14; // 获得锦标赛大奖
	ACT_LOG_TYPE_GET_LIMITED_ACTIVITY_PRIZE = 15; // 获得限时活动大奖
	ACT_LOG_TYPE_JOIN_FRIEND_COOP_ACTIVITY = 16; // 参加好友合作类活动
	ACT_LOG_TYPE_GET_VISIT_GAME_PRIZE = 17; // 获得拜访小游戏大奖（翻牌）
	ACT_LOG_TYPE_GET_VISIT_GAME_PRIZE_1 = 18; // 获得拜访小游戏大奖（除翻牌）
	ACT_LOG_TYPE_OPEN_PET_TREASURE = 19; // 打开宠物宝藏
	ACT_LOG_TYPE_VISIT_UPVOTE = 20; // 拜访时点赞
	ACT_LOG_TYPE_COMPLETE_HANDBOOK_ACHIEVEMENT = 21; // 完成图鉴收集成就
	ACT_LOG_TYPE_COMPLETE_CHAPTER_SCENES = 22; // 完成第X章所有场景
	ACT_LOG_TYPE_LOST_USER_RETURN = 23; // 流失用户回归
}



message ActLog {
	int32 Type = 1;
	int64 Time = 2;
	string Param = 3;
}

message ResPlayerRank{
	int64 Uid = 1;
	string Name = 2;
	int32 Face = 3;
	int32 Avatar = 4;
	int32 Level = 5;
	float score = 6;
	int32 type = 7; // 排行类型 0:玩家 2:机器人
}

message ResFriendLog{
	ResPlayerSimple Player = 1;
	int32 Type = 2;
	int32 Time = 3;
	string Param = 4;
	int32 Id = 5;
	bool Upvote = 6; // 是否点赞
}

message NotifyFriendLog{
    ResFriendLog info = 1;
	FriendBubbleInfo Bubble = 2; // 气泡
}

message FriendBubbleInfo{
	int32 Id = 1; // 气泡id
	int32 Type = 2; // 气泡类型 1:普通 2:
	repeated ItemInfo Items = 3; // 奖励
}

message NotifyFriendCard{
	ResFriendCard Info = 1;
}

message ResFriendCard{
	int64 Uid = 1;
	string Name = 2;
	int32 Face = 3;
	int32 Avatar = 4;
	int32 Level = 5;
	int32 Type = 6;
	int32 Time = 7;
	int32 CardId = 8;
	int32 ExCardId = 9;
	int32 Status = 10;
	string Id = 11;
	int32 Emoji = 12; // 表情Id
}

message ReqKv{
	int32 key = 1;
	string value = 2;
}

message ResKv{
	map<int32, string> kv = 1;
}

message ReqFriendByCode{
	string Code = 1; // 邀请码
}

message ResFriendByCode{
	RES_CODE Code = 1;
	string Msg = 2;
	ResPlayerSimple Player = 3; // 玩家信息
}


// 好友推荐
message ReqFriendRecommend{}
message ResFriendRecommend{
	repeated ResPlayerSimple List = 1;
}
   
   // 隐藏
message ReqFriendIgnore{
	int64 Uid = 1;
}
   
message ResFriendIgnore{
	RES_CODE Code = 1;
	string Msg = 2;   
}
   


// 好友基础信息
message ReqFriendList{}
message ResFriendList{
	repeated ResPlayerSimple FriendList = 1;
	repeated int64 ReqApplyList = 3; // 已申请好友列表
	repeated int32 Npc = 2; // npc列表
	int32 Sponsor = 4; // 今日赞助次数
}

message ReqAddNpc{
	int32 NpcId = 1;
}
message ResAddNpc{
	RES_CODE Code = 1;
	string Msg = 2;
	int32 NpcId = 3;
}
// 好友申请列表
message ReqFriendApply{}
message ResFriendApply{
	repeated ResFriendApplyInfo ApplyList = 1; 
}
message ResFriendApplyInfo{
	ResPlayerSimple Player = 1;
	int32 Time = 2;
}
// 好友卡牌交换列表
message ReqFriendCardMsg{}
message ResFriendCardMsg{
	repeated ResFriendCard MsgList = 1;
}

// 好友心愿单请求列表
message ReqWishApplyList{}
message ResWishApplyList{
	repeated ResFriendApplyInfo ApplyList = 1;
}

// 同意好友心愿单请求
message ReqWishApply{
	int64 Uid = 1;
}

message ResWishApply{
	RES_CODE Code = 1;
	string Msg = 2;
	int64 Uid = 3;
}

// 好友时间线
message ReqFriendTimeLine{}
message ResFriendTimeLine{
	repeated ResFriendLog Log = 1;
	repeated ResFriendReply Reply = 2;
}

message ResFriendReply{
	int32 Id = 1; // 回复id
	int32 Type = 2; // 回复类型 1:打招呼 2：被打招呼
	string Param = 3; // 回复内容
	int32 Status = 4; // 状态 0:未处理 1:已处理
	int64 AddTime = 5; // 添加时间
	int64 EndTime = 6; // 
	ResPlayerSimple Player = 7; // 玩家信息
	repeated ItemInfo Items = 8; // 奖励
}

enum FRIEND_REPLY_TYPE {
	FRIEND_REPLY_TYPE_NONE = 0; // 默认
	FRIEND_REPLY_TYPE_GREET = 1; // 打招呼
	FRIEND_REPLY_TYPE_RETURN_GREET = 2; // 被打招呼
	REPLY_TYPE_CATNIP       = 3; // 猫薄荷加好友
	REPLY_TYPE_CATNIP_ITEMS = 4; // 收到猫薄荷好友道具
}

message ReqFriendReplyHandle{
	int32 LogId = 1; // 时间线id
	string Param = 2; // 回复内容
	int32 Type = 3; // 回复类型 1:处理 2:删除 3：查看
}

message ResFriendReplyHandle{
	RES_CODE Code = 1;
	string Msg = 2;
	int32 LogId = 3; // 时间线id
	int32 Type = 4; // 回复类型 1:处理 2:删除 3：查看;
	FRIEND_REPLY_HANDLE_ERR_TYPE ErrType = 5; // 错误类型;
}

enum FRIEND_REPLY_HANDLE_ERR_TYPE{
	NONE = 0; // 默认
	CATNIP = 1; // 好友位置已满不存在
}

message ResFriendBubble{
	repeated FriendBubbleInfo Bubble = 1; // 气泡
}

// 时间线点赞
message ReqFriendTLUpvote{
	int32 Id = 1;
}

message ResFriendTLUpvote{
	RES_CODE Code = 1;
	string Msg = 2;
	int32 Id = 3;
}

// 时间线领奖
message ReqFriendTReward{
	int32 Id = 1;
}

message ResFriendTReward{
	RES_CODE Code = 1;
	string Msg = 2;
	int32 Id = 3;
}

message ResFriendApplyNotify{
	ResPlayerSimple Player = 1;
	int32 Type = 2; // 1:申请 2:同意 3:拒绝 4:删除;
	int32 Time = 3;
}

message ResFriendReplyNotify{
	ResFriendReply info = 1;
	int32 Type = 2; // 1:打招呼 2：被打招呼;
	int32 Time = 3;
}

// 申请好友
message ReqApplyFriend{
	int64 Uid = 1;
	int32 Type = 2; // 0:普通请求 1：赞助请求
}

message ResApplyFriend{
	RES_CODE Code = 1;
	string Msg = 2;
	int64 Uid = 3;
}

// 同意申请
message ReqAgreeFriend{
	int64 Uid = 1;
}

message ResAgreeFriend{
	RES_CODE Code = 1;
	string Msg = 2;
	int64 Uid = 3;
	ResPlayerSimple Player = 4;
}

// 拒绝申请
message ReqRefuseFriend{
	int64 Uid = 1;
}

message ResRefuseFriend{
	RES_CODE Code = 1;
	string Msg = 2;
	int64 Uid = 3;
}

// 删除好友
message ReqDelFriend{
	int64 Uid = 1;
}

message ResDelFriend{
	RES_CODE Code = 1;
	string Msg = 2;
	int64 Uid = 3;
}

// 玩家榜单
message ReqRank{
	int32 Type = 1; // 1:玩家榜单 2:全球榜单
}

message ResRank{
	int32 Type = 1; // 榜单类型
	map<int32, ResPlayerSimple> RankList = 2; // 榜单数据
	int32 MyRank = 3; // 我的排行
	float MyScore = 4; //我的积分
}

// 邮件列表
message ReqMailList{}
message ResMailList{
	map<int32, MailInfo> MailList = 1;
}
message MailInfo{
	int32 Id = 1; // 邮件id
	string Title = 2; // 标题
	string Content = 3; // 内容
	int32 Time = 4; // 时间
	int32 Status = 5; // 0 未读 1 已读 2 已领取 3 已删除
	repeated ItemInfo Items = 6; // 奖励
	int32 Type = 7; //邮件类型 1普通邮件 2节日邮件 3 礼包邮件
	string TitleEn = 8; // 英文标题
	string ContentEn = 9; // 英文内容
	string SubTitle = 10; // 子标题
	string SubTitleEn = 11; // 英文子标题
	string TitlePtBr = 12; // 葡萄牙标题
	string ContentPtBr = 13; // 葡萄牙内容
	string SubTitlePtBr = 14; // 葡萄牙子标题
	string TitleEsLa = 15; // 西班牙语标题
	string SubTitleEsLa = 16; // 西班牙语子标题
	string ContentEsLa = 17;// 西班牙语内容
}
message MailNotify {
    MailInfo Info = 1;
}
// 读邮件
message ReqReadMail{
	int32 Id = 1;
}

message ResReadMail{
	RES_CODE Code = 1;
	string Msg = 2;
	int32 Id = 3;
}

// 领取邮件
message ReqGetMailReward{
	int32 Id = 1;
}

message ResGetMailReward{
	RES_CODE Code = 1;
	string Msg = 2;
	int32 Id = 3;
}

// 删除邮件
message ReqDeleteMail{
	int32 Id = 1;
}

message ResDeleteMail{
	RES_CODE Code = 1;
	string Msg = 2;
	int32 Id = 3;
}

// 充值

message ResCharge{
	float Charge = 1; // 总充值金额
	int32 Total = 2; // 总充值次数
	repeated int32 First = 3;  //已首充档次
	map<int32, ResSpecialShop> SpecialShop = 4; // 特惠礼包
	int32 FreeShop = 5; // 已领取免费礼包档次  
	map<int32, ResChessShop> ChessShop = 6; // 棋子商店
	map<int32, int32> Gift = 7; // 礼包 礼包id =》 礼包数量
	bool Ad = 8; // 是否有广告礼包
	WishList Wish = 9; // 心愿单
	float SpecialCharge = 10; // 特35天最大充值金额
	int32 SpecialChargeWeek = 11; // 距离现在多少周
	float TodayCharge = 12; // 今日充值金额
	float MonthCharge = 13; // 本月充值金额
	int64 AdEndTime = 14; // 广告礼包结束时间
	map<int32, WeeklyDiscountInfo> WeeklyDiscount = 15; // 每周优惠 id -> 限购次数
	int64 PetWorkRemainTime = 16; // 剩余时间
	int64 WeeklyEndTime = 17; // 每周优惠结束时间
}

message LogoutPetWork{
	int64 WorkTime = 1; // 工作时间
	int64 RemainTime = 2; // 剩余时间
}

message WeeklyDiscountInfo{
	int32 Id = 1; // 每周优惠id
	int32 Count = 2; // 剩余购买次数
	int32 Discount = 3; // 折扣百分比
}

message WishList {
	int32 Id = 1; // 物品id
	int32 Count = 2; // 心愿点数
	repeated int64 Uid = 3; // 今日已发送玩家id
}

// 添加心愿单
message ReqAddWish{
	int32 Id = 1; // 商店id
	int32 Type = 2; // 物品类型 1 playroom商店
}

message ResAddWish{
	RES_CODE Code = 1;
	string Msg = 2;
}

// 领取心愿单奖励
message ReqGetWish{}
message ResGetWish{
	RES_CODE Code = 1;
	string Msg = 2;
}

// 发送心愿单请求
message ReqSendWishBeg{
	repeated int64 Uid = 1; // 玩家id
}

message ResSendWishBeg{
	RES_CODE Code = 1;
	string Msg = 2;
}

message ResSpecialShop {
	int32 Grade = 1; //挡位
	int32 Count = 2; //剩余购买次数
}

message ResChessShop {
	int32 Diamond = 1; // 需要花费钻石
	int32 Count = 2; // 剩余购买数量
	int32 ChessId = 3; // 棋子id
}

message ReqFreeShop{} // 领取免费奖励

message ResFreeShop{
	RES_CODE Code = 1;
	string Msg = 2;
}

// 商店购买棋子
message ReqBuyChessShop{
	int32 Id = 1;
}

message ResBuyChessShop{
	RES_CODE Code = 1;
	string Msg = 2;
}

// 商店购买棋子
message ReqBuyChessShop2{
	int32 Id = 1;
	map<string, int32> mChessData = 2;
}
message ResBuyChessShop2{
	RES_CODE Code = 1;
	string Msg = 2;
}
// 刷新棋子商店
message ReqRefreshChessShop{}

message ResRefreshChessShop{
	RES_CODE Code = 1;
	string Msg = 2;
}

message ReqEndless{}

message ResEndless{
	int32 Id = 1;
	map<int32, ResEndlessInfo> EndlessList = 2;
}

message ResEndlessInfo{
	int32 ChargeId = 1;
	int32 Type = 2;
	repeated ItemInfo Items = 3;
}

message ReqEndlessReward{
}

message ResEndlessReward{
	RES_CODE Code = 1;
	string Msg = 2;
}

message ResPiggyBank{
	int32 Type = 1; // 存钱罐类型 1：充值 2：广告
	int32 Diamond = 2; // 存钱罐中的钻石
	int32 Count = 3; // 剩余可以触发的次数
	int32 EndTime = 4; // 结束时间 当前存钱罐结束时间
}

message ReqPiggyBankReward{} // 领取猪猪银行奖励

message ResPiggyBankReward{
	RES_CODE Code = 1;
	string Msg = 2;
}

message ReqChargeReceive{
	int64 Uid = 1; // 玩家id
	string Content = 2; // 回复邮件内容
}

message ResChargeReceive{
	RES_CODE Code = 1;
	string Msg = 2;
}

message ReqCreateOrderSn{
	int32 ChargeId = 1;
	string PlatForm = 2; // 平台标识 测试用test
	string channel = 3; // 支付渠道标识  测试用test 
	int32 Type = 4; // 订单类型 1：充值 2赠送
	int64 Uid = 5; // 赠送的uid
}

message ResCreateOrderSn{
	string OrderSn = 1; // 订单号
}

message ReqShippingOrder{
	string OrderSn = 1; // 订单号
	string ProduceId = 2; // 商品Id
	string Token = 3; // token
	int32 Status = 4; // 1:支付成功 2:支付失败
}

message ResShippingOrder{
	RES_CODE Code = 1;
	string Msg = 2;
}

message ReqChampship{}

message ResChampship{
	int32 Score = 1;
	int32 Reward = 2;
	int32 EndTime = 3;
	int32 Period = 4;
	int32 Rank = 5;
	int32 RankReward = 6;
	int32 Status = 7;
}

message ReqChampshipReward{}

message ResChampshipReward{
	RES_CODE Code = 1;
	string Msg = 2;
}
message ReqChampshipRankReward{}
message ResChampshipRankReward{
	RES_CODE Code = 1;
	string Msg = 2;
}

message ReqChampshipRank{}
message ResChampshipRank{
 	map<int32, ResPlayerRank> RankList = 1; // 榜单数据
 	int32 MyRank = 2; // 我的排行
 	float MyScore = 3; //我的积分
}

message ReqChampshipPreRank{}
message ResChampshipPreRank{
 	map<int32, ResPlayerRank> RankList = 1; // 榜单数据
 	int32 MyRank = 2; // 我的排行
 	float MyScore = 3; //我的积分
}

message ResNotifyCard{
	map<int32, int32> Card = 1; //  卡牌
	map<int32, int32> Master = 2; //  万能卡牌
	int32 ExStar = 3; // 额外星星
	map<int32, int32> Handbook = 4; // 图鉴
}

message ReqSetFacebookUrl{
	string Url = 1;
}

message ResSetFacebookUrl{
	RES_CODE Code = 1;
	string Msg = 2;
}

// 邀请facebook好友
message ReqInviteFriendData{
	int64 dwUin = 1;
}
message ResInviteFriendData{
	repeated int32 IdLists = 1;
	int32 GetIndex = 2;
}

message ReqSelfInvited{
	int64 InviterId = 1;
}
message ResSelfInvited{
	int32 ResultCode = 1;
}

message NotifyInvitedSuccess{
	int32 ResultCode = 1;
	repeated int32 IdLists = 2;
}

message ReqGetInviteReward{
	int32 GetIndex = 1;
}

message ResGetInviteReward{
	int32 ResultCode = 1;
}

///请求自动添加facebook好友

message ReqAutoAddInviteFriend{
	int64 id = 1; // uid
}
message ResAutoAddInviteFriend{
	int32 ResultCode = 1;
}

message ReqAutoAddInviteFriend2{
	string id = 1; // facebook id
}
message ResAutoAddInviteFriend2{
	int32 ResultCode = 1;
}

// 挖矿活动
message ReqMining{}
message ResMining{
	int32 Id = 1;  // 活动id
	int32 Status = 2; // 0 未开始 1 进行中 2 已结束
	int32 EndTime = 3; // 结束时间
	int32 Template = 4; // 模板
	int32 Pass = 5; // 关卡
	repeated int32 Gem = 6; // 宝石
	map<int32, string> Map = 7; // 地图
	int32 Mining = 8; // 本关挖矿次数
}
message ReqMiningTake{
	map<int32, string> Map = 1; // 地图
	int32 Gem = 2; // 解锁的宝石
}
message ResMiningTake{
	RES_CODE Code = 1;
	string Msg = 2;
}
message ReqMiningReward{}
message ResMiningReward{
	RES_CODE Code = 1;
	string Msg = 2;
}

// 活动通行证
message ReqActPass{}
message ResActPass{
	int32 Id = 1;  // 活动id
	int32 Status = 2; // 0 未开始 1 进行中 2 已结束
	int32 EndTime = 3; // 结束时间
	int32 Template = 4; // 模板
	int32 Score = 6; // 经验
	repeated int32 Reward = 7; // 奖励 已领取的奖励 Id 
	bool LowPass = 8; // 是否购买低级通行证
	bool HighPass = 9; // 是否购买高级通行证
}

message ReqActPassReward{
}

message ResActPassReward{
	RES_CODE Code = 1;
	string Msg = 2;
	repeated int32 RewardLevel  = 3; // 已领取的奖励 Id
}

message ResActRed{
	map<int32, int32> Red = 1; // 活动红点
}
// 活动红点通知
message NotifyActRed{
	int32 Id = 1;
	int32 Red = 2;
}
// 活动更新通知
message ActivityNotify {
    ActivityInfo Info = 1;
}

message ResItem{
	map<int32, int32> Item = 1;
}

message ItemNotify{
	map<int32, int32> Item = 1;  // 道具id =》 变化的数量
}

//猜颜色
message ReqGuessColor{}
message ResGuessColor{
	int32 Id = 1; // 活动id
	int32 Status = 2; // 0 未开始 1 进行中 2 已结束
	int32 EndTime = 3; // 结束时间
	int32 Template = 4; // 模板
	int32 Pass = 5; // 关卡
	repeated GuessColorInfo MapList = 6; // 我的错误历史
	map<int32, int32> OMap = 7; // 对手完成进度
	int32 WinTime = 8; // 赢的次数
	opponent Opponent = 9; // 对手
}

message opponent{
	string Name = 2;
	int32 Face = 3;
	int32 Avatar = 4;
	int32 Progress = 5;
}

// 猜颜色
message ReqGuessColorTake{
	GuessColorInfo Map = 1; // 我的错误历史
	map<int32, int32> OMap = 2; // 对手完成进度 
}

message GuessColorInfo{
	map<int32, int32> Map = 1; // 我的错误历史
}

message ResGuessColorTake{
	RES_CODE Code = 1;
	string Msg = 2;
}

// 领奖
message ReqGuessColorReward{}
message ResGuessColorReward{
	RES_CODE Code = 1;
	string Msg = 2;
}

message ReqRace{}
message ResRace{
	int32 Id = 1; // 活动id
	int32 Status = 2; // 0 未开始 1 进行中 2 已结束
	int32 EndTime = 3; // 结束时间
	int32 Template = 4; // 模板
	int32 Pass = 5; // 关卡
	int32 GameStartTime = 6; // 游戏开始时间
	int32 GameEndTime = 7; // 游戏结束时间 
	int32 Progress = 8; // 进度
	repeated raceopponent Opponent = 9; // 对手
	int32 Rank = 10; // 排名
}

message raceopponent{
	int32 Id = 1;
	int32 Face = 2;
	int32 Avatar = 3;
	string Name = 4;
	int32 Progress = 5;
}


message ReqRaceStart{}
message ResRaceStart{
	RES_CODE Code = 1;
	string Msg = 2;
}

message ReqRaceReward{}
message ResRaceReward{
	RES_CODE Code = 1;
	string Msg = 2;
}


//--------------------------【playroom】--------------------------
message ReqPlayroom{} // 请求我的空间信息

message ResPlayroom{
	int32 status = 1; // 状态
	repeated ItemInfo Items = 2; // 触发式订单奖励
	repeated RoomOpponent Opponent = 3; // 对手
	repeated FriendRoom Friend = 4; // 好友
	map<int32, int32> Playroom = 5; // 空间装饰 位置 =》 装饰id
	repeated PlayroomCollectInfo collect = 6; // 已解锁的装饰
	map<int32, int32> Mood = 7; // 心情 <位置, 心情>
	repeated ItemInfo LoseItem = 8; // 损失的道具
	int32 StartTime = 9; // 开始时间
	int32 WorkStatus = 10; // 1 工作中 2 休息中
	int32 AllMood = 11; // 总心情
	repeated ChipInfo Chip = 12; // 碎片
	int32 WorkOutline = 13;// 离线打工状态 0 未离线 1 已离线
	int32 Jackpot = 14; // 每日转盘次数
	map<int32, int32> Physiology = 15;
	map<int32, PlayroomDress> Dress = 16; // 服装仓库 位置 =》 服装id 位置ID： 1 帽子 2 眼镜 3 上衣 4 裤子 5 鞋子 6 连体 7 胡子 8 脸 9 美瞳
	map<int32, int32> DressSet = 17; // 服装装饰 位置 =》 服装id
	repeated PlayroomAirInfo PetAir = 18; // 宠物背包
	int32 PetAirSet = 19; // 宠物背包设置
	int32 Upvote = 20; // 点赞次数
	int32 RoomPoint = 21; // 房间积分
	repeated int32 Unlock = 22; // 解锁的房间id
	repeated DailyTask DailyTask = 23; // 每日任务
	repeated int32 DailyTaskReward = 24; // 任务大奖励
	int32 InteractNum = 25; // 互动次数
	int32 Kiss = 26; // 亲吻次数
	int64 Revenge = 27; // 复仇Uid
	repeated AdItem AdItem = 28; // 广告奖励信息
	FriendRoom Target = 29; // 目标房间
	map<int32, WeeklyDiscountInfo> WeeklyDiscount = 30; // 每周优惠 id -> 限购次数
}

message NotifyPlayroomTask{
	repeated DailyTask DailyTask = 1; // 每日任务
	repeated int32 DailyTaskReward = 2; // 任务大奖励
}


// 领取任务奖励
message ReqPlayroomTask{
	int32 Id = 1; // 任务id
}

message ResPlayroomTask{
	RES_CODE Code = 1;
	string Msg = 2;
	int32 Id = 3; // 任务id
}

// 领取任务大奖
message ReqPlayroomTaskReward{
	int32 Type = 1; // 领奖类型 1 2 
}
message ResPlayroomTaskReward{
	RES_CODE Code = 1;
	string Msg = 2;
	int32 Id = 3; // 任务id
	int32 Type = 4; // 领奖类型 1 2
}

message ReqPlayroomUnlock{
	int32 Id = 1; // 房间id
}

message ResPlayroomUnlock{
	RES_CODE Code = 1;
	string Msg = 2;
	int32 Id = 3; // 房间id
}

message ReqPlayroomUpvote{
	int64 Id = 1; // 对手id
}
message ResPlayroomUpvote{
	RES_CODE Code = 1;
	string Msg = 2;
	int64 Id = 3; // 对手id
}

message PlayroomDress{
	repeated PlayroomDressInfo List = 1; // 服装仓库 位置 =》 服装id
}

message PlayroomDressInfo{
	int32 Id = 1; // 服装id
	int64 EndTime = 2; // 结束时间
	int64 AddTime = 3; // 添加时间
	string Label = 4; // 标签
}


message PlayroomAirInfo{
	int32 Id = 1; // 服装id
	int64 EndTime = 2; // 结束时间
	int64 AddTime = 3; // 添加时间
	string Label = 4; // 标签
}

message PlayroomCollectInfo{
	int32 Id = 1; // 服装id
	int64 EndTime = 2; // 结束时间
	int64 AddTime = 3; // 添加时间
	string Label = 4; // 标签
}

message ReqPlayroomDressSet{
	map<int32, int32> DressSet = 1; // 服装装饰 位置 =》 服装id
}

message ResPlayroomDressSet{
	RES_CODE Code = 1;
	string Msg = 2;
}

message ReqPlayroomPetAirSet{
	int32 PetAirSet = 1; // 宠物背包设置
}

message ResPlayroomPetAirSet{
	RES_CODE Code = 1;
	string Msg = 2;
}

message ReqPlayroomWrokOutline{} // 处理离线打工
message ResPlayroomWrokOutline{
	RES_CODE Code = 1;
	string Msg = 2;
}
message NofiPlayroomStatus{
	int32 WorkOutline = 1; // 状态
}
message NotifyPlayroomWork{
	int32 StartTime = 1; // 开始时间
	int32 WorkStatus = 2; // 1 工作中 2 休息中
}

message NotifyPlayroomLose{
	repeated ItemInfo LoseItem = 1; // 损失的道具
	repeated ChipInfo Chip = 2;// 碎片
	int64 Revenge = 3; // 复仇
}

message ChipInfo {
	int64 Uid = 1; // 玩家id
	int32 EmojiId = 2; // 表情id
}

message NotifyPlayroomMood{
	int32 AllMood = 1; // 总心情
    map<int32, int32> Mood = 2; // 心情 <位置, 心情>
	map<int32, int32> Physiology = 3; // 生理 <位置, 生理>
	repeated AdItem AdItem = 4; // 广告奖励
}

message AdItem {
	int32 Watch = 1; // 今日观看次数
	int32 LastWatch = 2; // 上次观看时间
	int32 ItemId = 3; // 道具id
}

message NotifyPlayroomKiss{
	int32 Kiss = 1; // 亲吻次数
}

message FriendRoom{
	int64 Uid = 1;
	string Name = 2;
	int32 Face = 3;
	int32 Avatar = 4;
	int32 Times = 5; // 以你为目标的次数
}

message RoomOpponent{
	int64 Uid = 1;
	string Name = 2;
	int32 Face = 3;
	int32 Avatar = 4;
	int32 LastTime = 5; // 上次被攻击时间
}



// 请求拜访空间信息
message ReqPlayroomInfo{
	int64 Uid = 1;
} 

message ResPlayroomInfo{
	int64 Uid = 1;
	string name = 2;
	int32 Face = 3;
	int32 Avatar = 4;
	map<int32, int32> Playroom = 5; // 空间装饰 位置 =》 装饰id
	int32 GameId = 6; // 游戏id
	map<int32, ItemInfo> Items = 7; // 游戏奖励
	int32  Status = 8; // 状态 0 未开始 1 选择奖励 2 已结束
	bool defense = 9; // 是否有防御
	map<int32, int32> flip = 10; // 翻牌 <位置, 牌>
	int32 Chip = 11; // 碎片
	string PetName = 12; // 宠物名
	map<int32, int32> Emoji = 13; // 表情
	bool Upvote = 14; // 是否点赞
	int32 UpvoteCount = 15; // 点赞次数
	map<int32, int32> DressSet = 16; // 服装装饰 位置 =》 服装id
	int32 Kiss = 17; // 亲吻次数
}
// 请求翻牌
message ReqPlayroomFlip{
	int32 Id = 1; // 翻牌位置
}

message ResPlayroomFlip{
	RES_CODE Code = 1;
	string Msg = 2;
	int32 Id = 3; // 翻牌位置
	int32 CardId = 4; // 卡牌id
}

// 引导修改playroom生理值
message ReqPlayroomGuide{
	int32 Type = 1; //
}

message ResPlayroomGuide{
	RES_CODE Code = 1;
	string Msg = 2;
}

// 领取游戏奖励
message ReqPlayroomFlipReward{
	int32 EmojiId = 1; // 表情id
}

message ResPlayroomFlipReward{
	RES_CODE Code = 1;
	string Msg = 2;
}

message ReqPlayroomGame{
	int32 Type = 1; // 游戏结果
	int32 EmojiId = 2; // 表情id
}

message ResPlayroomGame{
	RES_CODE Code = 1;
	string Msg = 2;
	int32 Type = 3;
	map<int32, ItemInfo> Items = 4; // 游戏奖励
}

// 展示游戏结果数据
message ReqPlayroomGameShowReward{
	int32 Type = 1; //游戏结果
	int32 SelectId = 2; // 选择id
}
message ResPlayroomGameShowReward{
	repeated ItemInfo Items = 1; // 奖励道具
}

// 宠物交互
message ReqPlayroomInteract{
	int32 Id = 1; // 互动类型
	int32 Type = 2; // 1 消耗道具1 2 消耗道具2
}

message ResPlayroomInteract{
	RES_CODE Code = 1;
	string Msg = 2;
	int32 InteractNum = 3; // 互动次数
}

// playroom装饰
message ReqPlayroomSetRoom{
	map<int32, int32> Playroom = 1; // 空间装饰 位置 =》 装饰id
}

message ResPlayroomSetRoom{
	RES_CODE Code = 1;
	string Msg = 2;
}



message ReqPlayroomSelectReward{
	int32 Id = 1; // 奖励id
	int32 EmojiId = 2; // 表情id
}

message ResPlayroomSelectReward{
	RES_CODE Code = 1;
	string Msg = 2;
}

// 处理偷取的棋子
message ReqPlayroomLose{}
message ResPlayroomLose{
	RES_CODE Code = 1;
	string Msg = 2;
}

// 打工
message ReqPlayroomWork{}
message ResPlayroomWork{
	RES_CODE Code = 1;
	string Msg = 2;
}

// 休息
message ReqPlayroomRest{}
message ResPlayroomRest{
	RES_CODE Code = 1;
	string Msg = 2;
}

// 抽奖
message ReqPlayroomDraw{}
message ResPlayroomDraw{
	RES_CODE Code = 1;
	string Msg = 2;
	int32 Id = 3; // 奖励Id
}

// 消除 纸屑
message ReqPlayroomChip{
	repeated int64 Uid = 1; // 要消除的层数
}

message ResPlayroomChip{
	RES_CODE Code = 1;
	string Msg = 2;
}

message ReqPlayroomBuyItem{
	int32 Id = 1; // Mood Id
}

message ResPlayroomBuyItem{
	RES_CODE Code = 1;
	string Msg = 2;
}

// playroom商店 购买
message ReqPlayroomShop{
	int32 Id = 1; // 商店id
	int32 Num = 2; // 购买数量
}
message ResPlayroomShop{
	RES_CODE Code = 1;
	string Msg = 2;
}

// #region 宠物宝藏
message ReqFriendTreasure{}

message ResFriendTreasure{
	int32 Status = 1; // 0 未开始 1 进行中 2 已结束
	int32 Star = 2; // 星级
    int32 Shift = 3; // 当前挡位
    repeated TreasureInfo List = 4; // 列表
	repeated int32 List2 = 5; // 今日已翻玩家列表
	repeated int64 Uids = 6; // 今日已翻位置列表
}

message TreasureInfo{
	int32 Pos = 1; // 位置
	int32 Type = 2; // 类型
	int32 Face = 3; // 头像
	int32 Avatar = 4; // 头像框
	int64 Uid = 5; // Uid
	int32 Status = 6; // 0 未翻 1 已翻
	string NickName = 7; // 昵称	
}

message ReqFriendTreasureStart{
    repeated TreasureInfo List = 1; // 列表
	repeated int32 List2 = 2;
}

message ResFriendTreasureStart{
	RES_CODE Code = 1;
	string Msg = 2;
}

message ReqFriendTreasureEnd{
}

message ResFriendTreasureEnd{
	RES_CODE Code = 1;
	string Msg = 2;
}

message ReqFriendTreasureFilp{
	int32 Pos = 1;
}

message ResFriendTreasureFilp{
	RES_CODE Code = 1;
	string Msg = 2;
}

message ResFriendTreasureStar{
	int32 Star = 1; // 星级
}

message ReqKafkaLog{
	string Event = 1;
	string Data = 2; 
}

message ReqCollectInfo{}

message ResCollectInfo{
	repeated int32 Id = 1; //  [1,10,19]
	repeated CollectItem Items = 2; // 领奖道具
}

message CollectItem{
	int32 Id = 1; // 索引
	repeated ItemInfo Items = 2; // 领奖道具
}

message ReqCollect{
	int32 Id = 1; // 领奖id
}

message ResCollect{
	RES_CODE Code = 1;
	string Msg = 2;
}
// #region 猫草大作战
//----------------【猫草大作战】--------------
// 猫草大作战详细信息
message ReqCatnip{}
message ResCatnip{
	int32 Id = 1; // 活动id
	int32 Status = 2; // 0 未开始 1 进行中 2 已结束
	int32 EndTime = 3; // 结束时间
	int32 Template = 4; // 模板
	repeated CatnipGame GameList = 5; // 小游戏列表
	int32 Multiply = 6; // 倍数
	repeated CatnipInvite FriendList = 7; // 好友列表
}

// 小游戏信息
message CatnipGame{
	int32 Id = 1; // 猫草id
	int32 Status = 2; // 0 未开始 1 进行中 2 已结束
	int32 Progress = 3; // 进度
	repeated int32 Reward = 4; // 已领取进度奖励列表 [1,2,3]
	ResPlayerSimple Partner = 5; // 伙伴
	int32 Emoji = 6; // 表情id
	int32 SendEmoji = 7; // 发送的表情id
	int32 FriendProgress = 8; // 好友进度;
}

message CatnipInvite{
	int64 Uid = 1; // 好友id
	int64 Time = 2; // 邀请时间
	int32 Type = 3; // 状态 0 可以邀请，1 已邀请 2 被邀请 3 已满员
	ResPlayerSimple Player = 4; // 好友信息
}

// 邀请好友
message ReqCatnipInvite{
	int32 Id = 1; // 猫草id
	int64 Uid = 2; // 好友id
}

message ResCatnipInvite{
	RES_CODE Code = 1;
	string Msg = 2;
	int64 Uid = 3; // 好友id
}

// 同意邀请
message ReqCatnipAgree{
	int32 Id = 1; // 游戏id
	int64 Uid = 2; // 好友id
}

message ResCatnipAgree{
	RES_CODE Code = 1;
	string Msg = 2;
	int64 Uid = 3; // 好友id
}

message ReqCatnipRefuse{
	int32 Id = 1; // 游戏id
	int64 Uid = 2; // 好友id
}

message ResCatnipRefuse{
	RES_CODE Code = 1;
	string Msg = 2;
	int64 Uid = 3; // 好友id
}

// 设置游戏倍数
message ReqCatnipMultiply{
	int32 Multiply = 1; // 倍数
}

message ResCatnipMultiply{
	RES_CODE Code = 1;
	string Msg = 2;
	int32 Multiply = 3; // 倍数
}

// 游戏转盘
message ReqCatnipPlay{
	int32 Id = 1; // 猫草id
}

message ResCatnipPlay{
	RES_CODE Code = 1;
	string Msg = 2;
	int32 Id = 3; // 猫草转盘id
}

// 领取阶段奖励
message ReqCatnipReward{
	int32 Id = 1; // 猫草id
}

message ResCatnipReward{
	RES_CODE Code = 1;
	string Msg = 2;
}

// 领取大奖
message ReqCatnipGrandReward{
}
message ResCatnipGrandReward{
	RES_CODE Code = 1;
	string Msg = 2;
}

// 发送表情
message ReqCatnipEmoji{
	int32 Id = 1; // 猫草id
	int32 EmojiId = 2; // 表情id
}

message ResCatnipEmoji{
	RES_CODE Code = 1;
	string Msg = 2;
	int32 EmojiId = 3; // 表情id
	int32 Id = 4; // 猫草id
}


// -------------------后台管理-------------------
message AdminReq{
	string Func = 1;
	bytes Info = 2;
}

message AdminRes{
	string Func = 1;
	string Info = 2;
}

message ReqAdminInfo{
	int64 Uid = 1;
}

message ReqReloadServerMail{}

message ReqServerInfo{}

message ReqReload{}

message ReqAdminGm{
	int64 Uid = 1; // uid
	string Command = 2; // 命令
}

message ReqAdminBan{
	int64 Uid = 1; // uid
	int64 Time = 2; // 禁止时间
	string Reason = 3; // 禁止原因
}

message ReqAdminShipping{
	string OrderSn = 1; // 订单号
	int32 Status = 2; // 1:支付成功 2:支付失败
	string ChannelOrderSn = 3; // 渠道订单号
}