--泸州跑得快消息协议格式 local LZPdkMessage = {} -- LZPdkMessage.TestRequest = defClass("card" -- --牌值 -- ,defVar("card", VT_UChar, 0) -- ) -- LZPdkMessage.TestResponse = defClass("card" -- --牌值 -- ,defVar("card", VT_UChar, 0) -- ) LZPdkMessage.sendTuoGuan = defClass("sendTuoGuan" --1-请求托管 2-请求取消托管 ,defVar("entrustType", VT_Short, 0) ) -- 用户托管信息 LZPdkMessage.TuoGuanInfo = defClass("TuoGuanInfo" -- 用户uid , defVar("nUserID", VT_Int, 0) -- , defVar("aiStatus", VT_UChar, 0) -- , defVar("reserve", VT_String, "") ) -- 玩家超时系统自动托管 以及自动托管后,服务器都会广播当前桌上所有玩家的托管状态 LZPdkMessage.TuoGuanResponse = defClass("TuoGuanResponse" -- 用户uid , defVar("userCnt", VT_VectorToMap(LZPdkMessage.TuoGuanInfo,"nUserID")) ) -- 玩家加入房间成功玩家信息 LZPdkMessage.PlayerInfo = defClass("UserInfo" -- 玩家ID ,defVar("userId", VT_Int, 0) -- 座位ID ,defVar("seatId", VT_Int, 0) -- //是否正在玩 -1: 用户站起 0: 用户坐下 1: 准备状态 2: 正在玩 ,defVar("playFlag", VT_Short, 0) -- 头像昵称 ,defVar("jsonInfo", VT_String, "") -- 金币房卡 ,defVar("strExtInfo", VT_String, "") ) -- 玩家离线状态 LZPdkMessage.onLintState = defClass("onLintState" -- 玩家ID ,defVar("userId", VT_Int, 0) -- 状态 ,defVar("jsonInfo", VT_String, "") ) -- 玩家加入房间成功返回消息 LZPdkMessage.GameLoginSuccess = defClass("GameLoginSuccess" -- 房间最大人数 ,defVar("nMaxPlayCount", VT_Short, 0) -- 房主id ,defVar("nRoomOwnedUid", VT_Int, 0) -- 房间id ,defVar("nTableId", VT_Int, 0) -- 当前局数 ,defVar("nGameStartCount", VT_Short, 0) -- 总局数 ,defVar("nTotalGameNum", VT_Short, 0) -- 游戏信息 ,defVar("nGameInfo", VT_String, "") -- ,defVar("nPlayerCount", VT_Short, 0) -- 玩家信息 ,defVar("players", VT_Vector(LZPdkMessage.PlayerInfo), {}) -- 玩家离线状态 ,defVar("playerOnlineState", VT_VectorToMap(LZPdkMessage.onLintState, "userId")) ) -- 加入房间失败返回 --[[错误类型信息: ERROR_TABLE_MAX_COUNT = 2, //桌子人数已经够了 ERROR_NOT_ENOUGH_MONEY = 3, //用户钱数不够 ERROR_TOO_MUCH_MONEY = 4, //房间钱数过多 ERROR_WRONG_UID = 5, //无效的用户ID ERROR_TABLE_NOT_EXIST = 6, //桌子不存在 ERROR_OTHER = 7, //系统错误 ERROR_UID_CANNOT_ENTER = 8, //游戏开始禁止加入游戏 ]] LZPdkMessage.GameLoginFailed = defClass("GameLoginFailed" ,defVar("nErrNo", VT_UChar, 0) ) -- 收到其他玩家加入房间的信息 LZPdkMessage.GameSitDownResponse = defClass("GameSitDownResponse" -- 用户uid , defVar("userId", VT_Int, 0) -- 用户座位id, 从0编码, 最大为m_nMaxPlayCount-1 , defVar("seatId", VT_Int, 0) -- 用户信息 , defVar("userInfo", VT_String, "") -- 用户总的分数 , defVar("nTotalMoney", VT_Long, 0) -- 用户标志 , defVar("nPlayerFlag", VT_Short, 0) -- 开始游戏ID , defVar("nStartGameUid", VT_Int, 0) ) -- 广播玩家准备 LZPdkMessage.GameUserReady = defClass("GameUserReady" -- 准备玩家ID ,defVar("userId", VT_Int, 0) ) -- 玩家进入房间 LZPdkMessage.GameUserEnter = defClass("GameUserEnter" -- 玩家id ,defVar("userId", VT_Int, 0) ,defVar("seatId", VT_Int, 0) ,defVar("jsonInfo", VT_String, "") ,defVar("playFlag", VT_Short, 0) --道具信息 ,defVar("strExtInfo", VT_String, "") ) -- 玩家离开房间 LZPdkMessage.GameUserLogoutSuc = defClass("GameUserLogout" -- 玩家积分 ,defVar("totalMoney", VT_Long, 0) -- 是否回到大厅 ,defVar("logoutFlag", VT_Short, 0) --用户的房卡信息,格式"10,5", 以逗号分隔,第一个表示历史房卡数量, 第二个表示当前房卡数量 ,defVar("extInfo", VT_String, "") ) -- 广播桌子其他玩家离开 LZPdkMessage.GameBroadcastUserLogout = defClass("GameBroadcastUserLogout" -- 玩家ID ,defVar("userId", VT_Int, 0) ,defVar("unuse", VT_Int, 0) ) -- 解散房间请求 LZPdkMessage.DismissRequest = defClass("DismissRequest" -- 玩家操作 1: 表示发起解散 2:同意解散 3:不同意解散 , defVar("operateType", VT_UChar, 0) ) -- 每个玩家对于解散房间的处理 LZPdkMessage.UserDismissResult = defClass("UserDismissResult" -- nUserId , defVar("nUserId", VT_Int, 0) -- 0: 未做任何操作 1: 请求解散 2: 同意解散 3:不同意解散 , defVar("dismissState", VT_UChar, 0) ) -- 解散房间请求的结果 LZPdkMessage.DismissResult = defClass("DismissResult" -- 错误码: -- 0:成功 -- 1:operateType取值范围不对 -- 2:当前没人发起解散 -- 3:已经有人申请解散 , defVar("errorCode", VT_Short, 0) -- 玩家操作 , defVar("operateType", VT_Int, 0) -- 桌子上其他用户数量 , defVar("memberList", VT_VectorToMap(LZPdkMessage.UserDismissResult, "nUserId")) -- 剩余解散超时时间 , defVar("timeLeft", VT_Short, 0) ) -- 服务器广播每个玩家对解散房间的处理 LZPdkMessage.DismissResponse = defClass("DismissResponse" -- nUserId , defVar("nUserId", VT_Int, 0) -- 1: 表示发起解散 2:同意解散 3:不同意解散 , defVar("operateType", VT_UChar, 0) -- 剩余解散超时时间 , defVar("timeLeft", VT_Short, 0) ) -- 收到其他玩家掉线的信息 LZPdkMessage.OtherDroppedResponse = defClass("OtherDroppedResponse" -- 用户uid , defVar("nUserId", VT_Int, 0) -- 0: 用户掉线回来, 1: 用户已经掉线 , defVar("nDroppedStatus", VT_Short, 0) ) -------------------------------------------------------------------------- -- 游戏处理逻辑协议 -------------------------------------------------------------------------- -- 当桌子上所有玩家都准备后,服务器广播本局游戏开始 LZPdkMessage.GameStartUser = defClass("GameStartUser" ,defVar("nUserId", VT_Int, 0) ,defVar("nSeatId", VT_Int, 0) ) LZPdkMessage.GameBroadcastGameStart = defClass("GameBroadcastGameStart" -- 当前局数 ,defVar("gameStartCount", VT_Short, 0) ,defVar("totalGamenum", VT_Short, 0) ,defVar("roomOwnedUid", VT_Int, 0) ,defVar("players", VT_Vector(LZPdkMessage.GameStartUser), {}) ) -- 给玩家发牌 LZPdkMessage.GameSendCards = defClass("GameSendCards" ,defVar("bankerSeat", VT_Int, 0) ,defVar("userId", VT_Int, 0) ,defVar("cards", VT_Vector(VT_UChar), {}) ,defVar("cardPlayerInfo", VT_String, "")--记牌器json串 ) -- 服务器返回最佳提示牌组 LZPdkMessage.GameReturnTips = defClass("GameReturnTips" ,defVar("userId", VT_Int, 0) ,defVar("cards", VT_Vector(VT_UChar), {}) ) -- 客户端请求出牌 LZPdkMessage.GameOutCards = defClass("GameOutCards" -- ,defVar("byCardNum", VT_Short, 0)--不用写长度 ,defVar("byOutCard", VT_Vector(VT_UChar), {}) ) -- 服务器返回出牌错误 LZPdkMessage.GameOutCardsErr = defClass("GameOutCardsErr" ,defVar("userId", VT_Int, 0) ,defVar("errFlag", VT_UChar, 0) ) -- 玩家出牌成功,服务器广播出牌信息 --[[SINGLE_CARD = 1, //单牌 DUI_ZI = 2, //对子 THREE_AND_TWO = 3, //三带二 SHUN_ZI = 4, //顺子 LIAN_DUI = 5, //连对 AIRPLANE = 6, //飞机 FOUR_AND_THREE 7, //四带三 BOMB = 8, //炸弹 FOUR_AND_ONE = 9, //四带一 ]] LZPdkMessage.GameBroadcastOutCards = defClass("GameBroadcastOutCards" ,defVar("selfId", VT_Int, 0)--自己ID ,defVar("userId", VT_Int, 0) ,defVar("cardType", VT_Short, 0) ,defVar("leftNum", VT_Short, 0)--出牌者剩余多少张牌 ,defVar("cards", VT_Vector(VT_UChar), {}) ,defVar("opType", VT_UChar, 0)--0:pass 1:接牌 ,defVar("serPut", VT_Short, 0)--是否服务器代打的 0-不是 1-是(金币场用) ,defVar("cardPlayerInfo", VT_String, "")--记牌器json串 ,defVar("isMustBomb", VT_UChar, 0)--是否只有炸弹能接牌 ) -- 游戏单局结算 LZPdkMessage.UserResult = defClass("UserResult" ,defVar("userId", VT_Int, 0) ,defVar("turnScore", VT_String, 0) ,defVar("totalScore", VT_String, 0) ,defVar("bombTimes", VT_Short, 0) ,defVar("haveRedTen", VT_UChar, 0) ,defVar("bSpring", VT_UChar, 0) ,defVar("leftNum", VT_Short, 0) ,defVar("leftCards", VT_Vector(VT_UChar), {}) ,defVar("groupCardInfo", VT_String, "")--组合牌(打出去的牌) ,defVar("allBombTimes", VT_Short, 0) ) -- 小局炸弹分数 LZPdkMessage.GameBombScore = defClass("GameBombScore" ,defVar("userId", VT_Int, 0) ,defVar("turnBombScore", VT_String, 0)--单局炸弹分 ,defVar("reserved", VT_String, "")--字段,保留后续使用 ) LZPdkMessage.GameBroadcastResult = defClass("GameBroadcastResult" ,defVar("gameStartCount", VT_Short, 0) ,defVar("totalGamenum", VT_Short, 0) ,defVar("bankSeatId", VT_Int, 0) ,defVar("players", VT_Vector(LZPdkMessage.UserResult), {}) ,defVar("stopFlag", VT_Int, 0) ,defVar("dipaiCard", VT_String, "")-- 底牌 空格隔开的字符串 ,defVar("playersBombScore", VT_Vector(LZPdkMessage.GameBombScore), {})--单局炸弹得分 ) -- 游戏大结算 LZPdkMessage.GameOverItem = defClass("GameOverItem" ,defVar("userId", VT_Int, 0) ,defVar("totalScore", VT_String, 0) ,defVar("extString", VT_String, "") --房卡信息 ,defVar("countInfo", VT_String, "") ) LZPdkMessage.GameGameOver = defClass("GameGameOver" ,defVar("players", VT_Vector(LZPdkMessage.GameOverItem), {}) ,defVar("stopFlag", VT_Short, 0) ,defVar("stopResult", VT_String, 0) ,defVar("endTime", VT_Long, 0) ) -- 中途恢复 --[[GAME_STATE_INIT, //游戏准备状态 GAME_STATE_SEND_HAND_CARD, //发牌 GAME_STATE_OUT_CARD, //打牌 GAME_STATE_ROUND_OVER, //游戏一局结束 GAME_STATE_GAME_OVER, //游戏结束 ]] LZPdkMessage.GameRecoverItem = defClass("GameRecoverItem" ,defVar("userId", VT_Int, 0) ,defVar("seatId", VT_Int, 0) ,defVar("playFlag", VT_Short, 0)--是否正在玩 -1: 用户站起 0: 用户坐下 1: 准备状态 2: 正在玩 ,defVar("disbandStatus", VT_UChar, 0)--玩家解散状态 0:初始状态, 1:发起解散 2: 同意解散 3:不同意解散 ,defVar("onlineStatus", VT_UChar, 0)--是否在线 0:离线 1:在线 ,defVar("jsonInfo", VT_String, "") ,defVar("winTimes", VT_UChar, 0) ,defVar("loseTimes", VT_UChar, 0) ,defVar("isCanOp", VT_UChar, 0) ,defVar("bSpring", VT_UChar, 0) ,defVar("haveBlackThree", VT_UChar, 0) --,defVar("haveRedTen", VT_UChar, 0) ,defVar("maxScore", VT_String, 0) ,defVar("turnBombTimes", VT_UChar, 0) ,defVar("totalBombTimes", VT_UChar, 0) --玩家快速开始状态 ,defVar("fastStartStatus", VT_Int, 0) --托管状态 ,defVar("isEntrusting", VT_UChar, 0) ,defVar("turnScore", VT_String, 0) ,defVar("totalScore", VT_String, 0) ,defVar("handType", VT_Short, 0) ,defVar("handCards", VT_Vector(VT_UChar), {}) ,defVar("outCards", VT_Vector(VT_UChar), {}) ,defVar("groupCardInfo", VT_String, "")--组合牌(打出去的牌) ,defVar("allBombTimes", VT_Short, 0) ) -- 快速开始玩家对应状态 LZPdkMessage.FastStartGameUserItem = defClass("FastStartGameUserItem" ,defVar("userId", VT_Int, 0) ,defVar("fastStartStatus", VT_Int, 0) ) -- 托管状态 LZPdkMessage.UserHostingInfo = defClass("UserHostingInfo" ,defVar("userId", VT_Int, 0) ,defVar("hostStatus", VT_UChar, 0) ) --断线重连 LZPdkMessage.GameGameRecover = defClass("GameGameRecover" --房间最大人数 ,defVar("maxPlayCount", VT_Short, 0) --房主uid ,defVar("roomOwnedUid", VT_Int, 0) --当前局数 ,defVar("gameStartCount", VT_Short, 0) ,defVar("totalGamenum", VT_Short, 0) ,defVar("showTableId", VT_Int, 0) --游戏信息 ,defVar("gameInfo", VT_String, 0) --庄家id ,defVar("bankSeatId", VT_Int, 0) ,defVar("bUserDisbandGame", VT_UChar, 0) --桌子状态 ,defVar("gameStatus", VT_UChar, 0) ,defVar("leftTimeOut", VT_Int, 0) ,defVar("recoverItem", VT_Vector(LZPdkMessage.GameRecoverItem), {}) ,defVar("extInfo", VT_String, "") --快速开始状态1:有人申请提前开始 ,defVar("userFastStartStatus", VT_UChar, 0) --快速开始剩余时间 ,defVar("fastStartTimeout", VT_Int, 0) --每个玩家对应快速开始状态 --,defVar("fastStartPlayersStatus", VT_Vector(LZPdkMessage.FastStartGameUserItem), {}) --当前操作玩家id ,defVar("curOpUid", VT_Int, 0) --当前操作玩家操作类型 0-pass 1-可以出牌也可以pass 2-只能出牌 ,defVar("curOpType", VT_UChar, 0) --记牌器json串 ,defVar("cardPlayerInfo", VT_String, "") -- 底牌 空格隔开的字符串 ,defVar("dipaiCard", VT_String, "") --最后一手牌是否只有炸弹能接牌 ,defVar("isMustBomb", VT_UChar, 0) ) -- 0X8109 GAME_CAMMAND_BROADCAST_SCORES -- 更新玩家分数 LZPdkMessage.GameUserScoreItem = defClass("GameUserScoreItem" ,defVar("userId", VT_Int, 0) ,defVar("totalScore", VT_String, 0) ) LZPdkMessage.GameUpdateScore = defClass("GameUpdateScore" ,defVar("players", VT_Vector(LZPdkMessage.GameUserScoreItem), {}) ) -- 广播玩家轮次 LZPdkMessage.GameBroadcastTurns = defClass("GameBroadcastTurns" ,defVar("userId", VT_Int, 0) ,defVar("seatId", VT_Int, 0) --出牌flag,0:要不起 1:可操作 ,defVar("outFlag", VT_UChar, 0) --操作类型 0-只能pass 1-可以出牌也可以pass 2-必须出牌 ,defVar("opType", VT_UChar, 0) ) --快速开始请求 LZPdkMessage.FastStartRequest = defClass("FastStartRequest" , defVar("result", VT_UChar, 1) ) --快速开始请求结果 LZPdkMessage.FastStartRequestResult = defClass("FastStartRequestResult" , defVar("result", VT_Short, -1) ) -- 服务器广播快速开始状态 LZPdkMessage.FastPlayer = defClass("FastPlayer" , defVar("nUserId", VT_Int, 0) --1:发起申请 2:同意 3:拒绝 4:未操作 5:有人进来或者退出 6:超时未处理 , defVar("nStatus", VT_UChar, 0) ) -- 服务器广播快速开始状态 LZPdkMessage.FastStartStatus = defClass("FastStartStatus" --发起玩家id , defVar("nUserId", VT_Int, 0) --1:发起申请 2:同意 3:拒绝 4:未操作 5:有人进来或者退出 6:超时未处理 , defVar("nStatus", VT_Short, 0) --玩家操作状态列表 , defVar("pList", VT_Vector(LZPdkMessage.FastPlayer), {}) --剩余时间 , defVar("timeOut", VT_Short, 0) ) -- 游戏快速开始 LZPdkMessage.FastSuccessPlayer = defClass("FastSuccessPlayer" , defVar("nUserId", VT_Int, 0) , defVar("nSeatId", VT_UChar, 0) ) -- 游戏快速开始玩家 LZPdkMessage.UpdateSeatIds = defClass("UpdateSeatIds" , defVar("pList", VT_Vector(LZPdkMessage.FastSuccessPlayer), {}) ) --server收到0x8060协议后,广播当前桌子上所有用户 LZPdkMessage.ServerChangeUserInfo = defClass("ServerChangeUserInfo" --更新信息的用户uid , defVar("uid", VT_Int, -1) --用户信息 , defVar("userInfo", VT_String, "") --保留字段,暂不使用 , defVar("reserved", VT_String, "") ) return LZPdkMessage