从8900到8999
| 错误码 | 描述 |
|---|---|
| 8901 | success |
| 8902 | 数据反序化失败 |
| 8903 | 地区玩法错误 |
| 8904 | 未知事件 |
| 8905 | 没有该用户 |
| 8906 | 用户未登录 |
| 8907 | 用户验证失败 |
| 8908 | 用户重复登录 |
| 8909 | 已加入其他游戏 |
| 8910 | 已登陆其他服务器 |
| 8912 | 加入房间失败 |
| 8913 | 房间不存在 |
| 8914 | 房间已经满人 |
| 8915 | 用户已在房间中 |
| 8916 | 该用户没有在任何房间 |
| 8920 | 重复申请解散 |
| 8921 | 房间不在解散中 |
| 8922 | 获取距离失败 |
| 8923 | 退出房间失败 |
| 8924 | 房间不在准备中 |
| 8927 | 重复解散投票 |
| 8928 | 用户不在当前房间 |
| 8929 | 房间已开始游戏 |
| 8930 | 坐下失败,游戏币不足 |
| 8931 | 没有空房间 |
| 8932 | 重复准备 |
| 8933 | 用户已在其他设备登陆 |
| 8934 | 用户信息读取失败 |
| 8935 | 准备失败,游戏币不足 |
| 8936 | 创建VIP房间失败,游戏币不足 |
| 8937 | VIP房间, 加入失败 |
| 8938 | 加入VIP房间失败, 密码错误 |
| 8939 | 非VIP房间 |
| 8940 | 无权包庄 |
| 8941 | 房间不在选择包庄中 |
| 8945 | 房间不在游戏中 |
| 8946 | 无权不出 |
| 8947 | 不出token错误 |
| 8948 | 必须出牌 |
| 8949 | 出牌token错误 |
| 8950 | 出牌不符合规则 |
| 8951 | 无权出牌 |
| 8952 | 你没有处于托管中 |
| 8953 | 数据库操作失败 |
| 8954 | 取消托管的次数已经用光 |
| 8955 | 你处于托管中 |
| 8961 | 包庄游戏币数最低为当前底分60倍 |
从8900到8999 事件流向:
c->s 客户端发送到服务器端 s->c 服务器端发送到客户端 s->m 服务器端广播到客户端
| 事件编号 | 事件名称 | 事件流向 | 是否返回 | 描述 | |
|---|---|---|---|---|---|
| 8901 | 登录 | c->s | true | ||
| 8902 | 服务器返回 | s->c | 服务器返回,包括成功和异常 | ||
| 8903 | 心跳包 | c->s | true | 服务器回空包 | |
| 8904 | 房间列表 | s->m | 广播给大厅内但不在房间的玩家 | ||
| 8905 | 房间变化 | s->m | 广播给大厅内但不在房间的玩家 | ||
| 8906 | 加入房间 | c->s | true | 快速开始-不用填房间号 | |
| 8907 | 房间信息 | s->c | 加入房间推送或在房间内掉线回来推送 | ||
| 8908 | 准备 | c->s | 玩家准备及取消准备 | ||
| 8909 | 玩家变化 | s->m | 加入,离开,上线,掉线,准备,取消准备都广播房间内玩家 | ||
| 8910 | 游戏信息 | s->c | 开始游戏推送或游戏内掉线回来推送 | ||
| 8911 | 申请解散 | c->s | 如果房间未开始,当作退出房间处理 | ||
| 8912 | 提示玩家投票 | s->m | 广播给房间内玩家 | ||
| 8913 | 玩家投票 | c->s | 玩家是否同意解散 | ||
| 8914 | 广播解散结果 | s->m | 广播给房间内玩家 | ||
| 8915 | 请求LBS | c->s | |||
| 8916 | 回复LBS | s->c | |||
| 8917 | 请求退出房间 | c->s | true | 服务器返回 | |
| 8918 | 顶号 | s->c | 同个用户只能一个连接,新的顶替旧的 | ||
| 8919 | 请求历史积分 | c->s | |||
| 8920 | 回复历史积分 | s->c | |||
| 8921 | 近距离提示 | m | |||
| 8922 | 聊天 | m | 客户端和服务器广播同一个命令字/PB结构,服务器不做任何处理 | ||
| 8923 | 游戏信息 | s->c | 刷新游戏信息 | ||
| 8931 | 系统发牌 | s->m | 广播给房间内玩家,每个人信息不同 | ||
| 8932 | 提示包庄 | s->m | 让玩家选择是否包庄 | ||
| 8933 | 玩家是否包庄 | c->s | 玩家是否包庄,出错回包,成功不回 | ||
| 8934 | 广播是否包庄 | s->m | 通知包庄 | ||
| 8936 | 提示出牌 | s->m | 通知玩家出牌 | ||
| 8937 | 玩家出牌 | c->s | 玩家出牌,出错时回包,成功不回 | ||
| 8938 | 广播出牌 | s->m | 广播给房间内玩家,玩家出牌 | ||
| 8939 | 广播清桌 | s->m | 广播给房间内玩家,通知清桌 | ||
| 8940 | 摊牌 | s->m | 广播给房间内玩家 | ||
| 8941 | 小局结算 | s->m | 广播给房间内玩家 | ||
| 8942 | 回放游戏信息 | ||||
| 8955 | 回放 | ||||
| 8956 | 广播用户进入托管模式 | s->m | |||
| 8957 | 取消托管模式 | c->s | true | ||
| 8958 | 广播托管模式 | s->m | |||
| 8959 | 创建VIP房间 | c->s | true | ||
| 8960 | 加入VIP房间 | c->s | true |
syntax = "proto3";
package event;
//玩家信息
message EventPlayerInfo {
//用户ID
int32 userId = 1;
//在线状态 true -- 在线 false -- 离线
bool onlineStatus = 2;
//准备状态 true --准备 false --未准备
bool readyStatus = 3;
//游戏币数,(精确到分)
int64 coins = 4;
//座位ID 0,1,2,3
int32 seatId = 5;
//昵称
string nickName = 6;
//头像url
string headUrl = 7;
//用户IP
string ip = 8;
// 性别 0-没有设置,1--男 2--女
int32 sex = 9;
//总积分
int32 totalJiFen = 10;
//登录地址
string loginAddress = 11;
}
message EventCreateVIPRoom { // IRequest 8959
}
message EventJoinVIPRoom { // IRequest 8960
string pwd = 2;
}
// 取消托管成功
message EventCancelEntrustDone { // IResponse 8958
// 取消托管用户座位号
int32 seat = 1;
}
// 取消托管
message EventCancelEntrust { // IRequest 8957
}
// 广播用户进入托管
message EventInEntrust { // IResponse 8956
// 进入托管用户的座位号
int32 seat = 1;
// 还有多少次可以取消托管
int32 count = 2;
}
syntax = "proto3";
package event;
message EventLogin { // IRequest 8901
//用户登录标识
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 8902
//事件ID
int32 eventId = 1;
//返回码 0--表示成功 其它的为错误
int32 code = 2;
//描述
string message = 3;
}
syntax = "proto3";
package event;
//心跳包
message EventHeartBeat { // IResponse IRequest 8903
}
syntax = "proto3";
package event;
import "room_info.proto";
//房间列表
message EventRoomList { // IResponse 8904
// 房间列表
repeated EventRoomInfo items = 1[packed = false];
// 开始房间数
int32 StartedRoomNum = 2;
}
syntax = "proto3";
package event;
import "room_info.proto";
// 大厅内有房间内变化,广播所有大厅里不在房间内玩家
message EventUseRoomChange { // IResponse 8905
//变化原因 (0-创建,1-更新资料,2-开始游戏,3-解散)
int32 reason = 1;
//变化后房间信息
EventRoomInfo roomInfo = 2;
// 开始房间数
int32 StartedRoomNum = 3;
}
快速开始-不用填房间号
syntax = "proto3";
package event;
message EventJoinRoom { //IRequest 8906
//房间ID,不填房间号,就是系统选房间即快速开始
int32 roomId = 1;
}
syntax = "proto3";
package event;
import "player_info.proto";
//房间信息
message EventRoomInfo { //IResponse 8907
// 房间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 8908
//true-准备 false--取消准备
bool isReady = 1;
}
syntax = "proto3";
package event;
import "player_info.proto";
// 房间内有玩家变化,广播给房间内玩家
message EventUsePlayerChange { // IResponse 8909
//变化原因, 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;
import "use_out.proto";
import "assign_pai.proto";
message PBBombType {
repeated int32 bts = 1[packed = false];
}
message PBGameInfo { // IResponse 8910
// 当前是否包庄
bool isBaoZhuang = 1;
// 是否选择包庄中
bool isChoiceBaoZhuang = 2;
// 选择包庄剩余时间,还剩余多少秒考虑时间
int32 remainBaoZhuangTime = 3;
// 当前选择包庄座位号
int32 choiceSeatId = 4;
// 对家用户id,包庄才有效
int32 oppositeUserId = 5;
// 出牌token
string outPaiToken = 6;
// 庄家用户id
int32 bankerUserId = 7;
// 庄家座位id
int32 bankerSeatId = 8;
// 当前桌牌(按出牌顺序)
repeated PBUseOut desktopPai = 9 [packed = false];
// 当前出牌座位号
int32 curOutPaiSeat = 10;
// 当前出牌玩家的牌是否大的起上家
bool isCanPlayLast =11;
// 当前手牌
repeated int32 handPai = 12 [packed = false];
// 每个玩家剩余张数(座位号为下标),小于等于5张才有效
repeated int32 restNum = 13 [packed = false];
// 每个玩家炸弹输赢分(座位号为下标)
repeated int32 bombScore = 14 [packed = false];
// 能否出牌
bool canOutPai = 15;
// 是否必须出牌
bool mustOutPai = 16;
// 出牌时的剩余时间
int32 remainOutTime = 17;
// 是否处于托管中
repeated bool isEntrust = 18 [packed = false];
// 还有几次取消托管的机会
int32 cancelEntrustCount = 19;
// 每个玩家出完顺序(座位号为下标),0-没出完,1-出完
repeated int32 overOrder = 20 [packed = false];
}
syntax = "proto3";
package event;
// 申请解散
message EventAskDismassRoom {
}
syntax = "proto3";
package event;
//玩家的投票情况
message EventPlayerVote {
int32 userId = 1;
string nickName = 2;
//投票结果 0--未投票 1--同意 2--拒绝
int32 vote = 3;
}
// 提示玩家投票及广播解散意见,玩家如果没有投票,则提示投票,否则仅显示
message EventQueryDismassRoom { // IResponse 8912
//申请的玩家ID
int32 applyUserId = 1;
//申请的玩家昵称
string applyNickName = 2;
//各个玩家投票情况
repeated EventPlayerVote playerVote = 3[packed = false];
//解散还剩的秒数 如:89
int32 remainderTime = 5;
}
syntax = "proto3";
package event;
// 玩家上传是否同意解散
message EventReportDismassRoom {
//true--同意 false--拒绝
bool isAgree = 1;
}
syntax = "proto3";
package event;
//解散房间的结果
message EventNoticeDismassRoom { // IResponse 8914
//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 8915
}
syntax = "proto3";
package event;
message EventUseGeoItem {
//起始用户ID
int32 srcUid = 1;
//结束用户ID
int32 destUid = 2;
//用户之间距离
string distance = 3;
//用户之间距离,数值表示,单位(米)
int32 gap = 4;
}
//玩家间距离回包
message EventUseGeo { // IResponse 8916
// 用户ID列表
repeated int32 uids = 1[packed = false];
// 结果列表
repeated EventUseGeoItem Items = 2[packed = false];
}
syntax = "proto3";
package event;
//用户请求退出房间
message EventAskExit {
}
syntax = "proto3";
package event;
//同个用户新登陆踢出旧登陆
message EventKickOut { // IResponse 8918
//用户ID
int32 userId = 1;
}
syntax = "proto3";
package event;
// 请求历史积分
message EventAskHistoryScore { // IRequest 8919
}
syntax = "proto3";
package event;
message EventHistoryScoreItem {
// 用户ID
int32 userId = 1;
// 下标-局数,值-积分
repeated int32 scores = 2[packed = false];
}
// 历史积分回包
message EventUseHistoryScore { // IResponse 8920
repeated EventHistoryScoreItem items = 1[packed = false];
}
syntax = "proto3";
package event;
//玩家间距离太近提示
message EventDistanceAlert { // IResponse 8921
//提示内容
string alertStr = 1;
}
syntax = "proto3";
package event;
// 客户端和服务器广播同一个命令字,同一个PB结构
// 服务器纯广播,不做任何处理
message EventChat { // IResponse IRequest 8922
// 聊天类型
int32 Type = 1;
// 聊天内容
string Content = 2;
// 聊天扩展
string Extend = 3;
// 聊天发起人id
int32 authorId = 4;
}
syntax = "proto3";
package event;
// 客户端刷新房间信息,不推送给其他人,
message EventRefreshRoom { // IResponse 8923
}
syntax = "proto3";
package event;
message PBAssignPai { // IResponse 8931
// 系统开始发的手牌
repeated int32 pai = 1[packed = false];
}
syntax = "proto3";
package event;
message PBHintBaoZhuang { // IResponse 8932
// 是否能选择包庄
bool canBaoZhuang = 1;
// 剩余多少秒的考虑时间
int32 countdown = 2;
// 当前庄家座位号
int32 seatId = 3;
// 当前庄家用户id
int32 userId = 4;
// 黑桃三先叫牌是否有效
bool isSpade3Valid = 5;
// 首局有黑桃三玩家座位号
int32 seatIdBySpade3 = 6;
}
syntax = "proto3";
package event;
message PBAskBaoZhuang { // IRequest 8933
// 是否包庄
bool isBaoZhuang = 1;
}
syntax = "proto3";
package event;
import "assign_pai.proto";
//包庄回复
message PBUseBaoZhuang { // IResponse 8934
//座位号
int32 seatId = 1;
//玩家ID
int32 userId = 2;
// 是否包庄
bool isBaoZhuang = 3;
}
syntax = "proto3";
package event;
message PBHintOut { // IResponse 8936
// 出牌token
string token = 1;
// 当前出牌者座位号
int32 seatId = 2;
// 是否必须出牌
bool isForce = 3;
// 倒计时
int32 countdown = 4;
// 黑桃三先出牌是否有效
bool isSpade3Valid = 5;
// 首局有黑桃三玩家座位号
int32 seatIdBySpade3 = 6;
// 是否有打得起上家的牌 true-打得起 false-打不起
bool isCanPlay = 7;
// 下家是否报单
bool nextReplySingle = 8;
// 是否赢家出
bool isWinnerFirstOut =9;
// 是否包庄
bool isBaoZhuang =10;
}
syntax = "proto3";
package event;
message PBAskOut { // IRequest 8937
// 出牌token,处理重复出牌
string token=1;
// 此次出的牌
repeated int32 pai = 2[packed = false];
// 是否不出
bool isSkip = 3;
}
syntax = "proto3";
package event;
message PBUseOut { // IResponse 8938
// 出牌玩家座位号
int32 seatId = 1;
// 出牌玩家用户id
int32 userId = 2;
// 出的牌
repeated int32 pai = 3 [packed = false];
// 牌分类,1-单张,2-对子,3-3张,4-3带1,5-3带2,
// 6-顺子,7-连对,8-飞机,10--4炸,1019--4带3,
int32 paiClass = 4;
// 牌掩码,例如单张3,3张3带2,见文档 http://192.168.2.160:1313/%E6%B8%B8%E6%88%8F%E5%8D%8F%E8%AE%AE/poker-mask.zh/
int32 paiMask = 5;
// 出完位置,0-没出完,1-出完
int32 overOrder = 6;
// 按座位号记录每个玩家此次炸弹输赢分,赢分为正数,输分为负数
repeated int32 bombScore = 7 [packed = false];
// 第几轮
int32 roundIndex = 8;
// 同一轮第几次
int32 roundSerial = 9;
// 是否不出
bool isSkip = 10;
// 剩余张数,等于1张才报单
int32 restNum = 11;
}
syntax = "proto3";
package event;
message PBClearDesktop { // IResponse 8939
// 大牌的玩家座位号
int32 seatId =1;
// 大牌的玩家用户id
int32 userId =2;
// 第几轮
int32 roundIndex = 3;
}
syntax = "proto3";
package event;
//用户的手牌
message PBTanPaiItem {
repeated PBTanPaiItem items = 1 [packed = false];
// 是否是解散
bool isNormalOver = 2;
// 是否包庄
bool isBaoZhuagn = 3;
// 是否是庄家赢
bool isBankerWin = 4;
}
//摊牌
message PBTanPai { // IResponse 8940
repeated PBTanPaiItem items = 1 [packed = false];
}
syntax = "proto3";
package event;
message PBSmallMeta {
//玩家ID
int32 userId = 1;
//玩家昵称
string nickName = 2;
//是否包庄
bool isBaoZhuang = 3;
//当前总游戏币(精确到分)
int64 totalCoins = 4;
//此局输赢分(牌局结束输赢+炸弹),赢分为正数,输分为负数
int32 winScore = 5;
//此局炸弹输赢分,赢分为正数,输分为负数
int32 bombScore = 6;
// 余牌分数
int32 paiScore =7;
//出完顺序,0-没出完,1-出完
int32 overOrder = 8;
//是否庄家(此局第一个出牌人)
bool isBanker = 9;
//牌局结束输赢分,赢分为正数,输分为负数
int32 cardScore = 10;
//此局输赢游戏币数,单位:分,赢为正数,输为负数
int32 winCoins = 11;
// 是否报单
bool isVocalizeOdd = 12;
// 玩家结束时的状态 0-正常结束 5-破庄 6-关门 8-包庄成功
int32 overStatus =13;
// 结束时余牌数量
int32 paiNum = 14;
}
message PBSmallSettlement { // IResponse 8941
//房间号
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;
//各玩家的情况,座位号为下标
repeated PBSmallMeta players = 9 [packed = false];
//是否包庄
bool isBaoZhuang = 10;
//为true表示数据(是否包庄,是否庄家,出完顺序)有效,否则无效
bool dataValid = 11;
//房间底分
int32 baseScore = 12;
//结束原因, 0-玩家发起解散, 1-房间超过最低局数,有玩家退出, 2-房间达到最高局数
// 3-有玩家游戏币为负数 5-解散成功
int32 overReason = 13;
//结束文字说明
string overDoc = 14;
}
syntax = "proto3";
package event;
// 回放游戏信息
message PBReplayGame { // IResponse 8942
// 是否包庄
bool isBaoZhuang = 1;
//庄家座位ID
int32 BankerSeatId = 2;
//庄家用户ID
int32 BankerUserId = 3;
// 系统发的手牌,按座位号为下标
repeated PBAssignPai handPai = 4 [packed = false];
}
syntax = "proto3";
package event;
message PBReplayCell {
//对应的事件ID
int32 eventId = 1;
//事件对应序列化后的proto内容
bytes eventData = 2;
}
//回放,客户端要求
message PBReplay { // IResponse 8955
repeated PBReplayCell cells = 1 [packed = false];
}