syntax = "proto3"; package BBMessage; option go_package = "./;message"; // 通用操作结果码 enum GameStatus { GAME_STATUS_OK = 0; GAME_STATUS_PLAYER_NIL = 1001; // 玩家不存在 GAME_STATUS_UID_PASSWD_NIL = 1002; // 账号或密码不能为空 GAME_STATUS_UID_ERROR = 1003; // 账号不存在 GAME_STATUS_PASSWD_ERROR = 1004; // 密码错误 GAME_STATUS_ROOM_NOT_EXIT = 1005; // 房间不存在 GAME_STATUS_PB_ERR = 1006;//协议解析报错 GAME_STATUS_INNER_ERR = 1007; // 服务器内部错误 GAME_STATUS_LOGIN_CHECK_ERR = 1055; // 登录校验失败 Player_Status_0=11;//表示玩家在大厅, Player_Status_1=1;//表示玩家开始匹配, Player_Status_2=2;//玩家进入游戏房间, Player_Status_3=3;//ready,玩家落座开始游戏 Player_Status_4=4;//play, Player_Status_5=5;//胜利后观战, Player_Status_6=6;//胜利后离开, Player_Status_7=7;//组队逃跑, Player_Status_8=8;//逃跑, Player_Status_9=9;//托管, Player_Status_10=10;//观战玩家, //GAME_STATUS_LOGIN_CHECK_ERR = 1055; // 登录校验失败 } // 心跳包C->S, Cmd.MSGID_Heartbeat_Push(心跳包需要保持,不然玩家会被踢下线) message HeartbeatPush { } // 登录请求 C->S, Cmd.MSGID_Login message LoginReq { string uid = 1;//账号ID string passWd = 2;//密码 } // 登录响应 S->C, Cmd.MSGID_Login message LoginRsp { uint32 result = 1;//结果 int64 playerId = 2;//玩家ID bool isNew = 3;//是否为新玩家 } message CreateGameReq { uint32 mode = 1;//游戏模式,1是经典,2是匹配 uint32 playerNum = 2;//选择玩家人数 2是两个人,4是四个人 uint32 admissionFee = 3;//入场金额 500、1000、2000、5000、10000、20000 bool isRoom = 4;//是否房间内建房 string uid = 5;//玩家id string name = 6;//玩家名称 string headImg = 7;//玩家头像 optional uint32 money = 8;//玩家金币 optional uint32 chatRoomId = 9;//语聊房id } message CreateGameRsp { optional uint32 roomId =1; //房间id string uid =2; //用户id string name = 3;//玩家名称 string headImg = 4;//玩家头像 optional uint32 money = 5;//玩家金币 } message RoomInfoRsp { optional uint32 result = 1;//结果 repeated uint32 money=2; repeated string playerID =3; repeated string nick=4; //昵称 repeated string headUrl =5; //头像 repeated uint32 seatId =9; //头像 uint32 mode = 6;//游戏模式,1是经典,2是匹配 uint32 playerNum = 7;//选择玩家人数 2是两个人,4是四个人 uint32 admissionFee = 8;//入场金额 500、1000、2000、5000、10000、20000 } message JoinRoomReq { string uid = 1;//uID string name = 2;//玩家名称 string headImg = 3;//玩家头像 optional uint32 money = 4;//玩家金币 optional uint32 roomId = 5;//房间id bool restartBtn = 6;//是否是restart点击 } message RoomKickUserReq { string uid = 1;//uID } message RoomKickUserRsp { string uid = 1;//uID string name = 2;//玩家名称 } message RoomQuitUserReq { string uid = 1;//uID } message RoomInviteReq { string uid = 1;//邀请的玩家id optional uint32 chatRoomId = 2;//语聊房id optional uint32 roomId = 3;//游戏房间id } message RoomInviteRsp { optional uint32 result = 1;//结果 } message RoomQuitUserRsp { string uid = 1;//uID string name = 2;//玩家名称 } message JoinRoomInfoRsp { optional uint32 result = 1;//结果 string money=2; string playerID =3; uint32 playerStatus=4; // 玩家的当前状态, 0、1 表示空位无玩家,2: sitdown, 3: ready, 4: play, 5: 胜利后观战, 6: 胜利后离开,7: 组队逃跑,8: 逃跑 uint32 tableID=5; // 桌子ID optional uint32 seatID=6; //座位号 string nick=7; //昵称 string headUrl =8; //头像 string gender =9; //性别 optional uint32 playerNum=10; // 玩家数量 uint32 playerType=11; // 玩家类型1是正常玩家2是机器人 } message RoomInfoReq { optional uint32 roomId = 1;//房间id string uid = 2;//玩家id } message CancelMatchReq { } message CancelMatchRsp { optional uint32 result = 1;//结果0表示成功,其他表示失败 string uid = 2;//用户id } message MatchRsp { optional uint32 result = 1;//结果 0表示成功,其他表示失败 } message MatchJoinUserRsp { optional uint32 result = 1;//结果 string playerID =2; string nick=3; //昵称 string headUrl =4; //头像 string gender =5; //性别 uint32 playerNum=6; // 玩家数量 } message RoomStartGameReq { } message RoomStartGameRsp { } //获取玩家数据 message GetUserInfoReq { string uid = 1;//账号ID uint32 roomId = 2;//房间ID } //获取玩家数据 message KickUserReq { string uid = 1;//账号ID } message GetUserInfoRsp { optional uint32 result = 1;//结果 repeated string money=2; repeated string playerID =3; repeated uint32 playerStatus=4; // 玩家的当前状态, 0、1 表示空位无玩家,2: sitdown, 3: ready, 4: play, 5: 胜利后观战, 6: 胜利后离开,7: 组队逃跑,8: 逃跑 repeated uint32 tableID=5; // 桌子ID repeated uint32 seatID=6; //座位号 repeated string nick=7; //昵称 repeated string headUrl =8; //头像 repeated string gender =9; //性别 uint32 playerNum=10; // 玩家数量 repeated uint32 playerType=11; // 玩家类型1是正常玩家2是机器人 optional uint32 selfSeatId=12; // 玩家座位号 optional uint32 watchingPlayers=13; // 观战玩家数量 optional uint32 countdown=14; // 游戏结束倒计时 uint32 gameType=15; // 游戏类型,1经典,2匹配 } message TKickEventRsp { optional uint32 PlayerNum=1; // 被踢玩家数 repeated KickPlayerRsp kickPlayer=2; } message KickPlayerRsp { optional uint32 seatId=1; // 被踢玩家 optional uint32 planeNum=2; // 被踢飞机数 string planeID=3; // 飞机ID } message FinishEventRsp { optional uint32 seatId=1; // 到达玩家 string planeId=2;// 飞机ID } message PlayerRsp { optional uint32 seatId=1; // 到达玩家 repeated PlaneRsp planes=2;// 飞机 } message PlaneRsp { string planeId=1;// 飞机ID optional uint32 currentIndex=2; // 飞机下标 optional uint32 planeStatus=3; // 0是未起飞,1是移动中,2是到达终点 } message RoomDjsRsp { optional uint32 time=1;// 倒计时时间 } //加入房间通知其他玩家 message RoomJoinUserRsp { optional uint32 result = 1;//结果 string money=2; string playerID =3; uint32 playerStatus=4; // 玩家的当前状态, 0、1 表示空位无玩家,2: sitdown, 3: ready, 4: play, 5: 胜利后观战, 6: 胜利后离开,7: 组队逃跑,8: 逃跑 uint32 tableID=5; // 桌子ID uint32 seatID=6; //座位号 string nick=7; //昵称 string headUrl =8; //头像 string gender =9; //性别 uint32 playerNum=10; // 玩家数量 uint32 playerType=11; // 玩家类型1是正常玩家2是机器人 } //1,通知开始掷子并且开始倒计时 message GameStartRsp { optional uint32 result = 1;//结果 optional uint32 seatID = 2;//掷子玩家座位号 optional uint32 castSecond = 3;//结果 } // 2,客户端请求掷子,空消息 message ThrowTheDiceReq { } //3,通知掷子结果 message ThrowTheDiceRsp { optional uint32 result = 1;//结果 0表示成功,其他表示失败 optional uint32 seatID = 2;//座位id uint32 point = 3;//掷子点数 optional uint32 skipReason = 4;//玩家是否可以行棋,不为0表示不能行棋 optional uint32 nextTurn=5;//玩家不能行走时下一玩家 optional uint32 autoMove=6;//1代表正常 2自动骰子 3自动起飞,4自动行走 repeated PlayerRsp players=7; } //4,客户端请求起飞 message PlaneStartReq { string planeID = 1;//飞机id,从0开始 } //5,通知起飞结果 message PlaneStartRsp { optional uint32 result = 1;//结果 optional uint32 seatID = 2;//起飞玩家座位id string planeID = 3;//起飞飞机ID optional uint32 nextTurn = 4;//下一个玩家座位id uint32 playerNum=5;//玩家数 repeated PlayerRsp players=6; } // 6,客户端请求行走 message MoveReq { string planeID = 1;//飞机id,从0开始 } //7,通知移动结果 message MoveRsp { optional uint32 result = 1;//0表示成功,其他表示失败 optional uint32 seatID = 2;//起飞玩家座位id string planeID = 3;//行走飞机ID optional uint32 step = 4;//行走的步数 optional uint32 curPosIndex=5;// 棋子当前相对于行走路线的索引 optional uint32 nextTurn = 6;//下一个玩家 optional uint32 hasWin = 7;//玩家是否已经获胜,1表示已经获胜,0表示还没有获胜 uint32 playerNum=8;//玩家数 FinishEventRsp finishEvent=9; TKickEventRsp tKickEvent=10; repeated PlayerRsp players=11; } //9,客户端请求托管 message TrusteeshipReq { bool trust = 1;//true表示托管,2表示不托管 } //8,通知玩家托管 message TrusteeshipRsp { bool trust = 1;//true表示托管,false表示不托管 optional uint32 seatID = 2;//座位id } //退出游戏请求 message QuitReq { } //通知玩家退出游戏,直接剔除这个玩家 message QuitRsp { uint32 playerStatus=1; // 玩家的当前状态, 0、1 表示空位无玩家,2: sitdown, 3: ready, 4: play, 5: 胜利后观战, 6: 胜利后离开,7: 组队逃跑,8: 逃跑 10,观战玩家 optional uint32 seatID=2; //座位号 optional uint32 nextTurn=3; //下一个座位号 string uid =4; //用户id } //通知玩家游戏结束 message EndGameRsp { repeated uint32 seatID =1; //座位号 repeated string playerStatus =2; //玩家状态 repeated uint32 kick =3; //- 玩家当局撞棋数量 repeated uint32 beKick =4; //- 玩家当局被撞棋数量 repeated uint32 money =5; //- 胜方当局赢得金额 } //拉房失败解散游戏 message DissolveTheGameReq { } //拉房失败解散游戏 message DissolveTheGameRsp { } //pb解析失败 message PbErrorRsp { string messageData =1; //错误信息 } ////////////////////////////房间消息////////////////////////////// // 拉取房间列表 C->S, Cmd.MSGID_Get_Room_List message GetRoomListReq { } // 拉取房间列表 S->C, Cmd.MSGID_Get_Room_List message GetRoomListRsp { uint32 result = 1; //结果 } // 踢人原因 enum KickReason { KICK_REASON_UNKNOWN = 0; KICK_REASON_LOGIN_ELSEWHERE = 1; KICK_REASON_HEARTBEAT_TIMEOUT = 2; KICK_REASON_NOT_LOGIN = 3; } // 踢人通知 S->C, Cmd.MSGID_Kick_Notify message KickNotify { uint32 reason = 1; } //退出客户端房主变更 message RoomChangeOfHomeownerRsp { string uid = 1;//玩家ID } message GetUserMoneyReq { string uid = 1;//玩家ID } message GetUserMoneyRsp { optional uint32 money = 1;//玩家金币 } message DiscReq { string uid = 1;//玩家ID uint32 roomId = 2;//房间ID } message RoomQuitReq { } message RoomRestartReq { } message SendMsgReq{ string data = 1;//消息数据 } message SendMsgRsp{ string data = 1;//消息数据 string uid = 2;//消息数据 }