--合江跑得快消息协议格式 local HJPdkMessage = {} -- HJPdkMessage.TestRequest = defClass("card" -- --牌值 -- ,defVar("card", VT_UChar, 0) -- ) -- HJPdkMessage.TestResponse = defClass("card" -- --牌值 -- ,defVar("card", VT_UChar, 0) -- ) HJPdkMessage.sendTuoGuan = defClass("sendTuoGuan" --1-请求托管 2-请求取消托管 ,defVar("entrustType", VT_Short, 0) ) -- 用户托管信息 HJPdkMessage.TuoGuanInfo = defClass("TuoGuanInfo" -- 用户uid , defVar("nUserID", VT_Int, 0) -- , defVar("aiStatus", VT_UChar, 0) -- , defVar("reserve", VT_String, "") ) -- 玩家超时系统自动托管 以及自动托管后,服务器都会广播当前桌上所有玩家的托管状态 HJPdkMessage.TuoGuanResponse = defClass("TuoGuanResponse" -- 用户uid , defVar("userCnt", VT_VectorToMap(HJPdkMessage.TuoGuanInfo,"nUserID")) ) -- 玩家加入房间成功玩家信息 HJPdkMessage.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, "") ) -- 玩家离线状态 HJPdkMessage.onLintState = defClass("onLintState" -- 玩家ID ,defVar("userId", VT_Int, 0) -- 状态 ,defVar("jsonInfo", VT_String, "") ) -- 玩家加入房间成功返回消息 HJPdkMessage.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(HJPdkMessage.PlayerInfo), {}) -- 玩家离线状态 ,defVar("playerOnlineState", VT_VectorToMap(HJPdkMessage.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, //游戏开始禁止加入游戏 ]] HJPdkMessage.GameLoginFailed = defClass("GameLoginFailed" ,defVar("nErrNo", VT_UChar, 0) ) -- 收到其他玩家加入房间的信息 HJPdkMessage.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) ) -- 广播玩家准备 HJPdkMessage.GameUserReady = defClass("GameUserReady" -- 准备玩家ID ,defVar("userId", VT_Int, 0) ) -- 玩家进入房间 HJPdkMessage.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, "") ) -- 玩家离开房间 HJPdkMessage.GameUserLogoutSuc = defClass("GameUserLogout" -- 玩家积分 ,defVar("totalMoney", VT_Long, 0) -- 是否回到大厅 ,defVar("logoutFlag", VT_Short, 0) --用户的房卡信息,格式"10,5", 以逗号分隔,第一个表示历史房卡数量, 第二个表示当前房卡数量 ,defVar("extInfo", VT_String, "") ) -- 广播桌子其他玩家离开 HJPdkMessage.GameBroadcastUserLogout = defClass("GameBroadcastUserLogout" -- 玩家ID ,defVar("userId", VT_Int, 0) ,defVar("unuse", VT_Int, 0) ) -- 解散房间请求 HJPdkMessage.DismissRequest = defClass("DismissRequest" -- 玩家操作 1: 表示发起解散 2:同意解散 3:不同意解散 , defVar("operateType", VT_UChar, 0) ) -- 每个玩家对于解散房间的处理 HJPdkMessage.UserDismissResult = defClass("UserDismissResult" -- nUserId , defVar("nUserId", VT_Int, 0) -- 0: 未做任何操作 1: 请求解散 2: 同意解散 3:不同意解散 , defVar("dismissState", VT_UChar, 0) ) -- 解散房间请求的结果 HJPdkMessage.DismissResult = defClass("DismissResult" -- 错误码: -- 0:成功 -- 1:operateType取值范围不对 -- 2:当前没人发起解散 -- 3:已经有人申请解散 , defVar("errorCode", VT_Short, 0) -- 玩家操作 , defVar("operateType", VT_Int, 0) -- 桌子上其他用户数量 , defVar("memberList", VT_VectorToMap(HJPdkMessage.UserDismissResult, "nUserId")) -- 剩余解散超时时间 , defVar("timeLeft", VT_Short, 0) ) -- 服务器广播每个玩家对解散房间的处理 HJPdkMessage.DismissResponse = defClass("DismissResponse" -- nUserId , defVar("nUserId", VT_Int, 0) -- 1: 表示发起解散 2:同意解散 3:不同意解散 , defVar("operateType", VT_UChar, 0) -- 剩余解散超时时间 , defVar("timeLeft", VT_Short, 0) ) -- 收到其他玩家掉线的信息 HJPdkMessage.OtherDroppedResponse = defClass("OtherDroppedResponse" -- 用户uid , defVar("nUserId", VT_Int, 0) -- 0: 用户掉线回来, 1: 用户已经掉线 , defVar("nDroppedStatus", VT_Short, 0) ) -------------------------------------------------------------------------- -- 游戏处理逻辑协议 -------------------------------------------------------------------------- -- 当桌子上所有玩家都准备后,服务器广播本局游戏开始 HJPdkMessage.GameStartUser = defClass("GameStartUser" ,defVar("nUserId", VT_Int, 0) ,defVar("nSeatId", VT_Int, 0) ) HJPdkMessage.GameBroadcastGameStart = defClass("GameBroadcastGameStart" -- 当前局数 ,defVar("gameStartCount", VT_Short, 0) ,defVar("totalGamenum", VT_Short, 0) ,defVar("roomOwnedUid", VT_Int, 0) ,defVar("players", VT_Vector(HJPdkMessage.GameStartUser), {}) ) -- 给玩家发牌 HJPdkMessage.GameSendCards = defClass("GameSendCards" ,defVar("bankerSeat", VT_Int, 0) ,defVar("userId", VT_Int, 0) ,defVar("cards", VT_Vector(VT_UChar), {}) ,defVar("cardPlayerInfo", VT_String, "")--记牌器json串 ) -- 服务器返回最佳提示牌组 HJPdkMessage.GameReturnTips = defClass("GameReturnTips" ,defVar("userId", VT_Int, 0) ,defVar("cards", VT_Vector(VT_UChar), {}) ) -- 客户端请求出牌 HJPdkMessage.GameOutCards = defClass("GameOutCards" -- ,defVar("byCardNum", VT_Short, 0)--不用写长度 ,defVar("byOutCard", VT_Vector(VT_UChar), {}) ) -- 服务器返回出牌错误 HJPdkMessage.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, //四带一 ]] HJPdkMessage.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)--是否只有炸弹能接牌 ) -- 游戏单局结算 HJPdkMessage.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) ) -- 小局炸弹分数 HJPdkMessage.GameBombScore = defClass("GameBombScore" ,defVar("userId", VT_Int, 0) ,defVar("turnBombScore", VT_String, 0)--单局炸弹分 ,defVar("reserved", VT_String, "")--字段,保留后续使用 ) HJPdkMessage.GameBroadcastResult = defClass("GameBroadcastResult" ,defVar("gameStartCount", VT_Short, 0) ,defVar("totalGamenum", VT_Short, 0) ,defVar("bankSeatId", VT_Int, 0) ,defVar("players", VT_Vector(HJPdkMessage.UserResult), {}) ,defVar("stopFlag", VT_Int, 0) ,defVar("dipaiCard", VT_String, "")-- 底牌 空格隔开的字符串 ,defVar("playersBombScore", VT_Vector(HJPdkMessage.GameBombScore), {})--单局炸弹得分 ) -- 游戏大结算 HJPdkMessage.GameOverItem = defClass("GameOverItem" ,defVar("userId", VT_Int, 0) ,defVar("totalScore", VT_String, 0) ,defVar("extString", VT_String, "") --房卡信息 ,defVar("countInfo", VT_String, "") ) HJPdkMessage.GameGameOver = defClass("GameGameOver" ,defVar("players", VT_Vector(HJPdkMessage.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, //游戏结束 ]] HJPdkMessage.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) ) -- 快速开始玩家对应状态 HJPdkMessage.FastStartGameUserItem = defClass("FastStartGameUserItem" ,defVar("userId", VT_Int, 0) ,defVar("fastStartStatus", VT_Int, 0) ) -- 托管状态 HJPdkMessage.UserHostingInfo = defClass("UserHostingInfo" ,defVar("userId", VT_Int, 0) ,defVar("hostStatus", VT_UChar, 0) ) --断线重连 HJPdkMessage.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(HJPdkMessage.GameRecoverItem), {}) ,defVar("extInfo", VT_String, "") --快速开始状态1:有人申请提前开始 ,defVar("userFastStartStatus", VT_UChar, 0) --快速开始剩余时间 ,defVar("fastStartTimeout", VT_Int, 0) --每个玩家对应快速开始状态 --,defVar("fastStartPlayersStatus", VT_Vector(HJPdkMessage.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 -- 更新玩家分数 HJPdkMessage.GameUserScoreItem = defClass("GameUserScoreItem" ,defVar("userId", VT_Int, 0) ,defVar("totalScore", VT_Int, 0) ) HJPdkMessage.GameUpdateScore = defClass("GameUpdateScore" ,defVar("players", VT_Vector(HJPdkMessage.GameUserScoreItem), {}) ) -- 广播玩家轮次 HJPdkMessage.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) ) --快速开始请求 HJPdkMessage.FastStartRequest = defClass("FastStartRequest" , defVar("result", VT_UChar, 1) ) --快速开始请求结果 HJPdkMessage.FastStartRequestResult = defClass("FastStartRequestResult" , defVar("result", VT_Short, -1) ) -- 服务器广播快速开始状态 HJPdkMessage.FastPlayer = defClass("FastPlayer" , defVar("nUserId", VT_Int, 0) --1:发起申请 2:同意 3:拒绝 4:未操作 5:有人进来或者退出 6:超时未处理 , defVar("nStatus", VT_UChar, 0) ) -- 服务器广播快速开始状态 HJPdkMessage.FastStartStatus = defClass("FastStartStatus" --发起玩家id , defVar("nUserId", VT_Int, 0) --1:发起申请 2:同意 3:拒绝 4:未操作 5:有人进来或者退出 6:超时未处理 , defVar("nStatus", VT_Short, 0) --玩家操作状态列表 , defVar("pList", VT_Vector(HJPdkMessage.FastPlayer), {}) --剩余时间 , defVar("timeOut", VT_Short, 0) ) -- 游戏快速开始 HJPdkMessage.FastSuccessPlayer = defClass("FastSuccessPlayer" , defVar("nUserId", VT_Int, 0) , defVar("nSeatId", VT_UChar, 0) ) -- 游戏快速开始玩家 HJPdkMessage.UpdateSeatIds = defClass("UpdateSeatIds" , defVar("pList", VT_Vector(HJPdkMessage.FastSuccessPlayer), {}) ) --server收到0x8060协议后,广播当前桌子上所有用户 HJPdkMessage.ServerChangeUserInfo = defClass("ServerChangeUserInfo" --更新信息的用户uid , defVar("uid", VT_Int, -1) --用户信息 , defVar("userInfo", VT_String, "") --保留字段,暂不使用 , defVar("reserved", VT_String, "") ) return HJPdkMessage