|
- 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
|