local message=MJFramework.MJFrameworkClassImprot("mj.luaScript.Protocol.MJMessage") message.TingCard = defClass("TingCard" --玩家选中的牌值 , defVar("card", VT_UChar, -1) --数量 , defVar("count", VT_UChar, -1) --番数 , defVar("fanshu", VT_Int, 0) ) message.TingCardResult = defClass("TingCardResult" --听牌类型 0为普通听牌类型,1为全听,全听时不会具体听牌 , defVar("tingType", VT_UChar, -1) --听牌列表 , defVar("tingCards",VT_Vector(message.TingCard),{}) ) --服务器通知庄家是否可以爆牌 message.BankerBaoPai = defClass("BankerBaoPai" ,defVar("nUserId",VT_Int ,-1) ) --请求爆牌 message.BaoPaiRequest=defClass("BaoPaiRequest" ,defVar("isBaoPai",VT_UChar ,0) ) --服务器广播爆牌 message.BaoPaiResponse = defClass("BaoPaiResponse" --哪个玩家爆牌 ,defVar("nUserId",VT_Int ,-1) ,defVar("isBaoPai",VT_Short ,0) ) message.PushCard = defClass("PushCard" --出的牌 , defVar("outCard", VT_UChar,0) --听牌列表 , defVar("tingCards",VT_Vector(message.TingCard),{}) ) message.OutCardTingInfo = defClass("OutCardTingInfo" , defVar("pushTing",VT_Vector(message.PushCard),{}) ) --鬼麻将红中可以吃碰杠 message.OperateCard = defClass("OperateCard" , defVar("opType", VT_Short, 0) -- 操作的牌 , defVar("opCard", VT_UChar, 0) -- 操作牌中红中的个数 --, defVar("redNum", VT_UChar, 0) -- 操作牌中是否含有红中 0表示无 1有 2左侧,例如吃2,3吃1 --, defVar("isUseRed", VT_Short, 0) ) message.OperateRequest= defClass("OperateRequest" -- 牌类型 , defVar("opType", VT_Short, 0) -- 操作的牌 , defVar("opCard", VT_UChar, 0) -- 原始操作数的个数 --, defVar("opNum", VT_Short, 0) -- 原始操作数 , defVar("operates", VT_Vector(message.OperateCard), {}) ) --新加一个带来源的类 message.OperateCard1 = defClass("OperateCard1" -- 牌类型 , defVar("opType", VT_Short, 0) -- 操作的牌 , defVar("opCard", VT_UChar, 0) -- 无用字段 , defVar("redNum", VT_UChar, 0) -- 无用字段 , defVar("isUseRed", VT_Short, 0) -- 来源ID , defVar("fromUserId", VT_Int, -1) ) message.PlayerHandCards= defClass("PlayerHandCards" -- 用户uid , defVar("nUserId", VT_Int, 0) --根据听牌状态判断是否可以爆牌 --, defVar("isTing", VT_Short, 0) -- 牌值类型列表 , defVar("handCards", VT_Vector(message.Card), {}) ) message.GameSendCardResponse = defClass("GameSendCardResponse" -- 用户uid -- , defVar("nUserId", VT_Int, 0) -- 庄家第一张摸的牌 -- , defVar("nbankFirstGrabCard", VT_UChar, 0) -- 牌值类型列表 , defVar("playerCards", VT_Vector(message.PlayerHandCards), {}) ) --发牌 message.BankerOutCard = defClass("BankerOutCard" -- 用户uid , defVar("nUserId", VT_Int, 0) -- 用户座位id, 从0编码, 最大为m_nMaxPlayCount-1 , defVar("nSeatId", VT_UChar, 0) -- 是否尾部发牌,0为否 1为是 , defVar("isTail", VT_UChar, 0) , defVar("nLeaveCardNum", VT_Short, 0) -- , defVar("card", VT_UChar, 0) -- 庄家操作列表 , defVar("operates", VT_Vector(message.OperateCard), {}) --共多少手牌出牌后形成听牌状态 , defVar("pushCardTing",VT_Vector(message.PushCard)) ) -- --玩家出牌成功 message.OutCardSuccess = defClass("OutCardSuccess" -- 出牌用户id , defVar("nUserId", VT_Int, -1) -- 用户座位id, 从0编码, 最大为m_nMaxPlayCount-1 , defVar("nSeatId", VT_UChar, -1) -- 出的牌 , defVar("card", VT_UChar, -1) -- 可以的操作ma -- , defVar("mainOpCode", VT_Short, -1) -- 玩家操作 , defVar("operates", VT_Vector(message.OperateCard), {}) ) -- --发送操作码成功 message.OperationCodeSuccess = defClass("OperationCodeSuccess" -- 操作者的id , defVar("nUserId", VT_Int, -1) -- 牌类型 , defVar("opType", VT_Short, 0) -- 操作的牌 , defVar("opCard", VT_UChar, 0) -- -- 操作的牌(只有天胡时 opCard才为0) -- , defVar("card", VT_UChar, 0) -- 表明操作者他是否要出牌 , defVar("isNeedOutCard", VT_UChar, 0) -- 被操作者座位Id , defVar("fromSeatId", VT_UChar, -1) --使用的红中数量 --, defVar("redNum", VT_UChar, 0) ) -- 玩家的牌桌信息 message.playerInfo = defClass("playerInfo" --用户的USER ID , defVar("nUserId", VT_Int, 0) --用户的TABLE ID , defVar("nSeatId", VT_UChar, 0) --用户的游戏状态标识 , defVar("nPlayerFlag", VT_UChar, 0) --玩家解散状态 0:初始状态, 1:发起解散 2: 同意解散 3:不同意解散 , defVar("nDisbandStatus", VT_UChar, 255) --是否在线 0:离线 1:在线 , defVar("nOnlineStatus", VT_UChar, 255) --用户信息 , defVar("userInfo", VT_String, "") --当前局分数 , defVar("nTurnScore", VT_Int, -1) --总分 , defVar("nTotalMoney", VT_Int, -1) --番数 , defVar("fanshu", VT_Int, -1) -- 桌面组合牌 ,defVar("gruoupCards",VT_Vector(message.OperateCard),{}) --玩家手牌 ,defVar("handCards",VT_Vector(message.Card),{}) --桌面弃牌 ,defVar("outCards",VT_Vector(message.Card),{}) --是否换过牌 ,defVar("isSwapCard",VT_UChar,0) --是否定缺 ,defVar("isDingQue",VT_UChar,0) --定缺牌类型 0万 1筒 2条 ,defVar("nQue",VT_UChar,0) --是否查叫 ,defVar("isDj",VT_UChar,0) --是否花猪 ,defVar("isHz",VT_UChar,0) --点炮次数 ,defVar("dpCount",VT_Short,0) --点炮顺序 ,defVar("dpOrder",VT_Short,0) -- 杠信息 --, defVar("gangInfo", VT_String, "") --保留 --,defVar("extJson",VT_String,"") ) message.PlayerResultInfo = defClass("PlayerResultInfo" --玩家的id , defVar("nUserId", VT_Int, 0) --1胡牌 2听叫 0默认 , defVar("userStatus", VT_UChar, 0) -- 胡牌牌类型-7对胡、平胡,0为输或者不胡不输 , defVar("huType", VT_Short, 0) --胡的牌 , defVar("huCard", VT_UChar, 0) --胡牌顺序 , defVar("huOrder", VT_UChar, 0) --胡牌类型 点炮 or 自摸 , defVar("result", VT_Short, 0) --子胡牌类型(天胡、地胡等) , defVar("subPaiType", VT_UChar, 0) --谁点炮 , defVar("dpSeatId", VT_UChar, -1) --根次数 , defVar("genCount", VT_UChar, 0) --是否绝张 , defVar("isJueZhang", VT_UChar, 0) --是否金钩钓 , defVar("isJinGouDiao", VT_UChar, 0) --是否海底捞月 , defVar("isHaiDiLaoYue", VT_UChar, 0) --是否海底炮 , defVar("isHaiDiPao", VT_UChar, 0) --是否杠上开花 , defVar("isGangShangKaiHua", VT_UChar, 0) --是否杠上炮 , defVar("isGangShangPao", VT_UChar, 0) --是否抢杠胡 , defVar("isQiangGangHu", VT_UChar, 0) --是否门清 , defVar("isMenQing", VT_UChar, 0) --是否中张 , defVar("isZhongZhang", VT_UChar, 0) --拓展字段 , defVar("extJson",VT_String,"") ) -- 玩家的爆牌信息 message.playerBaoInfo = defClass("playerBaoInfo" --用户的USER ID , defVar("nUserId", VT_Int, 0) --爆牌状态 1 报叫 2 没报 ,defVar("isBaoPai",VT_Short,0) --是否可以爆牌 ,defVar("canBaoPai",VT_UChar,255) ) -- --断线重连 message.GameReconnection = defClass("GameReconnection" -- 用户房间号 , defVar("gameId", VT_Short, 0) -- 用户房间号 , defVar("nShowTableId", VT_Int, 0) -- 房间最大人数 , defVar("nMaxPlayCount", VT_Int, 0) -- 用户房主 , defVar("nRoomOwnedUid", VT_Int, 0) -- 总的局数 , 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) -- 解散剩余时间,没人发起解散,此值为0 , defVar("nDismissStateTime", VT_Int, 0) -- 牌桌信息 ,defVar("playerInfos", VT_VectorToMap(message.playerInfo, "nUserId")) -- --剩余的底牌 ,defVar("leaveCards",VT_Vector(message.Card)) --天胡的庄家\翻牌者\出牌者的seatId(可通过状态判断具体的角色) ,defVar("outCardUserId",VT_Int,0) --出牌者的seatId ,defVar("outCardSeatId",VT_UChar,255) --当前发的牌或者出的牌 ,defVar("lastOpCard",VT_UChar,255) --操作列表 ,defVar("operates",VT_Vector(message.OperateCard),{}) --是否需要出牌 1需要 0不需要 ,defVar("isNeedOutCard",VT_UChar,0) --游戏结束标志 0正常结束 7黄庄 8长时间自动解散 9解散游戏 ,defVar("stopFlag",VT_UChar,255) --胡牌玩家列表 ,defVar("resultInfos",VT_VectorToMap(message.PlayerResultInfo,"nUserId")) --操作统计 "diangang_cnt":1, //点杠次数 "mgang":1, //明杠次数 "bgang":1, //巴杠次数 "agang":1, //暗杠次数 ,defVar("opsCntMapString",VT_String,"") --听牌状态 ,defVar("tingStatus",VT_UChar,0) --听牌信息 ,defVar("tingCard",VT_Vector(message.PushCard),{}) --是否在快开始界面,1是0否 ,defVar("bUserFastStartGame",VT_UChar,0) --当前快速开始等待时间 ,defVar("leftFastStartGameTime",VT_Int,0) --快速开始状态 ,defVar("pList", VT_Vector(message.FastPlayer), {}) -- 爆牌信息 ,defVar("playerBaoInfos", VT_VectorToMap(message.playerBaoInfo, "nUserId")) --洗牌消耗数量 ,defVar("shuffleNum", VT_Int, 2) --,defVar("extJson", VT_String, "") ) --通知胡牌 message.HuRespone = defClass("HuRespone" ,defVar("nUserId",VT_Int,0) --自摸还是点炮胡 ,defVar("huType",VT_Short,0) --番数 ,defVar("fanshu",VT_UChar,0) --牌类型 ,defVar("paiType",VT_UChar,0) --胡的牌 ,defVar("huCard",VT_UChar,0) --是否抢杠胡 1是 0否 ,defVar("isQiangGng",VT_UChar,0) --是否杠上炮 1是 0否 ,defVar("isGspHu",VT_UChar,0) --是否杠上开花 ,defVar("isGskhHu",VT_UChar,0) --点炮玩家 ,defVar("dpId",VT_Int,0) --胡顺序 ,defVar("huOrder",VT_UChar,0) --是否呼叫转移,1是 0否 ,defVar("isHjzy",VT_UChar,0) ) message.XiaojuPlayerInfo=defClass("XiaojuPlayerInfo" --玩家的id , defVar("nUserId", VT_Int, 0) --当前局分数 , defVar("nTurnScore", VT_Int, 0) --总分 , defVar("nTotalMoney", VT_Int, 0) --番数 , defVar("fanshu", VT_Int, 0) --1胡牌 2听叫 0默认 , defVar("userStatus", VT_UChar, 0) -- 胡牌牌类型-7对胡、平胡,0为输或者不胡不输 , defVar("huType", VT_Short, 0) -- 桌面组合牌 , defVar("gruoupCards",VT_Vector(message.OperateCard),{}) --玩家手牌 , defVar("handCards",VT_Vector(message.Card),{}) --桌面弃牌 , defVar("outCards",VT_Vector(message.Card),{}) --胡的牌 , defVar("huCard", VT_UChar, 0) --胡牌顺序 , defVar("huOrder", VT_UChar, 0) --胡牌类型 点炮 or 自摸 , defVar("result", VT_Short, 0) --子胡牌类型(天胡、地胡等) , defVar("subPaiType", VT_UChar, 0) --点炮次数 , defVar("dpCount", VT_Short, 0) --谁点炮 , defVar("dpSeatId", VT_UChar, -1) --点炮顺序 , defVar("dpOrder", VT_Short, 0) --是否大叫 , defVar("isDj", VT_UChar, 0) --是否花猪 , defVar("isHz", VT_UChar, 0) --归次数 , defVar("genCount", VT_UChar, 0) --是否绝张 , defVar("isJueZhang", VT_UChar, 0) --是否金钩钓 , defVar("isJinGouDiao", VT_UChar, 0) --是否海底捞月 , defVar("isHaiDiLaoYue", VT_UChar, 0) --是否海底炮 , defVar("isHaiDiPao", VT_UChar, 0) --是否杠上开花 , defVar("isGangShangKaiHua", VT_UChar, 0) --是否杠上炮 , defVar("isGangShangPao", VT_UChar, 0) --是否抢杠胡 , defVar("isQiangGangHu", VT_UChar, 0) --是否门清 , defVar("isMenQing", VT_UChar, 0) --是否中张 , defVar("isZhongZhang", VT_UChar, 0) --拓展字段 , defVar("extJson",VT_String,"") ) -- 玩家的爆牌信息 message.playerxjBaoInfo = defClass("playerxjBaoInfo" --用户的USER ID , defVar("nUserId", VT_Int, 0) --爆牌状态 1 报叫 2 没报 ,defVar("isBaoPai",VT_Short,0) --是否杀报 ,defVar("isShaBao",VT_UChar,0) ) message.GameXiaoJuResponse = defClass("GameXiaoJuResponse" -- 一局结束的原因 , defVar("stopFlag", VT_UChar, -1) -- 房间信息 , defVar("strGameInfo", VT_String, "") --玩家信息 , defVar("allPlayerInfo",VT_VectorToMap(message.XiaojuPlayerInfo,"nUserId")) --是否大局结束,结束是1 , defVar("isGameOver", VT_Short, 0) --操作统计 ,defVar("opsCntMapString",VT_String,"") --玩家信息 , defVar("xjBaoInfo",VT_VectorToMap(message.playerxjBaoInfo,"nUserId")) ) -- --总结算玩家列表 message.DaJuPlayerInfo = defClass("DaJuPlayerInfo" --玩家Uid , defVar("nUserId", VT_Int, 0) --总输赢分数 , defVar("nTotalScore", VT_Int, 0) --房卡 --, defVar("roomCard",VT_Int,0) --需求房卡 --, defVar("requireCard",VT_Short,0) -- 大局信息"ziMoCnt":1, //自摸胡次数 "jiePaoCnt":1, //接炮次数 -- "dianPaoCnt":1, //点炮次数 "mingCnt":1, //明杠次数 "zhiCnt":1, //直杠次数 --"baCnt":1, //巴杠次数 "anCnt":1, //暗杠次数 "djCnt":1, //查大叫的次数 ,defVar("countInfo",VT_String,"") ) -- 消耗房卡信息 message.DaJuPlayerCostInfo = defClass("DaJuPlayerInfo" --玩家Uid , defVar("nUserId", VT_Int, 0) , defVar("costCard",VT_Short,0) ) message.GameDaJuResponse = defClass("GameDaJuResponse" --多少个玩家 , defVar("nTotalPlayerInfos", VT_VectorToMap(message.DaJuPlayerInfo,"nUserId")) --房卡消耗 , defVar("costCardInfos", VT_VectorToMap(message.DaJuPlayerCostInfo,"nUserId")) --解散状态 , defVar("stopFlag",VT_Short,0) --解散状态 ,defVar("strDisbandStatus",VT_String,"") --结束时间 ,defVar("nEndTime",VT_Long,os.time()) ) message.WaitOperate= defClass("WaitOperate" --玩家Uid --, defVar("nUserId", VT_Int, 0) -- 牌类型 --, defVar("opType", VT_Short, 0) ) --断碰断杠操作 message.QiangDuanOperates = defClass("QiangDuanOperates" ,defVar("operates",VT_Vector(message.OperateCard),{}) ) --请求飘 message.PiaoRequest=defClass("PiaoRequest" ,defVar("isPiao",VT_UChar ,0) ) --玩家飘状态 message.PiaoState = defClass("PiaoState" --玩家Uid , defVar("nUserId", VT_Int, 0) -- 飘状态 0,1 , defVar("piaostate", VT_UChar, 0) ) --服务器收到玩家飘请求操作后广播给其他玩家 message.PiaoResponse = defClass("PiaoResponse" --玩家Uid , defVar("nUserId", VT_Int, 0) -- 飘状态 0,1 , defVar("piaostate", VT_UChar, 0) , defVar("playerPiaoState",VT_Vector(message.PiaoState),{}) ) --出牌错误 message.OutCardError = defClass("OutCardError" -- 牌值 , defVar("result", VT_Short, -1) ) --换三张换的牌 message.SwapCards= defClass("SwapCards" -- 服务器推荐的换牌 , defVar("swapCards", VT_Vector(message.Card), {}) ) -- 请求换三张换的牌 message.GetSwapCards = defClass("GetSwapCards" --出的牌 癞子保持0x5D ,defVar("bySwapCard", VT_Vector(VT_UChar), {}) ) --换三张错误 message.SwapCardsErr= defClass("SwapCardsErr" -- 错误码 , defVar("errFlag", VT_UChar, 0) ) --换三张成功 message.SwapCardsSucc= defClass("SwapCardsSucc" -- 换牌的用户id , defVar("nUserId", VT_Int, 0) -- 选中的牌 , defVar("selectCards", VT_Vector(message.Card), {}) ) --全部换完成功的 message.SwapCardsSuccInfo= defClass("SwapCardsSuccInfo" -- 错误码 , defVar("swapCards", VT_Vector(message.Card), {}) -- 换牌方式 1顺时针 2对家换牌 3逆时针 , defVar("swapType", VT_UChar, 0) ) --定缺牌 message.QueCard=defClass("QueCard" --定缺牌面花色,0万 1筒 2条 ,defVar("queCard",VT_UChar ,0) ) --定缺成功 message.DingQueSucc=defClass("DingQueSucc" -- 用户id ,defVar("nUserId", VT_Int, 0) --定缺牌面花色,0万 1筒 2条 ,defVar("queCard",VT_UChar ,0) ) --定缺成功广播告诉玩家定缺类型 message.DingQueSuccInfo=defClass("DingQueSuccInfo" -- 用户id , defVar("dingQueInfo", VT_Vector(message.DingQueSucc), {}) ) -- 请求操作返回,失败[0x8109] message.OperateCard_Error = defClass('OperateCard_Error' , defVar('result', VT_UChar, -1) ) --托管状态 message.HostingResponseEntity = defClass("HostingResponseEntity" ,defVar("nUserId",VT_Int,0) --1.托管 0取消托管 ,defVar("status",VT_UChar,0) ,defVar("ext", VT_String, "") ) --托管状态 message.HostingResponse = defClass("HostingResponse" ,defVar("userList", VT_Vector(message.HostingResponseEntity), {}) ) message.HostingRequest = defClass("HostingRequest" , defVar("nUserId", VT_Int, 0) , defVar("status", VT_UChar, 0) ) return message