syntax = "proto3"; package samloc; option go_package = "mongo.games.com/game/protocol/samloc"; //操作结果 enum OpResultCode { OPRC_Sucess = 0; //成功 OPRC_Error = 1; //失败 OPRC_NotMAxSingle = 2; //报单出最大 } //samloc enum SamLocPacketID { PACKET_SamLocZERO = 0;// 弃用消息号 PACKET_SCSamLocRoomInfo = 5550;//房间信息 PACKET_SCSamLocRoomState = 5551;//房间状态 PACKET_CSSamLocPlayerOp = 5552;//玩家操作 PACKET_SCSamLocPlayerOp = 5553;//玩家操作 PACKET_SCSamLocPlayerEnter = 5554;//玩家进入 PACKET_SCSamLocPlayerLeave = 5555;//玩家离开 PACKET_SCSamLocCard = 5556;//发牌 PACKET_SCSamLocGameBilled = 5557;//结算 PACKET_SCSamLocCurOpPos = 5558;//当前操作的玩家位置 PACKET_SCSamLocSmallGameBilled = 5559;//小结算 PACKET_SCSamLocUpdateMasterSnid = 5560;//房主更换 PACKET_SCSamLocUpdateAudienceNum = 5561;//推送观众人数 PACKET_SCSamLocAI = 5562;//AI消息 PACKET_SCSamLocFirstOpPos = 5563;//首出玩家 } //玩家信息 message SamLocPlayerData { string Name = 1; //名字 int32 SnId = 2; //账号 int32 Head = 3; //头像 int32 Sex = 4; //性别 repeated string Params = 5; //其他数据 如:昵称 头像 性别 ip 等 int64 Coin = 6; //金币 int32 Pos = 7; //座位位置 int32 Flag = 8; //二进制标记 详见:数据字典 int32 Longitude = 9;//经度 int32 Latitude = 10;//纬度 string City = 11; //城市 例:伦敦 int32 LastOp = 12; //如上:玩家操作 int32 VIP = 13; //玩家VIP等级 int32 HeadOutLine = 14; //头像框 int32 NiceId = 15; //靓号[机器人用] repeated int32 Cards = 16; //手牌 int64 CurRoundTotalBet = 17;//本轮押注已押的金币 int64 GameCoin = 18; //游戏内带入的金币 int32 RoleId = 19; //使用中的角色id mapItems = 20; int32 MatchRankId = 21; int32 Lv = 22; int32 CopySnid = 23;//比赛场机器人假snid int32 CopyRoleId = 24;//比赛场机器人假角色 int32 Trusteeship =25; //托管 } message LastDelCard { repeated int32 Cards = 1; } //房间信息 message SCSamLocRoomInfo { int32 RoomId = 1; //房间id int32 Creator = 2; //创建者SnId int32 GameId = 3; //游戏id int32 RoomMode = 4;//游戏模式 repeated int32 Params = 5; //规则参数 int32 BankerPos = 6;//庄家位置 int32 State = 7; //房间当前状态,如上 int32 TimeOut = 8; //等待剩余时间 单位:秒 repeated SamLocPlayerData Players = 9; //房间内的玩家信息 int32 AudienceNum = 11; //当前观战人数 int32 CurOpIdx = 12; //当前等待操作的玩家 repeated LastDelCard LastDelCards = 13; //上两手出的牌 int32 NumOfGames = 14; //当前局数 int32 TotalOfGames = 15; //总局数 int32 MasterSnid = 16;//房主 int32 BaseScore = 17 ;//游戏底分 int32 MaxPlayerNum = 18 ;//最大游戏人数 repeated int32 WinSnids = 19 ;//已出完牌的玩家 // 比赛场相关 int32 IsMatch = 20;//0普通场 1锦标赛 2冠军赛 int32 Round = 22;//比赛当前轮数 int32 CurPlayerNum = 24;//当前游戏人数 int32 NextNeed = 25;//前多少名可以晋级下一轮 int32 MatchFinals = 26;//0晋级赛 1半决赛 2是总决赛 int32 BaosamOps = 27; //默认-1 } //房间状态更新 message SCSamLocRoomState { int32 State = 1; //房间当前状态 repeated int64 Params = 2; //参数 } //玩家操作 message CSSamLocPlayerOp { int32 OpCode = 1; //1出牌 2过牌 3开始游戏 repeated int64 OpParam = 2; } message SCSamLocPlayerOp { int32 OpCode = 1; //1出牌 2过牌 3开始游戏 repeated int64 OpParam = 2; //参数 int32 SnId = 3; //玩家位置 OpResultCode OpRetCode = 4; //返回错误码,详见:enums.proto int32 Trusteeship =5; // 托管 0 未托管 1 10s 2 5s } //玩家进入 message SCSamLocPlayerEnter { SamLocPlayerData Data = 1; //玩家数据 } //玩家离开 message SCSamLocPlayerLeave { int32 Pos = 1; //玩家位置 } //结算结果 message SamLocPlayerGameBilled { int32 SnId = 1; //玩家 repeated int32 Cards = 2; // 手牌 int64 WinCoin = 3;//输赢金额 int64 GameCoin = 4;//结算后身上余额 int32 IsWin = 5; //输赢 赢1 输2 平0 } message SCSamLocGameBilled { repeated SamLocPlayerGameBilled Datas = 1; } //小结算结果(炸的分) message SCSamLocSmallGameBilled { int32 WinPos = 1; //赢家 int64 WinPosCoin = 2;//结算后赢家身上余额 int32 LosePos = 3; //输家 int64 LosePosCoin = 4;//结算后输家身上余额 int64 WinCoin = 5;//赢金额 int64 LoseCoin = 6;//输金额 } //发牌 message SCSamLocCard { repeated int32 Cards = 1; //手牌 int32 Grade = 2; int32 Type = 3;//1最小 2随机 3最大 int32 Totalin = 4; //投入 int32 Totalout = 5;//产出 } message SCSamLocCurOpPos{ int32 Pos = 1; //座位位置 bool IsNew = 2; //新一轮开始出牌 repeated int32 Cards = 3; //上家出的牌 int32 ExDelay = 4; //出牌额外延迟时间(s) bool Warn = 5; //爆单 } message SCSamLocUpdateMasterSnid{ int32 MasterSnid = 1;//房主 } //PACKET_SCSamLocUpdateAudienceNum message SCSamLocUpdateAudienceNum{ int32 AudienceNum = 1; //当前观战人数 } message SCSamLocAIData { int32 Bomb_num = 1; //炸弹数量 string Card_play_action_seq = 2; //出牌历史记录 string Last_move_0 = 3; //最后出牌 string Last_move_1 = 4; //最后出牌 string Last_move_2 = 5; //最后出牌 string Last_move_3 = 6; //最后出牌 int32 Num_cards_left_0 = 7;//剩余牌数 int32 Num_cards_left_1 = 8;//剩余牌数 int32 Num_cards_left_2 = 9;//剩余牌数 int32 Num_cards_left_3 = 10;//剩余牌数 string Other_hand_cards = 11;//其它人手牌 string Played_cards_0 = 12; //出过的牌 string Played_cards_1 = 13; //出过的牌 string Played_cards_2 = 14; //出过的牌 string Played_cards_3 = 15; //出过的牌 string Player_hand_cards = 16;//手牌 int32 Player_position = 17; //当前操作数置 } //PACKET_SCSamLocFirstOpPos message SCSamLocFirstOpPos { int32 Pos = 1;//座位位置 bool Baosam = 2;//true baosam }