syntax = "proto3"; package thirteen; option go_package = "mongo.games.com/game/protocol/thirteen"; //十三水 enum TWMmoPacketID { PACKET_THIRTEEN_ZERO = 0;// 弃用消息号 PACKET_SCThirteenRoomInfo = 5570; // 房间信息 PACKET_CSThirteenPlayerOp = 5571; // 玩家操作 PACKET_SCThirteenRoomState = 5572; // 房间状态 PACKET_SCThirteenPlayerEnter = 5573; // 玩家进入 PACKET_SCThirteenPlayerLeave = 5574; // 玩家离开 PACKET_SCThirteenPlayerCards = 5575; // 给玩家发牌 PACKET_SCThirteenPlayerOp = 5576; // 确认牌型 PACKET_SCThirteenShowCards = 5577; // 打枪或亮牌 PACKET_SCThirteenBilled = 5578; // 结算 PACKET_SCThirteenTest = 5579; // 测试 } message HitScore { int32 Pos = 1; //被打枪玩家位置 int64 Score = 2; //输的分数,正值 } message Poker { // 特殊牌型序号,带星的是支持的,其余暂时不要 // 1 清龙* // 2 一条龙* // 3 十二皇族 // 4 三同花顺* // 5 三分天下 // 6 全大 // 7 全小 // 8 凑一色* // 9 四套三条 // 10 五对三条 // 11 六对半* // 12 三顺子* // 13 三同花* // 普通牌型序号 // 1 五同 // 2 同花顺 // 3 铁支 // 4 葫芦 // 5 同花 // 6 顺子 // 7 三条 // 8 两对 // 9 对子 // 10 乌龙 // IndexType 规则,特殊牌型序号*1000000 + 头墩普通牌型序号*10000 + 中墩普通牌型序号*100 + 尾墩普通牌型序号;没有特殊牌型时值小于1000000 int32 IndexType = 1; // 牌型 repeated int32 Head = 2; // 头墩 repeated int32 Mid = 3; // 中墩 repeated int32 End = 4; // 尾墩 bool IsDP = 5; // 是否倒排 int32 Pos = 6; //账号 repeated int64 Score = 7; //得分,1头墩 2中墩 3尾墩 4特殊牌型分数 5打枪 6全垒打 repeated HitScore Hit = 8; //打枪 repeated int64 TableScore = 9; // 客户端展示用;0头墩,1中墩,2尾墩,3头墩额外加分,4中墩额外加分,5尾墩额外加分 repeated int32 Cards = 10; // 13张牌 } //PACKET_SCThirteenPlayerCards message SCThirteenPlayerCards { repeated int32 Cards = 1; // 13张牌 int32 Pos = 2; // 位置 repeated Poker AllCardsO = 3; // 推荐牌型 } //玩家操作 //PACKET_CSThirteenPlayerOp message CSThirteenPlayerOp { int32 OpCode = 1; // 1:确定牌 2站起状态 3test 4重新选牌 5加入游戏 6预选 7自动手动切换(1自动,2手动) // 确定牌时,两种参数规则,都可以 // 第一种:玩家从推荐牌型中选择一个,把Poker.IndexType发过来(减少数据传输) // 第二种:按头墩中墩尾墩顺序把牌发过来 // 站起状态:0站起,1取消站起 repeated int64 OpParam = 2; } enum OpResultCode { OPRC_Sucess = 0; //成功 OPRC_Error = 1; //失败 } //PACKET_SCThirteenPlayerOp message SCThirteenPlayerOp { OpResultCode OpRetCode = 1; int32 OpCode = 2; //1出牌 2过牌 3开始游戏 repeated int64 OpParam = 3; //参数 int32 Pos = 4; // 玩家位置 Poker Cards = 5; } //玩家信息 message ThirteenPlayerData { string Name = 1; //名字 int32 SnId = 2; //账号 int32 Head = 3; //头像 int32 Sex = 4; //性别 int64 Coin = 5; //金币 int32 Pos = 6; //座位位置 int32 Flag = 7; //二进制标记 第一位:是否掉线(0:在线 1:掉线) 第二位:是否准备(0:未准备 1:已准备) repeated int32 Cards = 8; //手牌 repeated int64 Score = 9; //得分,1头墩 2中墩 3尾墩 4特殊牌型分数 5打枪 6全垒打 Poker CardsO = 10; //确定的手牌 repeated Poker AllCardsO = 11; //所有牌型 repeated string Params = 12; //其他数据 如:ip 等 int32 Longitude = 13; //经度 int32 Latitude = 14; //纬度 string City = 15; //城市 例:中国-河南省-郑州市 int32 NiceId = 16; //靓号 string AgentCode = 17; //代理商编号 int32 HeadOutLine = 18; //头像框 int32 VIP = 19; bool IsDP = 20; // 是否倒排 int64 WinCoin = 21; // 本局赢分 bool isStand = 22; //玩家站起 repeated int64 TableScore = 23; // 客户端展示用;0头墩,1中墩,2尾墩,3头墩额外加分,4中墩额外加分,5尾墩额外加分 repeated HitScore Hit = 24; //打枪 bool IsConfirm = 25; // 是否确认牌型 bool IsLeave = 26; // 已经离场 int32 RoleId = 27; //使用中的角色id int64 Level = 28; //玩家等级 int64 Exp = 29; //玩家经验 int32 SkinId = 30; //皮肤id } //玩家进入 //PACKET_SCThirteenPlayerEnter message SCThirteenPlayerEnter { ThirteenPlayerData Data = 1; } //玩家离开 //PACKET_SCThirteenPlayerLeave message SCThirteenPlayerLeave { int32 Pos = 1; //玩家位置 } //房间信息 //PACKET_SCThirteenRoomInfo message SCThirteenRoomInfo { int32 RoomId = 1; //房间id int32 Creator = 2; //创建者SnId int32 GameId = 3; //游戏id int32 RoomMode = 4; //游戏模式 repeated int32 Params = 5; //规则参数 int32 NumOfGames = 6; //当前第几局 int32 BankerPos = 7; //庄家位置 int32 State = 8; //房间当前状态 int32 TimeOut = 9; //等待剩余时间 单位:秒 repeated ThirteenPlayerData Players = 10; //房间内的玩家信息 int32 DisbandGen = 11; //解散申请 int32 ShowCardPos = 12; //出牌的位置 int32 AgentId = 13; //代开房者 int32 ParamsEx = 14; //比赛参数 int32 SceneType = 15; //房间模式 0:房卡模式 1:钻石模式 int32 BaseScore = 16; //基础分 int32 TotalOfGames = 17; //总局数 int32 LeaveDeduct = 18; // 离场扣分倍数;玩家在发牌,选牌状态离场扣除指定倍数的底分 int32 LeaveCombat = 19; // 补偿倍数;玩家在发牌,选牌状态离场其它玩家补偿底分倍数 repeated int64 TimeOuts = 20; // 游戏阶段超时时间,秒 0开始倒计时,1发牌,2选牌,3结算 } //房间状态更新 //PACKET_SCThirteenRoomState message SCThirteenRoomState { int32 State = 1; //房间当前状态, 0.准备状态;1. 开始倒计时; 2. 发牌; 3.理牌;4.看牌;5.打枪; 6.结算 // Params 游戏子状态的参数列表: repeated int32 Params = 2; //状态参数 } //PACKET_SCThirteenShowCards message SCThirteenShowCards { int32 OpCode = 1; //0:亮牌 1:打枪 repeated Poker AllCards = 2; } message Billed { int32 Pos = 1; // 位置 int64 Coin = 2; // 结算后余额 int64 WinCoin = 3; // 输赢分 int64 CombatCoin = 4; // 补偿分 } //PACKET_SCThirteenBilled message SCThirteenBilled { repeated Billed AllBilled = 1; // 输赢分 } message SCThirteenTest { string Data = 1; }