Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

434 wiersze
14 KiB

  1. --跑得快消息协议格式
  2. local PdkMessage = {}
  3. -- PdkMessage.TestRequest = defClass("card"
  4. -- --牌值
  5. -- ,defVar("card", VT_UChar, 0)
  6. -- )
  7. -- PdkMessage.TestResponse = defClass("card"
  8. -- --牌值
  9. -- ,defVar("card", VT_UChar, 0)
  10. -- )
  11. -- 玩家加入房间成功玩家信息
  12. PdkMessage.PlayerInfo = defClass("UserInfo"
  13. -- 玩家ID
  14. ,defVar("userId", VT_Int, 0)
  15. -- 座位ID
  16. ,defVar("seatId", VT_Int, 0)
  17. -- //是否正在玩 -1: 用户站起 0: 用户坐下 1: 准备状态 2: 正在玩
  18. ,defVar("playFlag", VT_Short, 0)
  19. --
  20. ,defVar("jsonInfo", VT_String, "")
  21. )
  22. -- 每个玩家房卡或金币信息
  23. PdkMessage.PlayerCoinInfo = defClass("PlayerCoinInfo"
  24. -- 玩家ID
  25. ,defVar("userId", VT_Int, 0)
  26. ,defVar("CoinInfo", VT_String, "")
  27. )
  28. -- 玩家离线状态
  29. PdkMessage.onLintState = defClass("onLintState"
  30. -- 玩家ID
  31. ,defVar("userId", VT_Int, 0)
  32. -- 状态
  33. ,defVar("jsonInfo", VT_String, "")
  34. )
  35. -- 玩家加入房间成功返回消息
  36. PdkMessage.GameLoginSuccess = defClass("GameLoginSuccess"
  37. -- 房间最大人数
  38. ,defVar("nMaxPlayCount", VT_Short, 0)
  39. -- 房主id
  40. ,defVar("nRoomOwnedUid", VT_Int, 0)
  41. -- 房间id
  42. ,defVar("nTableId", VT_Int, 0)
  43. -- 当前局数
  44. ,defVar("nGameStartCount", VT_Short, 0)
  45. -- 总局数
  46. ,defVar("nTotalGameNum", VT_Short, 0)
  47. -- 游戏信息
  48. ,defVar("nGameInfo", VT_String, "")
  49. -- ,defVar("nPlayerCount", VT_Short, 0)
  50. -- 玩家信息
  51. ,defVar("players", VT_Vector(PdkMessage.PlayerInfo), {})
  52. -- 房卡或金币信息
  53. ,defVar("CoinInfoList", VT_Vector(PdkMessage.PlayerCoinInfo), {})
  54. -- 玩家离线状态
  55. ,defVar("playerOnlineState", VT_VectorToMap(PdkMessage.onLintState, "userId"))
  56. )
  57. -- 加入房间失败返回
  58. --[[错误类型信息:
  59. ERROR_TABLE_MAX_COUNT = 2, //桌子人数已经够了
  60. ERROR_NOT_ENOUGH_MONEY = 3, //用户钱数不够
  61. ERROR_TOO_MUCH_MONEY = 4, //房间钱数过多
  62. ERROR_WRONG_UID = 5, //无效的用户ID
  63. ERROR_TABLE_NOT_EXIST = 6, //桌子不存在
  64. ERROR_OTHER = 7, //系统错误
  65. ERROR_UID_CANNOT_ENTER = 8, //游戏开始禁止加入游戏
  66. ]]
  67. PdkMessage.GameLoginFailed = defClass("GameLoginFailed"
  68. ,defVar("nErrNo", VT_UChar, 0)
  69. )
  70. -- 收到其他玩家加入房间的信息
  71. PdkMessage.GameSitDownResponse = defClass("GameSitDownResponse"
  72. -- 用户uid
  73. , defVar("userId", VT_Int, 0)
  74. -- 用户座位id, 从0编码, 最大为m_nMaxPlayCount-1
  75. , defVar("seatId", VT_Int, 0)
  76. -- 用户信息
  77. , defVar("userInfo", VT_String, "")
  78. -- 用户总的分数
  79. , defVar("nTotalMoney", VT_Long, 0)
  80. -- 用户标志
  81. , defVar("nPlayerFlag", VT_Short, 0)
  82. -- 开始游戏ID
  83. , defVar("nStartGameUid", VT_Int, 0)
  84. )
  85. -- 广播玩家准备
  86. PdkMessage.GameUserReady = defClass("GameUserReady"
  87. -- 准备玩家ID
  88. ,defVar("userId", VT_Int, 0)
  89. )
  90. -- 玩家进入房间
  91. PdkMessage.GameUserEnter = defClass("GameUserEnter"
  92. -- 玩家id
  93. ,defVar("userId", VT_Int, 0)
  94. ,defVar("seatId", VT_Int, 0)
  95. ,defVar("jsonInfo", VT_String, "")
  96. ,defVar("playFlag", VT_Short, 0)
  97. )
  98. -- 玩家离开房间
  99. PdkMessage.GameUserLogoutSuc = defClass("GameUserLogout"
  100. -- 玩家积分
  101. ,defVar("totalMoney", VT_Long, 0)
  102. -- 是否回到大厅
  103. ,defVar("logoutFlag", VT_Short, 0)
  104. --用户的房卡信息,格式"10,5", 以逗号分隔,第一个表示历史房卡数量, 第二个表示当前房卡数量
  105. ,defVar("extInfo", VT_String, "")
  106. )
  107. -- 广播桌子其他玩家离开
  108. PdkMessage.GameBroadcastUserLogout = defClass("GameBroadcastUserLogout"
  109. -- 玩家ID
  110. ,defVar("userId", VT_Int, 0)
  111. ,defVar("unuse", VT_Int, 0)
  112. )
  113. -- 解散房间请求
  114. PdkMessage.DismissRequest = defClass("DismissRequest"
  115. -- 玩家操作 1: 表示发起解散 2:同意解散 3:不同意解散
  116. , defVar("operateType", VT_UChar, 0)
  117. )
  118. -- 每个玩家对于解散房间的处理
  119. PdkMessage.UserDismissResult = defClass("UserDismissResult"
  120. -- nUserId
  121. , defVar("nUserId", VT_Int, 0)
  122. -- 0: 未做任何操作 1: 请求解散 2: 同意解散 3:不同意解散
  123. , defVar("dismissState", VT_UChar, 0)
  124. )
  125. -- 解散房间请求的结果
  126. PdkMessage.DismissResult = defClass("DismissResult"
  127. -- 错误码:
  128. -- 0:成功
  129. -- 1:operateType取值范围不对
  130. -- 2:当前没人发起解散
  131. -- 3:已经有人申请解散
  132. , defVar("errorCode", VT_Short, 0)
  133. -- 玩家操作
  134. , defVar("operateType", VT_Int, 0)
  135. -- 桌子上其他用户数量
  136. , defVar("memberList", VT_VectorToMap(PdkMessage.UserDismissResult, "nUserId"))
  137. -- 剩余解散超时时间
  138. , defVar("timeLeft", VT_Short, 0)
  139. )
  140. -- 服务器广播每个玩家对解散房间的处理
  141. PdkMessage.DismissResponse = defClass("DismissResponse"
  142. -- nUserId
  143. , defVar("nUserId", VT_Int, 0)
  144. -- 1: 表示发起解散 2:同意解散 3:不同意解散
  145. , defVar("operateType", VT_UChar, 0)
  146. -- 剩余解散超时时间
  147. , defVar("timeLeft", VT_Short, 0)
  148. )
  149. -- 收到其他玩家掉线的信息
  150. PdkMessage.OtherDroppedResponse = defClass("OtherDroppedResponse"
  151. -- 用户uid
  152. , defVar("nUserId", VT_Int, 0)
  153. -- 0: 用户掉线回来, 1: 用户已经掉线
  154. , defVar("nDroppedStatus", VT_Short, 0)
  155. )
  156. --------------------------------------------------------------------------
  157. -- 游戏处理逻辑协议
  158. --------------------------------------------------------------------------
  159. -- 当桌子上所有玩家都准备后,服务器广播本局游戏开始
  160. PdkMessage.GameStartUser = defClass("GameStartUser"
  161. ,defVar("nUserId", VT_Int, 0)
  162. ,defVar("nSeatId", VT_Int, 0)
  163. )
  164. PdkMessage.GameBroadcastGameStart = defClass("GameBroadcastGameStart"
  165. -- 当前局数
  166. ,defVar("gameStartCount", VT_Short, 0)
  167. ,defVar("totalGamenum", VT_Short, 0)
  168. ,defVar("roomOwnedUid", VT_Int, 0)
  169. ,defVar("players", VT_Vector(PdkMessage.GameStartUser), {})
  170. )
  171. -- 给玩家发牌
  172. PdkMessage.GameSendCards = defClass("GameSendCards"
  173. ,defVar("bankerSeat", VT_Int, 0)
  174. ,defVar("userId", VT_Int, 0)
  175. ,defVar("cards", VT_Vector(VT_UChar), {})
  176. )
  177. -- 服务器返回最佳提示牌组
  178. PdkMessage.GameReturnTips = defClass("GameReturnTips"
  179. ,defVar("userId", VT_Int, 0)
  180. ,defVar("cards", VT_Vector(VT_UChar), {})
  181. )
  182. -- 客户端请求出牌
  183. PdkMessage.GameOutCards = defClass("GameOutCards"
  184. -- ,defVar("byCardNum", VT_Short, 0)--不用写长度
  185. ,defVar("byOutCard", VT_Vector(VT_UChar), {})
  186. )
  187. -- 服务器返回出牌错误
  188. PdkMessage.GameOutCardsErr = defClass("GameOutCardsErr"
  189. ,defVar("userId", VT_Int, 0)
  190. ,defVar("errFlag", VT_UChar, 0)
  191. )
  192. -- 玩家出牌成功,服务器广播出牌信息
  193. --[[SINGLE_CARD = 1, //单牌
  194. DUI_ZI = 2, //对子
  195. THREE_AND_TWO = 3, //三带二
  196. SHUN_ZI = 4, //顺子
  197. LIAN_DUI = 5, //连对
  198. AIRPLANE = 6, //飞机
  199. FOUR_AND_THREE 7, //四带三
  200. BOMB = 8, //炸弹
  201. FOUR_AND_ONE = 9, //四带一
  202. ]]
  203. PdkMessage.GameBroadcastOutCards = defClass("GameBroadcastOutCards"
  204. ,defVar("selfId", VT_Int, 0)--自己ID
  205. ,defVar("userId", VT_Int, 0)
  206. ,defVar("cardType", VT_Short, 0)
  207. ,defVar("leftNum", VT_Short, 0)--出牌者剩余多少张牌
  208. ,defVar("cards", VT_Vector(VT_UChar), {})
  209. ,defVar("opType", VT_UChar, 0)--0:pass 1:接牌
  210. )
  211. -- 游戏单局结算
  212. PdkMessage.UserResult = defClass("UserResult"
  213. ,defVar("userId", VT_Int, 0)
  214. ,defVar("turnScore", VT_String, 0)
  215. ,defVar("totalScore", VT_String, 0)
  216. ,defVar("bombTimes", VT_Short, 0)
  217. ,defVar("haveRedTen", VT_UChar, 0)
  218. ,defVar("bSpring", VT_UChar, 0)
  219. ,defVar("leftNum", VT_Short, 0)
  220. ,defVar("leftCards", VT_Vector(VT_UChar), {})
  221. )
  222. -- 小局炸弹分数
  223. PdkMessage.GameBombScore = defClass("GameBombScore"
  224. ,defVar("userId", VT_Int, 0)
  225. ,defVar("turnBombScore", VT_String, 0)--单局炸弹分
  226. ,defVar("reserved", VT_String, "")--字段,保留后续使用
  227. )
  228. PdkMessage.GameBroadcastResult = defClass("GameBroadcastResult"
  229. ,defVar("gameStartCount", VT_Short, 0)
  230. ,defVar("totalGamenum", VT_Short, 0)
  231. ,defVar("bankSeatId", VT_Int, 0)
  232. ,defVar("players", VT_Vector(PdkMessage.UserResult), {})
  233. ,defVar("leftCards", VT_Vector(VT_UChar), {})
  234. ,defVar("stopFlag", VT_Int, 0)
  235. ,defVar("playersBombScore", VT_Vector(PdkMessage.GameBombScore), {})--单局炸弹得分
  236. )
  237. -- 游戏大结算
  238. PdkMessage.GameOverItem = defClass("GameOverItem"
  239. ,defVar("userId", VT_Int, 0)
  240. ,defVar("totalScore", VT_String, 0)
  241. ,defVar("extString", VT_String, "")
  242. )
  243. PdkMessage.GameGameOver = defClass("GameGameOver"
  244. ,defVar("players", VT_Vector(PdkMessage.GameOverItem), {})
  245. ,defVar("stopFlag", VT_Short, 0)
  246. ,defVar("stopResult", VT_String, 0)
  247. ,defVar("endTime", VT_Long, 0)
  248. )
  249. -- 中途恢复
  250. --[[GAME_STATE_INIT, //游戏准备状态
  251. GAME_STATE_SEND_HAND_CARD, //发牌
  252. GAME_STATE_OUT_CARD, //打牌
  253. GAME_STATE_ROUND_OVER, //游戏一局结束
  254. GAME_STATE_GAME_OVER, //游戏结束
  255. ]]
  256. PdkMessage.GameRecoverItem = defClass("GameRecoverItem"
  257. ,defVar("userId", VT_Int, 0)
  258. ,defVar("seatId", VT_Int, 0)
  259. ,defVar("playFlag", VT_Short, 0)--是否正在玩 -1: 用户站起 0: 用户坐下 1: 准备状态 2: 正在玩
  260. ,defVar("disbandStatus", VT_UChar, 0)--玩家解散状态 0:初始状态, 1:发起解散 2: 同意解散 3:不同意解散
  261. ,defVar("onlineStatus", VT_UChar, 0)--是否在线 0:离线 1:在线
  262. ,defVar("jsonInfo", VT_String, "")
  263. ,defVar("winTimes", VT_UChar, 0)
  264. ,defVar("loseTimes", VT_UChar, 0)
  265. ,defVar("isCanOp", VT_UChar, 0)
  266. ,defVar("bSpring", VT_UChar, 0)
  267. ,defVar("haveBlackThree", VT_UChar, 0)
  268. ,defVar("haveRedTen", VT_UChar, 0)
  269. ,defVar("maxScore", VT_String, 0)
  270. ,defVar("turnBombTimes", VT_UChar, 0)
  271. ,defVar("totalBombTimes", VT_UChar, 0)
  272. ,defVar("turnScore", VT_String, 0)
  273. ,defVar("totalScore", VT_String, 0)
  274. ,defVar("handType", VT_Short, 0)
  275. ,defVar("handCards", VT_Vector(VT_UChar), {})
  276. ,defVar("outCards", VT_Vector(VT_UChar), {})
  277. )
  278. -- 快速开始玩家对应状态
  279. PdkMessage.FastStartGameUserItem = defClass("FastStartGameUserItem"
  280. ,defVar("userId", VT_Int, 0)
  281. ,defVar("fastStartStatus", VT_Int, 0)
  282. )
  283. -- 托管状态
  284. PdkMessage.UserAIStatus = defClass("UserAIStatus"
  285. ,defVar("userId", VT_Int, 0)
  286. ,defVar("isAi", VT_UChar, 0) -- 托管状态(1 yes, 0 no)
  287. )
  288. --断线重连
  289. PdkMessage.GameGameRecover = defClass("GameGameRecover"
  290. --房间最大人数
  291. ,defVar("maxPlayCount", VT_Short, 0)
  292. --房主uid
  293. ,defVar("roomOwnedUid", VT_Int, 0)
  294. --当前局数
  295. ,defVar("gameStartCount", VT_Short, 0)
  296. ,defVar("totalGamenum", VT_Short, 0)
  297. ,defVar("showTableId", VT_Int, 0)
  298. --游戏信息
  299. ,defVar("gameInfo", VT_String, 0)
  300. --庄家id
  301. ,defVar("bankSeatId", VT_Int, 0)
  302. ,defVar("bUserDisbandGame", VT_UChar, 0)
  303. --桌子状态
  304. ,defVar("gameStatus", VT_UChar, 0)
  305. ,defVar("leftTimeOut", VT_Int, 0)
  306. ,defVar("recoverItem", VT_Vector(PdkMessage.GameRecoverItem), {})
  307. ,defVar("extInfo", VT_String, "")
  308. --快速开始状态1:有人申请提前开始
  309. ,defVar("userFastStartStatus", VT_UChar, 0)
  310. --快速开始剩余时间
  311. ,defVar("fastStartTimeout", VT_Int, 0)
  312. --每个玩家对应快速开始状态
  313. ,defVar("fastStartPlayersStatus", VT_Vector(PdkMessage.FastStartGameUserItem), {})
  314. --当前操作玩家id
  315. ,defVar("curOpUid", VT_Int, 0)
  316. --当前操作玩家操作类型 0-pass 1-可以出牌也可以pass 2-只能出牌
  317. ,defVar("curOpType", VT_UChar, 0)
  318. -- 玩家托管状态
  319. ,defVar("userAiStatus", VT_Vector(PdkMessage.UserAIStatus), {})
  320. )
  321. -- 0X8109 GAME_CAMMAND_BROADCAST_SCORES
  322. -- 更新玩家分数
  323. PdkMessage.GameUserScoreItem = defClass("GameUserScoreItem"
  324. ,defVar("userId", VT_Int, 0)
  325. ,defVar("totalScore", VT_String, 0)
  326. )
  327. PdkMessage.GameUpdateScore = defClass("GameUpdateScore"
  328. ,defVar("players", VT_Vector(PdkMessage.GameUserScoreItem), {})
  329. )
  330. -- 广播玩家轮次
  331. PdkMessage.GameBroadcastTurns = defClass("GameBroadcastTurns"
  332. ,defVar("userId", VT_Int, 0)
  333. ,defVar("seatId", VT_Int, 0)
  334. --出牌flag,0:要不起 1:可操作
  335. ,defVar("outFlag", VT_UChar, 0)
  336. --操作类型 0-只能pass 1-可以出牌也可以pass 2-必须出牌
  337. ,defVar("opType", VT_UChar, 0)
  338. )
  339. --快速开始请求
  340. PdkMessage.FastStartRequest = defClass("FastStartRequest"
  341. , defVar("result", VT_UChar, 1)
  342. )
  343. --快速开始请求结果
  344. PdkMessage.FastStartRequestResult = defClass("FastStartRequestResult"
  345. , defVar("result", VT_Short, -1)
  346. )
  347. -- 服务器广播快速开始状态
  348. PdkMessage.FastPlayer = defClass("FastPlayer"
  349. , defVar("nUserId", VT_Int, 0)
  350. --1:发起申请 2:同意 3:拒绝 4:未操作 5:有人进来或者退出 6:超时未处理
  351. , defVar("nStatus", VT_UChar, 0)
  352. )
  353. -- 服务器广播快速开始状态
  354. PdkMessage.FastStartStatus = defClass("FastStartStatus"
  355. --发起玩家id
  356. , defVar("nUserId", VT_Int, 0)
  357. --1:发起申请 2:同意 3:拒绝 4:未操作 5:有人进来或者退出 6:超时未处理
  358. , defVar("nStatus", VT_Short, 0)
  359. --玩家操作状态列表
  360. , defVar("pList", VT_Vector(PdkMessage.FastPlayer), {})
  361. --剩余时间
  362. , defVar("timeOut", VT_Short, 0)
  363. )
  364. -- 游戏快速开始
  365. PdkMessage.FastSuccessPlayer = defClass("FastSuccessPlayer"
  366. , defVar("nUserId", VT_Int, 0)
  367. , defVar("nSeatId", VT_UChar, 0)
  368. )
  369. -- 游戏快速开始玩家
  370. PdkMessage.UpdateSeatIds = defClass("UpdateSeatIds"
  371. , defVar("pList", VT_Vector(PdkMessage.FastSuccessPlayer), {})
  372. )
  373. --server收到0x8060协议后,广播当前桌子上所有用户
  374. PdkMessage.ServerChangeUserInfo = defClass("ServerChangeUserInfo"
  375. --更新信息的用户uid
  376. , defVar("uid", VT_Int, -1)
  377. --用户信息
  378. , defVar("userInfo", VT_String, "")
  379. --保留字段,暂不使用
  380. , defVar("reserved", VT_String, "")
  381. )
  382. -- 请求托管
  383. PdkMessage.sendTuoGuan = defClass("sendTuoGuan"
  384. --1-请求托管 2-请求取消托管
  385. ,defVar("entrustType", VT_Byte, 0)
  386. )
  387. -- 托管回复
  388. PdkMessage.TuoGuanResponse = defClass("TuoGuanResponse"
  389. ,defVar("nUserId", VT_Int, 0)
  390. --托管状态 1-托管中 0-未托管
  391. ,defVar("entrustType", VT_Byte, 0)
  392. )
  393. return PdkMessage