从8800到8889
| 错误码 | 描述 | |
|---|---|---|
| 8801 | success | |
| 8802 | 数据反序化失败 | |
| 8803 | 地区玩法错误 | |
| 8804 | 未知事件 | |
| 8805 | 没有该用户 | |
| 8806 | 用户未登录 | |
| 8807 | 用户验证失败 | |
| 8808 | 用户重复登录 | |
| 8809 | 已加入其他游戏 | |
| 8810 | 已登陆其他服务器 | |
| 8812 | 加入房间失败 | |
| 8813 | 房间不存在 | |
| 8814 | 房间已经满人 | |
| 8815 | 用户已在房间中 | |
| 8816 | 该用户没有在任何房间 | |
| 8820 | 重复申请解散 | |
| 8821 | 房间不在解散中 | |
| 8822 | 获取距离失败 | |
| 8823 | 退出房间失败 | |
| 8824 | 房间不在准备中 | |
| 8827 | 重复解散投票 | |
| 8828 | 用户不在当前房间 | |
| 8829 | 房间已开始游戏 | |
| 8830 | 坐下失败,游戏币不足 | |
| 8831 | 没有空房间 | |
| 8832 | 重复准备 | |
| 8833 | 用户已在其他设备登陆 | |
| 8834 | 用户信息读取失败 | |
| 8835 | 准备失败,游戏币不足 | |
| 8836 | 创建VIP房间失败,游戏币不足 | |
| 8837 | VIP房间, 加入失败 | |
| 8838 | 加入VIP房间失败, 密码错误 | |
| 8839 | 非VIP房间 | |
| 8840 | 无权抢地主 | |
| 8841 | 房间不在选择抢地主中 | |
| 8845 | 房间不在游戏中 | |
| 8846 | 无权不出 | |
| 8847 | 不出token错误 | |
| 8848 | 必须出牌 | |
| 8849 | 出牌token错误 | |
| 8850 | 出牌不符合规则 | |
| 8851 | 无权出牌 | |
| 8852 | 你没有处于托管中 | |
| 8853 | 数据库操作失败 | |
| 8854 | 取消托管的次数已经用光 | |
| 8855 | 你处于托管中 | |
| 8862 | 房间不在选择明牌中 | |
| 8863 | 房间不在选择加倍中 | |
| 8864 | 房间不在选择反加倍中 | |
| 8865 | 无权明牌 | |
| 8866 | 无权加倍 | |
| 8867 | 无权反加倍 |
从8800到8899 事件流向:
- c->s 客户端发送到服务器端
- s->c 服务器端发送到客户端
- s->m 服务器端广播到客户端
| 事件编号 | 事件名称 | 事件流向 | 是否返回 | 描述 | |
|---|---|---|---|---|---|
| 8801 | 登录 | c->s | true | ||
| 8802 | 服务器返回 | s->c | 服务器返回,包括成功和异常 | ||
| 8803 | 心跳包 | c->s | true | 服务器回空包 | |
| 8804 | 房间列表 | s->m | 广播给大厅内但不在房间的玩家 | ||
| 8805 | 房间变化 | s->m | 广播给大厅内但不在房间的玩家 | ||
| 8806 | 加入房间 | c->s | true | 快速开始-不用填房间号 | |
| 8807 | 房间信息 | s->c | 加入房间推送或在房间内掉线回来推送 | ||
| 8808 | 准备 | c->s | 玩家准备及取消准备 | ||
| 8809 | 玩家变化 | s->m | 加入,离开,上线,掉线,准备,取消准备都广播房间内玩家 | ||
| 8810 | 游戏信息 | s->c | 开始游戏推送或游戏内掉线回来推送 | ||
| 8811 | 申请解散 | c->s | 如果房间未开始,当作退出房间处理 | ||
| 8812 | 提示玩家投票 | s->m | 广播给房间内玩家 | ||
| 8813 | 玩家投票 | c->s | 玩家是否同意解散 | ||
| 8814 | 广播解散结果 | s->m | 广播给房间内玩家 | ||
| 8815 | 请求LBS | c->s | |||
| 8816 | 回复LBS | s->c | |||
| 8817 | 请求退出房间 | c->s | true | 服务器返回 | |
| 8818 | 顶号 | s->c | 同个用户只能一个连接,新的顶替旧的 | ||
| 8819 | 请求历史积分 | c->s | |||
| 8820 | 回复历史积分 | s->c | |||
| 8821 | 近距离提示 | s->m | |||
| 8822 | 聊天 | s->m | 客户端和服务器广播同一个命令字/PB结构,服务器不做任何处理 | ||
| 8823 | 游戏信息 | s->c | 刷新游戏信息 | ||
| 8831 | 系统发牌 | s->m | 广播给房间内玩家,每个人信息不同 | ||
| 8832 | 提示抢地主 | s->m | 让玩家选择是否抢地主 | ||
| 8833 | 玩家是否抢地主 | c->s | 玩家是否抢地主,出错回包,成功不回 | ||
| 8834 | 广播是否抢地主 | s->m | 通知抢地主 | ||
| 8836 | 提示出牌 | s->m | 通知玩家出牌 | ||
| 8837 | 玩家出牌 | c->s | 玩家出牌,出错时回包,成功不回 | ||
| 8838 | 广播出牌 | s->m | 广播给房间内玩家,玩家出牌 | ||
| 8839 | 广播清桌 | s->m | 广播给房间内玩家,通知清桌 | ||
| 8840 | 摊牌 | s->m | 广播给房间内玩家 | ||
| 8841 | 小局结算 | s->m | 广播给房间内玩家 | ||
| 8842 | 回放游戏信息 | ||||
| 8855 | 回放 | ||||
| 8856 | 广播用户进入托管模式 | s->m | |||
| 8857 | 取消托管模式 | c->s | true | ||
| 8858 | 广播托管模式 | s->m | |||
| 8859 | 创建VIP房间 | c->s | true | ||
| 8860 | 加入VIP房间 | c->s | true | ||
| 8861 | 提示反加倍 | s->c | |||
| 8862 | 回复反加倍 | c->s | |||
| 8863 | 广播反加倍 | s->m | |||
| 8864 | 广播底牌 | s->m | |||
| 8865 | 提示明牌 | s->c | |||
| 8866 | 回复明牌 | c->s | |||
| 8867 | 广播明牌 | s->m | |||
| 8868 | 提示加倍 | s->c | |||
| 8869 | 回复加倍 | c->s | |||
| 8870 | 广播加倍 | s->m |
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;
}
syntax = "proto3";
package event;
message EventLogin { // IRequest 8801
//用户登录标识
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 8802
//事件ID
int32 eventId = 1;
//返回码 0--表示成功 其它的为错误
int32 code = 2;
//描述
string message = 3;
}
syntax = "proto3";
package event;
//心跳包
message EventHeartBeat { // IResponse IRequest 8803
}
syntax = "proto3";
package event;
import "room_info.proto";
//房间列表
message EventRoomList { // IResponse 8804
// 房间列表
repeated EventRoomInfo items = 1[packed = false];
// 开始房间数
int32 StartedRoomNum = 2;
}
syntax = "proto3";
package event;
import "room_info.proto";
// 大厅内有房间内变化,广播所有大厅里不在房间内玩家
message EventUseRoomChange { // IResponse 8805
//变化原因 (0-创建,1-更新资料,2-开始游戏,3-解散)
int32 reason = 1;
//变化后房间信息
EventRoomInfo roomInfo = 2;
// 开始房间数
int32 StartedRoomNum = 3;
}
快速开始-不用填房间号
syntax = "proto3";
package event;
message EventJoinRoom { //IRequest 8806
//房间ID,不填房间号,就是系统选房间即快速开始
int32 roomId = 1;
}
syntax = "proto3";
package event;
import "player_info.proto";
//房间信息
message EventRoomInfo { //IResponse 8807
// 房间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 8808
//true-准备 false--取消准备
bool isReady = 1;
}
syntax = "proto3";
package event;
import "player_info.proto";
// 房间内有玩家变化,广播给房间内玩家
message EventUsePlayerChange { // IResponse 8809
//变化原因, 0-加入 1-离开,2-准备 3-取消准备,4-上线 5-离线
int32 reason = 1;
//变化玩家座位号
int32 seatId = 2;
//变化玩家id
int32 userId = 3;
// 变化后,房间内所有玩家信息(以座位号为顺序)
repeated EventPlayerInfo playerInfo = 4[packed = false];
}
import "use_out.proto";
import "multiple.proto";
message PBGameInfo { // IResponse 8810
// 是否应该抢地主
bool isLandlord = 1;
// 可选抢地主底分(isLandlord为true才有效)
repeated int32 landlordScore = 2 [packed = false];
// 是否强制抢地主
bool isForceLandLord = 3;
// 地主用户id(有地主之后才有效)
int32 bankerUserId = 4;
// 地主座位id(有地主之后才有效)
int32 bankerSeatId = 5;
// 当前加倍玩家的座位号
int32 choiceSeatId = 6;
// 底牌(有地主之后才有效)
repeated int32 wildCards = 7 [packed = false];
// 是否应该选择加倍
bool isPlus = 8;
// 地主是否明牌
bool LandlordIsOpen = 9;
// 地主手牌(地主明牌才有效)
repeated int32 LandlordPai = 10 [packed = false];
// 是否应该选择明牌
bool isOpen = 11;
// 是否应该选择反加倍
bool isBack = 13;
// 已加倍的玩家座位号 0-表示没有轮到加倍,1-加倍,2-不加倍
repeated int32 plusSeatId = 14 [packed = false];
// 地主是否反加倍
bool LandlordIsBack = 15;
// 当前桌牌(按出牌顺序)
repeated PBUseOut desktopPai = 16 [packed = false];
// 当前手牌
repeated int32 handPai = 17 [packed = false];
// 能否出牌
bool canOutPai = 18;
// 是否必须出牌
bool mustOutPai = 19;
// 出牌token
string outPaiToken = 20;
// 当前出牌座位号
int32 curOutPaiSeat = 21;
// 每个玩家剩余张数(座位号为下标),小于等于5张才有效
repeated int32 restNum = 22 [packed = false];
// 选择抢地主时,还剩余多少秒考虑时间
int32 remainLandlordTime = 23;
// 出牌时的剩余时间
int32 remainOutTime = 24;
// 每个玩家历史抢地主分数(座位号为下标)
// 0-表示没有轮到抢,1-1分,2-2分,3-3分,4-不抢
repeated int32 historyLandlord = 25 [packed = false];
// 是否处于托管中
repeated bool isEntrust = 26 [packed = false];
// 还有几次取消托管的机会
int32 cancelEntrustCount = 27;
// 倍数描述
PBMultiple multiple = 28;
}
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 8812
//申请的玩家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 8814
//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 8815
}
syntax = "proto3";
package event;
message EventUseGeoItem {
//起始用户ID
int32 srcUid = 1;
//结束用户ID
int32 destUid = 2;
//用户之间距离
string distance = 3;
//用户之间距离,数值表示,单位(米)
int32 gap = 4;
}
//玩家间距离回包
message EventUseGeo { // IResponse 8816
// 用户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 8818
//用户ID
int32 userId = 1;
}
syntax = "proto3";
package event;
// 请求历史积分
message EventAskHistoryScore { // IRequest 8819
}
syntax = "proto3";
package event;
message EventHistoryScoreItem {
// 用户ID
int32 userId = 1;
// 下标-局数,值-积分
repeated int32 scores = 2[packed = false];
}
// 历史积分回包
message EventUseHistoryScore { // IResponse 8820
repeated EventHistoryScoreItem items = 1[packed = false];
}
syntax = "proto3";
package event;
//玩家间距离太近提示
message EventDistanceAlert { // IResponse 8821
//提示内容
string alertStr = 1;
}
syntax = "proto3";
package event;
// 客户端和服务器广播同一个命令字,同一个PB结构
// 服务器纯广播,不做任何处理
message EventChat { // IResponse IRequest 8822
// 聊天类型
int32 Type = 1;
// 聊天内容
string Content = 2;
// 聊天扩展
string Extend = 3;
// 聊天发起人id
int32 authorId = 4;
}
syntax = "proto3";
package event;
message PBAssignPai { // IResponse 8831
// 系统开始发的手牌
repeated int32 pai = 1[packed = false];
}
syntax = "proto3";
package event;
// 广播底牌
message PBWildCards { // IResponse 8864
// 地主用户id
int32 bankerUserId = 1;
// 地主座位id
int32 bankerSeatId = 2;
// 底分
int32 baseScore = 3;
// 底牌
repeated int32 pai = 4 [packed = false];
// 每个玩家倍数描述(座位号为下标)
repeated PBMultiple multiples = 5 [packed = false];
}
syntax = "proto3";
package event;
// 提示地主明牌
message PBHintOpen { // IResponse 8865
// 地主座位号
int32 seatId =1;
// 倒计时
int32 countdown = 2;
}
syntax = "proto3";
package event;
// 客户端刷新房间信息,不推送给其他人,
message EventRefreshRoom { // IResponse 8823
}
syntax = "proto3";
package event;
message PBAssignPai { // IResponse 8831
// 系统开始发的手牌
repeated int32 pai = 1[packed = false];
}
syntax = "proto3";
package event;
message PBHintLandlord { // IResponse 8832
// 是否能选择叫地主
bool canLandlord = 1;
// 当前叫牌者座位号
int32 seatId = 2;
// 当前叫牌者用户id
int32 userId = 3;
// 剩余多少秒的考虑时间
int32 countdown = 4;
// 是否必须叫3分
bool mustBigScore = 5;
// 允许的底分
repeated int32 score = 6 [packed = false];
}
syntax = "proto3";
package event;
message PBAskLandlord { // IRequest 8833
// 是否抢地主
bool isLandlord = 1;
// 底分
int32 score = 2;
}
syntax = "proto3";
package event;
import "multiple.proto";
// 广播玩家抢地主
message PBUseLandlord { // IResponse 8834
// 玩家座位号
int32 seatId = 1;
// 玩家ID
int32 userId = 2;
// 是否抢地主
bool isLandlord = 3;
// 底分
int32 score = 4;
// 每个玩家倍数描述(座位号为下标)
repeated PBMultiple multiples = 5 [packed = false];
}
syntax = "proto3";
package event;
message PBHintOut { // IResponse 8836
// 出牌token
string token =1;
// 当前出牌者座位号
int32 seatId =2;
// 是否必须出牌
bool isForce = 3;
// 倒计时
int32 countdown = 4;
//是否要的起
bool canPlay = 5;
}
syntax = "proto3";
package event;
message PBAskOut { // IRequest 8837
// 出牌token,处理重复出牌
string token=1;
// 此次出的牌
repeated int32 pai = 2[packed = false];
// 是否不出
bool isSkip = 3;
}
syntax = "proto3";
package event;
message PBMultiple{
// 底分
int32 base = 1;
// 明牌
int32 open = 2;
// 春天
int32 spring = 3;
// 反春
int32 antiSpring = 4;
// 炸弹(所有玩家出的炸弹之和)
int32 bomb = 5;
// 是否达到炸弹上限
bool isBombLimit = 6;
// 公共倍数
int32 common = 7;
// 农民加倍
int32 plus = 8;
// 地主反加倍
int32 back = 9;
// 总倍数
int32 sum = 10;
}
syntax = "proto3";
package event;
import "multiple.proto";
message PBUseOut { // IResponse 8838
// 出牌玩家座位号
int32 seatId = 1;
// 出牌玩家用户id
int32 userId = 2;
// 出的牌
repeated int32 pai = 3 [packed = false];
// 牌分类,1-单张,2-对子,3-3张,4-3带1,6-顺子,7-连对,
// 10-4炸,30-3带一对,31-飞机不带牌,32-飞机带单,33-飞机带对
// 34-火箭,36-4带2,38-4带两对
int32 paiClass = 4;
// 牌掩码,例如单张3,见文档
int32 paiMask = 5;
// 第几轮
int32 roundIndex = 6;
// 同一轮第几次
int32 roundSerial = 7;
// 是否不出
bool isSkip = 8;
// 剩余张数(出牌玩家的)
int32 restNum = 9;
// 每个玩家炸弹数量(座位号为下标)
repeated int32 bombNum = 10 [packed = false];
// 每个玩家倍数描述(座位号为下标)
repeated PBMultiple multiples = 11 [packed = false];
// 出完顺序 0--没出完 1--出完
int32 overOrder = 12;
}
syntax = "proto3";
package event;
message PBClearDesktop { // IResponse 8839
// 大牌的玩家座位号
int32 seatId =1;
// 大牌的玩家用户id
int32 userId =2;
// 第几轮
int32 roundIndex = 3;
}
syntax = "proto3";
package event;
//用户的手牌
message PBTanPaiItem {
//玩家ID
int32 userId = 1;
//玩家ID
int32 seatId = 2;
//手牌
repeated int32 normalPai = 3 [packed = false];
}
//摊牌
message PBTanPai { // IResponse 8840
repeated PBTanPaiItem items = 1 [packed = false];
//结算状态 // 0-流局,1-解散,2-地主胜,3-农民胜,4-春天,5-反春
int32 overStatus = 2;
//地主座位
int32 landlordSeat = 3;
}
syntax = "proto3";
package event;
import "multiple.proto";
message PBSmallMeta {
//玩家ID
int32 userId = 1;
//玩家昵称
string nickName = 2;
//当前总游戏币(精确到分)
int64 totalCoins = 3;
//此局输赢分(牌局结束输赢+炸弹),赢分为正数,输分为负数
int32 winScore = 4;
//出完顺序,0-没出完,1-出完
int32 overOrder = 5;
//是否地主(此局第一个出牌人)
bool isLandlord = 6;
//自已是否加倍(农民有效)
bool isPlus = 7;
//是否明牌(地主有效)
bool isOpen = 8;
//自已是否反加倍(地主有效)
bool isBack = 9;
// 倍数描述
PBMultiple multiple = 10;
//炸弹输赢分,赢分为正数,输分为负数
int32 bombScore = 11;
//此局输赢游戏币数,单位:分,赢为正数,输为负数
int32 winCoins = 12;
}
message PBSmallSettlement { // IResponse 8841
// IResponse 8841
//房间号
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];
//房间底分
int32 baseScore = 10;
//结束原因, 0-玩家发起解散, 1-房间超过最低局数,有玩家退出, 2-房间达到最高局数
// 3-有玩家游戏币为负数
int32 overReason = 11;
// 底牌
repeated int32 wildCards = 12 [packed = false];
//结束文字说明
string overDoc = 13;
}
syntax = "proto3";
package event;
import "assign_pai.proto";
// 回放游戏信息
message PBReplayGame { // IResponse 8842
// 地主用户id
int32 bankerUserId = 1;
// 地主座位id
int32 bankerSeatId = 2;
// 系统发的手牌,按座位号为下标
repeated PBAssignPai handPai = 3 [packed = false];
// 底牌
repeated int32 wildCards = 4 [packed = false];
// 底分
int32 baseScore = 5;
}
syntax = "proto3";
package event;
message PBReplayCell {
//对应的事件ID
int32 eventId = 1;
//事件对应序列化后的proto内容
bytes eventData = 2;
}
//回放,客户端要求
message PBReplay { // IResponse 8855
repeated PBReplayCell cells = 1[packed = false];
}
// 取消托管
message EventCancelEntrust { // IRequest 8857
}
// 广播用户进入托管
message EventInEntrust { // IResponse 8856
// 进入托管用户的座位号
int32 seat = 1;
// 还有多少次可以取消托管
int32 count = 2;
}
// 取消托管成功
message EventCancelEntrustDone { // IResponse 8858
// 取消托管用户座位号
int32 seat = 1;
}
message EventCreateVIPRoom { // IRequest 8859
}
message EventJoinVIPRoom { // IRequest 8860
string pwd = 2;
}
syntax = "proto3";
package event;
// 提示地主反加倍
message PBHintBack { // IResponse 61
// 地主座位号
int32 seatId =1;
// 已加倍的玩家座位号
repeated int32 plusSeatId = 2[packed = false];
}
syntax = "proto3";
package event;
// 地主反加倍
message PBAskBack { // IRequest 8862
// 是否反加倍
bool isBack = 1;
}
syntax = "proto3";
package event;
import "multiple.proto";
// 提示地主反加倍
message PBHintBack { // IResponse 8861
// 地主座位号
int32 seatId =1;
// 已加倍的玩家座位号
repeated int32 plusSeatId = 2[packed = false];
// 倒计时
int32 countdown = 3;
}
syntax = "proto3";
package event;
// 地主明牌
message PBAskOpen { // IRequest 8866
// 是否明牌
bool isOpen =1;
}
syntax = "proto3";
package event;
import "multiple.proto";
// 广播地主明牌
message PBUseOpen { // IResponse 8867
// 地主座位号
int32 seatId =1;
// 是否明牌
bool isOpen =2;
// 手牌(必须明牌才有效)
repeated int32 pai = 3[packed = false];
// 每个玩家倍数描述(座位号为下标)
repeated PBMultiple multiples = 4[packed = false];
}
syntax = "proto3";
package event;
// 提示玩家加倍
message PBHintPlus { // IResponse 8868
// 加倍玩家座位号
int32 seatId =1;
// 倒计时
int32 countdown = 2;
}
syntax = "proto3";
package event;
// 玩家请求加倍
message PBAskPlus { // IRequest 8869
// 是否加倍
bool isPlus =1;
}
syntax = "proto3";
package event;
import "multiple.proto";
// 广播玩家加倍
message PBUsePlus { // IResponse 8870
// 玩家座位号
int32 seatId =1;
// 是否加倍
bool isPlus =2;
// 每个玩家倍数描述(座位号为下标)
repeated PBMultiple multiples = 3[packed = false];
}