红中麻将二人场
错误码
| 错误码 |
描述 |
| 9645 |
房间不在游戏中 |
| 9646 |
无权不出 |
| 9647 |
不出token错误 |
| 9648 |
必须出牌 |
| 9649 |
出牌token错误 |
| 9650 |
出牌错误 |
| 9651 |
无权出牌 |
| 9652 |
操作被取消 |
事件定义
从9600到9699
事件流向:
- c->s 客户端发送到服务器端
- s->c 服务器端发送到客户端
| 事件编号 |
事件名称 |
事件流向 |
描述 |
备注 |
|
| 9601 |
登录 |
c->s |
进入游戏要进行登录验证 |
|
|
| 9602 |
服务器返回 |
s->c |
服务器通用返回 |
|
|
| 9603 |
心跳包 |
c->s |
客户端每5秒向服务端发起心跳包 |
|
|
| 9604 |
房间列表 |
c->s |
房间列表 |
|
|
| 9605 |
大厅内有房间变化 |
s->c |
大厅内有房间内变化,广播所有大厅里不在房间内玩家 |
|
|
| 9606 |
加入房间 |
c->s |
房间ID,不填房间号,就是系统选房间即快速开始 |
|
|
| 9607 |
房间信息 |
c->s |
房间信息 |
|
|
| 9608 |
准备 |
c->s |
准备 |
|
|
| 9609 |
广播房间变化 |
s->c |
房间内有玩家变化,广播给房间内玩家 |
|
|
| 9610 |
游戏信息 |
s->c |
游戏信息 |
|
|
| 9611 |
申请解散 |
c->s |
申请解散 |
|
|
| 9612 |
提示玩家投票及广播解散意见 |
s->c |
提示玩家投票及广播解散意见 |
|
|
| 9613 |
玩家是否同意解散 |
c->s |
玩家是否同意解散 |
|
|
| 9614 |
解散房间的结果 |
s->c |
解散房间的结果 |
|
|
| 9615 |
玩家间距离请求 |
c->s |
玩家间距离请求 |
|
|
| 9616 |
玩家间距离回包 |
s->c |
玩家间距离回包 |
|
|
| 9617 |
用户请求退出房间 |
c->s |
用户请求退出房间 |
|
|
| 9618 |
同个用户新登陆踢出旧登陆 |
s->c |
同个用户新登陆踢出旧登陆 |
|
|
| 9619 |
请求历史积分 |
c->s |
请求历史积分 |
|
|
| 9620 |
历史积分回包 |
s->c |
历史积分回包 |
|
|
| 9621 |
玩家间距离太近提示 |
s->c |
玩家间距离太近提示 |
|
|
| 9622 |
聊天 |
|
客户端和服务器广播同一个命令字,同一个PB结构;服务器纯广播,不做任何处理 |
|
|
| 9623 |
游戏信息 |
s->c |
刷新游戏信息 |
|
|
| 9631 |
广播骰子结果 |
s->c |
广播骰子结果,暂时没有用到 |
|
|
| 9632 |
系统发牌 |
s->c |
系统发牌 |
|
|
| 9633 |
提示出牌 |
s->c |
提示出牌,发给可以出牌的玩家 |
|
|
| 9634 |
提示等待出牌 |
s->c |
提示等待出牌,发给等待别人出牌的玩家 |
|
|
| 9635 |
请求出牌 |
c->s |
请求出牌 |
|
|
| 9636 |
广播出牌结果 |
s->c |
广播出牌结果 |
|
|
| 9637 |
广播多个出牌结果 |
s->c |
广播多个出牌结果,如果多个抢杠胡,则一起发 |
|
|
| 9638 |
摊牌 |
s->c |
摊牌 |
|
|
| 9639 |
小局结算 |
s->c |
小局结算 |
|
|
| 9640 |
回放游戏信息 |
s->c |
回放游戏信息 |
|
|
| 9655 |
回放 |
c->s |
回放,客户端要求 |
|
|
| 9659 |
创建VIP房间 |
c->s |
创建VIP房间 |
|
|
| 9660 |
加入VIP房间 |
c->s |
加入VIP房间 |
|
|
登录
syntax = "proto3";
package event;
message EventLogin { // IRequest 9601
//用户登录标识
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 9602
//事件ID
int32 eventId = 1;
//返回码 0--表示成功 其它的为错误
int32 code = 2;
//描述
string message = 3;
}
心跳包
syntax = "proto3";
package event;
//心跳包
message EventHeartBeat { // IResponse IRequest 9603
}
房间列表
syntax = "proto3";
package event;
message EventRoomList { // IResponse 9604
// 房间列表
repeated EventRoomInfo items = 1 [packed = false];
// 开始房间数
int32 StartedRoomNum = 2;
}
//房间信息
message EventRoomInfo {
// 房间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 EventUseRoomChange { // IResponse 9605
//变化原因 (0-创建,1-更新资料,2-开始游戏,3-解散)
int32 reason = 1;
//变化后房间信息
EventRoomInfo roomInfo = 2;
// 开始房间数
int32 StartedRoomNum = 3;
}
加入房间
syntax = "proto3";
package event;
message EventJoinRoom { // IRequest 9606
//房间ID,不填房间号,就是系统选房间即快速开始
int32 roomId = 1;
}
房间信息
syntax = "proto3";
package event;
message EventRoomInfo { // IResponse 9607
// 房间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 9608
//true-准备 false--取消准备
bool isReady = 1;
}
广播房间变化
syntax = "proto3";
package event;
// 房间内有玩家变化,广播给房间内玩家
message EventUsePlayerChange { // IResponse 9609
//变化原因, 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 9610
// 骰子结果
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 9611
}
提示玩家投票及广播解散意见
syntax = "proto3";
package event;
message EventQueryDismassRoom { // IResponse 9612
//申请的玩家ID
int32 applyUserId = 1;
//申请的玩家昵称
string applyNickName = 2;
//各个玩家投票情况
repeated EventPlayerVote playerVote = 3 [packed = false];
//解散还剩的秒数 如:89
int32 remainderTime = 5;
}
玩家是否同意解散
syntax = "proto3";
package event;
// 玩家上传是否同意解散
message EventReportDismassRoom { // IRequest 9613
//true--同意 false--拒绝
bool isAgree = 1;
}
解散房间的结果
syntax = "proto3";
package event;
message EventNoticeDismassRoom { // IResponse 9614
//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 9615
}
玩家间距离回包
syntax = "proto3";
package event;
//玩家间距离回包
message EventUseGeo { // IResponse 9616
// 用户ID列表
repeated int32 uids = 1 [packed = false];
// 结果列表
repeated EventUseGeoItem Items = 2 [packed = false];
}
用户请求退出房间
syntax = "proto3";
package event;
//用户请求退出房间
message EventAskExit { // IRequest 9617
}
同个用户新登陆踢出旧登陆
syntax = "proto3";
package event;
message EventKickOut { // IResponse 9618
//用户ID
int32 userId = 1;
}
请求历史积分
syntax = "proto3";
package event;
// 请求历史积分
message EventAskHistoryScore { // IRequest 9619
}
历史积分回包
syntax = "proto3";
package event;
// 历史积分回包
message EventUseHistoryScore { // IResponse 9620
repeated EventHistoryScoreItem items = 1 [packed = false];
}
玩家间距离太近提示
syntax = "proto3";
package event;
//玩家间距离太近提示
message EventDistanceAlert { // IResponse 9621
//提示内容
string alertStr = 1;
}
聊天
syntax = "proto3";
package event;
// 客户端和服务器广播同一个命令字,同一个PB结构
// 服务器纯广播,不做任何处理
message EventChat { // IResponse IRequest 9622
// 聊天类型
int32 Type = 1;
// 聊天内容
string Content = 2;
// 聊天扩展
string Extend = 3;
// 聊天发起人id
int32 authorId = 4;
}
刷新游戏信息
syntax = "proto3";
package event;
// 客户端刷新房间信息,不推送给其他人,
message EventRefreshRoom { // IResponse 9623
}
广播骰子结果
// 广播骰子结果
message PBUseDice { // IResponse 9631
// 小的点数
int32 smaller = 1;
// 大的点数
int32 larger = 2;
// 庄家座位号
int32 seatId = 3;
// 总共麻将牌数
int32 allPaiNum = 4;
}
系统发牌
syntax = "proto3";
package event;
// 系统发牌
message PBAssignPai { // IResponse 9632
// 手牌,庄/闲家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 9633
// 是否必须出牌(玩家必须选[出牌|碰|杠|胡]其中一个)
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 9634
// 风向光标指向座位号
int32 cursorSeatId = 1;
// 系统是否派牌
bool hasAddPai = 2;
// 系统派给玩家座位号
int32 addPaiSeatId = 3;
// 牌墙剩余数
int32 qiangNum = 4;
// 是否继续等待,如果自已出过牌,但仍然后等待其他玩家操作,则此字段为true,否则为false
bool isKeep = 5;
}
请求出牌
syntax = "proto3";
package event;
message PBAskOut { // IRequest 9635
// 出牌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 9636
// 出牌玩家座位号
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 9637
repeated PBUseOut outList = 1[packed = false];
}
摊牌
syntax = "proto3";
package event;
// 摊牌
message PBTanPai { // IResponse 9638
repeated PBTanPaiItem items = 1[packed = false];
// 是否流局
bool isFlow = 2;
}
小局结算
syntax = "proto3";
package event;
// 小局结算
message PBSmallSettlement { // IResponse 9639
// 房间号
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-天胡
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 9640
// 系统发的手牌,按座位号为下标
repeated PBAssignPai assignPaiList = 1[packed = false];
}
回放
syntax = "proto3";
package event;
//回放,客户端要求
message PBReplay { // IResponse 9655
repeated PBReplayCell cells = 1[packed = false];
}
创建VIP房间
syntax = "proto3";
package event;
message EventCreateVIPRoom { // IRequest 9659
}
加入VIP房间
syntax = "proto3";
package event;
message EventJoinVIPRoom { // IRequest 9660
string pwd = 2;
}