| 错误码 | 描述 |
|---|---|
| 10145 | 房间不在游戏中 |
| 10146 | 无权不出 |
| 10147 | 不出token错误 |
| 10148 | 必须出牌 |
| 10149 | 出牌token错误 |
| 10150 | 出牌错误 |
| 10151 | 无权出牌 |
| 10152 | 操作被取消 |
从10100到10199
事件流向:
- c->s 客户端发送到服务器端
- s->c 服务器端发送到客户端
| 事件编号 | 事件名称 | 事件流向 | 描述 | 备注 | |
|---|---|---|---|---|---|
| 10101 | 登录 | c->s | 进入游戏要进行登录验证 | ||
| 10102 | 服务器返回 | s->c | 服务器通用返回 | ||
| 10103 | 心跳包 | c->s | 客户端每5秒向服务端发起心跳包 | ||
| 10104 | 房间列表 | c->s | 房间列表 | ||
| 10105 | 大厅内有房间变化 | s->c | 大厅内有房间内变化,广播所有大厅里不在房间内玩家 | ||
| 10106 | 加入房间 | c->s | 房间ID,不填房间号,就是系统选房间即快速开始 | ||
| 10107 | 房间信息 | c->s | 房间信息 | ||
| 10108 | 准备 | c->s | 准备 | ||
| 10109 | 广播房间变化 | s->c | 房间内有玩家变化,广播给房间内玩家 | ||
| 10110 | 游戏信息 | s->c | 游戏信息 | ||
| 10111 | 申请解散 | c->s | 申请解散 | ||
| 10112 | 提示玩家投票及广播解散意见 | s->c | 提示玩家投票及广播解散意见 | ||
| 10113 | 玩家是否同意解散 | c->s | 玩家是否同意解散 | ||
| 10114 | 解散房间的结果 | s->c | 解散房间的结果 | ||
| 10115 | 玩家间距离请求 | c->s | 玩家间距离请求 | ||
| 10116 | 玩家间距离回包 | s->c | 玩家间距离回包 | ||
| 10117 | 用户请求退出房间 | c->s | 用户请求退出房间 | ||
| 10118 | 同个用户新登陆踢出旧登陆 | s->c | 同个用户新登陆踢出旧登陆 | ||
| 10119 | 请求历史积分 | c->s | 请求历史积分 | ||
| 10120 | 历史积分回包 | s->c | 历史积分回包 | ||
| 10121 | 玩家间距离太近提示 | s->c | 玩家间距离太近提示 | ||
| 10122 | 聊天 | 客户端和服务器广播同一个命令字,同一个PB结构;服务器纯广播,不做任何处理 | |||
| 10123 | 游戏信息 | s->c | 刷新游戏信息 | ||
| 10131 | 广播骰子结果 | s->c | 广播骰子结果,暂时没有用到 | ||
| 10132 | 系统发牌 | s->c | 系统发牌 | ||
| 10133 | 提示出牌 | s->c | 提示出牌,发给可以出牌的玩家 | ||
| 10134 | 提示等待出牌 | s->c | 提示等待出牌,发给等待别人出牌的玩家 | ||
| 10135 | 请求出牌 | c->s | 请求出牌 | ||
| 10136 | 广播出牌结果 | s->c | 广播出牌结果 | ||
| 10137 | 广播多个出牌结果 | s->c | 广播多个出牌结果,如果多个抢杠胡,则一起发 | ||
| 10138 | 摊牌 | s->c | 摊牌 | ||
| 10139 | 小局结算 | s->c | 小局结算 | ||
| 10140 | 回放游戏信息 | s->c | 回放游戏信息 | ||
| 10155 | 回放 | c->s | 回放,客户端要求 | ||
| 10159 | 创建VIP房间 | c->s | 创建VIP房间 | ||
| 10160 | 加入VIP房间 | c->s | 加入VIP房间 |
syntax = "proto3";
package event;
message EventLogin { // IRequest 10101
//用户登录标识
string token = 1;
//客户端校验 md5(token + secret_key) 服务端和客户端约定secret_key
string secretString = 2;
// 登录地址
string loginAddress = 3;
// 登录经度
string loginLng = 4;
// 登录纬度
string loginLat = 5;
}
syntax = "proto3";
package event;
message EventReturn { // IResponse 10102
//事件ID
int32 eventId = 1;
//返回码 0--表示成功 其它的为错误
int32 code = 2;
//描述
string message = 3;
}
syntax = "proto3";
package event;
//心跳包
message EventHeartBeat { // IResponse IRequest 10103
}
syntax = "proto3";
package event;
message EventRoomList { // IResponse 10104
// 房间列表
repeated EventRoomInfo items = 1 [packed = false];
// 开始房间数
int32 StartedRoomNum = 2;
}
syntax = "proto3";
package event;
message EventUseRoomChange { // IResponse 10105
//变化原因 (0-创建,1-更新资料,2-开始游戏,3-解散)
int32 reason = 1;
//变化后房间信息
EventRoomInfo roomInfo = 2;
// 开始房间数
int32 StartedRoomNum = 3;
}
syntax = "proto3";
package event;
message EventJoinRoom { // IRequest 10106
//房间ID,不填房间号,就是系统选房间即快速开始
int32 roomId = 1;
}
syntax = "proto3";
package event;
message EventRoomInfo { // IResponse 10107
// 房间id
int32 roomId = 1;
// 房间状态,0-没开始,1-游戏中,2-小局结束,3-所有已结束,4-房间解散中, 5-选择打独中
int32 status = 2;
//当前局数
int32 curGameNum = 3;
// 总局数
int32 totalGameNum = 4;
// 底分
int32 baseScore = 5;
// 玩法描述
string playDes = 6;
// 玩家信息(以座位号为顺序)
repeated EventPlayerInfo playerInfo = 7 [packed = false];
// 最低局数
int32 minGameNum = 8;
// 密码
string pwd = 9;
}
syntax = "proto3";
package event;
message EventAskReady { // IRequest 10108
//true-准备 false--取消准备
bool isReady = 1;
}
syntax = "proto3";
package event;
// 房间内有玩家变化,广播给房间内玩家
message EventUsePlayerChange { // IResponse 10109
//变化原因, 0-加入 1-离开,2-准备 3-取消准备,4-上线 5-离线
int32 reason = 1;
//变化玩家座位号
int32 seatId = 2;
//变化玩家id
int32 userId = 3;
// 变化后,房间内所有玩家信息(以座位号为顺序)
repeated EventPlayerInfo playerInfo = 4 [packed = false];
}
syntax = "proto3";
package event;
// 游戏信息
message PBGameInfo { // IResponse 10110
// 骰子结果
PBUseDice dice = 1;
// 当前手牌及提示/等待出牌
PBAssignPai assignPai = 2;
// 当前出牌池(按出牌顺序)
repeated int32 outPaiPool = 3[packed = false];
// 剩下的牌张数
int32 restPaiPoolNum = 4;
// 每个玩家信息列表,按座位号为下标
repeated PBHistoryInfo playerInfoList = 5[packed = false];
// 庄家座位号
int32 zhuangSeat = 6;
}
syntax = "proto3";
package event;
// 申请解散
message EventAskDismassRoom { // IRequest 10111
}
syntax = "proto3";
package event;
message EventQueryDismassRoom { // IResponse 10112
//申请的玩家ID
int32 applyUserId = 1;
//申请的玩家昵称
string applyNickName = 2;
//各个玩家投票情况
repeated EventPlayerVote playerVote = 3 [packed = false];
//解散还剩的秒数 如:89
int32 remainderTime = 5;
}
syntax = "proto3";
package event;
// 玩家上传是否同意解散
message EventReportDismassRoom { // IRequest 10113
//true--同意 false--拒绝
bool isAgree = 1;
}
syntax = "proto3";
package event;
message EventNoticeDismassRoom { // IResponse 10114
//true -- 解散 false --不解散
bool isAgree = 1;
//解散原因, 0-玩家发起解散, 1-房间超过最低局数,有玩家退出, 2-房间达到最高局数
// 3-有玩家游戏币为负数, 4-长时间没开始,自动解散
int32 reason = 2;
//解散文字说明
string doc = 3;
// 房间ID
int32 roomId = 4;
}
syntax = "proto3";
package event;
//玩家间距离请求
message EventAskGeo { // IRequest 10115
}
syntax = "proto3";
package event;
//玩家间距离回包
message EventUseGeo { // IResponse 10116
// 用户ID列表
repeated int32 uids = 1 [packed = false];
// 结果列表
repeated EventUseGeoItem Items = 2 [packed = false];
}
syntax = "proto3";
package event;
//用户请求退出房间
message EventAskExit { // IRequest 10117
}
syntax = "proto3";
package event;
message EventKickOut { // IResponse 10118
//用户ID
int32 userId = 1;
}
syntax = "proto3";
package event;
// 请求历史积分
message EventAskHistoryScore { // IRequest 10119
}
syntax = "proto3";
package event;
// 历史积分回包
message EventUseHistoryScore { // IResponse 10120
repeated EventHistoryScoreItem items = 1 [packed = false];
}
syntax = "proto3";
package event;
//玩家间距离太近提示
message EventDistanceAlert { // IResponse 10121
//提示内容
string alertStr = 1;
}
syntax = "proto3";
package event;
// 客户端和服务器广播同一个命令字,同一个PB结构
// 服务器纯广播,不做任何处理
message EventChat { // IResponse IRequest 10122
// 聊天类型
int32 Type = 1;
// 聊天内容
string Content = 2;
// 聊天扩展
string Extend = 3;
// 聊天发起人id
int32 authorId = 4;
}
syntax = "proto3";
package event;
// 客户端刷新房间信息,不推送给其他人,
message EventRefreshRoom { // IResponse 10123
}
// 广播骰子结果
message PBUseDice { // IResponse 10131
// 小的点数
int32 smaller = 1;
// 大的点数
int32 larger = 2;
// 庄家座位号
int32 seatId = 3;
// 总共麻将牌数
int32 allPaiNum = 4;
}
syntax = "proto3";
package event;
// 系统发牌
message PBAssignPai { // IResponse 10132
// 手牌,庄/闲家13张
repeated int32 paiList = 1[packed = false];
// 提示出牌,
// 如果本字段为空,说明自已不能出牌
PBHintOut hint = 2;
// 提示等待出牌
// 如果本字段为空,说明自已要出牌
PBWaitOut wait = 3;
// 庄家风位牌墙起点到到骰子起点
// 即起点摸牌左边余下多少牌数
int32 leftPaiNum = 4;
// 摸牌后右边余下多少牌数
int32 rightPaiNum = 5;
// 同步牌数量
repeated PBSyncNum syncNumList = 6[packed = false];
// 庄家座位号
int32 zhuangSeat = 7;
}
syntax = "proto3";
package event;
// 提示出牌,发给可以出牌的玩家
message PBHintOut { // IResponse 10133
// 是否必须出牌(玩家必须选[出牌|碰|杠|胡]其中一个)
bool isForce = 1;
// 出牌token
string token =2;
// 是否能胡
bool canHu = 3;
// 是否能杠
bool canGang = 4;
// 是否能碰
bool canPeng = 5;
// 是否能出牌
bool canOut = 6;
// 系统是否派牌
bool hasAddPai = 7;
// 系统派给玩家牌
int32 addPai = 8;
// 风向光标指向座位号
int32 cursorSeatId = 9;
// 手牌中有多张杠牌
repeated PBHintGang gangList = 10[packed = false];
// 胡牌类型,41-自摸,42-抢杠胡,43-杠上花,44-点炮胡
int32 huMask = 11;
// 碰的牌
int32 pengpai = 12;
// 牌墙剩余数
int32 qiangNum = 13;
// 客户端回放可能用到
int32 seatId = 14;
// 胡牌番型,平胡,十三烂等
int32 HuTypeNum = 15;
// 胡牌的牌
int32 HuPai = 16;
}
syntax = "proto3";
package event;
// 提示等待出牌,发给等待别人出牌的玩家
message PBWaitOut { // IResponse 10134
// 风向光标指向座位号
int32 cursorSeatId = 1;
// 系统是否派牌
bool hasAddPai = 2;
// 系统派给玩家座位号
int32 addPaiSeatId = 3;
// 牌墙剩余数
int32 qiangNum = 4;
// 是否继续等待,如果自已出过牌,但仍然后等待其他玩家操作,则此字段为true,否则为false
bool isKeep = 5;
}
syntax = "proto3";
package event;
message PBAskOut { // IRequest 10135
// 出牌token
string token=1;
// 0-出牌(需要填充pai字段),1-碰,2-杠(需要填充pai字段,手牌可能有多杠),3-胡,4-过
// 5-取消杠胡(玩家主动/强制出牌,可杠可胡可出牌时,取消杠胡只要出牌)
int32 action = 2;
// 此次出的牌
int32 pai = 3;
}
syntax = "proto3";
package event;
// 广播出牌结果
message PBUseOut { // IResponse 10136
// 出牌玩家座位号
int32 seatId =1;
// 出牌类型
// 0-出牌,1-碰,2-杠,3-胡,4-过(仅回放才有),5-取消杠/胡(仅回放才有)
int32 outType = 2;
// 出牌掩码
// 0-出牌
// 1-碰
// 20-暗杠,21-直杠(明杠),22-补杠(转角杠)
// 41-自摸,42-抢杠胡,43-杠上花,44-点炮胡
// 40-过(仅回放才有)
// 50-取消碰/杠/胡(仅回放才有)
int32 outMask = 3;
// 出/碰/杠的牌
int32 pai = 5[packed = false];
// 是否有被操作玩家,自模/暗杠等没有被操作玩家
bool hasWithSeatId = 6;
// 被碰/杠/胡玩家的座位号
int32 withSeatId = 7;
// 出牌类型为杠才有,出牌玩家的杠列表(从开局到现在,包括这次), 按发生顺序
repeated PBHistoryOut gangList = 8[packed = false];
// 出牌类型为碰才有,出牌玩家的碰列表(从开局到现在,包括这次), 按发生顺序
repeated PBHistoryOut pengList = 9[packed = false];
// 只有出牌类型为杠才有, 杠完每个玩家的游戏币(精确到分), 按座位号顺序
repeated int64 totalCoins = 10[packed = false];
// 只有出牌类型为杠才有, 此次杠出牌, 每个玩家的得失分, 得分为正,失分为负, 按座位号顺序
repeated int32 oddScore = 11[packed = false];
// 只有出牌类型为胡才有, 胡牌番型,平胡,十三烂等
int32 HuTypeNum = 12;
// 只有出牌类型为胡才有,胡牌的牌
int32 HuPai = 13;
}
syntax = "proto3";
package event;
// 广播多个出牌结果,如果多个抢杠胡,则一起发
message PBMultiUseOut { // IResponse 10137
repeated PBUseOut outList = 1[packed = false];
}
syntax = "proto3";
package event;
// 摊牌
message PBTanPai { // IResponse 10138
repeated PBTanPaiItem items = 1[packed = false];
// 是否流局
bool isFlow = 2;
}
syntax = "proto3";
package event;
// 小局结算
message PBSmallSettlement { // IResponse 10139
// 房间号
int32 id = 1;
// 房间状态 0-未开始 1-小局结束 2-游戏中 3-已结束
int32 status = 2;
// 当前局数
int32 now = 3;
// 下局局数, 如果房间状态为:3, 这里为:0
int32 next = 4;
// 总局数
int32 total = 5;
// 玩法名称
string name = 6;
// 玩法描述
string doc = 7;
// 时间
string time = 8;
// 房间底分
int32 baseScore = 9;
// 结束原因, 0-玩家发起解散, 1-房间超过最低局数,有玩家退出, 2-房间达到最高局数
// 3-有玩家游戏币为负数
int32 overReason = 10;
// 结束文字说明
string overDoc = 11;
// 数据是否有效(奖马,胡牌,流局,放炮,各种分等)
bool dataValid = 12;
// 是否流局
bool isFlow = 13;
// 奖马
repeated PBPrizeHorse prizeHorseList = 14 [packed = false];
// 各玩家的情况,座位号为下标
repeated PBSmallMeta players = 15 [packed = false];
}
message PBSmallMeta {
// 玩家ID
int32 userId = 1;
// 玩家昵称
string nickName = 2;
// 当前总游戏币(精确到分)
int64 totalCoins = 3;
// 此局输赢分,赢分为正数,输分为负数
int32 winScore = 4;
// 是否为庄家
bool isBanker = 5;
// 是否胡牌
bool isHu = 6;
// 最后胡的牌
int32 huPai = 7;
// 胡牌类型,41-自摸,42-抢杠胡,43-杠上花,44-天胡,45-点炮胡,46-地胡
int32 huType = 8;
// 是否放炮
bool isPao = 9;
// 胡分,赢分为正数,输分为负数
int32 huScore = 10;
// 杠分,赢分为正数,输分为负数
int32 gangScore = 11;
// 跟庄分,赢分为正数,输分为负数
int32 followBankerScore = 12;
// 中马分,赢分为正数,输分为负数
int32 prizeHorseScore = 13;
// 手牌(如果胡牌/流局/解散,则不包括最后胡/派的牌)
repeated int32 handPaiList = 14[packed = false];
// 玩家的杠列表, 按发生顺序
repeated PBHistoryOut gangList = 15[packed = false];
// 玩家的碰列表, 按发生顺序
repeated PBHistoryOut pengList = 16[packed = false];
// 胡牌番型,平胡,十三烂等
int32 HuTypeNum = 17;
// 此局输赢游戏币数(精确到分),赢为正数,输为负数
int64 WinCoins = 18;
// 是否有派牌(如果流局/解散,系统最后给玩家派牌)
bool hasAddPai = 19;
// 系统的派牌
int32 addPai = 20;
}
// 奖马
message PBPrizeHorse {
// 麻将牌
int32 pai = 1;
// 是否中奖
bool isPrize = 2;
}
syntax = "proto3";
package event;
// 回放游戏信息
message PBReplayGame { // IResponse 10140
// 系统发的手牌,按座位号为下标
repeated PBAssignPai assignPaiList = 1[packed = false];
}
syntax = "proto3";
package event;
//回放,客户端要求
message PBReplay { // IResponse 10155
repeated PBReplayCell cells = 1[packed = false];
}
syntax = "proto3";
package event;
message EventCreateVIPRoom { // IRequest 10159
}
syntax = "proto3";
package event;
message EventJoinVIPRoom { // IRequest 10160
string pwd = 2;
}