您不能選擇超過 %s 個話題 話題必須以字母或數字為開頭,可包含連接號 ('-') 且最長為 35 個字

330 行
15 KiB

  1. local message = MJFramework.MJFrameworkClassImprot("mj.luaScript.Protocol.MJMessage")
  2. -- 通知玩家开始选择飘[0x8204]
  3. message.PiaoStart = defClass('PiaoStart')
  4. -- 玩家请求飘(0不飘 1飘)[0x8204]
  5. message.PiaoRequest=defClass("PiaoRequest"
  6. , defVar("isPiao",VT_UChar ,0) -- 飘选择
  7. )
  8. --玩家飘状态
  9. message.PiaoState = defClass("PiaoState"
  10. , defVar("nUserId", VT_Int, 0) -- 玩家Uid
  11. , defVar("piaostate", VT_UChar, 0) -- 飘状态 0,1
  12. )
  13. -- 服务器收到玩家飘请求操作后广播给其他玩家[0x8205]
  14. message.PiaoResponse = defClass("PiaoResponse"
  15. , defVar("nUserId", VT_Int, 0) -- 玩家ID
  16. , defVar("piaostate", VT_UChar, 0) -- 选择飘结果
  17. , defVar("playerPiaoState", VT_Vector(message.PiaoState), {})
  18. )
  19. -- 服务器广播游戏庄家[0x8208]
  20. message.BankResponse = defClass('BankResponse'
  21. , defVar('nUserId', VT_Int, 0)
  22. , defVar('nSeatId', VT_Int, 0)
  23. )
  24. -- 起始操作列表
  25. message.OperateCard_Data = defClass("OperateCard_Data"
  26. , defVar("opType", VT_Short, 0) -- 操作类型
  27. , defVar("opCard", VT_UChar, 0) -- 操作的牌
  28. , defVar('useRedNum', VT_UChar, 0) -- 使用听用的数量
  29. , defVar('redType', VT_Short, 0) -- 使用代替的牌,0没有癞子,1是代替相同的牌
  30. , defVar('lziCard', VT_UChar, 0) -- 只有飞和提操作此牌才有效,否则为0
  31. )
  32. -- 出牌后形成的听牌信息数量
  33. message.TingCard = defClass("TingCard"
  34. , defVar("card", VT_UChar, -1) -- 玩家选中的牌值
  35. , defVar("count", VT_UChar, -1) -- 听牌数量
  36. , defVar("fanshu", VT_Int, 0) -- 番数
  37. )
  38. -- 共多少手牌出牌后形成听牌状态
  39. message.PushCard = defClass("PushCard"
  40. , defVar("outCard", VT_UChar, 0) -- 出的牌
  41. , defVar("tingCards", VT_Vector(message.TingCard), {}) -- 出牌后形成的听牌信息数量
  42. )
  43. -- 庄家发牌[0x8106][0x811a]
  44. message.BankerOutCard = defClass("BankerOutCard"
  45. , defVar("nUserId", VT_Int, 0) -- 用户uid
  46. , defVar("nSeatId", VT_UChar, 0) -- 用户座位id, 从0编码,最大为m_nMaxPlayCount-1
  47. , defVar("isTail", VT_UChar, 0) -- 是否尾部发牌,0为否 1为是
  48. , defVar("nLeaveCardNum", VT_Short, 0) -- 底牌数量
  49. , defVar("card", VT_UChar, 0)
  50. , defVar("operates", VT_Vector(message.OperateCard_Data), {}) -- 庄家起始操作列表
  51. , defVar("pushCardTing", VT_Vector(message.PushCard), {}) -- 共多少手牌出牌后形成听牌状态
  52. )
  53. -- 广播本金牌和听用牌[0x8209]
  54. message.BenJinCard = defClass('BenJinCard'
  55. , defVar('benjinCard', VT_UChar, 0)
  56. , defVar('tingCard', VT_Vector(message.Card), {})
  57. )
  58. -- 通知玩家开始选择定缺[0x8206]
  59. message.DingQueStart = defClass('DingQueStart'
  60. , defVar('nice_choose', VT_UChar, -1) -- 最佳选择缺牌型(0,1,2)
  61. )
  62. -- 玩家选好了定缺[0x8206]
  63. message.DingQueRequest = defClass('DingQueRequest'
  64. , defVar('que', VT_UChar, -1) -- 牌类型(0,1,2)
  65. )
  66. -- 定缺数据
  67. message.DingQueData = defClass('DingQueData'
  68. , defVar("nUserId", VT_Int, 0) -- 玩家ID
  69. , defVar("result", VT_Short, -1) -- 玩家选择结果
  70. )
  71. -- 广播玩家定缺结果[0x8207]
  72. message.DingQueResponse = defClass('DingQueResponse'
  73. , defVar('DingQueData', VT_VectorToMap(message.DingQueData, 'nUserId'), {})
  74. )
  75. -- 听用牌
  76. message.tingyongCard = defClass('tingyongCard'
  77. , defVar('card', VT_UChar, 0)
  78. )
  79. -- 请求操作[0x8107]
  80. message.OperateCard = defClass("OperateCard"
  81. , defVar("opType", VT_Short, 0) -- 牌类型
  82. , defVar("opCard", VT_UChar, 0) -- 操作的牌
  83. , defVar('tingyongCard', VT_Vector(message.tingyongCard), {}) -- 听用数量
  84. )
  85. -- 操作成功,成功时广播桌子所有玩家操作[0x8108]
  86. message.OperationCodeSuccess = defClass("OperationCodeSuccess"
  87. , defVar('nUserId', VT_Int, 0) -- 操作玩家ID
  88. , defVar("opType", VT_Short, 0) -- 操作值
  89. , defVar("opCard", VT_UChar, 0) -- 操作的牌
  90. , defVar('isNeedOutCard', VT_UChar, 0) -- 是否需要出牌,非操作者无需关心此值
  91. , defVar('fromSeatId', VT_UChar, 0) -- 触发操作用户位置ID
  92. , defVar('useRedNum', VT_UChar, -1) -- 使用的听用数量
  93. , defVar('lziCard', VT_UChar, -1) -- 使用的听用牌
  94. )
  95. -- 请求操作返回,失败[0x8109]
  96. message.OperateCard_Error = defClass('OperateCard_Error'
  97. , defVar('result', VT_UChar, -1)
  98. )
  99. -- 等待其他玩家操作[0x8116]
  100. message.WaitOperate = defClass("WaitOperate"
  101. , defVar("nUserId", VT_Int, 0) -- 玩家Uid
  102. , defVar("opType", VT_Short, 0) -- 牌类型
  103. )
  104. -- 有玩家出牌之后的操作
  105. -- message.OperateCard_OutCard = defClass('OperateCard_OutCard'
  106. -- , defVar("opType", VT_Short, 0) -- 操作值
  107. -- , defVar("opCard", VT_UChar, 0) -- 操作的牌
  108. -- , defVar('useRedNum', VT_UChar, -1) -- 听用牌数量
  109. -- , defVar('userRedType', VT_Short, -1) -- 听用牌使用类型
  110. -- , defVar('useRedCard', VT_Short, -1) -- 听用牌,为0忽略
  111. -- )
  112. -- 玩家出牌成功[0x8114]
  113. message.OutCardSuccess = defClass("OutCardSuccess"
  114. , defVar("nUserId", VT_Int, -1) -- 出牌用户id
  115. , defVar("nSeatId", VT_UChar, -1) -- 用户座位id, 从0编码,最大为m_nMaxPlayCount-1
  116. , defVar("card", VT_UChar, -1) -- 出的牌
  117. -- 玩家操作
  118. , defVar("operates", VT_Vector(message.OperateCard_Data), {})
  119. )
  120. -- 通知胡牌[0x8130]
  121. message.HuResponse = defClass("HuResponse"
  122. , defVar("nUserId" ,VT_Int, 0) -- 胡牌玩家
  123. , defVar("huType" ,VT_Short, 0) -- 自摸还是点炮胡
  124. , defVar("fanshu" ,VT_UChar, 0) -- 番数
  125. , defVar("paiType" ,VT_UChar, 0) -- 牌类型
  126. , defVar('subPaiType', VT_UChar, 0) -- 牌的子类型(0x01本金, 0x02接本金)
  127. , defVar("huCard", VT_UChar, 0) -- 胡的牌
  128. , defVar("isQiangGng", VT_UChar, 0) -- 是否抢杠胡(1是, 0否)
  129. , defVar("isGspHu", VT_UChar, 0) -- 是否杠上炮(1是, 0否)
  130. , defVar("isGskhHu", VT_UChar, 0) -- 是否杠上开花
  131. , defVar("dpUserId", VT_Int, 0) -- 点炮玩家(用户userId)
  132. , defVar("huIndex", VT_UChar, 0) -- 胡牌顺序
  133. )
  134. -- 组合牌
  135. message.GroupCard = defClass("GroupCard"
  136. , defVar("opType", VT_Short, 0) -- 操作值
  137. , defVar("opCard", VT_UChar, 0) -- 操作的牌
  138. , defVar('useRedNum', VT_UChar, -1) -- 使用的听用数量
  139. , defVar('redType', VT_Short, -1) -- 使用代替的牌,0没有癞子,1是代替相同的牌
  140. , defVar('fromUserId', VT_Int, 0) -- 来源玩家
  141. , defVar('lziCard', VT_UChar, 0) -- 只有飞和提操作此牌才有效,否则为0
  142. )
  143. -- 小结算玩家信息
  144. message.XiaojuPlayerInfo = defClass("XiaojuPlayerInfo"
  145. , defVar("nUserId", VT_Int, 0) -- 玩家的id
  146. , defVar("nTurnScore", VT_String, 0) -- 当前局分数
  147. , defVar("nTotalMoney", VT_String, 0) -- 总分
  148. , defVar('fanshu', VT_Int, 0) -- 番数
  149. , defVar("result", VT_UChar, 0) -- 玩家本局输赢情况(0为默认, 1为胡, 2为听叫)
  150. , defVar("paiType", VT_Short, 0) -- 胡牌类型
  151. , defVar("subPaiType", VT_Short, 0) -- 胡牌子类型(0x01:本金;0x02:接本金)
  152. , defVar("operates", VT_Vector(message.GroupCard), {}) -- 组合牌
  153. , defVar("handCards", VT_Vector(message.Card), {}) -- 玩家手牌
  154. , defVar("outCards", VT_Vector(message.Card), {}) -- 桌面弃牌
  155. , defVar("huCard", VT_UChar, 0) -- 胡的牌
  156. , defVar("huIndex", VT_UChar, 0) -- 胡牌顺序
  157. , defVar("huType", VT_Short,0) -- 自摸还是点炮胡
  158. , defVar('dpCount', VT_Short, 0) -- 点炮次数
  159. , defVar('dpId', VT_UChar, -1) -- 谁点炮给该玩家(座位号seatId)
  160. , defVar('dpIndex', VT_Short, 0) -- 点炮顺序(后3个bit位标识顺序)
  161. , defVar("isDaJiao", VT_UChar, 0) -- 是否大叫
  162. , defVar("isHuaZhu", VT_UChar, 0) -- 是否花猪
  163. , defVar("genCount", VT_UChar, 0) -- 根次数
  164. , defVar("gangCount", VT_UChar, 0) -- 杠次数
  165. )
  166. -- 通知小结算[0x8117]
  167. message.GameXiaoJuResponse = defClass("GameXiaoJuResponse"
  168. , defVar("stopFlag", VT_UChar, -1) -- 一局结束的原因
  169. , defVar("strGameInfo", VT_String, "") -- 房间信息
  170. , defVar("allPlayerInfo", VT_Vector(message.XiaojuPlayerInfo), {}) -- 玩家信息
  171. , defVar("isGameOver", VT_Short, 0) -- 是否大局结束,结束是1
  172. , defVar("opsCntMapString", VT_String, "") -- 操作统计
  173. )
  174. -- 大结算玩家列表
  175. message.DaJuPlayerInfo = defClass("DaJuPlayerInfo"
  176. , defVar("nUserId", VT_Int, 0) -- 玩家Uid
  177. , defVar("nTotalScore", VT_String, 0) -- 总输赢分数
  178. , defVar("requireCard", VT_Short, 0)
  179. )
  180. -- 通知大结算[0x8118]
  181. message.GameDaJuResponse = defClass("GameDaJuResponse"
  182. , defVar("nTotalPlayerInfos", VT_Vector(message.DaJuPlayerInfo), {}) -- 玩家信息
  183. , defVar("stopFlag", VT_Short, 0) -- 解散缘由
  184. , defVar("strDisbandStatus", VT_String, "") -- 解散状态
  185. , defVar("nEndTime", VT_Long, os.time()) -- 结束时间
  186. )
  187. -- 玩家的牌桌信息
  188. message.playerInfo = defClass("playerInfo"
  189. , defVar("nUserId", VT_Int, 0) -- 用户的USERID
  190. , defVar("nSeatId", VT_UChar, 0) -- 用户的座位ID
  191. , defVar("nPlayerFlag", VT_UChar, 0) -- 用户的游戏状态标识
  192. , defVar("nDisbandStatus", VT_UChar, 255) -- 玩家解散状态(0:初始状态, 1:发起解散, 2:同意解散, 3:不同意解散)
  193. , defVar("nOnlineStatus", VT_UChar, 255) -- 是否在线 0:离线 1:在线
  194. , defVar("userInfo", VT_String, "") -- 用户信息
  195. , defVar("nTurnScore", VT_String, -1) -- 当前局分数
  196. , defVar("nTotalMoney", VT_String, -1) -- 总分
  197. , defVar('fanshu', VT_Int, 0) -- 番数
  198. , defVar('isOperated', VT_String, '') -- 本玩家是否有操作过(有操作过就不显示了)
  199. , defVar("operates", VT_Vector(message.GroupCard), {}) -- 桌面组合牌
  200. , defVar("handCards", VT_Vector(message.Card), {}) -- 玩家手牌
  201. , defVar("outCards", VT_Vector(message.Card), {}) -- 桌面弃牌
  202. , defVar("isDaJiao", VT_UChar, 0) -- 是否大叫
  203. , defVar("isHuaZhu", VT_UChar, 0) -- 是否花猪
  204. , defVar("dpCount", VT_Short, 0) -- 点炮次数
  205. , defVar('dpOrder', VT_Short, 0) -- 点炮顺序(后3个bit位标识顺序)
  206. , defVar('isPiao', VT_Short, 0) -- 是否有飘操作(是否有操作过了飘)
  207. , defVar('piaostate', VT_Short, 0) -- 当前飘状态(1是选择了飘)
  208. , defVar('isDingQue', VT_Short, 0) -- 是否定缺操作
  209. , defVar('dingquetype', VT_Short, -1) -- 定缺牌类型(-1:没有定缺选择, (0,1,2):有定缺牌)
  210. , defVar('nice_choose', VT_Short, -1) -- 定缺最优选
  211. )
  212. -- 重连的上个玩家出牌后的操作
  213. -- message.OperateCard_Reconnect = defClass("OperateCard_Reconnect"
  214. -- , defVar("opType", VT_Short, 0) -- 操作值
  215. -- , defVar("opCard", VT_UChar, 0) -- 操作的牌
  216. -- , defVar('useRedNum', VT_UChar, -1) -- 使用的听用数量
  217. -- , defVar('useRedCard', VT_Short, -1) -- 使用的听用牌
  218. -- , defVar('lziCard', VT_UChar, -1) -- 只有飞和提操作此牌才有效,否则为0
  219. -- )
  220. -- 重连的胡牌信息
  221. message.HuCard_Reconnect = defClass("HuCard_Reconnect"
  222. , defVar("nUserId" ,VT_Int, 0) -- 胡牌玩家
  223. , defVar("result", VT_UChar, 0) -- 玩家本局输赢情况(0为默认, 1为胡, 2为听叫)
  224. , defVar("paiType" ,VT_Short, 0) -- 胡牌类型
  225. , defVar('subPaiType', VT_Short, 0) -- 牌的子类型(0x01本金, 0x02接本金)
  226. , defVar("huCard", VT_UChar, 0) -- 胡的牌
  227. , defVar("huIndex", VT_UChar, 0) -- 胡牌顺序
  228. , defVar("huType" ,VT_Short, 0) -- 自摸还是点炮胡
  229. , defVar("dpId", VT_UChar, 0) -- 点炮玩家
  230. , defVar("genCount", VT_UChar, 0) -- 根次数
  231. , defVar("gangCount", VT_UChar, 0) -- 杠次数
  232. )
  233. -- 断线重连[0x8009]
  234. message.GameReconnection = defClass("GameReconnection"
  235. , defVar("gameId", VT_Short, 0) -- 游戏ID
  236. , defVar("nShowTableId", VT_Int, 0) -- 用户房间号
  237. , defVar("nMaxPlayCount", VT_Int, 0) -- 房间最大人数
  238. , defVar("nRoomOwnedUid", VT_Int, 0) -- 用户房主ID
  239. , defVar("nTotalGameNum", VT_Short, 0) -- 总的局数
  240. , defVar("nBaseChips", VT_Int, 0) -- 底注
  241. , defVar("strGameInfo", VT_String, "") -- 游戏信息
  242. , defVar("nGameStartCount", VT_Short, 0) -- 当前局数
  243. , defVar("nStatus", VT_UChar, 0) -- 游戏状态
  244. , defVar("nBankSeatId", VT_UChar, 0) -- 庄家座位
  245. , defVar("nMySeatId", VT_UChar, 0) -- 我的座位
  246. , defVar("bUserDisbandGame", VT_UChar, 0) -- 是否有人发起解散
  247. , defVar("nDismissStateTime", VT_Int, 0) -- 解散剩余时间,没人发起解散,此值为0
  248. , defVar('benjinCard', VT_UChar, 0) -- 本金
  249. , defVar('tingyongCard', VT_Vector(message.tingyongCard), {}) -- 听用牌
  250. , defVar("playerInfos", VT_VectorToMap(message.playerInfo, "nUserId")) -- 玩家信息
  251. , defVar("leaveCards", VT_Vector(message.Card), {}) -- 剩余的底牌
  252. , defVar("outCardUserId", VT_Int, 0) -- 天胡的庄家\翻牌者\出牌者的seatId(可通过状态判断具体的角色)
  253. , defVar("outCardSeatId", VT_UChar, 255) -- 出牌者的seatId
  254. , defVar("lastOpCard", VT_UChar, 255) -- 出牌者上一次操作了虾米牌
  255. , defVar("operates", VT_Vector(message.OperateCard_Data), {}) -- 操作列表
  256. , defVar("isNeedOutCard", VT_UChar, 0) -- 是否可以出牌
  257. , defVar("stopFlag", VT_UChar, 255) -- 游戏结束标志(0正常结束, 7黄庄, 8长时间自动解散, 9解散游戏)
  258. , defVar("resultInfos", VT_VectorToMap(message.HuCard_Reconnect, "nUserId"), {}) -- 胡牌玩家信息
  259. , defVar("opsCntMapString", VT_String, "") -- 操作统计
  260. , defVar("tingStatus", VT_UChar, 0) -- 听牌状态
  261. , defVar("tingCard", VT_Vector(message.PushCard), {}) -- 听牌信息
  262. , defVar("ext", VT_String, "") -- 扩展字段
  263. , defVar("needOutCardId", VT_Int, 0) -- 出牌ID
  264. , defVar("shuffleNum", VT_Int, 2) --洗牌消耗数量
  265. )
  266. -- 玩家出牌/操作后的听牌信息
  267. message.OutCardTingInfo = defClass("OutCardTingInfo"
  268. , defVar("pushTing", VT_Vector(message.PushCard), {}) -- 听牌数据
  269. )
  270. -- 提操作成功后收到操作[0x811C]
  271. message.NoticeTiAfterOp = defClass('NoticeTiAfterOp'
  272. , defVar('nUserId', VT_Int, 0) -- 玩家ID
  273. , defVar("operates", VT_Vector(message.OperateCard_Data), {}) -- 操作列表
  274. )
  275. --断碰断杠操作
  276. message.QiangDuanOperates = defClass("QiangDuanOperates"
  277. ,defVar("operates",VT_Vector(message.OperateCard_Data),{})
  278. )
  279. --------------------------------------------------------------------------------------------
  280. -- 以下都是直接复制过来,因为子VT_Vector有包括需要重写的,那么需要把父类也给迁移过来,不然会用到父类
  281. --------------------------------------------------------------------------------------------
  282. -- 听牌结果
  283. message.TingCardResult = defClass("TingCardResult"
  284. , defVar("tingType", VT_UChar, -1) -- 听牌类型 0为普通听牌类型,1为全听,全听时不会具体听牌
  285. , defVar("tingCards",VT_Vector(message.TingCard),{}) -- 听牌列表
  286. )
  287. --点击一张牌的听牌信息
  288. message.PushTing= defClass("PushTing"
  289. , defVar("card", VT_UChar, 0) -- 玩家选中的牌值
  290. , defVar("tingCards",VT_Vector(message.TingCard),{})
  291. )
  292. return message