local message = MJFramework.MJFrameworkClassImprot("mj.luaScript.Protocol.MJMessage") -- 通知玩家开始选择飘[0x8204] message.PiaoStart = defClass('PiaoStart') -- 玩家请求飘(0不飘 1飘)[0x8204] message.PiaoRequest=defClass("PiaoRequest" , defVar("isPiao",VT_UChar ,0) -- 飘选择 ) --玩家飘状态 message.PiaoState = defClass("PiaoState" , defVar("nUserId", VT_Int, 0) -- 玩家Uid , defVar("piaostate", VT_UChar, 0) -- 飘状态 0,1 ) -- 服务器收到玩家飘请求操作后广播给其他玩家[0x8205] message.PiaoResponse = defClass("PiaoResponse" , defVar("nUserId", VT_Int, 0) -- 玩家ID , defVar("piaostate", VT_UChar, 0) -- 选择飘结果 , defVar("playerPiaoState", VT_Vector(message.PiaoState), {}) ) -- 服务器广播游戏庄家[0x8208] message.BankResponse = defClass('BankResponse' , defVar('nUserId', VT_Int, 0) , defVar('nSeatId', VT_Int, 0) ) -- 起始操作列表 message.OperateCard_Data = defClass("OperateCard_Data" , defVar("opType", VT_Short, 0) -- 操作类型 , defVar("opCard", VT_UChar, 0) -- 操作的牌 , defVar('useRedNum', VT_UChar, 0) -- 使用听用的数量 , defVar('redType', VT_Short, 0) -- 使用代替的牌,0没有癞子,1是代替相同的牌 , defVar('lziCard', VT_UChar, 0) -- 只有飞和提操作此牌才有效,否则为0 ) -- 出牌后形成的听牌信息数量 message.TingCard = defClass("TingCard" , defVar("card", VT_UChar, -1) -- 玩家选中的牌值 , defVar("count", VT_UChar, -1) -- 听牌数量 , defVar("fanshu", VT_Int, 0) -- 番数 ) -- 共多少手牌出牌后形成听牌状态 message.PushCard = defClass("PushCard" , defVar("outCard", VT_UChar, 0) -- 出的牌 , defVar("tingCards", VT_Vector(message.TingCard), {}) -- 出牌后形成的听牌信息数量 ) -- 庄家发牌[0x8106][0x811a] message.BankerOutCard = defClass("BankerOutCard" , defVar("nUserId", VT_Int, 0) -- 用户uid , defVar("nSeatId", VT_UChar, 0) -- 用户座位id, 从0编码,最大为m_nMaxPlayCount-1 , defVar("isTail", VT_UChar, 0) -- 是否尾部发牌,0为否 1为是 , defVar("nLeaveCardNum", VT_Short, 0) -- 底牌数量 , defVar("card", VT_UChar, 0) , defVar("operates", VT_Vector(message.OperateCard_Data), {}) -- 庄家起始操作列表 , defVar("pushCardTing", VT_Vector(message.PushCard), {}) -- 共多少手牌出牌后形成听牌状态 ) -- 广播本金牌和听用牌[0x8209] message.BenJinCard = defClass('BenJinCard' , defVar('benjinCard', VT_UChar, 0) , defVar('tingCard', VT_Vector(message.Card), {}) ) -- 通知玩家开始选择定缺[0x8206] message.DingQueStart = defClass('DingQueStart' , defVar('nice_choose', VT_UChar, -1) -- 最佳选择缺牌型(0,1,2) ) -- 玩家选好了定缺[0x8206] message.DingQueRequest = defClass('DingQueRequest' , defVar('que', VT_UChar, -1) -- 牌类型(0,1,2) ) -- 定缺数据 message.DingQueData = defClass('DingQueData' , defVar("nUserId", VT_Int, 0) -- 玩家ID , defVar("result", VT_Short, -1) -- 玩家选择结果 ) -- 广播玩家定缺结果[0x8207] message.DingQueResponse = defClass('DingQueResponse' , defVar('DingQueData', VT_VectorToMap(message.DingQueData, 'nUserId'), {}) ) -- 听用牌 message.tingyongCard = defClass('tingyongCard' , defVar('card', VT_UChar, 0) ) -- 请求操作[0x8107] message.OperateCard = defClass("OperateCard" , defVar("opType", VT_Short, 0) -- 牌类型 , defVar("opCard", VT_UChar, 0) -- 操作的牌 , defVar('tingyongCard', VT_Vector(message.tingyongCard), {}) -- 听用数量 ) -- 操作成功,成功时广播桌子所有玩家操作[0x8108] message.OperationCodeSuccess = defClass("OperationCodeSuccess" , defVar('nUserId', VT_Int, 0) -- 操作玩家ID , defVar("opType", VT_Short, 0) -- 操作值 , defVar("opCard", VT_UChar, 0) -- 操作的牌 , defVar('isNeedOutCard', VT_UChar, 0) -- 是否需要出牌,非操作者无需关心此值 , defVar('fromSeatId', VT_UChar, 0) -- 触发操作用户位置ID , defVar('useRedNum', VT_UChar, -1) -- 使用的听用数量 , defVar('lziCard', VT_UChar, -1) -- 使用的听用牌 ) -- 请求操作返回,失败[0x8109] message.OperateCard_Error = defClass('OperateCard_Error' , defVar('result', VT_UChar, -1) ) -- 等待其他玩家操作[0x8116] message.WaitOperate = defClass("WaitOperate" , defVar("nUserId", VT_Int, 0) -- 玩家Uid , defVar("opType", VT_Short, 0) -- 牌类型 ) -- 有玩家出牌之后的操作 -- message.OperateCard_OutCard = defClass('OperateCard_OutCard' -- , defVar("opType", VT_Short, 0) -- 操作值 -- , defVar("opCard", VT_UChar, 0) -- 操作的牌 -- , defVar('useRedNum', VT_UChar, -1) -- 听用牌数量 -- , defVar('userRedType', VT_Short, -1) -- 听用牌使用类型 -- , defVar('useRedCard', VT_Short, -1) -- 听用牌,为0忽略 -- ) -- 玩家出牌成功[0x8114] message.OutCardSuccess = defClass("OutCardSuccess" , defVar("nUserId", VT_Int, -1) -- 出牌用户id , defVar("nSeatId", VT_UChar, -1) -- 用户座位id, 从0编码,最大为m_nMaxPlayCount-1 , defVar("card", VT_UChar, -1) -- 出的牌 -- 玩家操作 , defVar("operates", VT_Vector(message.OperateCard_Data), {}) ) -- 通知胡牌[0x8130] message.HuResponse = defClass("HuResponse" , defVar("nUserId" ,VT_Int, 0) -- 胡牌玩家 , defVar("huType" ,VT_Short, 0) -- 自摸还是点炮胡 , defVar("fanshu" ,VT_UChar, 0) -- 番数 , defVar("paiType" ,VT_UChar, 0) -- 牌类型 , defVar('subPaiType', VT_UChar, 0) -- 牌的子类型(0x01本金, 0x02接本金) , defVar("huCard", VT_UChar, 0) -- 胡的牌 , defVar("isQiangGng", VT_UChar, 0) -- 是否抢杠胡(1是, 0否) , defVar("isGspHu", VT_UChar, 0) -- 是否杠上炮(1是, 0否) , defVar("isGskhHu", VT_UChar, 0) -- 是否杠上开花 , defVar("dpUserId", VT_Int, 0) -- 点炮玩家(用户userId) , defVar("huIndex", VT_UChar, 0) -- 胡牌顺序 ) -- 组合牌 message.GroupCard = defClass("GroupCard" , defVar("opType", VT_Short, 0) -- 操作值 , defVar("opCard", VT_UChar, 0) -- 操作的牌 , defVar('useRedNum', VT_UChar, -1) -- 使用的听用数量 , defVar('redType', VT_Short, -1) -- 使用代替的牌,0没有癞子,1是代替相同的牌 , defVar('fromUserId', VT_Int, 0) -- 来源玩家 , defVar('lziCard', VT_UChar, 0) -- 只有飞和提操作此牌才有效,否则为0 ) -- 小结算玩家信息 message.XiaojuPlayerInfo = defClass("XiaojuPlayerInfo" , defVar("nUserId", VT_Int, 0) -- 玩家的id , defVar("nTurnScore", VT_String, 0) -- 当前局分数 , defVar("nTotalMoney", VT_String, 0) -- 总分 , defVar('fanshu', VT_Int, 0) -- 番数 , defVar("result", VT_UChar, 0) -- 玩家本局输赢情况(0为默认, 1为胡, 2为听叫) , defVar("paiType", VT_Short, 0) -- 胡牌类型 , defVar("subPaiType", VT_Short, 0) -- 胡牌子类型(0x01:本金;0x02:接本金) , defVar("operates", VT_Vector(message.GroupCard), {}) -- 组合牌 , defVar("handCards", VT_Vector(message.Card), {}) -- 玩家手牌 , defVar("outCards", VT_Vector(message.Card), {}) -- 桌面弃牌 , defVar("huCard", VT_UChar, 0) -- 胡的牌 , defVar("huIndex", VT_UChar, 0) -- 胡牌顺序 , defVar("huType", VT_Short,0) -- 自摸还是点炮胡 , defVar('dpCount', VT_Short, 0) -- 点炮次数 , defVar('dpId', VT_UChar, -1) -- 谁点炮给该玩家(座位号seatId) , defVar('dpIndex', VT_Short, 0) -- 点炮顺序(后3个bit位标识顺序) , defVar("isDaJiao", VT_UChar, 0) -- 是否大叫 , defVar("isHuaZhu", VT_UChar, 0) -- 是否花猪 , defVar("genCount", VT_UChar, 0) -- 根次数 , defVar("gangCount", VT_UChar, 0) -- 杠次数 ) -- 通知小结算[0x8117] message.GameXiaoJuResponse = defClass("GameXiaoJuResponse" , defVar("stopFlag", VT_UChar, -1) -- 一局结束的原因 , defVar("strGameInfo", VT_String, "") -- 房间信息 , defVar("allPlayerInfo", VT_Vector(message.XiaojuPlayerInfo), {}) -- 玩家信息 , defVar("isGameOver", VT_Short, 0) -- 是否大局结束,结束是1 , defVar("opsCntMapString", VT_String, "") -- 操作统计 ) -- 大结算玩家列表 message.DaJuPlayerInfo = defClass("DaJuPlayerInfo" , defVar("nUserId", VT_Int, 0) -- 玩家Uid , defVar("nTotalScore", VT_String, 0) -- 总输赢分数 , defVar("requireCard", VT_Short, 0) ) -- 通知大结算[0x8118] message.GameDaJuResponse = defClass("GameDaJuResponse" , defVar("nTotalPlayerInfos", VT_Vector(message.DaJuPlayerInfo), {}) -- 玩家信息 , defVar("stopFlag", VT_Short, 0) -- 解散缘由 , defVar("strDisbandStatus", VT_String, "") -- 解散状态 , defVar("nEndTime", VT_Long, os.time()) -- 结束时间 ) -- 玩家的牌桌信息 message.playerInfo = defClass("playerInfo" , defVar("nUserId", VT_Int, 0) -- 用户的USERID , defVar("nSeatId", VT_UChar, 0) -- 用户的座位ID , defVar("nPlayerFlag", VT_UChar, 0) -- 用户的游戏状态标识 , defVar("nDisbandStatus", VT_UChar, 255) -- 玩家解散状态(0:初始状态, 1:发起解散, 2:同意解散, 3:不同意解散) , defVar("nOnlineStatus", VT_UChar, 255) -- 是否在线 0:离线 1:在线 , defVar("userInfo", VT_String, "") -- 用户信息 , defVar("nTurnScore", VT_String, -1) -- 当前局分数 , defVar("nTotalMoney", VT_String, -1) -- 总分 , defVar('fanshu', VT_Int, 0) -- 番数 , defVar('isOperated', VT_String, '') -- 本玩家是否有操作过(有操作过就不显示了) , defVar("operates", VT_Vector(message.GroupCard), {}) -- 桌面组合牌 , defVar("handCards", VT_Vector(message.Card), {}) -- 玩家手牌 , defVar("outCards", VT_Vector(message.Card), {}) -- 桌面弃牌 , defVar("isDaJiao", VT_UChar, 0) -- 是否大叫 , defVar("isHuaZhu", VT_UChar, 0) -- 是否花猪 , defVar("dpCount", VT_Short, 0) -- 点炮次数 , defVar('dpOrder', VT_Short, 0) -- 点炮顺序(后3个bit位标识顺序) , defVar('isPiao', VT_Short, 0) -- 是否有飘操作(是否有操作过了飘) , defVar('piaostate', VT_Short, 0) -- 当前飘状态(1是选择了飘) , defVar('isDingQue', VT_Short, 0) -- 是否定缺操作 , defVar('dingquetype', VT_Short, -1) -- 定缺牌类型(-1:没有定缺选择, (0,1,2):有定缺牌) , defVar('nice_choose', VT_Short, -1) -- 定缺最优选 ) -- 重连的上个玩家出牌后的操作 -- message.OperateCard_Reconnect = defClass("OperateCard_Reconnect" -- , defVar("opType", VT_Short, 0) -- 操作值 -- , defVar("opCard", VT_UChar, 0) -- 操作的牌 -- , defVar('useRedNum', VT_UChar, -1) -- 使用的听用数量 -- , defVar('useRedCard', VT_Short, -1) -- 使用的听用牌 -- , defVar('lziCard', VT_UChar, -1) -- 只有飞和提操作此牌才有效,否则为0 -- ) -- 重连的胡牌信息 message.HuCard_Reconnect = defClass("HuCard_Reconnect" , defVar("nUserId" ,VT_Int, 0) -- 胡牌玩家 , defVar("result", VT_UChar, 0) -- 玩家本局输赢情况(0为默认, 1为胡, 2为听叫) , defVar("paiType" ,VT_Short, 0) -- 胡牌类型 , defVar('subPaiType', VT_Short, 0) -- 牌的子类型(0x01本金, 0x02接本金) , defVar("huCard", VT_UChar, 0) -- 胡的牌 , defVar("huIndex", VT_UChar, 0) -- 胡牌顺序 , defVar("huType" ,VT_Short, 0) -- 自摸还是点炮胡 , defVar("dpId", VT_UChar, 0) -- 点炮玩家 , defVar("genCount", VT_UChar, 0) -- 根次数 , defVar("gangCount", VT_UChar, 0) -- 杠次数 ) -- 断线重连[0x8009] message.GameReconnection = defClass("GameReconnection" , defVar("gameId", VT_Short, 0) -- 游戏ID , defVar("nShowTableId", VT_Int, 0) -- 用户房间号 , defVar("nMaxPlayCount", VT_Int, 0) -- 房间最大人数 , defVar("nRoomOwnedUid", VT_Int, 0) -- 用户房主ID , defVar("nTotalGameNum", VT_Short, 0) -- 总的局数 , defVar("nBaseChips", VT_Int, 0) -- 底注 , defVar("strGameInfo", VT_String, "") -- 游戏信息 , defVar("nGameStartCount", VT_Short, 0) -- 当前局数 , defVar("nStatus", VT_UChar, 0) -- 游戏状态 , defVar("nBankSeatId", VT_UChar, 0) -- 庄家座位 , defVar("nMySeatId", VT_UChar, 0) -- 我的座位 , defVar("bUserDisbandGame", VT_UChar, 0) -- 是否有人发起解散 , defVar("nDismissStateTime", VT_Int, 0) -- 解散剩余时间,没人发起解散,此值为0 , defVar('benjinCard', VT_UChar, 0) -- 本金 , defVar('tingyongCard', VT_Vector(message.tingyongCard), {}) -- 听用牌 , defVar("playerInfos", VT_VectorToMap(message.playerInfo, "nUserId")) -- 玩家信息 , defVar("leaveCards", VT_Vector(message.Card), {}) -- 剩余的底牌 , defVar("outCardUserId", VT_Int, 0) -- 天胡的庄家\翻牌者\出牌者的seatId(可通过状态判断具体的角色) , defVar("outCardSeatId", VT_UChar, 255) -- 出牌者的seatId , defVar("lastOpCard", VT_UChar, 255) -- 出牌者上一次操作了虾米牌 , defVar("operates", VT_Vector(message.OperateCard_Data), {}) -- 操作列表 , defVar("isNeedOutCard", VT_UChar, 0) -- 是否可以出牌 , defVar("stopFlag", VT_UChar, 255) -- 游戏结束标志(0正常结束, 7黄庄, 8长时间自动解散, 9解散游戏) , defVar("resultInfos", VT_VectorToMap(message.HuCard_Reconnect, "nUserId"), {}) -- 胡牌玩家信息 , defVar("opsCntMapString", VT_String, "") -- 操作统计 , defVar("tingStatus", VT_UChar, 0) -- 听牌状态 , defVar("tingCard", VT_Vector(message.PushCard), {}) -- 听牌信息 , defVar("ext", VT_String, "") -- 扩展字段 , defVar("needOutCardId", VT_Int, 0) -- 出牌ID , defVar("shuffleNum", VT_Int, 2) --洗牌消耗数量 ) -- 玩家出牌/操作后的听牌信息 message.OutCardTingInfo = defClass("OutCardTingInfo" , defVar("pushTing", VT_Vector(message.PushCard), {}) -- 听牌数据 ) -- 提操作成功后收到操作[0x811C] message.NoticeTiAfterOp = defClass('NoticeTiAfterOp' , defVar('nUserId', VT_Int, 0) -- 玩家ID , defVar("operates", VT_Vector(message.OperateCard_Data), {}) -- 操作列表 ) --断碰断杠操作 message.QiangDuanOperates = defClass("QiangDuanOperates" ,defVar("operates",VT_Vector(message.OperateCard_Data),{}) ) -------------------------------------------------------------------------------------------- -- 以下都是直接复制过来,因为子VT_Vector有包括需要重写的,那么需要把父类也给迁移过来,不然会用到父类 -------------------------------------------------------------------------------------------- -- 听牌结果 message.TingCardResult = defClass("TingCardResult" , defVar("tingType", VT_UChar, -1) -- 听牌类型 0为普通听牌类型,1为全听,全听时不会具体听牌 , defVar("tingCards",VT_Vector(message.TingCard),{}) -- 听牌列表 ) --点击一张牌的听牌信息 message.PushTing= defClass("PushTing" , defVar("card", VT_UChar, 0) -- 玩家选中的牌值 , defVar("tingCards",VT_Vector(message.TingCard),{}) ) return message