诸暨麻将添加redis
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
 
 
 

4936 rader
132 KiB

  1. #ifndef CMD_GAME_SERVER_HEAD_FILE
  2. #define CMD_GAME_SERVER_HEAD_FILE
  3. //#include "Stdafx.h"
  4. #include <strsafe.h>
  5. #include "../GlobalDef/Define.h"
  6. #include "../GlobalDef/Struct.h"
  7. #include "../GlobalDef/Property.h"
  8. #ifndef BUFFERLEN
  9. #define BUFFERLEN 3000
  10. #endif
  11. #pragma pack(1)
  12. //////////////////////////////////////////////////////////////////////////////////
  13. //登录命令
  14. #define MDM_GR_LOGON 1 //登录信息
  15. //登录模式
  16. #define SUB_GR_LOGON_USERID 1 //I D 登录
  17. #define SUB_GR_LOGON_MOBILE 2 //手机登录
  18. #define SUB_GR_LOGON_ACCOUNTS 3 //帐户登录
  19. //登录结果
  20. //#define SUB_GR_LOGON_SUCCESS 100 //登录成功
  21. #define SUB_M_LOGON_FAILURE 101 //登录失败
  22. #define SUB_GR_LOGON_FINISH 102 //登录完成
  23. //升级提示
  24. #define SUB_GR_UPDATE_NOTIFY 200 //升级提示
  25. //////////////////////////////////////////////////////////////////////////////////
  26. #ifdef _UNICODE
  27. #define TSTRINGLEN(pBuffer) wcslen(pBuffer)
  28. #else
  29. #define TSTRINGLEN(pBuffer) strlen(pBuffer)
  30. #endif
  31. class mylog
  32. {
  33. public:
  34. //格式
  35. //static bool ToSet(TCHAR* pBuffer, int iLen, DWORD dUserID);
  36. static void OutputString(TCHAR* pBuffer, int iTableID);
  37. };
  38. struct TagUpData
  39. {
  40. DWORD iTableCount;//桌子总数
  41. DWORD iPlayingTableCount;//游戏中桌子
  42. DWORD iFreeTableCount;//空闲桌子
  43. DWORD iDownTableCount;//集体掉线桌子
  44. DWORD iLoginBody;//登录总人数
  45. DWORD iDownBody;//掉线人数
  46. DWORD iDaTingBody;//在大厅人数
  47. DWORD iLinkBody;//连接人数
  48. DWORD iSocketNum;//Socket总数
  49. DWORD iErrQ;//协议非法请求拒绝数
  50. DWORD iLJErrQ;//逻辑非法请求数
  51. DWORD iFreeCon;//空连接
  52. DWORD iQNum;//正常业务请求数
  53. DWORD dLoginQ;//登录请求数
  54. DWORD dLoginQOK;//完整登录请求成功数
  55. DWORD dLoginDuanXianOK;//断线重连请求成功数
  56. DWORD dChongZhi;//充值请求数
  57. DWORD dChongZhiOK;//充值请求成功数
  58. DWORD dCreateTable;//创建桌子失败数
  59. DWORD dAddRoom;//加入房间成功数
  60. DWORD dAddRoomChange;//加入房间切换节点数
  61. int iTableNum;//私有房间数量
  62. int PrivteTable[500];//本服务器上的私有房间号
  63. };
  64. //用户积分
  65. struct tagUserScore
  66. {
  67. //积分信息
  68. DWORD lScore; //用户分数
  69. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  70. {
  71. if (sizeof(tagUserScore) * 16 > iLen) return false;
  72. #ifdef _UNICODE
  73. _snwprintf(pBuffer, iLen, TEXT("<br>【子项积分信息】用户分数:%d.")
  74. , lScore);
  75. #else
  76. _snprintf(pBuffer, iLen, TEXT("<br>【子项积分信息】用户分数:%d.")
  77. , lScore);
  78. #endif
  79. ////mylog::ToSet(pBuffer, iLen, dUserID);
  80. return true;
  81. }
  82. //名字
  83. bool ToName(TCHAR* pBuffer, int iLen)
  84. {
  85. TCHAR szTemp[] = _T("积分信息");
  86. if (TSTRINGLEN(szTemp) > iLen) return false;
  87. StringCchCopy(pBuffer, iLen, szTemp);
  88. return true;
  89. }
  90. //打印通讯日志
  91. void ToShow(int dTablePrivate, DWORD dUserID)
  92. {
  93. TCHAR szBuffer[BUFFERLEN];
  94. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  95. if (ToString(szBuffer, BUFFERLEN, dUserID))
  96. {
  97. mylog::OutputString(szBuffer, dTablePrivate);
  98. }
  99. }
  100. };
  101. //I D 登录
  102. struct CMD_GR_LogonUserID
  103. {
  104. //版本信息
  105. DWORD dwPlazaVersion; //广场版本
  106. DWORD dwFrameVersion; //框架版本
  107. DWORD dwProcessVersion; //进程版本
  108. //登录信息
  109. DWORD dwUserID; //用户 I D
  110. TCHAR szPassword[LEN_MD5]; //登录密码
  111. TCHAR szServerPasswd[LEN_PASSWORD]; //房间密码
  112. TCHAR szMachineID[LEN_MACHINE_ID]; //机器序列
  113. WORD wKindID; //类型索引
  114. public:
  115. //参数转成字符串
  116. bool ToString(TCHAR* pBuffer, int iLen)
  117. {
  118. return false;
  119. }
  120. bool ToName(TCHAR* pBuffer, int iLen)
  121. {
  122. TCHAR szTemp[] = _T("I D 登录");
  123. if (TSTRINGLEN(szTemp)>iLen) return false;
  124. StringCchCopy(pBuffer, iLen, szTemp);
  125. return true;
  126. }
  127. };
  128. //手机登录
  129. struct CMD_GR_LogonMobile
  130. {
  131. //版本信息
  132. WORD wGameID; //游戏标识
  133. DWORD dwProcessVersion; //进程版本
  134. //桌子区域
  135. BYTE cbDeviceType; //设备类型
  136. WORD wBehaviorFlags; //行为标识
  137. WORD wPageTableCount; //分页桌数
  138. //登录信息
  139. DWORD dwUserID; //用户 I D
  140. TCHAR szPassword[LEN_MD5]; //登录密码
  141. TCHAR szMachineID[LEN_MACHINE_ID]; //机器标识
  142. DWORD dX; //精度
  143. DWORD dY; //维度
  144. TCHAR szChengShi[20]; //城市
  145. //参数转成字符串
  146. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  147. {
  148. #ifdef _UNICODE
  149. _snwprintf(pBuffer, iLen, TEXT("手机登录->游戏标识:%d,进程版本:%d,设备类型:%d,行为标识:%d,分页桌数:%d,用户 I D:%d,登录密码:%s,版本号:%s,经度%d,维度%d,所在城市%s.")
  150. , wGameID, dwProcessVersion, cbDeviceType, wBehaviorFlags, wPageTableCount, dwUserID, szPassword, szMachineID,dX, dY, szChengShi);
  151. #else
  152. _snprintf(pBuffer, iLen, TEXT("手机登录->游戏标识:%d,进程版本:%d,设备类型:%d,行为标识:%d,分页桌数:%d,用户 I D:%d,登录密码:%s,机器标识:%s.")
  153. , wGameID, dwProcessVersion, cbDeviceType, wBehaviorFlags, wPageTableCount, dwUserID, szPassword, szMachineID);
  154. #endif
  155. //mylog::ToSet(pBuffer, iLen, dUserID);
  156. return true;
  157. }
  158. //名字
  159. bool ToName(TCHAR* pBuffer, int iLen)
  160. {
  161. TCHAR szTemp[] = _T("手机登录");
  162. if (TSTRINGLEN(szTemp) > iLen) return false;
  163. StringCchCopy(pBuffer, iLen, szTemp);
  164. return true;
  165. }
  166. //打印通讯日志
  167. void ToShow(int dTablePrivate, DWORD dUserID)
  168. {
  169. TCHAR szBuffer[BUFFERLEN];
  170. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  171. if (ToString(szBuffer, BUFFERLEN, dUserID))
  172. {
  173. mylog::OutputString(szBuffer, dTablePrivate);
  174. }
  175. }
  176. };
  177. //帐号登录
  178. struct CMD_GR_LogonAccounts
  179. {
  180. //版本信息
  181. DWORD dwPlazaVersion; //广场版本
  182. DWORD dwFrameVersion; //框架版本
  183. DWORD dwProcessVersion; //进程版本
  184. //登录信息
  185. TCHAR szPassword[LEN_MD5]; //登录密码
  186. TCHAR szAccounts[LEN_ACCOUNTS]; //登录帐号
  187. TCHAR szMachineID[LEN_MACHINE_ID]; //机器序列
  188. //参数转成字符串
  189. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  190. {
  191. if (sizeof(CMD_GR_LogonAccounts) * 16 > iLen) return false;
  192. #ifdef _UNICODE
  193. _snwprintf(pBuffer, iLen, TEXT("帐号登录->广场版本:%d,框架版本:%d,进程版本:%d,登录密码:%s,登录帐号:%s,机器序列:%s.")
  194. , dwProcessVersion, dwFrameVersion, dwProcessVersion, szPassword, szAccounts, szMachineID);
  195. #else
  196. _snprintf(pBuffer, iLen, TEXT("帐号登录->广场版本:%d,框架版本:%d,进程版本:%d,登录密码:%s,登录帐号:%s,机器序列:%s.")
  197. , dwProcessVersion, dwFrameVersion, dwProcessVersion, szPassword, szAccounts, szMachineID);
  198. #endif
  199. //mylog::ToSet(pBuffer, iLen, dUserID);
  200. return true;
  201. }
  202. //名字
  203. bool ToName(TCHAR* pBuffer, int iLen)
  204. {
  205. TCHAR szTemp[] = _T("帐号登录");
  206. if (TSTRINGLEN(szTemp) > iLen) return false;
  207. StringCchCopy(pBuffer, iLen, szTemp);
  208. return true;
  209. }
  210. //打印通讯日志
  211. void ToShow(int dTablePrivate, DWORD dUserID)
  212. {
  213. TCHAR szBuffer[BUFFERLEN];
  214. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  215. if (ToString(szBuffer, BUFFERLEN, dUserID))
  216. {
  217. mylog::OutputString(szBuffer, dTablePrivate);
  218. }
  219. }
  220. };
  221. //登录成功
  222. struct CMD_GR_LogonSuccess
  223. {
  224. DWORD dwUserRight; //用户权限
  225. DWORD dwMasterRight; //管理权限
  226. //参数转成字符串
  227. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  228. {
  229. if (sizeof(CMD_GR_LogonSuccess) * 16 > iLen) return false;
  230. #ifdef _UNICODE
  231. _snwprintf(pBuffer, iLen, TEXT("登录成功->用户权限:%d,管理权限:%d.")
  232. , dwUserRight, dwMasterRight);
  233. #else
  234. _snprintf(pBuffer, iLen, TEXT("登录成功->用户权限:%d,管理权限:%d.")
  235. , dwUserRight, dwMasterRight);
  236. #endif
  237. //mylog::ToSet(pBuffer, iLen, dUserID);
  238. return true;
  239. }
  240. //名字
  241. bool ToName(TCHAR* pBuffer, int iLen)
  242. {
  243. TCHAR szTemp[] = _T("登录成功");
  244. if (TSTRINGLEN(szTemp) > iLen) return false;
  245. StringCchCopy(pBuffer, iLen, szTemp);
  246. return true;
  247. }
  248. //打印通讯日志
  249. void ToShow(int dTablePrivate, DWORD dUserID)
  250. {
  251. TCHAR szBuffer[BUFFERLEN];
  252. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  253. if (ToString(szBuffer, BUFFERLEN, dUserID))
  254. {
  255. mylog::OutputString(szBuffer, dTablePrivate);
  256. }
  257. }
  258. };
  259. //登录失败
  260. struct CMD_GR_LogonFailure
  261. {
  262. LONG lErrorCode; //错误代码
  263. TCHAR szDescribeString[128]; //描述消息
  264. //参数转成字符串
  265. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  266. {
  267. if (sizeof(CMD_GR_LogonSuccess) * 16 > iLen) return false;
  268. #ifdef _UNICODE
  269. _snwprintf(pBuffer, iLen, TEXT("登录失败->错误代码:%d,描述消息:%s.")
  270. , lErrorCode, szDescribeString);
  271. #else
  272. _snprintf(pBuffer, iLen, TEXT("登录失败->错误代码:%d,描述消息:%s.")
  273. , lErrorCode, szDescribeString);
  274. #endif
  275. //mylog::ToSet(pBuffer, iLen, dUserID);
  276. return true;
  277. }
  278. //名字
  279. bool ToName(TCHAR* pBuffer, int iLen)
  280. {
  281. TCHAR szTemp[] = _T("登录失败");
  282. if (TSTRINGLEN(szTemp) > iLen) return false;
  283. StringCchCopy(pBuffer, iLen, szTemp);
  284. return true;
  285. }
  286. //打印通讯日志
  287. void ToShow(int dTablePrivate, DWORD dUserID)
  288. {
  289. TCHAR szBuffer[BUFFERLEN];
  290. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  291. if (ToString(szBuffer, BUFFERLEN, dUserID))
  292. {
  293. mylog::OutputString(szBuffer, dTablePrivate);
  294. }
  295. }
  296. };
  297. //登录完成
  298. struct CMD_GR_LogonFinish
  299. {
  300. bool bGuideTask; //引领任务
  301. //参数转成字符串
  302. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  303. {
  304. if (sizeof(CMD_GR_LogonFinish) * 16 > iLen) return false;
  305. #ifdef _UNICODE
  306. _snwprintf(pBuffer, iLen, TEXT("登录完成->引领任务:%s.")
  307. , bGuideTask ? _T("是") : _T("否"));
  308. #else
  309. _snprintf(pBuffer, iLen, TEXT("登录完成->引领任务:%s.")
  310. , bGuideTask ? _T("是") : _T("否"));
  311. #endif
  312. //mylog::ToSet(pBuffer, iLen, dUserID);
  313. return true;
  314. }
  315. //名字
  316. bool ToName(TCHAR* pBuffer, int iLen)
  317. {
  318. TCHAR szTemp[] = _T("登录完成");
  319. if (TSTRINGLEN(szTemp) > iLen) return false;
  320. StringCchCopy(pBuffer, iLen, szTemp);
  321. return true;
  322. }
  323. //打印通讯日志
  324. void ToShow(int dTablePrivate, DWORD dUserID)
  325. {
  326. TCHAR szBuffer[BUFFERLEN];
  327. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  328. if (ToString(szBuffer, BUFFERLEN, dUserID))
  329. {
  330. mylog::OutputString(szBuffer, dTablePrivate);
  331. }
  332. }
  333. };
  334. //升级提示
  335. struct CMD_GR_UpdateNotify
  336. {
  337. //升级标志
  338. BYTE cbMustUpdatePlaza; //强行升级
  339. BYTE cbMustUpdateClient; //强行升级
  340. BYTE cbAdviceUpdateClient; //建议升级
  341. //当前版本
  342. DWORD dwCurrentPlazaVersion; //当前版本
  343. DWORD dwCurrentFrameVersion; //当前版本
  344. DWORD dwCurrentClientVersion; //当前版本
  345. //参数转成字符串
  346. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  347. {
  348. if (sizeof(CMD_GR_UpdateNotify) * 16 > iLen) return false;
  349. #ifdef _UNICODE
  350. _snwprintf(pBuffer, iLen, TEXT("升级提示->强行升级:%d,强行升级:%d,建议升级:%d,当前版本:%d,当前版本:%d,当前版本:%d.")
  351. , cbMustUpdatePlaza, cbMustUpdateClient, cbAdviceUpdateClient, dwCurrentPlazaVersion, dwCurrentFrameVersion, dwCurrentClientVersion);
  352. #else
  353. _snprintf(pBuffer, iLen, TEXT("升级提示->强行升级:%d,强行升级:%d,建议升级:%d,当前版本:%d,当前版本:%d,当前版本:%d.")
  354. , cbMustUpdatePlaza, cbMustUpdateClient, cbAdviceUpdateClient, dwCurrentPlazaVersion, dwCurrentFrameVersion, dwCurrentClientVersion);
  355. #endif
  356. //mylog::ToSet(pBuffer, iLen, dUserID);
  357. return true;
  358. }
  359. //名字
  360. bool ToName(TCHAR* pBuffer, int iLen)
  361. {
  362. TCHAR szTemp[] = _T("升级提示");
  363. if (TSTRINGLEN(szTemp) > iLen) return false;
  364. StringCchCopy(pBuffer, iLen, szTemp);
  365. return true;
  366. }
  367. //打印通讯日志
  368. void ToShow(int dTablePrivate, DWORD dUserID)
  369. {
  370. TCHAR szBuffer[BUFFERLEN];
  371. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  372. if (ToString(szBuffer, BUFFERLEN, dUserID))
  373. {
  374. mylog::OutputString(szBuffer, dTablePrivate);
  375. }
  376. }
  377. };
  378. //////////////////////////////////////////////////////////////////////////////////
  379. //配置命令
  380. #define MDM_GR_CONFIG 2 //配置信息
  381. #define SUB_GR_CONFIG_COLUMN 100 //列表配置
  382. #define SUB_GR_CONFIG_SERVER 101 //房间配置
  383. #define SUB_GR_CONFIG_PROPERTY 102 //道具配置
  384. #define SUB_GR_CONFIG_FINISH 103 //配置完成
  385. #define SUB_GR_CONFIG_USER_RIGHT 104 //玩家权限
  386. //////////////////////////////////////////////////////////////////////////////////
  387. //列表子项
  388. struct tagColumnItem
  389. {
  390. BYTE cbColumnWidth; //列表宽度
  391. BYTE cbDataDescribe; //字段类型
  392. TCHAR szColumnName[16]; //列表名字
  393. };
  394. //列表配置
  395. struct CMD_GR_ConfigColumn
  396. {
  397. BYTE cbColumnCount; //列表数目
  398. tagColumnItem ColumnItem[MAX_COLUMN]; //列表描述
  399. };
  400. //房间配置
  401. struct CMD_GR_ConfigServer
  402. {
  403. //房间属性
  404. WORD wTableCount; //桌子数目
  405. WORD wChairCount; //椅子数目
  406. //房间配置
  407. WORD wServerType; //房间类型
  408. DWORD dwServerRule; //房间规则
  409. //参数转成字符串
  410. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  411. {
  412. if (sizeof(CMD_GR_ConfigServer) * 16 > iLen) return false;
  413. #ifdef _UNICODE
  414. _snwprintf(pBuffer, iLen, TEXT("房间配置->桌子数目:%d,椅子数目:%d,房间类型:%d,房间规则:%d.")
  415. , wTableCount, wChairCount, wServerType, dwServerRule);
  416. #else
  417. _snprintf(pBuffer, iLen, TEXT("房间配置->桌子数目:%d,椅子数目:%d,房间类型:%d,房间规则:%d.")
  418. , wTableCount, wChairCount, wServerType, dwServerRule);
  419. #endif
  420. //mylog::ToSet(pBuffer, iLen, dUserID);
  421. return true;
  422. }
  423. //名字
  424. bool ToName(TCHAR* pBuffer, int iLen)
  425. {
  426. TCHAR szTemp[] = _T("房间配置");
  427. if (TSTRINGLEN(szTemp) > iLen) return false;
  428. StringCchCopy(pBuffer, iLen, szTemp);
  429. return true;
  430. }
  431. //打印通讯日志
  432. void ToShow(int iTalbeID, DWORD dUserID)
  433. {
  434. TCHAR szBuffer[BUFFERLEN];
  435. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  436. if (ToString(szBuffer, BUFFERLEN, dUserID))
  437. {
  438. mylog::OutputString(szBuffer, iTalbeID);
  439. }
  440. }
  441. };
  442. //道具配置
  443. struct CMD_GR_ConfigProperty
  444. {
  445. BYTE cbPropertyCount; //道具数目
  446. tagPropertyInfo PropertyInfo[MAX_PROPERTY]; //道具描述
  447. };
  448. //玩家权限
  449. struct CMD_GR_ConfigUserRight
  450. {
  451. DWORD dwUserRight; //玩家权限
  452. };
  453. //////////////////////////////////////////////////////////////////////////////////
  454. //用户命令
  455. #define MDM_GR_USER 3 //用户信息
  456. //用户动作
  457. #define SUB_GR_USER_RULE 1 //用户规则
  458. #define SUB_GR_USER_LOOKON 2 //旁观请求
  459. #define SUB_GR_USER_SITDOWN 3 //坐下请求
  460. #define SUB_GR_USER_STANDUP 4 //起立请求
  461. //#define SUB_GR_USER_INVITE 5 //用户邀请
  462. //#define SUB_GR_USER_INVITE_REQ 6 //邀请请求
  463. //#define SUB_GR_USER_REPULSE_SIT 7 //拒绝玩家坐下
  464. //#define SUB_GR_USER_KICK_USER 8 //踢出用户
  465. #define SUB_GR_USER_INFO_REQ 9 //请求用户信息
  466. #define SUB_GR_USER_CHAIR_REQ 10 //请求更换位置
  467. #define SUB_GR_USER_CHAIR_INFO_REQ 11 //请求椅子用户信息
  468. #define SUB_GR_USER_WAIT_DISTRIBUTE 12 //等待分配
  469. #define SUB_GR_USER_GET_GAME_SCORE_RECORD_LIST 13 //获取牌桌游戏数据简要列表
  470. #define SUB_GR_USER_GET_GAME_SCORE_RECORD_DETAIL_INFO 14
  471. #define SUB_GR_USER_GET_GAME_SCORE_RECORD_REPLAY 15 //获取回放记录
  472. #define SUB_GR_USER_GET_GAME_TEMP_SCORE_RANKLIST 16 //获取临时积分排行榜
  473. #define SUB_GR_USER_GET_GAME_TEMP_SCORE_RANKLIST_RESULT 17 //获取临时积分排行榜返回
  474. #define SUB_GR_USER_CREATE 19 //创建房间
  475. #define SUB_GR_USER_ADD 20 //加入房间
  476. #define SUB_GR_USER_SEAT 21 //玩家坐下请求
  477. #define SUB_GR_USER_SEAT_ACK 22 //玩家坐下请求应答
  478. #define SUB_GR_USER_MYROOM_UPDATA 23 //玩家拥有的房间状态更新
  479. #define SUB_GR_USER_GET_DINGDAN_NEW 37 //请求订单新方式
  480. #define SUB_GR_USER_GET_DINGDAN 24 //请求订单
  481. #define SUB_GR_USER_GET_DINGDANACK 25 //请求订单
  482. #define SUB_GR_USER_GET_DINGDANLIST 26 //获取已支付订单列表
  483. #define SUB_GR_USER_GET_DINGDANLISTACK 27 //获取已支付订单列表
  484. #define SUB_GR_USER_GET_BANGDING 28 //绑定代理
  485. #define SUB_GR_USER_GET_BANGDINGACK 29 //绑定代理返回
  486. #define SUB_GR_USER_GET_BEAN 30 //请求更新元宝
  487. #define SUB_GR_USER_GET_BEAN_RESULT 31 //请求更新元宝 数据库应答
  488. #define SUB_GR_USER_GETADD_INFO 32 //获取加入房间信息
  489. #define SUB_GR_USER_GETADD_INFO_ACK 33 //获取加入房间信息应答
  490. #define SUB_GR_USER_DAILI_INFO 34 //获取绑定代理信息
  491. #define SUB_GR_USER_DAILI_INFO_ACK 35 //获取绑定代理信息
  492. #define SUB_GR_USER_GET_VERIF_CODE 36 //获取手机验证码
  493. #define SUB_GR_USER_CHECK_IPHONE 38 //绑定手机号写入
  494. #define SUB_GR_USER_CHECK_IPHONE_QUERY 39 //绑定手机号查询
  495. #define SUB_GR_USER_CHECK_NAME 40 //实名认证写入
  496. #define SUB_GR_USER_CHECK_NAME_QUERY 41 //实名认证查询
  497. #define SUB_GR_USER_SHRAE_AWARD_BEAN 42 //分享奖励钻石请求
  498. #define SUB_GR_USER_SHRAE_AWARD_BEAN_RESULT 43 //分享奖励钻石结果
  499. #define SUB_GR_USER_SHRAE_INFO 44 //用户当天分享奖励信息请求
  500. #define SUB_GR_USER_SHRAE_INFO_RESULT 45 //用户当天分享奖励信息结果
  501. #define SUB_GR_USER_TOP_WIN_LIST 46 ///+++胜局榜
  502. #define SUB_GR_USER_TOP_WIN_LIST_ACK 47 ///+++胜局榜应答
  503. #define SUB_GR_USER_RELIEF_NOTIFY 48 ///+++破产补助通知信息
  504. #define SUB_GR_USER_GET_RELIEF 49 ///+++领取破产补助
  505. #define SUB_GR_USER_GET_RELIEF_ACK 50 ///+++领取破产补助应答
  506. #define SUB_GR_USER_PRIVATE_GAME_SVR 51 ///+++拉取好友房服务器
  507. #define SUB_GR_USER_PRIVATE_GAME_SVR_ACK 52 ///+++拉取好友房服务器应答
  508. #define SUB_GR_USER_GET_AGENT_YELLOW_CARD 53 ///+++获取代理“黄牌”信息(只作透传)
  509. #define SUB_GR_USER_GET_AGENT_YELLOW_CARD_ACK 54
  510. #define SUB_GR_USER_UNBIND_YELLOW_CARD_AGENT 55 ///+++解绑黄牌代理(只作透传)
  511. #define SUB_GR_USER_UNBIND_YELLOW_CARD_AGENT_ACK 56
  512. #define SUB_GR_USER_APPLY_UNTIE_AGENT 57 ///+++自主申请解绑(只作透传)
  513. #define SUB_GR_USER_APPLY_UNTIE_AGENT_ACK 58 //解绑应答
  514. #define SUB_GR_USER_GET_UNTIE_AGENT_INFO 59 ///用户获得代理解绑相关信息
  515. #define SUB_GR_USER_GET_UNTIE_AGENT_INFO_ACK 60 //用户获得代理解绑相关信息应答
  516. #define SUB_GR_USER_CHECK_XIANLIAO 61 //闲聊
  517. //用户状态
  518. #define SUB_GR_USER_ENTER 100 //用户进入
  519. #define SUB_GR_USER_SCORE 101 //用户分数
  520. #define SUB_GR_USER_STATUS 102 //用户状态
  521. #define SUB_GR_REQUEST_FAILURE 103 //请求失败
  522. #define SUB_GR_USER_BEAN 104 //用户游戏豆
  523. #define SUB_GR_USER_PRIVATE_TABLE_ID 105 //通知私有房间ID
  524. #define SUB_GR_LOCK_BEAN 106 //元宝锁定
  525. #define SUB_GR_UNLOCK_BEAN 107 //元宝解锁
  526. #define SUB_GR_USER_ADDCREATE_TABLE_ID 108 //创建加入房间应答
  527. #define SUB_GR_USER_ADDCREATE_TABLE_ALL 109 //通知创建的所有房间列表
  528. #define SUB_GR_DELETE_PRIVATE_TABLE_REQ 110 //请求删除私有房间
  529. #define SUB_GR_DELETE_PRIVATE_TABLE_RESP 111 //请求删除私有房间响应消息(同意?不同意?)
  530. #define SUB_GR_DELETE_PRIVATE_TABLE_RESULT 112 //请求删除私有房间de结果消息(成功?失败?)
  531. #define SUB_GR_USER_QINGQIUJIESAN 113 //游戏未开始前,房主请求解散。
  532. ///+++福利信息
  533. #define SUB_GP_WELFARE_INFO 186 //福利信息
  534. #define SUB_GP_WELFARE_INFO_ACK 187 //福利信息结果
  535. #define SUB_GP_WENLIN_SHUFFLE 189 //洗牌动画 获取砖石数据 传空值给服务器
  536. #define SUB_GP_WENLIN_SHUFFLE_ACK 190 //洗牌动画 获取砖石数据应答
  537. //聊天命令
  538. #define SUB_GR_USER_CHAT 201 //聊天消息
  539. #define SUB_GR_USER_EXPRESSION 202 //表情消息
  540. #define SUB_GR_WISPER_CHAT 203 //私聊消息
  541. #define SUB_GR_WISPER_EXPRESSION 204 //私聊表情
  542. #define SUB_GR_COLLOQUY_CHAT 205 //会话消息
  543. #define SUB_GR_COLLOQUY_EXPRESSION 206 //会话表情
  544. ///+++签到服务
  545. #define SUB_GP_CHECKIN_REWARD2 180 //签到奖品
  546. #define SUB_GP_CHECKIN_REWARD2_ACK 181 //签到奖品结果
  547. #define SUB_GP_CHECKIN_INFO2 182 //签到信息
  548. #define SUB_GP_CHECKIN_INFO2_ACK 183 //签到信息结果
  549. #define SUB_GP_CHECKIN_DONE2 184 //执行签到
  550. #define SUB_GP_CHECKIN_DONE2_ACK 185 //签到结果
  551. //道具命令
  552. //#define SUB_GR_PROPERTY_BUY 300 //购买道具
  553. //#define SUB_GR_PROPERTY_SUCCESS 301 //道具成功
  554. //#define SUB_GR_PROPERTY_FAILURE 302 //道具失败
  555. #define SUB_GR_PROPERTY_MESSAGE 303 //道具消息
  556. #define SUB_GR_PROPERTY_EFFECT 304 //道具效应
  557. #define SUB_GR_PROPERTY_TRUMPET 305 //喇叭消息
  558. //proto新加协议
  559. #define SUB_GR_USER_GET_GAME_SCORE_RECORD_LISTACK 400 //获取牌桌游戏数据简要列表返回
  560. #define SUB_GR_USER_GET_GAME_SCORE_RECORD_REPLAYACK 401 //获取回放记录回复
  561. //玩家已开房房间信息
  562. struct JN_GR_RoomListEx
  563. {
  564. DWORD dwUserID; //拥有人
  565. DWORD dwServerID; //服务器ID
  566. DWORD dwRoomNumber; //私有房间号
  567. DWORD dwInsert_UpData_Del; //添加更新删除 0 , 1, 2
  568. DWORD dwDiFen; //底分
  569. DWORD dwJuShu; //局数
  570. DWORD dwReadyBody; //已有人数
  571. DWORD dwBody; //总人数
  572. BYTE bWanFa; //玩法
  573. TCHAR szIp[20]; //IP
  574. byte bDuoLai; //多癞子可平胡,0可以 1不可以
  575. WORD wFengDing; //封顶值
  576. byte tmp1; //备用字段
  577. byte tmp2; //备用字段
  578. byte tmp3; //备用字段
  579. byte tmp4; //备用字段
  580. byte tmp5; //备用字段
  581. int tmp6[4]; //备用
  582. WORD wPort; //端口
  583. //参数转成字符串
  584. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  585. {
  586. if (sizeof(JN_GR_RoomListEx) * 16 > iLen) return false;
  587. TCHAR szTemp[16];
  588. ZeroMemory(szTemp, 16 * sizeof(TCHAR));
  589. switch (dwInsert_UpData_Del)
  590. {
  591. case 0:
  592. StringCchCat(szTemp, 32, _TEXT("添加"));
  593. break;
  594. case 1:
  595. StringCchCat(szTemp, 32, _TEXT("更新"));
  596. break;
  597. case 2:
  598. StringCchCat(szTemp, 32, _TEXT("删除"));
  599. break;
  600. default:
  601. break;
  602. }
  603. #ifdef _UNICODE
  604. _snwprintf(pBuffer, iLen, TEXT("玩家已开房房间信息->拥有人:%d,服务器ID:%d,私有房间号:%d,添加更新删除:%s,底分:%d,局数:%d,已有人数:%d,总人数:%d,玩法:%d,bDuoLai=%d,wFengDing=%d")
  605. , dwUserID, dwServerID, dwRoomNumber, szTemp, dwDiFen, dwJuShu, dwReadyBody, dwBody, bWanFa, bDuoLai, wFengDing);
  606. #else
  607. _snwprintf(pBuffer, iLen, TEXT("玩家已开房房间信息->拥有人:%d,服务器ID:%d,私有房间号:%d,添加更新删除:%s,底分:%d,局数:%d,已有人数:%d,总人数:%d,玩法:%d,bDuoLai=%d,wFengDing=%d")
  608. , dwUserID, dwServerID, dwRoomNumber, szTemp, dwDiFen, dwJuShu, dwReadyBody, dwBody, bWanFa, bDuoLai, wFengDing);
  609. #endif
  610. //mylog::ToSet(pBuffer, iLen, dUserID);
  611. return true;
  612. }
  613. //名字
  614. bool ToName(TCHAR* pBuffer, int iLen)
  615. {
  616. TCHAR szTemp[] = _T("玩家已开房房间信息");
  617. if (TSTRINGLEN(szTemp) > iLen) return false;
  618. StringCchCopy(pBuffer, iLen, szTemp);
  619. return true;
  620. }
  621. //打印通讯日志
  622. void ToShow(int dTablePrivate, DWORD dUserID)
  623. {
  624. TCHAR szBuffer[BUFFERLEN];
  625. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  626. if (ToString(szBuffer, BUFFERLEN, dUserID))
  627. {
  628. mylog::OutputString(szBuffer, dTablePrivate);
  629. }
  630. }
  631. };
  632. //玩家已开房房间信息
  633. struct JN_GR_RoomListExGig
  634. {
  635. DWORD dwUserID; //拥有人
  636. DWORD dwServerID; //服务器ID
  637. DWORD dwRoomNumber; //私有房间号
  638. DWORD dwInsert_UpData_Del; //添加更新删除 0 , 1, 2
  639. DWORD dwDiFen; //底分
  640. DWORD dwJuShu; //局数
  641. DWORD dwReadyBody; //已有人数
  642. DWORD dwBody; //总人数
  643. BYTE bWanFa; //玩法
  644. TCHAR szIp[32]; //IP
  645. WORD wPort; //端口
  646. BYTE bRoomCreatePay; //是否为房主支付
  647. BYTE bFanGua; //是否反作弊 1 是 0 否
  648. TCHAR szName[12]; //昵称
  649. //参数转成字符串
  650. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  651. {
  652. if (sizeof(JN_GR_RoomListEx) * 16 > iLen) return false;
  653. TCHAR szTemp[16];
  654. ZeroMemory(szTemp, 16 * sizeof(TCHAR));
  655. switch (dwInsert_UpData_Del)
  656. {
  657. case 0:
  658. StringCchCat(szTemp, 32, _TEXT("添加"));
  659. break;
  660. case 1:
  661. StringCchCat(szTemp, 32, _TEXT("更新"));
  662. break;
  663. case 2:
  664. StringCchCat(szTemp, 32, _TEXT("删除"));
  665. break;
  666. default:
  667. break;
  668. }
  669. #ifdef _UNICODE
  670. _snwprintf(pBuffer, iLen, TEXT("玩家已开房房间信息->拥有人:%d,服务器ID:%d,私有房间号:%d,添加更新删除:%s,底分:%d,局数:%d,已有人数:%d,总人数:%d,玩法:%d.")
  671. , dwUserID, dwServerID, dwRoomNumber, szTemp, dwDiFen, dwJuShu, dwReadyBody, dwBody, bWanFa);
  672. #else
  673. _snprintf(pBuffer, iLen, TEXT("玩家已开房房间信息->拥有人:%d,服务器ID:%d,私有房间号:%d,添加更新删除:%s,底分:%d,局数:%d,已有人数:%d,总人数:%d,玩法:%d.")
  674. , dwUserID, dwServerID, dwRoomNumber, szTemp, dwDiFen, dwJuShu, dwReadyBody, dwBody, bWanFa);
  675. #endif
  676. //mylog::ToSet(pBuffer, iLen, dUserID);
  677. return true;
  678. }
  679. //名字
  680. bool ToName(TCHAR* pBuffer, int iLen)
  681. {
  682. TCHAR szTemp[] = _T("玩家已开房房间信息");
  683. if (TSTRINGLEN(szTemp) > iLen) return false;
  684. StringCchCopy(pBuffer, iLen, szTemp);
  685. return true;
  686. }
  687. //打印通讯日志
  688. void ToShow(int dTablePrivate, DWORD dUserID)
  689. {
  690. TCHAR szBuffer[BUFFERLEN];
  691. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  692. if (ToString(szBuffer, BUFFERLEN, dUserID))
  693. {
  694. mylog::OutputString(szBuffer, dTablePrivate);
  695. }
  696. }
  697. };
  698. //////////////////////////////////////////////////////////////////////////////////
  699. //玩家已开房房间列表
  700. struct JN_GR_RoomListGroupEx
  701. {
  702. JN_GR_RoomListExGig jgrDate[10];
  703. DWORD Num;//总共开房数
  704. //参数转成字符串
  705. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  706. {
  707. if (sizeof(JN_GR_RoomListGroupEx) * 16 > iLen) return false;
  708. TCHAR szBuffer2[BUFFERLEN];
  709. ZeroMemory(szBuffer2, BUFFERLEN * sizeof(TCHAR));
  710. int iA = Num >10 ? 10: Num;
  711. for (INT i = 0; i < iA; i++)
  712. {
  713. TCHAR szBuffer[BUFFERLEN];
  714. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  715. jgrDate[i].ToString(szBuffer, BUFFERLEN, dUserID);
  716. StringCchCat(szBuffer2, BUFFERLEN, szBuffer);
  717. }
  718. #ifdef _UNICODE
  719. _snwprintf(pBuffer, iLen, TEXT("玩家已开房房间列表->总共开房数:%d,具体房间信息:\r\n[%s].")
  720. , Num, szBuffer2);
  721. #else
  722. _snprintf(pBuffer, iLen, TEXT("玩家已开房房间列表->总共开房数:%d,具体房间信息:\r\n[%s].")
  723. , Num, szBuffer2);
  724. #endif
  725. //mylog::ToSet(pBuffer, iLen, dUserID);
  726. return true;
  727. }
  728. //名字
  729. bool ToName(TCHAR* pBuffer, int iLen)
  730. {
  731. TCHAR szTemp[] = _T("玩家已开房房间列表");
  732. if (TSTRINGLEN(szTemp) > iLen) return false;
  733. StringCchCopy(pBuffer, iLen, szTemp);
  734. return true;
  735. }
  736. //打印通讯日志
  737. void ToShow(int dTablePrivate, DWORD dUserID)
  738. {
  739. TCHAR szBuffer[BUFFERLEN];
  740. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  741. if (ToString(szBuffer, BUFFERLEN, dUserID))
  742. {
  743. mylog::OutputString(szBuffer, dTablePrivate);
  744. }
  745. }
  746. };
  747. //用户信息
  748. struct tagMobileUserInfoHead
  749. {
  750. //用户属性
  751. DWORD dwGameID; //游戏 I D
  752. DWORD dwUserID; //用户 I D
  753. //头像信息
  754. WORD wFaceID; //头像索引
  755. DWORD dwCustomID; //自定标识
  756. //用户属性
  757. BYTE cbGender; //用户性别
  758. BYTE cbMemberOrder; //会员等级
  759. //用户状态
  760. WORD wTableID; //桌子索引
  761. WORD wChairID; //椅子索引
  762. BYTE cbUserStatus; //用户状态
  763. //积分信息
  764. SCORE lScore; //用户分数
  765. //游戏信息
  766. DWORD dwWinCount; //胜利盘数
  767. DWORD dwLostCount; //失败盘数
  768. DWORD dwDrawCount; //和局盘数
  769. DWORD dwFleeCount; //逃跑盘数
  770. DWORD dwExperience; //用户经验
  771. TCHAR szNickname[LEN_NICKNAME]; //三方头像地址
  772. TCHAR szHeadUrl[LEN_HEAD_URL]; //三方头像地址
  773. DWORD dwClientAddr; //IP地址
  774. int iXinYong; //该用户信用值
  775. TCHAR RetTime[11]; //注册时间
  776. TCHAR ChengShi[20]; //城市
  777. LONGLONG llDingWeiX; //该玩家定位数据
  778. LONGLONG llDingWeiY; //该玩家定位数据
  779. int iJiePing; //反作场弊房,截屏次数。
  780. //参数转成字符串
  781. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  782. {
  783. //if (sizeof(tagMobileUserInfoHead) * 10 > iLen) return false;
  784. TCHAR szTemp[32];
  785. ZeroMemory(szTemp, 32 * sizeof(TCHAR));
  786. switch (cbUserStatus)
  787. {
  788. case US_NULL:
  789. StringCchCat(szTemp, 32, _TEXT("没有状态"));
  790. break;
  791. case US_FREE:
  792. StringCchCat(szTemp, 32, _TEXT("大厅状态"));
  793. break;
  794. case US_SIT:
  795. StringCchCat(szTemp, 32, _TEXT("坐下状态"));
  796. break;
  797. case US_READY:
  798. StringCchCat(szTemp, 32, _TEXT("准备状态"));
  799. break;
  800. case US_LOOKON:
  801. StringCchCat(szTemp, 32, _TEXT("旁观状态"));
  802. break;
  803. case US_PLAYING:
  804. StringCchCat(szTemp, 32, _TEXT("游戏状态"));
  805. break;
  806. case US_OFFLINE:
  807. StringCchCat(szTemp, 32, _TEXT("断线状态"));
  808. break;
  809. default:
  810. break;
  811. }
  812. /*TCHAR strIP[64];
  813. ZeroMemory(strIP, 64*sizeof(TCHAR));
  814. WORD add1, add2, add3, add4;
  815. add1 = (WORD)(dwClientAddr & 255);
  816. add2 = (WORD)((dwClientAddr >> 8) & 255);
  817. add3 = (WORD)((dwClientAddr >> 16) & 255);
  818. add4 = (WORD)((dwClientAddr >> 24) & 255);*/
  819. #ifdef _UNICODE
  820. /*_snwprintf(strIP, 64, _T("%d.%d.%d.%d"), add1, add2, add3, add4);*/
  821. _snwprintf(pBuffer, iLen, TEXT("<br>【用户信息】游戏ID:%d,用户ID:%d,头像索引:%d,自定标识:%d,用户性别:%d,会员等级:%d,桌子索引:%d\
  822. ,椅子索引:%d,用户状态:%s,用户分数:%lld,胜利盘数:%d,失败盘数:%d,和局盘数:%d,逃跑盘数:%d,用户经验:%d,三方昵称:%s")
  823. , dwGameID, dwUserID, wFaceID, dwCustomID, cbGender, cbMemberOrder, wTableID
  824. , wChairID, szTemp, lScore, dwWinCount, dwLostCount, dwDrawCount, dwFleeCount, dwExperience
  825. , szNickname);
  826. #else
  827. /*_snprintf(strIP, 64, _T("%d.%d.%d.%d"), add1, add2, add3, add4);*/
  828. _snprintf(pBuffer, iLen, TEXT("<br>【用户信息】游戏ID:%d,用户ID:%d,头像索引:%d,自定标识:%d,用户性别:%d,会员等级:%d,桌子索引:%d\
  829. ,椅子索引:%d,用户状态:%s,用户分数:%lld,胜利盘数:%d,失败盘数:%d,和局盘数:%d,逃跑盘数:%d,用户经验:%d,三方昵称:%s,三方头像:%s,IP地址:%s.")
  830. , dwGameID, dwUserID, wFaceID, dwCustomID, cbGender, cbMemberOrder, wTableID, wChairID, szTemp, lScore, dwWinCount
  831. , dwLostCount, dwDrawCount, dwFleeCount, dwExperience, szNickname, szHeadUrl, strIP);
  832. #endif
  833. ////mylog::ToSet(pBuffer, iLen, dUserID);
  834. return true;
  835. }
  836. //参数转成字符串
  837. bool ToStringEx(TCHAR* pBuffer, int iLen, DWORD dUserID)
  838. {
  839. //if (sizeof(tagMobileUserInfoHead) * 10 > iLen) return false;
  840. TCHAR szTemp[32];
  841. ZeroMemory(szTemp, 32 * sizeof(TCHAR));
  842. switch (cbUserStatus)
  843. {
  844. case US_NULL:
  845. StringCchCat(szTemp, 32, _TEXT("没有状态"));
  846. break;
  847. case US_FREE:
  848. StringCchCat(szTemp, 32, _TEXT("大厅状态"));
  849. break;
  850. case US_SIT:
  851. StringCchCat(szTemp, 32, _TEXT("坐下状态"));
  852. break;
  853. case US_READY:
  854. StringCchCat(szTemp, 32, _TEXT("准备状态"));
  855. break;
  856. case US_LOOKON:
  857. StringCchCat(szTemp, 32, _TEXT("旁观状态"));
  858. break;
  859. case US_PLAYING:
  860. StringCchCat(szTemp, 32, _TEXT("游戏状态"));
  861. break;
  862. case US_OFFLINE:
  863. StringCchCat(szTemp, 32, _TEXT("断线状态"));
  864. break;
  865. default:
  866. break;
  867. }
  868. /*TCHAR strIP[64];
  869. ZeroMemory(strIP, 64 * sizeof(TCHAR));
  870. WORD add1, add2, add3, add4;
  871. add1 = (WORD)(dwClientAddr & 255);
  872. add2 = (WORD)((dwClientAddr >> 8) & 255);
  873. add3 = (WORD)((dwClientAddr >> 16) & 255);
  874. add4 = (WORD)((dwClientAddr >> 24) & 255);*/
  875. #ifdef _UNICODE
  876. /*_snwprintf(strIP, 64, _T("%d.%d.%d.%d"), add1, add2, add3, add4);*/
  877. _snwprintf(pBuffer, iLen, TEXT("<br>【用户进入】游戏ID:%d,用户ID:%d,头像索引:%d,自定标识:%d,用户性别:%d,会员等级:%d,桌子索引:%d,椅子索引:%d,用户状态:%s,用户分数:%lld,胜利盘数:%d,失败盘数:%d,和局盘数:%d,逃跑盘数:%d,用户经验:%d")
  878. , dwGameID, dwUserID, wFaceID, dwCustomID, cbGender, cbMemberOrder, wTableID, wChairID, szTemp, lScore, dwWinCount, dwLostCount, dwDrawCount, dwFleeCount, dwExperience);
  879. //_snwprintf(pBuffer, iLen, TEXT("<br>【用户进入】游戏ID:%d,用户ID:%d,头像索引:%d,自定标识:%d,用户性别:%d,会员等级:%d,桌子索引:%d\
  880. // ,椅子索引:%d,用户状态:%s,用户分数:%ld,胜利盘数:%d,失败盘数:%d,和局盘数:%d,逃跑盘数:%d,用户经验:%d,三方昵称:%s")
  881. // , dwGameID, dwUserID, wFaceID, dwCustomID, cbGender, cbMemberOrder, wTableID
  882. // , wChairID, szTemp, lScore, dwWinCount, dwLostCount, dwDrawCount, dwFleeCount, dwExperience
  883. // , szNickname);
  884. #else
  885. /*_snprintf(strIP, 64, _T("%d.%d.%d.%d"), add1, add2, add3, add4);*/
  886. _snprintf(pBuffer, iLen, TEXT("<br>【用户进入】游戏ID:%d,用户ID:%d,头像索引:%d,自定标识:%d,用户性别:%d,会员等级:%d,桌子索引:%d\
  887. ,椅子索引:%d,用户状态:%s,用户分数:%d,胜利盘数:%d,失败盘数:%d,和局盘数:%d,逃跑盘数:%d,用户经验:%d,三方昵称:%s,三方头像:%s,IP地址:%s.")
  888. , dwGameID, dwUserID, wFaceID, dwCustomID, cbGender, cbMemberOrder, wTableID, wChairID, szTemp, lScore, dwWinCount
  889. , dwLostCount, dwDrawCount, dwFleeCount, dwExperience, szNickname, szHeadUrl, strIP);
  890. #endif
  891. //mylog::ToSet(pBuffer, iLen, dUserID);
  892. return true;
  893. }
  894. //名字
  895. bool ToName(TCHAR* pBuffer, int iLen)
  896. {
  897. TCHAR szTemp[] = _T("用户进入");
  898. if (TSTRINGLEN(szTemp) > iLen) return false;
  899. StringCchCopy(pBuffer, iLen, szTemp);
  900. return true;
  901. }
  902. //打印通讯日志
  903. void ToShow(int dTablePrivate, DWORD dUserID)
  904. {
  905. TCHAR szBuffer[BUFFERLEN*3];
  906. ZeroMemory(szBuffer, BUFFERLEN *3 * sizeof(TCHAR));
  907. if (ToStringEx(szBuffer, BUFFERLEN * 3, dUserID))
  908. {
  909. mylog::OutputString(szBuffer, dTablePrivate);
  910. }
  911. }
  912. };
  913. //////////////////////////////////////////////////////////////////////////////////
  914. struct tagUserRankListInfo
  915. {
  916. DWORD dwUserID;
  917. TCHAR szNickName[LEN_NICKNAME];
  918. int lScore;
  919. WORD wWinCount; //胜利场数
  920. WORD wLostCount; //失败场数
  921. TCHAR szHeadUrl[LEN_HEAD_URL];
  922. };
  923. //获取临时积分排行榜返回
  924. struct CMD_GR_USER_GET_GAME_TEMP_SCORE_RANKLIST_RESULT
  925. {
  926. WORD wRankListCount; //排行榜数[]
  927. char ranklist[0]; //排行榜数据
  928. //tagUserRankListInfo ranklist; //私有房间号
  929. };
  930. //通知私有房间ID
  931. struct CMD_GR_USER_PRIVATE_TABLE_ID
  932. {
  933. TCHAR szPrivateTableID[LEN_PRIVATE_TABLE_ID]; //私有房间号
  934. };
  935. //旁观请求
  936. struct CMD_GR_UserLookon
  937. {
  938. WORD wTableID; //桌子位置
  939. TCHAR szPrivteTableID[11]; //私人桌子号码
  940. };
  941. struct tagGameConfig
  942. {
  943. WORD wSubGameID; //子游戏类型(0一脚赖油,1无赖到底,2半赖,3血流)
  944. DWORD wPlayRule; //底分
  945. WORD wMaxFanRule; //房费(0房间创建者,1打牌者平摊)
  946. WORD wMaxScore; //IP限制(0限制,1不限制)
  947. WORD wPlayCountRule; //一次玩的局数(8局?16局?)
  948. WORD wHadPlayCount; //桌子号
  949. WORD zmExtraRule; //是否是房主
  950. WORD dghRule; //
  951. TCHAR sPrivateTableID[7];
  952. byte bDuoLai; //多癞子可平胡,1 不能放冲 0 能放冲胡吧----推倒胡 用这个值标示 是否可以放冲胡
  953. WORD wFengDing; //封顶值
  954. byte tmp1; //备用字段
  955. byte tmp2; //备用字段
  956. byte tmp3; //备用字段
  957. byte tmp4; //备用字段
  958. byte tmp5; //备用字段
  959. };
  960. //创建进入房间
  961. struct CMD_GR_UserSitDown
  962. {
  963. WORD WXianZhi; //限制元宝
  964. WORD Wsocket; //椅子位置
  965. TCHAR szPassword[LEN_PASSWORD]; //
  966. byte cbCreateTable; //是否新建一个桌子
  967. TCHAR szPrivateTableID[7]; //私有桌子号
  968. byte bDuoLai; //多癞子可平胡,0可以 1不可以
  969. WORD wFengDing; //封顶值
  970. byte tableType; //备用字段 1表示俱乐部房间
  971. int clubID; //备用字段
  972. tagGameConfig TableConfig[20]; //创建私有桌子时的配置信息
  973. //参数转成字符串
  974. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  975. {
  976. if (sizeof(CMD_GR_UserSitDown) * 16 > iLen) return false;
  977. #ifdef _UNICODE
  978. _snwprintf(pBuffer, iLen, TEXT("创建进入房间->限制元宝:%d,椅子位置:%d,是否新建一个桌子:%d,私有桌子号:%s.")
  979. , WXianZhi, Wsocket, cbCreateTable, szPrivateTableID);
  980. #else
  981. _snprintf(pBuffer, iLen, TEXT("创建进入房间->限制元宝:%d,椅子位置:%d,是否新建一个桌子:%d,私有桌子号:%s.")
  982. , WXianZhi, Wsocket, cbCreateTable, szPrivateTableID);
  983. #endif
  984. //mylog::ToSet(pBuffer, iLen, dUserID);
  985. return true;
  986. }
  987. //名字
  988. bool ToName(TCHAR* pBuffer, int iLen)
  989. {
  990. TCHAR szTemp[] = _T("创建进入房间");
  991. if (TSTRINGLEN(szTemp) > iLen) return false;
  992. StringCchCopy(pBuffer, iLen, szTemp);
  993. return true;
  994. }
  995. //打印通讯日志
  996. void ToShow(int dTablePrivate, DWORD dUserID)
  997. {
  998. TCHAR szBuffer[BUFFERLEN];
  999. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  1000. if (ToString(szBuffer, BUFFERLEN, dUserID))
  1001. {
  1002. mylog::OutputString(szBuffer, dTablePrivate);
  1003. }
  1004. }
  1005. };
  1006. //创建进入房间
  1007. struct CMD_GR_UserSitDownEx
  1008. {
  1009. DWORD dwUserID; //当前用户id
  1010. BYTE cbAuto; //是否自动开房
  1011. CMD_GR_UserInfo hostInfo; //自动开房群主信息
  1012. BYTE cbWanFa; //用来表示俱乐部自动开房玩法0,1,2
  1013. DWORD RoomID; //私有随机房间号
  1014. CMD_GR_UserSitDown data;
  1015. };
  1016. struct CMD_GR_Club_Notify_ACKEX
  1017. {
  1018. WORD newsFalg;
  1019. WORD Temp;
  1020. TCHAR Message[255];
  1021. DWORD dwClubID;
  1022. DWORD dwUserCount;
  1023. };
  1024. //创建进入房间2
  1025. struct CMD_GR_UserSitDownEx2
  1026. {
  1027. DWORD dwUesrID; //触发自动创房的当前用户
  1028. BYTE cbAuto; //是否自动开房
  1029. CMD_GR_UserInfo hostInfo; //自动开房群主信息
  1030. DWORD ReduceBeans; //减去的砖石
  1031. BYTE cbWanFa; //用来表示俱乐部自动开房玩法0,1,2
  1032. DWORD RoomID; //私有随机房间号
  1033. CMD_GR_UserSitDown data;
  1034. };
  1035. //获取私人房间号信息
  1036. struct CMD_GR_GetPrivateRoomInfo
  1037. {
  1038. DWORD RoomID; //私有随机房间号
  1039. };
  1040. //创建进入房间
  1041. struct CMD_GR_UserJoin
  1042. {
  1043. WORD wTableID; //桌子位置
  1044. WORD wChairID; //椅子位置
  1045. TCHAR szPassword[LEN_PASSWORD]; //
  1046. byte cbCreateTable; //是否新建一个桌子
  1047. TCHAR szPrivateTableID[7]; //私有桌子号
  1048. byte bDuoLai; //多癞子可平胡,0可以 1不可以
  1049. WORD wFengDing; //封顶值
  1050. byte tmp1; //备用字段
  1051. int tmp2; //备用字段
  1052. char TableConfig[0]; //创建私有桌子时的配置信息
  1053. //参数转成字符串
  1054. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  1055. {
  1056. if (sizeof(CMD_GR_UserJoin) * 16 > iLen) return false;
  1057. #ifdef _UNICODE
  1058. _snwprintf(pBuffer, iLen, TEXT("加入房间->桌子位置:%d,椅子位置:%d,是否新建一个桌子:%d,私有桌子号:%s.")
  1059. , wTableID, wChairID, cbCreateTable, szPrivateTableID);
  1060. #else
  1061. _snprintf(pBuffer, iLen, TEXT("加入房间->桌子位置:%d,椅子位置:%d,是否新建一个桌子:%d,私有桌子号:%s.")
  1062. , wTableID, wChairID, cbCreateTable, szPrivateTableID);
  1063. #endif
  1064. //mylog::ToSet(pBuffer, iLen, dUserID);
  1065. return true;
  1066. }
  1067. //名字
  1068. bool ToName(TCHAR* pBuffer, int iLen)
  1069. {
  1070. TCHAR szTemp[] = _T("加入进入房间");
  1071. if (TSTRINGLEN(szTemp) > iLen) return false;
  1072. StringCchCopy(pBuffer, iLen, szTemp);
  1073. return true;
  1074. }
  1075. //打印通讯日志
  1076. void ToShow(int dTablePrivate, DWORD dUserID)
  1077. {
  1078. TCHAR szBuffer[BUFFERLEN];
  1079. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  1080. if (ToString(szBuffer, BUFFERLEN, dUserID))
  1081. {
  1082. mylog::OutputString(szBuffer, dTablePrivate);
  1083. }
  1084. }
  1085. };
  1086. //获取订单编号应答
  1087. struct CMD_GR_GetDingDanACK
  1088. {
  1089. TCHAR szClientAddr[16]; //客户端IP地址
  1090. DWORD dwGameID;
  1091. DWORD dUserID;
  1092. DWORD dDaiLi; //代理ID
  1093. BYTE bLen; //结果长度
  1094. TCHAR szRet[2048]; //请求的结果
  1095. //参数转成字符串
  1096. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  1097. {
  1098. //if (sizeof(CMD_GR_GetDingDanACK) * 16 > iLen) return false;
  1099. #ifdef _UNICODE
  1100. _snwprintf(pBuffer, iLen, TEXT("获取订单编号应答->结果长度:%d,请求的结果:%s."), bLen, szRet);
  1101. #else
  1102. _snprintf(pBuffer, iLen, TEXT("获取订单编号应答->结果长度:%d,请求的结果:%s."), bLen, szRet);
  1103. #endif
  1104. //mylog::ToSet(pBuffer, iLen, dUserID);
  1105. return true;
  1106. }
  1107. //名字
  1108. bool ToName(TCHAR* pBuffer, int iLen)
  1109. {
  1110. TCHAR szTemp[] = _T("获取订单编号应答");
  1111. if (TSTRINGLEN(szTemp) > iLen) return false;
  1112. StringCchCopy(pBuffer, iLen, szTemp);
  1113. return true;
  1114. }
  1115. //打印通讯日志
  1116. void ToShow(int dTablePrivate, DWORD dUserID)
  1117. {
  1118. TCHAR szBuffer[BUFFERLEN];
  1119. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  1120. if (ToString(szBuffer, BUFFERLEN, dUserID))
  1121. {
  1122. mylog::OutputString(szBuffer, dTablePrivate);
  1123. }
  1124. }
  1125. };
  1126. //人物信息
  1127. struct CMD_GR_Info
  1128. {
  1129. TCHAR szName[32];
  1130. TCHAR szImgHead[256];
  1131. };
  1132. //传输闲聊所需信息
  1133. struct CDM_GR_XIANL_Info
  1134. {
  1135. int userID;
  1136. int gScore;
  1137. TCHAR szName[32];
  1138. TCHAR szImgHead[256];
  1139. };
  1140. //绑定代理信息
  1141. struct CMD_GR_DaiLiInfo
  1142. {
  1143. TCHAR szName[32]; //代理
  1144. TCHAR szWx[32]; //代理微信
  1145. TCHAR szQQ[32]; //代理QQ
  1146. //参数转成字符串
  1147. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  1148. {
  1149. //if (sizeof(CMD_GR_BangDing) * 16 > iLen) return false;
  1150. #ifdef _UNICODE
  1151. _snwprintf(pBuffer, iLen, TEXT("获取代理信息->代理姓名:%s,代理微信:%s,代理QQ:%s"), szName, szWx, szQQ);
  1152. #else
  1153. _snprintf(pBuffer, iLen, TEXT("获取代理信息->代理姓名:%s,代理微信:%s,代理QQ:%s"), szName, szWx, szQQ);
  1154. #endif
  1155. //mylog::ToSet(pBuffer, iLen, dUserID);
  1156. return true;
  1157. }
  1158. //名字
  1159. bool ToName(TCHAR* pBuffer, int iLen)
  1160. {
  1161. TCHAR szTemp[] = _T("获取代理信息");
  1162. if (TSTRINGLEN(szTemp) > iLen) return false;
  1163. StringCchCopy(pBuffer, iLen, szTemp);
  1164. return true;
  1165. }
  1166. //打印通讯日志
  1167. void ToShow(int dTablePrivate, DWORD dUserID)
  1168. {
  1169. TCHAR szBuffer[BUFFERLEN];
  1170. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  1171. if (ToString(szBuffer, BUFFERLEN, dUserID))
  1172. {
  1173. mylog::OutputString(szBuffer, dTablePrivate);
  1174. }
  1175. }
  1176. };
  1177. //绑定代理
  1178. struct CMD_GR_BangDing
  1179. {
  1180. DWORD dDaiLi; //代理ID
  1181. //参数转成字符串
  1182. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  1183. {
  1184. //if (sizeof(CMD_GR_BangDing) * 16 > iLen) return false;
  1185. #ifdef _UNICODE
  1186. _snwprintf(pBuffer, iLen, TEXT("绑定代理->代理ID:%d"), dDaiLi);
  1187. #else
  1188. _snprintf(pBuffer, iLen, TEXT("绑定代理->代理ID:%d"), dDaiLi);
  1189. #endif
  1190. //mylog::ToSet(pBuffer, iLen, dUserID);
  1191. return true;
  1192. }
  1193. //名字
  1194. bool ToName(TCHAR* pBuffer, int iLen)
  1195. {
  1196. TCHAR szTemp[] = _T("绑定代理");
  1197. if (TSTRINGLEN(szTemp) > iLen) return false;
  1198. StringCchCopy(pBuffer, iLen, szTemp);
  1199. return true;
  1200. }
  1201. //打印通讯日志
  1202. void ToShow(int dTablePrivate, DWORD dUserID)
  1203. {
  1204. TCHAR szBuffer[BUFFERLEN];
  1205. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  1206. if (ToString(szBuffer, BUFFERLEN, dUserID))
  1207. {
  1208. mylog::OutputString(szBuffer, dTablePrivate);
  1209. }
  1210. }
  1211. };
  1212. //绑定代理应答
  1213. struct CMD_GR_BangDingACK
  1214. {
  1215. byte bRet; //结果
  1216. byte bLen; //长度
  1217. TCHAR szText[1024]; //XML描述 也可能返回执行失败
  1218. //参数转成字符串
  1219. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  1220. {
  1221. #ifdef _UNICODE
  1222. _snwprintf(pBuffer, iLen, TEXT("绑定代理应答->结果:%s,数据长度%d,XML描述%s"), bRet == 1 ? _T("初步执行成功") : _T("初步执行失败"), bLen, szText);
  1223. #else
  1224. _snprintf(pBuffer, iLen, TEXT("绑定代理应答->结果:%s,数据长度%d,XML描述%s"), bRet == 1 ? _T("初步执行成功") : _T("初步执行失败"), bLen, szText);
  1225. #endif
  1226. //mylog::ToSet(pBuffer, iLen, dUserID);
  1227. return true;
  1228. }
  1229. //名字
  1230. bool ToName(TCHAR* pBuffer, int iLen)
  1231. {
  1232. TCHAR szTemp[] = _T("绑定代理应答");
  1233. if (TSTRINGLEN(szTemp) > iLen) return false;
  1234. StringCchCopy(pBuffer, iLen, szTemp);
  1235. return true;
  1236. }
  1237. //打印通讯日志
  1238. void ToShow(int dTablePrivate, DWORD dUserID)
  1239. {
  1240. TCHAR szBuffer[BUFFERLEN];
  1241. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  1242. if (ToString(szBuffer, BUFFERLEN, dUserID))
  1243. {
  1244. mylog::OutputString(szBuffer, dTablePrivate);
  1245. }
  1246. }
  1247. };
  1248. //获取订单编号
  1249. struct CMD_GR_GetDingDan
  1250. {
  1251. BYTE dProductId; //产品ID
  1252. TCHAR ProductName[20]; //产品名称
  1253. DWORD jiage; //价格,以分为单位
  1254. //参数转成字符串
  1255. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  1256. {
  1257. #ifdef _UNICODE
  1258. _snwprintf(pBuffer, iLen, TEXT("获取订单编号->产品ID:%d,产品名称:%s,价格:%d分."), dProductId, ProductName, jiage);
  1259. #else
  1260. _snprintf(pBuffer, iLen, TEXT("获取订单编号->产品ID:%d,产品名称:%s,价格:%d分."), dProductId, ProductName, jiage);
  1261. #endif
  1262. //mylog::ToSet(pBuffer, iLen, dUserID);
  1263. return true;
  1264. }
  1265. //名字
  1266. bool ToName(TCHAR* pBuffer, int iLen)
  1267. {
  1268. TCHAR szTemp[] = _T("获取订单编号");
  1269. if (TSTRINGLEN(szTemp) > iLen) return false;
  1270. StringCchCopy(pBuffer, iLen, szTemp);
  1271. return true;
  1272. }
  1273. //打印通讯日志
  1274. void ToShow(int dTablePrivate, DWORD dUserID)
  1275. {
  1276. TCHAR szBuffer[BUFFERLEN];
  1277. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  1278. if (ToString(szBuffer, BUFFERLEN, dUserID))
  1279. {
  1280. mylog::OutputString(szBuffer, dTablePrivate);
  1281. }
  1282. }
  1283. };
  1284. //俱乐部战绩分享闲聊群
  1285. struct DBR_GR_ClubRecordXianLiao
  1286. {
  1287. DWORD WanFa;
  1288. DWORD dwClubID;
  1289. DWORD dwTableID;
  1290. DWORD Jushu;
  1291. DWORD DiFen;
  1292. DWORD dwUserCount;
  1293. CDM_GR_XIANL_Info Player[4];
  1294. };
  1295. struct CMD_GR_GetDingDanNEW
  1296. {
  1297. BYTE dProductId; //产品ID
  1298. TCHAR ProductName[20]; //产品名称
  1299. //TCHAR ProductName[18]; //产品名称
  1300. //BYTE sdkflag; //sdk标志
  1301. //BYTE tmpflag; //备用标志
  1302. DWORD jiage; //价格,以分为单位
  1303. BYTE payflag; //支付标志
  1304. //参数转成字符串
  1305. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  1306. {
  1307. #ifdef _UNICODE
  1308. _snwprintf(pBuffer, iLen, TEXT("获取订单编号->产品ID:%d,产品名称:%s,价格:%d分."), dProductId, ProductName, jiage);
  1309. #else
  1310. _snprintf(pBuffer, iLen, TEXT("获取订单编号->产品ID:%d,产品名称:%s,价格:%d分."), dProductId, ProductName, jiage);
  1311. #endif
  1312. //mylog::ToSet(pBuffer, iLen, dUserID);
  1313. return true;
  1314. }
  1315. //名字
  1316. bool ToName(TCHAR* pBuffer, int iLen)
  1317. {
  1318. TCHAR szTemp[] = _T("获取订单编号");
  1319. if (TSTRINGLEN(szTemp) > iLen) return false;
  1320. StringCchCopy(pBuffer, iLen, szTemp);
  1321. return true;
  1322. }
  1323. //打印通讯日志
  1324. void ToShow(int dTablePrivate, DWORD dUserID)
  1325. {
  1326. TCHAR szBuffer[BUFFERLEN];
  1327. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  1328. if (ToString(szBuffer, BUFFERLEN, dUserID))
  1329. {
  1330. mylog::OutputString(szBuffer, dTablePrivate);
  1331. }
  1332. }
  1333. };
  1334. //实名验证
  1335. struct CMD_GR_CheckName
  1336. {
  1337. TCHAR Name[20]; //姓名
  1338. TCHAR IDCard[18]; //身份证
  1339. TCHAR PhoneNum[12]; //电话号码
  1340. //参数转成字符串
  1341. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  1342. {
  1343. #ifdef _UNICODE
  1344. _snwprintf(pBuffer, iLen, TEXT("实名认证->姓名:%s,身份证:%s,电话:%s."), Name, IDCard, PhoneNum);
  1345. #else
  1346. _snprintf(pBuffer, iLen, TEXT("实名认证->姓名:%s,身份证:%s,电话:%s."), Name, IDCard, PhoneNum);
  1347. #endif
  1348. //mylog::ToSet(pBuffer, iLen, dUserID);
  1349. return true;
  1350. }
  1351. //名字
  1352. bool ToName(TCHAR* pBuffer, int iLen)
  1353. {
  1354. TCHAR szTemp[] = _T("实名认证");
  1355. if (TSTRINGLEN(szTemp) > iLen) return false;
  1356. StringCchCopy(pBuffer, iLen, szTemp);
  1357. return true;
  1358. }
  1359. //打印通讯日志
  1360. void ToShow(int dTablePrivate, DWORD dUserID)
  1361. {
  1362. TCHAR szBuffer[BUFFERLEN];
  1363. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  1364. if (ToString(szBuffer, BUFFERLEN, dUserID))
  1365. {
  1366. mylog::OutputString(szBuffer, dTablePrivate);
  1367. }
  1368. }
  1369. };
  1370. //实名查询应答或者领奖地址查询应答,新加
  1371. struct CMD_GR_CheckNameEx
  1372. {
  1373. TCHAR Name[20]; //姓名
  1374. TCHAR IDCard[18]; //身份证
  1375. TCHAR PhoneNum[12]; //电话号码
  1376. TCHAR Addr[128]; //联系地址
  1377. };
  1378. //手机号码查重
  1379. struct CMD_GR_GetVerifCode
  1380. {
  1381. DWORD dUserID;
  1382. TCHAR PhoneNum[12]; //电话号码
  1383. BYTE IsRepeat; //是否重复
  1384. TCHAR szDescribeString[127];
  1385. };
  1386. //手机验证码
  1387. struct CMD_GR_CheckVerifCode
  1388. {
  1389. TCHAR PhoneNum[12]; //电话号码
  1390. //DWORD VerfCode; //验证码
  1391. TCHAR VerfCode[7]; //验证码
  1392. //参数转成字符串
  1393. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  1394. {
  1395. #ifdef _UNICODE
  1396. _snwprintf(pBuffer, iLen, TEXT("手机绑定->验证码id:%s,电话:%s"), VerfCode, PhoneNum);
  1397. #else
  1398. _snwprintf(pBuffer, iLen, TEXT("手机绑定->验证码id:%s,电话:%s"), VerfCode, PhoneNum);
  1399. #endif
  1400. //mylog::ToSet(pBuffer, iLen, dUserID);
  1401. return true;
  1402. }
  1403. //打印通讯日志
  1404. void ToShow(int dTablePrivate, DWORD dUserID)
  1405. {
  1406. TCHAR szBuffer[BUFFERLEN];
  1407. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  1408. if (ToString(szBuffer, BUFFERLEN, dUserID))
  1409. {
  1410. mylog::OutputString(szBuffer, dTablePrivate);
  1411. }
  1412. }
  1413. };
  1414. //手机绑定查询
  1415. struct CMD_GR_CheckIphone_Query
  1416. {
  1417. BYTE IsBingNum; //是否绑定号码0,没有,1绑定了
  1418. DWORD dwCurrency; //钻石数
  1419. TCHAR PhoneNum[12]; //电话号码
  1420. BYTE IsBingXianLiao; //1表示绑定闲聊
  1421. //参数转成字符串
  1422. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  1423. {
  1424. #ifdef _UNICODE
  1425. _snwprintf(pBuffer, iLen, TEXT("手机绑定查询->是否绑手机号:%d,钻石数:%d,电话:%s."), IsBingNum, dwCurrency, PhoneNum);
  1426. #else
  1427. _snwprintf(pBuffer, iLen, TEXT("手机绑定查询->是否绑手机号:%d,钻石数:%d,电话:%s."), IsBingNum, dwCurrency, PhoneNum);
  1428. #endif
  1429. //mylog::ToSet(pBuffer, iLen, dUserID);
  1430. return true;
  1431. }
  1432. //打印通讯日志
  1433. void ToShow(int dTablePrivate, DWORD dUserID)
  1434. {
  1435. TCHAR szBuffer[BUFFERLEN];
  1436. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  1437. if (ToString(szBuffer, BUFFERLEN, dUserID))
  1438. {
  1439. mylog::OutputString(szBuffer, dTablePrivate);
  1440. }
  1441. }
  1442. };
  1443. //绑定闲聊
  1444. struct CMD_GR_CheckXiaoLiao
  1445. {
  1446. TCHAR OpenID[32]; //闲聊账号
  1447. };
  1448. //手机绑定
  1449. struct CMD_GR_CheckIphone
  1450. {
  1451. BYTE IsBingNum; //是否绑定成功
  1452. DWORD dwCurrency; //钻石数
  1453. TCHAR PhoneNum[12]; //电话号码
  1454. //参数转成字符串
  1455. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  1456. {
  1457. #ifdef _UNICODE
  1458. _snwprintf(pBuffer, iLen, TEXT("手机绑定->是否成功:%d,钻石数:%d,电话:%s"), IsBingNum, dwCurrency, PhoneNum);
  1459. #else
  1460. _snwprintf(pBuffer, iLen, TEXT("手机绑定->是否成功:%d,钻石数:%d,电话:%s"), IsBingNum, dwCurrency, PhoneNum);
  1461. #endif
  1462. //mylog::ToSet(pBuffer, iLen, dUserID);
  1463. return true;
  1464. }
  1465. //打印通讯日志
  1466. void ToShow(int dTablePrivate, DWORD dUserID)
  1467. {
  1468. TCHAR szBuffer[BUFFERLEN];
  1469. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  1470. if (ToString(szBuffer, BUFFERLEN, dUserID))
  1471. {
  1472. mylog::OutputString(szBuffer, dTablePrivate);
  1473. }
  1474. }
  1475. };
  1476. //实名验证
  1477. struct CHECKNAMEINFO
  1478. {
  1479. CMD_GR_CheckName nameInfo;
  1480. DWORD dUserID;
  1481. };
  1482. //GET队列
  1483. struct GETDUILIEBASE
  1484. {
  1485. int CommendID; //命令值
  1486. CMD_GR_Info bb; //人物信息
  1487. TCHAR szUnionID[33]; //用户UNIONID
  1488. DWORD dwSocketID; //请求的SOCKETID
  1489. char szBuffer[6096]; //数据缓冲区
  1490. DWORD dUserID;
  1491. };
  1492. //GET队列
  1493. struct GETDUILIE
  1494. {
  1495. //CMD_GR_GetDingDan dd; //订单请求数据
  1496. CMD_GR_GetDingDanNEW dd;
  1497. CMD_GR_GetDingDanACK ack;//应答
  1498. };
  1499. //GET队列
  1500. struct GETDUILIELIST
  1501. {
  1502. GETDUILIEBASE dDataList[10];//命令节点
  1503. };
  1504. //选则座位请求
  1505. struct CMD_GR_UserSeat
  1506. {
  1507. WORD seatId; //桌子位置
  1508. //参数转成字符串
  1509. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  1510. {
  1511. if (sizeof(CMD_GR_UserSeat) * 16 > iLen) return false;
  1512. #ifdef _UNICODE
  1513. _snwprintf(pBuffer, iLen, TEXT("选则座位请求->桌子位置:%d.")
  1514. , seatId);
  1515. #else
  1516. _snprintf(pBuffer, iLen, TEXT("选则座位请求->桌子位置:%d.")
  1517. , seatId);
  1518. #endif
  1519. //mylog::ToSet(pBuffer, iLen, dUserID);
  1520. return true;
  1521. }
  1522. //名字
  1523. bool ToName(TCHAR* pBuffer, int iLen)
  1524. {
  1525. TCHAR szTemp[] = _T("选则座位请求");
  1526. if (TSTRINGLEN(szTemp) > iLen) return false;
  1527. StringCchCopy(pBuffer, iLen, szTemp);
  1528. return true;
  1529. }
  1530. //打印通讯日志
  1531. void ToShow(int dTablePrivate, DWORD dUserID)
  1532. {
  1533. TCHAR szBuffer[BUFFERLEN];
  1534. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  1535. if (ToString(szBuffer, BUFFERLEN, dUserID))
  1536. {
  1537. mylog::OutputString(szBuffer, dTablePrivate);
  1538. }
  1539. }
  1540. };
  1541. //选则座位请求
  1542. struct CMD_GR_UserSeatEx
  1543. {
  1544. WORD seatId; //桌子位置
  1545. DWORD x; //经纬度
  1546. DWORD y; //经纬度
  1547. //参数转成字符串
  1548. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  1549. {
  1550. if (sizeof(CMD_GR_UserSeat) * 16 > iLen) return false;
  1551. #ifdef _UNICODE
  1552. _snwprintf(pBuffer, iLen, TEXT("选则座位请求->桌子位置:%d.")
  1553. , seatId);
  1554. #else
  1555. _snprintf(pBuffer, iLen, TEXT("选则座位请求->桌子位置:%d.")
  1556. , seatId);
  1557. #endif
  1558. //mylog::ToSet(pBuffer, iLen, dUserID);
  1559. return true;
  1560. }
  1561. //名字
  1562. bool ToName(TCHAR* pBuffer, int iLen)
  1563. {
  1564. TCHAR szTemp[] = _T("选则座位请求");
  1565. if (TSTRINGLEN(szTemp) > iLen) return false;
  1566. StringCchCopy(pBuffer, iLen, szTemp);
  1567. return true;
  1568. }
  1569. //打印通讯日志
  1570. void ToShow(int dTablePrivate, DWORD dUserID)
  1571. {
  1572. TCHAR szBuffer[BUFFERLEN];
  1573. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  1574. if (ToString(szBuffer, BUFFERLEN, dUserID))
  1575. {
  1576. mylog::OutputString(szBuffer, dTablePrivate);
  1577. }
  1578. }
  1579. };
  1580. //选则座位请求应答
  1581. struct CMD_GR_UserSitAck
  1582. {
  1583. byte ret; //0 成功 非0 错误码
  1584. //参数转成字符串
  1585. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  1586. {
  1587. if (sizeof(CMD_GR_UserSitAck) * 16 > iLen) return false;
  1588. #ifdef _UNICODE
  1589. _snwprintf(pBuffer, iLen, TEXT("选则座位请求应答->成功:%d.")
  1590. , ret);
  1591. #else
  1592. _snprintf(pBuffer, iLen, TEXT("选则座位请求应答->成功:%d.")
  1593. , ret);
  1594. #endif
  1595. //mylog::ToSet(pBuffer, iLen, dUserID);
  1596. return true;
  1597. }
  1598. //名字
  1599. bool ToName(TCHAR* pBuffer, int iLen)
  1600. {
  1601. TCHAR szTemp[] = _T("选则座位请求");
  1602. if (TSTRINGLEN(szTemp) > iLen) return false;
  1603. StringCchCopy(pBuffer, iLen, szTemp);
  1604. return true;
  1605. }
  1606. //打印通讯日志
  1607. void ToShow(int dTablePrivate, DWORD dUserID)
  1608. {
  1609. TCHAR szBuffer[BUFFERLEN];
  1610. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  1611. if (ToString(szBuffer, BUFFERLEN, dUserID))
  1612. {
  1613. mylog::OutputString(szBuffer, dTablePrivate);
  1614. }
  1615. }
  1616. };
  1617. //支付线程
  1618. struct CMD_GR_ZFXC
  1619. {
  1620. WORD Num;
  1621. TCHAR Data[10];
  1622. //参数转成字符串
  1623. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  1624. {
  1625. if (Num < iLen)
  1626. {
  1627. #ifdef _UNICODE
  1628. _snwprintf(pBuffer, iLen, TEXT("支付线程应答->%s.") , Data);
  1629. #else
  1630. _snprintf(pBuffer, iLen, TEXT("支付线程应答->%s."), Data);
  1631. #endif
  1632. }
  1633. //mylog::ToSet(pBuffer, iLen, dUserID);
  1634. return true;
  1635. }
  1636. //名字
  1637. bool ToName(TCHAR* pBuffer, int iLen)
  1638. {
  1639. TCHAR szTemp[] = _T("支付线程应答");
  1640. if (TSTRINGLEN(szTemp) > iLen) return false;
  1641. StringCchCopy(pBuffer, iLen, szTemp);
  1642. return true;
  1643. }
  1644. //打印通讯日志
  1645. void ToShow(int dTablePrivate, DWORD dUserID)
  1646. {
  1647. TCHAR szBuffer[BUFFERLEN];
  1648. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  1649. if (ToString(szBuffer, BUFFERLEN, dUserID))
  1650. {
  1651. mylog::OutputString(szBuffer, dTablePrivate);
  1652. }
  1653. }
  1654. };
  1655. //推荐房间
  1656. struct CMD_GR_TJROOM
  1657. {
  1658. byte cbRet; //创建或进入结果 0成功 1为失败 >1为失败 推荐的服务器端口
  1659. TCHAR szIp[30]; //推荐IP
  1660. WORD wPort; //推荐端口
  1661. };
  1662. //创建进入房间 回复
  1663. struct CMD_GR_UserSitDownAck
  1664. {
  1665. byte cbRet; //创建或进入结果 0成功 1为失败 >1为失败 推荐的服务器端口
  1666. TCHAR szText[32]; //错误信息
  1667. TCHAR szPrivateTableID[7]; //私有桌子号
  1668. byte bDuoLai; //多癞子可平胡,0可以 1不可以
  1669. WORD wFengDing; //封顶值
  1670. byte tmp1; //备用字段
  1671. byte tmp2; //备用字段
  1672. byte tmp3; //备用字段
  1673. byte tmp4; //备用字段
  1674. byte tmp5; //备用字段
  1675. int dijin; //底分
  1676. byte paytype; //支付方式
  1677. byte desktype; //桌子类型
  1678. byte playtype; //玩法类型
  1679. byte totalplay; //总局数
  1680. byte isowner; //是否房主
  1681. DWORD roomId; //房间id
  1682. CMD_GR_UserSitDownAck(){ ZeroMemory(this, sizeof(CMD_GR_UserSitDownAck)); }
  1683. //参数转成字符串
  1684. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  1685. {
  1686. if (sizeof(CMD_GR_UserSitDownAck) * 16 > iLen) return false;
  1687. #ifdef _UNICODE
  1688. _snwprintf(pBuffer, iLen, TEXT("创建进入房间应答->创建或进入结果:%d,错误信息:%s.")
  1689. , cbRet, szText);
  1690. #else
  1691. _snprintf(pBuffer, iLen, TEXT("创建进入房间应答->创建或进入结果:%d,错误信息:%s.")
  1692. , cbRet, szText);
  1693. #endif
  1694. //mylog::ToSet(pBuffer, iLen, dUserID);
  1695. return true;
  1696. }
  1697. //名字
  1698. bool ToName(TCHAR* pBuffer, int iLen)
  1699. {
  1700. TCHAR szTemp[] = _T("创建进入房间应答");
  1701. if (TSTRINGLEN(szTemp) > iLen) return false;
  1702. StringCchCopy(pBuffer, iLen, szTemp);
  1703. return true;
  1704. }
  1705. //打印通讯日志
  1706. void ToShow(int dTablePrivate, DWORD dUserID)
  1707. {
  1708. TCHAR szBuffer[BUFFERLEN];
  1709. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  1710. if (ToString(szBuffer, BUFFERLEN, dUserID))
  1711. {
  1712. mylog::OutputString(szBuffer, dTablePrivate);
  1713. }
  1714. }
  1715. };
  1716. struct CMD_GR_UserSitDownAckEx
  1717. {
  1718. byte cbRet; //创建或进入结果 0成功
  1719. TCHAR szPrivateTableID[7]; //私有桌子号
  1720. byte bDuoLai; //多癞子可平胡,0可以 1不可以
  1721. WORD wFengDing; //封顶值
  1722. byte ipLimit; //表示ip限制
  1723. byte playnum; //表示人数
  1724. byte tmp3; //备用字段
  1725. byte tmp4; //备用字段
  1726. byte tmp5; //备用字段
  1727. int dijin; //底分
  1728. byte paytype; //支付方式
  1729. byte desktype; //桌子类型 比赛房 或是好友房
  1730. byte playtype; //玩法类型
  1731. byte totalplay; //总局数
  1732. byte isowner; //是否房主
  1733. DWORD roomId; //房间id
  1734. //参数转成字符串
  1735. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  1736. {
  1737. if (sizeof(CMD_GR_UserSitDownAckEx) * 16 > iLen) return false;
  1738. #ifdef _UNICODE
  1739. _snwprintf(pBuffer, iLen, TEXT("进入房间应答->进入结果:%d,底分:%d,支付方式:%d,桌子类型:%d,玩法类型:%d,是否油上油:%d,是否二人玩法:%d,总局数:%d,是否房主:%d,房间id:%d,私有桌子号:%s")
  1740. , cbRet, dijin, paytype, desktype, playtype, bDuoLai, wFengDing, totalplay, isowner, roomId, szPrivateTableID);
  1741. #else
  1742. _snwprintf(pBuffer, iLen, TEXT("进入房间应答->进入结果:%d,底分:%d,支付方式:%d,桌子类型:%d,玩法类型:%d,是否油上油:%d,是否二人玩法:%d,总局数:%d,是否房主:%d,房间id:%d,私有桌子号:%s")
  1743. , cbRet, dijin, paytype, desktype, playtype, bDuoLai, wFengDing, totalplay, isowner, roomId, szPrivateTableID);
  1744. #endif
  1745. //mylog::ToSet(pBuffer, iLen, dUserID);
  1746. return true;
  1747. }
  1748. //名字
  1749. bool ToName(TCHAR* pBuffer, int iLen)
  1750. {
  1751. TCHAR szTemp[] = _T("创建进入房间应答");
  1752. if (TSTRINGLEN(szTemp) > iLen) return false;
  1753. StringCchCopy(pBuffer, iLen, szTemp);
  1754. return true;
  1755. }
  1756. //打印通讯日志
  1757. void ToShow(int dTablePrivate, DWORD dUserID)
  1758. {
  1759. TCHAR szBuffer[BUFFERLEN];
  1760. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  1761. if (ToString(szBuffer, BUFFERLEN, dUserID))
  1762. {
  1763. mylog::OutputString(szBuffer, dTablePrivate);
  1764. }
  1765. }
  1766. };
  1767. //起立请求
  1768. struct CMD_GR_UserStandUp
  1769. {
  1770. WORD wTableID; //桌子位置
  1771. WORD wChairID; //椅子位置
  1772. BYTE cbForceLeave; //强行离开
  1773. //参数转成字符串
  1774. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  1775. {
  1776. if (sizeof(CMD_GR_UserStandUp) * 16 > iLen) return false;
  1777. #ifdef _UNICODE
  1778. _snwprintf(pBuffer, iLen, TEXT("起立请求->桌子位置:%d,椅子位置:%d,强行离开:%d.")
  1779. , wTableID, wChairID, cbForceLeave);
  1780. #else
  1781. _snprintf(pBuffer, iLen, TEXT("起立请求->桌子位置:%d,椅子位置:%d,强行离开:%d.")
  1782. , wTableID, wChairID, cbForceLeave);
  1783. #endif
  1784. //mylog::ToSet(pBuffer, iLen, dUserID);
  1785. return true;
  1786. }
  1787. //名字
  1788. bool ToName(TCHAR* pBuffer, int iLen)
  1789. {
  1790. TCHAR szTemp[] = _T("起立请求");
  1791. if (TSTRINGLEN(szTemp) > iLen) return false;
  1792. StringCchCopy(pBuffer, iLen, szTemp);
  1793. return true;
  1794. }
  1795. //打印通讯日志
  1796. void ToShow(int dTablePrivate, DWORD dUserID)
  1797. {
  1798. TCHAR szBuffer[BUFFERLEN];
  1799. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  1800. if (ToString(szBuffer, BUFFERLEN, dUserID))
  1801. {
  1802. mylog::OutputString(szBuffer, dTablePrivate);
  1803. }
  1804. }
  1805. };
  1806. struct CMD_GR_GetUserRecordListReq
  1807. {
  1808. DWORD dwUserID; //用户类型
  1809. DWORD dwKingID; //游戏类型
  1810. WORD wParentID; //父节点ID
  1811. WORD wLimitIndex; //开始索引
  1812. WORD wLimitCount; //条数
  1813. };
  1814. struct CMD_GR_GetUserRecordListReqNew
  1815. {
  1816. DWORD dwUserID; //用户类型
  1817. DWORD dwKingID; //游戏类型
  1818. DWORD wParentID; //父节点ID
  1819. WORD wLimitIndex; //开始索引
  1820. WORD wLimitCount; //条数
  1821. DWORD dwParentID; //父节点ID
  1822. };
  1823. struct CMD_GR_GetUserRecordDetailInfoReq
  1824. {
  1825. WORD wKindID;
  1826. WORD wRecordID; //条数
  1827. };
  1828. //统计俱乐部对局数排名
  1829. struct tagClubPlaygames
  1830. {
  1831. DWORD dwUserID;
  1832. DWORD mCount; //局数
  1833. TCHAR szUserName[LEN_NICKNAME]; //用户名
  1834. TCHAR szHeadImg[256];
  1835. };
  1836. //统计俱乐部对局数排名
  1837. struct tagClubPlaygames2
  1838. {
  1839. WORD wDateCount;
  1840. BYTE temp;
  1841. tagClubPlaygames Playgames[10];
  1842. };
  1843. //统计俱乐部积分数排名
  1844. struct tagClubIntegral
  1845. {
  1846. DWORD dwUserID;
  1847. DWORD mCount; //局数
  1848. LONGLONG mJiFen; //积分
  1849. TCHAR szUserName[LEN_NICKNAME]; //用户名
  1850. TCHAR szHeadImg[256];
  1851. };
  1852. //统计俱乐部积分数排名
  1853. struct tagClubIntegral2
  1854. {
  1855. WORD wDateCount;
  1856. BYTE temp;
  1857. tagClubIntegral Integral[10];
  1858. };
  1859. //节点
  1860. struct tagGameRecordDrawScore
  1861. {
  1862. DWORD dwDrawID;
  1863. DWORD dwUserID;
  1864. WORD wChairID; //椅子号
  1865. LONGLONG lScore; //积分
  1866. LONGLONG lGrade; //成绩
  1867. DWORD dwUserMedal; //奖牌数目
  1868. DWORD dwPlayTimeCount; //游戏时长
  1869. TCHAR szUserName[LEN_NICKNAME]; //用户名
  1870. TCHAR szHeadImg[256]; //头像
  1871. //参数转成字符串
  1872. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  1873. {
  1874. if (sizeof(tagGameRecordDrawScore) * 16 > iLen) return false;
  1875. #ifdef _UNICODE
  1876. _snwprintf(pBuffer, iLen, TEXT("dwDrawID:%d,dwUserID:%d,椅子号:%d,积分:%lld,成绩:%lld,奖牌数目:%d,游戏时长:%d,用户名:%s.")
  1877. , dwDrawID, dwUserID, wChairID, lScore, lGrade, dwUserMedal, dwPlayTimeCount, szUserName);
  1878. #else
  1879. _snprintf(pBuffer, iLen, TEXT("dwDrawID:%d,dwUserID:%d,椅子号:%d,积分:%lld,成绩:%lld,奖牌数目:%d,游戏时长:%d,用户名:%s.")
  1880. , dwDrawID, dwUserID, wChairID, lScore, lGrade, dwUserMedal, dwPlayTimeCount, szUserName);
  1881. #endif
  1882. ////mylog::ToSet(pBuffer, iLen, dUserID);
  1883. return true;
  1884. }
  1885. //名字
  1886. bool ToName(TCHAR* pBuffer, int iLen)
  1887. {
  1888. TCHAR szTemp[] = _T("游戏结果积分");
  1889. if (TSTRINGLEN(szTemp) > iLen) return false;
  1890. StringCchCopy(pBuffer, iLen, szTemp);
  1891. return true;
  1892. }
  1893. //打印通讯日志
  1894. void ToShow(int dTablePrivate, DWORD dUserID)
  1895. {
  1896. TCHAR szBuffer[BUFFERLEN];
  1897. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  1898. if (ToString(szBuffer, BUFFERLEN, dUserID))
  1899. {
  1900. mylog::OutputString(szBuffer, dTablePrivate);
  1901. }
  1902. }
  1903. };
  1904. //详情
  1905. struct tagGameRecordDrawScoreEx
  1906. {
  1907. DWORD dwDrawID;
  1908. DWORD dwUserID;
  1909. WORD wChairID; //椅子号
  1910. LONGLONG lScore; //积分
  1911. LONGLONG lGrade; //成绩
  1912. DWORD dwUserMedal; //奖牌数目
  1913. DWORD dwPlayTimeCount; //游戏时长
  1914. TCHAR szUserName[LEN_NICKNAME]; //用户名
  1915. TCHAR szHeadImg[256]; //头像
  1916. //参数转成字符串
  1917. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  1918. {
  1919. if (sizeof(tagGameRecordDrawScore) * 16 > iLen) return false;
  1920. #ifdef _UNICODE
  1921. _snwprintf(pBuffer, iLen, TEXT("dwDrawID:%d,dwUserID:%d,椅子号:%d,积分:%lld,成绩:%lld,奖牌数目:%d,游戏时长:%d,用户名:%s.")
  1922. , dwDrawID, dwUserID, wChairID, lScore, lGrade, dwUserMedal, dwPlayTimeCount, szUserName);
  1923. #else
  1924. _snprintf(pBuffer, iLen, TEXT("dwDrawID:%d,dwUserID:%d,椅子号:%d,积分:%lld,成绩:%lld,奖牌数目:%d,游戏时长:%d,用户名:%s.")
  1925. , dwDrawID, dwUserID, wChairID, lScore, lGrade, dwUserMedal, dwPlayTimeCount, szUserName);
  1926. #endif
  1927. ////mylog::ToSet(pBuffer, iLen, dUserID);
  1928. return true;
  1929. }
  1930. //名字
  1931. bool ToName(TCHAR* pBuffer, int iLen)
  1932. {
  1933. TCHAR szTemp[] = _T("游戏结果积分");
  1934. if (TSTRINGLEN(szTemp) > iLen) return false;
  1935. StringCchCopy(pBuffer, iLen, szTemp);
  1936. return true;
  1937. }
  1938. //打印通讯日志
  1939. void ToShow(int dTablePrivate, DWORD dUserID)
  1940. {
  1941. TCHAR szBuffer[BUFFERLEN];
  1942. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  1943. if (ToString(szBuffer, BUFFERLEN, dUserID))
  1944. {
  1945. mylog::OutputString(szBuffer, dTablePrivate);
  1946. }
  1947. }
  1948. };
  1949. //节点
  1950. struct tagGameRecordDrawInfo
  1951. {
  1952. DWORD dwDrawID;
  1953. WORD wTableID;
  1954. WORD wUserMedal;
  1955. WORD wUserCount;
  1956. WORD wParentID;
  1957. TCHAR szPrivateTableID[LEN_PRIVATE_TABLE_ID];
  1958. //时间信息
  1959. DWORD SystemTimeStart; //开始时间
  1960. DWORD SystemTimeConclude; //结束时间
  1961. WORD wWanFa; //玩法ID
  1962. tagGameRecordDrawScore GameChairScore[4]; //
  1963. };
  1964. //详情
  1965. struct tagGameRecordDrawInfoEx
  1966. {
  1967. DWORD dwDrawID;
  1968. WORD wTableID;
  1969. WORD wUserMedal;
  1970. WORD wUserCount;
  1971. WORD wParentID;
  1972. TCHAR szPrivateTableID[LEN_PRIVATE_TABLE_ID];
  1973. //时间信息
  1974. DWORD SystemTimeStart; //开始时间
  1975. DWORD SystemTimeConclude; //结束时间
  1976. WORD wWanFa; //玩法ID
  1977. tagGameRecordDrawScoreEx GameChairScore[4]; //
  1978. };
  1979. struct CMD_GR_GetUserScoreRecordListResp
  1980. {
  1981. WORD wParentRecordID; //父节点ID
  1982. WORD wRecordCount;
  1983. tagGameRecordDrawInfo GameScoreRecord[20]; //tagGameRecordDrawInfo的数组;
  1984. };
  1985. struct CMD_GR_GetUserScoreRecordDetail
  1986. {
  1987. WORD wRecordCount;
  1988. tagGameRecordDrawScore sGameScoreRecord[10];
  1989. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  1990. {
  1991. if (sizeof(CMD_GR_GetUserScoreRecordDetail) * 16 > iLen) return false;
  1992. TCHAR szBuffer[BUFFERLEN];
  1993. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  1994. for (int i = 0; i < (wRecordCount>10?10:wRecordCount); i++)
  1995. {
  1996. TCHAR szTemp[BUFFERLEN];
  1997. if (sGameScoreRecord[i].ToString(szTemp, BUFFERLEN, dUserID))
  1998. {
  1999. StringCchCat(szBuffer, BUFFERLEN, szTemp);
  2000. }
  2001. }
  2002. #ifdef _UNICODE
  2003. _snwprintf(pBuffer, iLen, TEXT("获取游戏积分记录详情->wRecordCount:%d,dwUserID:%s.")
  2004. , wRecordCount, szBuffer);
  2005. #else
  2006. _snprintf(pBuffer, iLen, TEXT("获取游戏积分记录详情->wRecordCount:%d,dwUserID:%s.")
  2007. , wRecordCount, szBuffer);
  2008. #endif
  2009. //mylog::ToSet(pBuffer, iLen, dUserID);
  2010. return true;
  2011. }
  2012. //名字
  2013. bool ToName(TCHAR* pBuffer, int iLen)
  2014. {
  2015. TCHAR szTemp[] = _T("获取游戏积分记录详情");
  2016. if (TSTRINGLEN(szTemp) > iLen) return false;
  2017. StringCchCopy(pBuffer, iLen, szTemp);
  2018. return true;
  2019. }
  2020. //打印通讯日志
  2021. void ToShow(int dTablePrivate, DWORD dUserID)
  2022. {
  2023. TCHAR szBuffer[BUFFERLEN];
  2024. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  2025. if (ToString(szBuffer, BUFFERLEN, dUserID))
  2026. {
  2027. mylog::OutputString(szBuffer, dTablePrivate);
  2028. }
  2029. }
  2030. };
  2031. struct CMD_S_GameConfig2
  2032. {
  2033. WORD wSubGameID; //子游戏类型(0血战到底,1血流成河,2两牌房, 3倒到胡,)
  2034. BYTE wPlayRule; //玩法选项(1带幺九、将对,2换三张,3门清中张)
  2035. WORD wMaxFanRule; //最大藩数
  2036. WORD wMaxScore; //最大分数
  2037. WORD wPlayCountRule; //一次玩的局数(4局?8局?)
  2038. WORD wHadPlayCount; //已玩局数
  2039. WORD zmExtraRule; //0自摸加底 or 1自摸加番?
  2040. WORD dghRule; //点杠花类型?放炮 or自摸?(点杠花后自摸算自摸还是放炮?)
  2041. TCHAR sPrivateTableID[LEN_PRIVATE_TABLE_ID];
  2042. };
  2043. //游戏回放回放
  2044. struct GameRecordPacket2
  2045. {
  2046. WORD wChairID;
  2047. WORD wMainCmdID;
  2048. WORD wSubCmdID;
  2049. WORD wSize;
  2050. void* pData;
  2051. };
  2052. struct ChairRecord2
  2053. {
  2054. WORD wChairId; //椅子号
  2055. UINT32 dwUserId; //用户id
  2056. TCHAR userName[LEN_NICKNAME];//用户名
  2057. UINT32 userHeadIcon;
  2058. };
  2059. struct CMD_GR_ReplayRecordResp2
  2060. {
  2061. UINT32 m_UUID; //回放唯一ID
  2062. UINT32 m_tableID; //公开桌子号
  2063. UINT32 m_startTime; //游戏开始时间
  2064. UINT32 m_endTime; //游戏结束时间
  2065. UINT32 m_UserId; //用户ID
  2066. CMD_S_GameConfig2 m_gameconfig; //游戏基本配置
  2067. ChairRecord2 m_chairList[4]; //游戏椅子玩家信息
  2068. UINT16 m_recordCount; //回放数据记录数
  2069. char pData[0]; //回放记录列表(尾拖数据)
  2070. };
  2071. //用户积分
  2072. struct tagMobileUserScore
  2073. {
  2074. //积分信息
  2075. DWORD lScore; //用户分数
  2076. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  2077. {
  2078. if (sizeof(tagMobileUserScore) * 16 > iLen) return false;
  2079. #ifdef _UNICODE
  2080. _snwprintf(pBuffer, iLen, TEXT("<br>【用户积分】用户分数:%d.")
  2081. , lScore);
  2082. #else
  2083. _snprintf(pBuffer, iLen, TEXT("<br>【用户积分】用户分数:%d,胜利盘数:%d,失败盘数:%d,和局盘数:%d,逃跑盘数:%d,用户经验:%d.")
  2084. , lScore, dwWinCount, dwLostCount, dwDrawCount, dwFleeCount, dwExperience);
  2085. #endif
  2086. ////mylog::ToSet(pBuffer, iLen, dUserID);
  2087. return true;
  2088. }
  2089. //名字
  2090. bool ToName(TCHAR* pBuffer, int iLen)
  2091. {
  2092. TCHAR szTemp[] = _T("用户积分");
  2093. if (TSTRINGLEN(szTemp) > iLen) return false;
  2094. StringCchCopy(pBuffer, iLen, szTemp);
  2095. return true;
  2096. }
  2097. //打印通讯日志
  2098. void ToShow(int dTablePrivate, DWORD dUserID)
  2099. {
  2100. TCHAR szBuffer[BUFFERLEN];
  2101. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  2102. if (ToString(szBuffer, BUFFERLEN, dUserID))
  2103. {
  2104. mylog::OutputString(szBuffer, dTablePrivate);
  2105. }
  2106. }
  2107. };
  2108. struct CMD_GR_ReplayRecordReq
  2109. {
  2110. DWORD dwRecordID;
  2111. };
  2112. //邀请用户
  2113. struct CMD_GR_UserInvite
  2114. {
  2115. WORD wTableID; //桌子号码
  2116. DWORD dwUserID; //用户 I D
  2117. };
  2118. //邀请用户请求
  2119. struct CMD_GR_UserInviteReq
  2120. {
  2121. WORD wTableID; //桌子号码
  2122. DWORD dwUserID; //用户 I D
  2123. };
  2124. //用户分数
  2125. struct CMD_GR_UserScore
  2126. {
  2127. DWORD dwUserID; //用户标识
  2128. tagUserScore UserScore; //积分信息
  2129. //参数转成字符串
  2130. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  2131. {
  2132. if (sizeof(CMD_GR_UserScore) * 16 > iLen) return false;
  2133. TCHAR szBuffer[BUFFERLEN];
  2134. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  2135. UserScore.ToString(szBuffer, BUFFERLEN, dUserID);
  2136. #ifdef _UNICODE
  2137. _snwprintf(pBuffer, iLen, TEXT("用户分数->用户标识:%d,积分信息:%s.")
  2138. , dwUserID, szBuffer);
  2139. #else
  2140. _snprintf(pBuffer, iLen, TEXT("用户分数->用户标识:%d,积分信息:%s.")
  2141. , dwUserID, szBuffer);
  2142. #endif
  2143. //mylog::ToSet(pBuffer, iLen, dUserID);
  2144. return true;
  2145. }
  2146. //名字
  2147. bool ToName(TCHAR* pBuffer, int iLen)
  2148. {
  2149. TCHAR szTemp[] = _T("用户分数");
  2150. if (TSTRINGLEN(szTemp) > iLen) return false;
  2151. StringCchCopy(pBuffer, iLen, szTemp);
  2152. return true;
  2153. }
  2154. //打印通讯日志
  2155. void ToShow(int dTablePrivate, DWORD dUserID)
  2156. {
  2157. TCHAR szBuffer[BUFFERLEN];
  2158. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  2159. if (ToString(szBuffer, BUFFERLEN, dUserID))
  2160. {
  2161. mylog::OutputString(szBuffer, dTablePrivate);
  2162. }
  2163. }
  2164. };
  2165. //用户分数
  2166. struct CMD_GR_MobileUserScore
  2167. {
  2168. DWORD dwUserID; //用户标识
  2169. tagMobileUserScore UserScore; //积分信息
  2170. //参数转成字符串
  2171. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  2172. {
  2173. if (sizeof(CMD_GR_MobileUserScore) * 16 > iLen) return false;
  2174. TCHAR szBuffer[BUFFERLEN];
  2175. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  2176. UserScore.ToString(szBuffer, BUFFERLEN, dUserID);
  2177. #ifdef _UNICODE
  2178. _snwprintf(pBuffer, iLen, TEXT("用户分数->用户标识:%d,积分信息:%s.")
  2179. , dwUserID, szBuffer);
  2180. #else
  2181. _snprintf(pBuffer, iLen, TEXT("用户分数->用户标识:%d,积分信息:%s.")
  2182. , dwUserID, szBuffer);
  2183. #endif
  2184. //mylog::ToSet(pBuffer, iLen, dUserID);
  2185. return true;
  2186. }
  2187. //名字
  2188. bool ToName(TCHAR* pBuffer, int iLen)
  2189. {
  2190. TCHAR szTemp[] = _T("用户分数");
  2191. if (TSTRINGLEN(szTemp) > iLen) return false;
  2192. StringCchCopy(pBuffer, iLen, szTemp);
  2193. return true;
  2194. }
  2195. //打印通讯日志
  2196. void ToShow(int dTablePrivate, DWORD dUserID)
  2197. {
  2198. TCHAR szBuffer[BUFFERLEN];
  2199. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  2200. if (ToString(szBuffer, BUFFERLEN, dUserID))
  2201. {
  2202. mylog::OutputString(szBuffer, dTablePrivate);
  2203. }
  2204. }
  2205. };
  2206. //用户状态
  2207. struct tagUserStatus
  2208. {
  2209. WORD wTableID; //桌子索引
  2210. WORD wChairID; //椅子位置
  2211. BYTE cbUserStatus; //用户状态
  2212. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  2213. {
  2214. if (sizeof(tagUserStatus) * 16 > iLen) return false;
  2215. TCHAR szTemp[32];
  2216. ZeroMemory(szTemp, 32 * sizeof(TCHAR));
  2217. switch (cbUserStatus)
  2218. {
  2219. case US_NULL:
  2220. StringCchCat(szTemp, 32, _TEXT("没有状态"));
  2221. break;
  2222. case US_FREE:
  2223. StringCchCat(szTemp, 32, _TEXT("大厅状态"));
  2224. break;
  2225. case US_SIT:
  2226. StringCchCat(szTemp, 32, _TEXT("坐下状态"));
  2227. break;
  2228. case US_READY:
  2229. StringCchCat(szTemp, 32, _TEXT("准备状态"));
  2230. break;
  2231. case US_LOOKON:
  2232. StringCchCat(szTemp, 32, _TEXT("旁观状态"));
  2233. break;
  2234. case US_PLAYING:
  2235. StringCchCat(szTemp, 32, _TEXT("游戏状态"));
  2236. break;
  2237. case US_OFFLINE:
  2238. StringCchCat(szTemp, 32, _TEXT("断线状态"));
  2239. break;
  2240. default:
  2241. break;
  2242. }
  2243. #ifdef _UNICODE
  2244. _snwprintf(pBuffer, iLen, TEXT("<br>【子项用户状态】桌子索引:%d,椅子位置:%d,用户状态:%s")
  2245. , wTableID, wChairID, szTemp);
  2246. #else
  2247. _snprintf(pBuffer, iLen, TEXT("<br>【子项用户状态】桌子索引:%d,椅子位置:%d,用户状态:%s")
  2248. , wTableID, wChairID, szTemp);
  2249. #endif
  2250. ////mylog::ToSet(pBuffer, iLen, dUserID);
  2251. return true;
  2252. }
  2253. //名字
  2254. bool ToName(TCHAR* pBuffer, int iLen)
  2255. {
  2256. TCHAR szTemp[] = _T("用户状态");
  2257. if (TSTRINGLEN(szTemp) > iLen) return false;
  2258. StringCchCopy(pBuffer, iLen, szTemp);
  2259. return true;
  2260. }
  2261. //打印通讯日志
  2262. void ToShow(int dTablePrivate, DWORD dUserID)
  2263. {
  2264. TCHAR szBuffer[BUFFERLEN];
  2265. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  2266. if (ToString(szBuffer, BUFFERLEN, dUserID))
  2267. {
  2268. mylog::OutputString(szBuffer, dTablePrivate);
  2269. }
  2270. }
  2271. };
  2272. //用户状态
  2273. struct CMD_GR_UserStatus
  2274. {
  2275. DWORD dwUserID; //用户标识
  2276. tagUserStatus UserStatus; //用户状态
  2277. //参数转成字符串
  2278. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  2279. {
  2280. if (sizeof(CMD_GR_UserStatus) * 16 > iLen) return false;
  2281. TCHAR szBuffer[BUFFERLEN];
  2282. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  2283. UserStatus.ToString(szBuffer, BUFFERLEN, dUserID);
  2284. #ifdef _UNICODE
  2285. _snwprintf(pBuffer, iLen, TEXT("用户分数->用户标识:%d,用户状态:%s")
  2286. , dwUserID, szBuffer);
  2287. #else
  2288. _snprintf(pBuffer, iLen, TEXT("用户分数->用户标识:%d,用户状态:%s")
  2289. , dwUserID, szBuffer);
  2290. #endif
  2291. //mylog::ToSet(pBuffer, iLen, dUserID);
  2292. return true;
  2293. }
  2294. //名字
  2295. bool ToName(TCHAR* pBuffer, int iLen)
  2296. {
  2297. TCHAR szTemp[] = _T("用户状态");
  2298. if (TSTRINGLEN(szTemp) > iLen) return false;
  2299. StringCchCopy(pBuffer, iLen, szTemp);
  2300. return true;
  2301. }
  2302. //打印通讯日志
  2303. void ToShow(int dTablePrivate, DWORD dUserID)
  2304. {
  2305. TCHAR szBuffer[BUFFERLEN];
  2306. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  2307. if (ToString(szBuffer, BUFFERLEN, dUserID))
  2308. {
  2309. mylog::OutputString(szBuffer, dTablePrivate);
  2310. }
  2311. }
  2312. };
  2313. //请求失败
  2314. struct CMD_GR_RequestFailure
  2315. {
  2316. LONG lErrorCode; //错误代码
  2317. TCHAR szDescribeString[128]; //描述信息
  2318. //参数转成字符串
  2319. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  2320. {
  2321. if (sizeof(CMD_GR_RequestFailure) * 16 > iLen) return false;
  2322. #ifdef _UNICODE
  2323. _snwprintf(pBuffer, iLen, TEXT("请求失败->错误代码:%d,描述信息:%s.")
  2324. , lErrorCode, szDescribeString);
  2325. #else
  2326. _snprintf(pBuffer, iLen, TEXT("请求失败->错误代码:%d,描述信息:%s.")
  2327. , lErrorCode, szDescribeString);
  2328. #endif
  2329. //mylog::ToSet(pBuffer, iLen, dUserID);
  2330. return true;
  2331. }
  2332. //名字
  2333. bool ToName(TCHAR* pBuffer, int iLen)
  2334. {
  2335. TCHAR szTemp[] = _T("请求失败");
  2336. if (TSTRINGLEN(szTemp) > iLen) return false;
  2337. StringCchCopy(pBuffer, iLen, szTemp);
  2338. return true;
  2339. }
  2340. //打印通讯日志
  2341. void ToShow(int dTablePrivate, DWORD dUserID)
  2342. {
  2343. TCHAR szBuffer[BUFFERLEN];
  2344. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  2345. if (ToString(szBuffer, BUFFERLEN, dUserID))
  2346. {
  2347. mylog::OutputString(szBuffer, dTablePrivate);
  2348. }
  2349. }
  2350. };
  2351. //领奖失败错误码
  2352. struct CMD_GR_RequestFailureAward
  2353. {
  2354. BYTE lErrorCode; //错误代码
  2355. TCHAR szDescribeString[128]; //描述信息
  2356. };
  2357. //用户聊天
  2358. struct CMD_GR_C_UserChat
  2359. {
  2360. WORD wChatLength; //信息长度
  2361. DWORD dwChatColor; //信息颜色
  2362. DWORD dwSendUserID; //发送用户
  2363. DWORD dwTargetUserID; //目标用户
  2364. TCHAR szChatString[LEN_USER_CHAT]; //聊天信息
  2365. };
  2366. //用户聊天
  2367. struct CMD_GR_S_UserChat
  2368. {
  2369. WORD wChatLength; //信息长度
  2370. DWORD dwChatColor; //信息颜色
  2371. DWORD dwSendUserID; //发送用户
  2372. DWORD dwTargetUserID; //目标用户
  2373. TCHAR szChatString[LEN_USER_CHAT]; //聊天信息
  2374. };
  2375. //用户表情
  2376. struct CMD_GR_C_UserExpression
  2377. {
  2378. WORD wItemIndex; //表情索引
  2379. DWORD dwSendUserID; //发送用户
  2380. DWORD dwTargetUserID; //目标用户
  2381. //参数转成字符串
  2382. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  2383. {
  2384. if (sizeof(CMD_GR_C_UserExpression) * 16 > iLen) return false;
  2385. #ifdef _UNICODE
  2386. _snwprintf(pBuffer, iLen, TEXT("用户表情->表情索引:%d,发送用户:%d,目标用户:%d.")
  2387. , wItemIndex, dwSendUserID, dwTargetUserID);
  2388. #else
  2389. _snprintf(pBuffer, iLen, TEXT("用户表情->表情索引:%d,发送用户:%d,目标用户:%d.")
  2390. , wItemIndex, dwSendUserID, dwTargetUserID);
  2391. #endif
  2392. //mylog::ToSet(pBuffer, iLen, dUserID);
  2393. return true;
  2394. }
  2395. //名字
  2396. bool ToName(TCHAR* pBuffer, int iLen)
  2397. {
  2398. TCHAR szTemp[] = _T("用户表情");
  2399. if (TSTRINGLEN(szTemp) > iLen) return false;
  2400. StringCchCopy(pBuffer, iLen, szTemp);
  2401. return true;
  2402. }
  2403. //打印通讯日志
  2404. void ToShow(int dTablePrivate, DWORD dUserID)
  2405. {
  2406. TCHAR szBuffer[BUFFERLEN];
  2407. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  2408. if (ToString(szBuffer, BUFFERLEN, dUserID))
  2409. {
  2410. mylog::OutputString(szBuffer, dTablePrivate);
  2411. }
  2412. }
  2413. };
  2414. //用户表情
  2415. struct CMD_GR_S_UserExpression
  2416. {
  2417. WORD wItemIndex; //表情索引
  2418. DWORD dwSendUserID; //发送用户
  2419. DWORD dwTargetUserID; //目标用户
  2420. //参数转成字符串
  2421. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  2422. {
  2423. if (sizeof(CMD_GR_C_UserExpression) * 16 > iLen) return false;
  2424. #ifdef _UNICODE
  2425. _snwprintf(pBuffer, iLen, TEXT("用户表情->表情索引:%d,发送用户:%d,目标用户:%d.")
  2426. , wItemIndex, dwSendUserID, dwTargetUserID);
  2427. #else
  2428. _snprintf(pBuffer, iLen, TEXT("用户表情->表情索引:%d,发送用户:%d,目标用户:%d.")
  2429. , wItemIndex, dwSendUserID, dwTargetUserID);
  2430. #endif
  2431. //mylog::ToSet(pBuffer, iLen, dUserID);
  2432. return true;
  2433. }
  2434. //名字
  2435. bool ToName(TCHAR* pBuffer, int iLen)
  2436. {
  2437. TCHAR szTemp[] = _T("用户表情");
  2438. if (TSTRINGLEN(szTemp) > iLen) return false;
  2439. StringCchCopy(pBuffer, iLen, szTemp);
  2440. return true;
  2441. }
  2442. //打印通讯日志
  2443. void ToShow(int dTablePrivate, DWORD dUserID)
  2444. {
  2445. TCHAR szBuffer[BUFFERLEN];
  2446. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  2447. if (ToString(szBuffer, BUFFERLEN, dUserID))
  2448. {
  2449. mylog::OutputString(szBuffer, dTablePrivate);
  2450. }
  2451. }
  2452. };
  2453. //用户私聊
  2454. struct CMD_GR_C_WisperChat
  2455. {
  2456. WORD wChatLength; //信息长度
  2457. DWORD dwChatColor; //信息颜色
  2458. DWORD dwSendUserID; //发送用户
  2459. DWORD dwTargetUserID; //目标用户
  2460. TCHAR szChatString[LEN_USER_CHAT]; //聊天信息
  2461. };
  2462. //用户私聊
  2463. struct CMD_GR_S_WisperChat
  2464. {
  2465. WORD wChatLength; //信息长度
  2466. DWORD dwChatColor; //信息颜色
  2467. DWORD dwSendUserID; //发送用户
  2468. DWORD dwTargetUserID; //目标用户
  2469. TCHAR szChatString[LEN_USER_CHAT]; //聊天信息
  2470. };
  2471. //私聊表情
  2472. struct CMD_GR_C_WisperExpression
  2473. {
  2474. WORD wItemIndex; //表情索引
  2475. DWORD dwSendUserID; //发送用户
  2476. DWORD dwTargetUserID; //目标用户
  2477. //参数转成字符串
  2478. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  2479. {
  2480. if (sizeof(CMD_GR_C_UserExpression) * 16 > iLen) return false;
  2481. #ifdef _UNICODE
  2482. _snwprintf(pBuffer, iLen, TEXT("用户表情->表情索引:%d,发送用户:%d,目标用户:%d.")
  2483. , wItemIndex, dwSendUserID, dwTargetUserID);
  2484. #else
  2485. _snprintf(pBuffer, iLen, TEXT("用户表情->表情索引:%d,发送用户:%d,目标用户:%d.")
  2486. , wItemIndex, dwSendUserID, dwTargetUserID);
  2487. #endif
  2488. //mylog::ToSet(pBuffer, iLen, dUserID);
  2489. return true;
  2490. }
  2491. //名字
  2492. bool ToName(TCHAR* pBuffer, int iLen)
  2493. {
  2494. TCHAR szTemp[] = _T("用户表情");
  2495. if (TSTRINGLEN(szTemp) > iLen) return false;
  2496. StringCchCopy(pBuffer, iLen, szTemp);
  2497. return true;
  2498. }
  2499. //打印通讯日志
  2500. void ToShow(int dTablePrivate, DWORD dUserID)
  2501. {
  2502. TCHAR szBuffer[BUFFERLEN];
  2503. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  2504. if (ToString(szBuffer, BUFFERLEN, dUserID))
  2505. {
  2506. mylog::OutputString(szBuffer, dTablePrivate);
  2507. }
  2508. }
  2509. };
  2510. //私聊表情
  2511. struct CMD_GR_S_WisperExpression
  2512. {
  2513. WORD wItemIndex; //表情索引
  2514. DWORD dwSendUserID; //发送用户
  2515. DWORD dwTargetUserID; //目标用户
  2516. //参数转成字符串
  2517. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  2518. {
  2519. if (sizeof(CMD_GR_C_UserExpression) * 16 > iLen) return false;
  2520. #ifdef _UNICODE
  2521. _snwprintf(pBuffer, iLen, TEXT("用户表情->表情索引:%d,发送用户:%d,目标用户:%d.")
  2522. , wItemIndex, dwSendUserID, dwTargetUserID);
  2523. #else
  2524. _snprintf(pBuffer, iLen, TEXT("用户表情->表情索引:%d,发送用户:%d,目标用户:%d.")
  2525. , wItemIndex, dwSendUserID, dwTargetUserID);
  2526. #endif
  2527. //mylog::ToSet(pBuffer, iLen, dUserID);
  2528. return true;
  2529. }
  2530. //名字
  2531. bool ToName(TCHAR* pBuffer, int iLen)
  2532. {
  2533. TCHAR szTemp[] = _T("用户表情");
  2534. if (TSTRINGLEN(szTemp) > iLen) return false;
  2535. StringCchCopy(pBuffer, iLen, szTemp);
  2536. return true;
  2537. }
  2538. //打印通讯日志
  2539. void ToShow(int dTablePrivate, DWORD dUserID)
  2540. {
  2541. TCHAR szBuffer[BUFFERLEN];
  2542. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  2543. if (ToString(szBuffer, BUFFERLEN, dUserID))
  2544. {
  2545. mylog::OutputString(szBuffer, dTablePrivate);
  2546. }
  2547. }
  2548. };
  2549. //用户会话
  2550. struct CMD_GR_ColloquyChat
  2551. {
  2552. WORD wChatLength; //信息长度
  2553. DWORD dwChatColor; //信息颜色
  2554. DWORD dwSendUserID; //发送用户
  2555. DWORD dwConversationID; //会话标识
  2556. DWORD dwTargetUserID[16]; //目标用户
  2557. TCHAR szChatString[LEN_USER_CHAT]; //聊天信息
  2558. };
  2559. //邀请用户
  2560. struct CMD_GR_C_InviteUser
  2561. {
  2562. WORD wTableID; //桌子号码
  2563. DWORD dwSendUserID; //发送用户
  2564. };
  2565. //邀请用户
  2566. struct CMD_GR_S_InviteUser
  2567. {
  2568. DWORD dwTargetUserID; //目标用户
  2569. };
  2570. //购买道具
  2571. struct CMD_GR_C_PropertyBuy
  2572. {
  2573. BYTE cbRequestArea; //请求范围
  2574. BYTE cbConsumeScore; //积分消费
  2575. WORD wItemCount; //购买数目
  2576. WORD wPropertyIndex; //道具索引
  2577. DWORD dwTargetUserID; //使用对象
  2578. };
  2579. //道具成功
  2580. struct CMD_GR_S_PropertySuccess
  2581. {
  2582. BYTE cbRequestArea; //使用环境
  2583. WORD wItemCount; //购买数目
  2584. WORD wPropertyIndex; //道具索引
  2585. DWORD dwSourceUserID; //目标对象
  2586. DWORD dwTargetUserID; //使用对象
  2587. };
  2588. //道具失败
  2589. struct CMD_GR_PropertyFailure
  2590. {
  2591. WORD wRequestArea; //请求区域
  2592. LONG lErrorCode; //错误代码
  2593. TCHAR szDescribeString[256]; //描述信息
  2594. };
  2595. //道具消息
  2596. struct CMD_GR_S_PropertyMessage
  2597. {
  2598. //道具信息
  2599. WORD wPropertyIndex; //道具索引
  2600. WORD wPropertyCount; //道具数目
  2601. DWORD dwSourceUserID; //目标对象
  2602. DWORD dwTargerUserID; //使用对象
  2603. };
  2604. //道具效应
  2605. struct CMD_GR_S_PropertyEffect
  2606. {
  2607. DWORD wUserID; //用 户I D
  2608. BYTE cbMemberOrder; //会员等级
  2609. };
  2610. //发送喇叭
  2611. struct CMD_GR_C_SendTrumpet
  2612. {
  2613. BYTE cbRequestArea; //请求范围
  2614. WORD wPropertyIndex; //道具索引
  2615. DWORD TrumpetColor; //喇叭颜色
  2616. TCHAR szTrumpetContent[TRUMPET_MAX_CHAR]; //喇叭内容
  2617. };
  2618. //发送喇叭
  2619. struct CMD_GR_S_SendTrumpet
  2620. {
  2621. WORD wPropertyIndex; //道具索引
  2622. DWORD dwSendUserID; //用户 I D
  2623. DWORD TrumpetColor; //喇叭颜色
  2624. TCHAR szSendNickName[32]; //玩家昵称
  2625. TCHAR szTrumpetContent[TRUMPET_MAX_CHAR]; //喇叭内容
  2626. };
  2627. //用户拒绝黑名单坐下
  2628. struct CMD_GR_UserRepulseSit
  2629. {
  2630. WORD wTableID; //桌子号码
  2631. WORD wChairID; //椅子位置
  2632. DWORD dwUserID; //用户 I D
  2633. DWORD dwRepulseUserID; //用户 I D
  2634. };
  2635. //////////////////////////////////////////////////////////////////////////////////
  2636. //规则标志
  2637. #define UR_LIMIT_SAME_IP 0x01 //限制地址
  2638. #define UR_LIMIT_WIN_RATE 0x02 //限制胜率
  2639. #define UR_LIMIT_FLEE_RATE 0x04 //限制逃率
  2640. #define UR_LIMIT_GAME_SCORE 0x08 //限制积分
  2641. //用户规则
  2642. struct CMD_GR_UserRule
  2643. {
  2644. BYTE cbRuleMask; //规则掩码
  2645. WORD wMinWinRate; //最低胜率
  2646. WORD wMaxFleeRate; //最高逃率
  2647. LONG lMaxGameScore; //最高分数
  2648. LONG lMinGameScore; //最低分数
  2649. };
  2650. //请求用户信息
  2651. struct CMD_GR_UserInfoReq
  2652. {
  2653. DWORD dwUserIDReq; //请求用户 此字段 为0xFFFF 表示请求所有用户 除了自己
  2654. WORD wTablePos; //桌子位置
  2655. //参数转成字符串
  2656. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  2657. {
  2658. if (sizeof(CMD_GR_UserInfoReq) * 16 > iLen) return false;
  2659. #ifdef _UNICODE
  2660. _snwprintf(pBuffer, iLen, TEXT("请求用户信息->请求用户:%d,桌子位置:%d.")
  2661. , dwUserIDReq, wTablePos);
  2662. #else
  2663. _snprintf(pBuffer, iLen, TEXT("请求用户信息->请求用户:%d,桌子位置:%d.")
  2664. , dwUserIDReq, wTablePos);
  2665. #endif
  2666. //mylog::ToSet(pBuffer, iLen, dUserID);
  2667. return true;
  2668. }
  2669. //名字
  2670. bool ToName(TCHAR* pBuffer, int iLen)
  2671. {
  2672. TCHAR szTemp[] = _T("请求用户信息");
  2673. if (TSTRINGLEN(szTemp) > iLen) return false;
  2674. StringCchCopy(pBuffer, iLen, szTemp);
  2675. return true;
  2676. }
  2677. //打印通讯日志
  2678. void ToShow(int dTablePrivate, DWORD dUserID)
  2679. {
  2680. TCHAR szBuffer[BUFFERLEN];
  2681. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  2682. if (ToString(szBuffer, BUFFERLEN, dUserID))
  2683. {
  2684. mylog::OutputString(szBuffer, dTablePrivate);
  2685. }
  2686. }
  2687. };
  2688. //请求用户信息
  2689. struct CMD_GR_ChairUserInfoReq
  2690. {
  2691. WORD wTableID; //桌子号码
  2692. WORD wChairID; //椅子位置
  2693. };
  2694. //通知当前豆子
  2695. struct CMD_GR_UserBean
  2696. {
  2697. DWORD dwCurrBeans; //当前豆子
  2698. //参数转成字符串
  2699. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  2700. {
  2701. if (sizeof(CMD_GR_UserInfoReq) * 16 > iLen) return false;
  2702. #ifdef _UNICODE
  2703. _snwprintf(pBuffer, iLen, TEXT("通知当前元宝->元宝:%d.")
  2704. , dwCurrBeans);
  2705. #else
  2706. _snprintf(pBuffer, iLen, TEXT("通知当前元宝->元宝:%d.")
  2707. , dwCurrBeans);
  2708. #endif
  2709. //mylog::ToSet(pBuffer, iLen, dUserID);
  2710. return true;
  2711. }
  2712. //名字
  2713. bool ToName(TCHAR* pBuffer, int iLen)
  2714. {
  2715. TCHAR szTemp[] = _T("通知当前元宝");
  2716. if (TSTRINGLEN(szTemp) > iLen) return false;
  2717. StringCchCopy(pBuffer, iLen, szTemp);
  2718. return true;
  2719. }
  2720. //打印通讯日志
  2721. void ToShow(int dTablePrivate, DWORD dUserID)
  2722. {
  2723. TCHAR szBuffer[BUFFERLEN];
  2724. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  2725. if (ToString(szBuffer, BUFFERLEN, dUserID))
  2726. {
  2727. mylog::OutputString(szBuffer, dTablePrivate);
  2728. }
  2729. }
  2730. };
  2731. //////////////////////////////////////////////////////////////////////////////////
  2732. //状态命令
  2733. #define MDM_GR_STATUS 4 //状态信息
  2734. #define SUB_GR_TABLE_INFO 100 //桌子信息
  2735. #define SUB_GR_TABLE_STATUS 101 //桌子状态
  2736. //////////////////////////////////////////////////////////////////////////////////
  2737. //桌子状态
  2738. struct tagTableStatus
  2739. {
  2740. BYTE cbTableLock; //锁定标志
  2741. BYTE cbPlayStatus; //游戏标志
  2742. LONG lCellScore; //单元积分
  2743. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  2744. {
  2745. if (sizeof(tagUserScore) * 16 > iLen) return false;
  2746. #ifdef _UNICODE
  2747. _snwprintf(pBuffer, iLen, TEXT("<br>【桌子状态】锁定标志:%d,游戏标志:%d,单元积分:%d.")
  2748. , cbTableLock, cbPlayStatus, lCellScore);
  2749. #else
  2750. _snprintf(pBuffer, iLen, TEXT("<br>【桌子状态】锁定标志:%d,游戏标志:%d,单元积分:%d.")
  2751. , cbTableLock, cbPlayStatus, lCellScore);
  2752. #endif
  2753. ////mylog::ToSet(pBuffer, iLen, dUserID);
  2754. return true;
  2755. }
  2756. //名字
  2757. bool ToName(TCHAR* pBuffer, int iLen)
  2758. {
  2759. TCHAR szTemp[] = _T("桌子状态");
  2760. if (TSTRINGLEN(szTemp) > iLen) return false;
  2761. StringCchCopy(pBuffer, iLen, szTemp);
  2762. return true;
  2763. }
  2764. //打印通讯日志
  2765. void ToShow(int dTablePrivate, DWORD dUserID)
  2766. {
  2767. TCHAR szBuffer[BUFFERLEN];
  2768. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  2769. if (ToString(szBuffer, BUFFERLEN, dUserID))
  2770. {
  2771. mylog::OutputString(szBuffer, dTablePrivate);
  2772. }
  2773. }
  2774. };
  2775. //桌子信息
  2776. struct CMD_GR_TableInfo
  2777. {
  2778. WORD wTableCount; //桌子数目
  2779. tagTableStatus TableStatusArray[512]; //桌子状态
  2780. };
  2781. //桌子状态
  2782. struct CMD_GR_TableStatus
  2783. {
  2784. WORD wTableID; //桌子号码
  2785. tagTableStatus TableStatus; //桌子状态
  2786. //参数转成字符串
  2787. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  2788. {
  2789. if (sizeof(CMD_GR_TableStatus) * 16 > iLen) return false;
  2790. TCHAR szBuffer[BUFFERLEN];
  2791. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  2792. TableStatus.ToString(szBuffer, BUFFERLEN, dUserID);
  2793. #ifdef _UNICODE
  2794. _snwprintf(pBuffer, iLen, TEXT("桌子状态->桌子号码:%d,桌子状态:%s.")
  2795. , wTableID, szBuffer);
  2796. #else
  2797. _snprintf(pBuffer, iLen, TEXT("桌子状态->桌子号码:%d,桌子状态:%s.")
  2798. , wTableID, szBuffer);
  2799. #endif
  2800. //mylog::ToSet(pBuffer, iLen, dUserID);
  2801. return true;
  2802. }
  2803. //名字
  2804. bool ToName(TCHAR* pBuffer, int iLen)
  2805. {
  2806. TCHAR szTemp[] = _T("桌子状态");
  2807. if (TSTRINGLEN(szTemp) > iLen) return false;
  2808. StringCchCopy(pBuffer, iLen, szTemp);
  2809. return true;
  2810. }
  2811. //打印通讯日志
  2812. void ToShow(int dTablePrivate, DWORD dUserID)
  2813. {
  2814. TCHAR szBuffer[BUFFERLEN];
  2815. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  2816. if (ToString(szBuffer, BUFFERLEN, dUserID))
  2817. {
  2818. mylog::OutputString(szBuffer, dTablePrivate);
  2819. }
  2820. }
  2821. };
  2822. //////////////////////////////////////////////////////////////////////////////////
  2823. //银行命令
  2824. //#define MDM_GR_INSURE 5 //用户信息
  2825. ////银行命令
  2826. //#define SUB_GR_ENABLE_INSURE_REQUEST 1 //开通银行
  2827. //#define SUB_GR_QUERY_INSURE_INFO 2 //查询银行
  2828. //#define SUB_GR_SAVE_SCORE_REQUEST 3 //存款操作
  2829. //#define SUB_GR_TAKE_SCORE_REQUEST 4 //取款操作
  2830. //#define SUB_GR_TRANSFER_SCORE_REQUEST 5 //取款操作
  2831. //#define SUB_GR_QUERY_USER_INFO_REQUEST 6 //查询用户
  2832. //
  2833. //#define SUB_GR_USER_INSURE_INFO 100 //银行资料
  2834. //#define SUB_GR_USER_INSURE_SUCCESS 101 //银行成功
  2835. //#define SUB_GR_USER_INSURE_FAILURE 102 //银行失败
  2836. //#define SUB_GR_USER_TRANSFER_USER_INFO 103 //用户资料
  2837. //#define SUB_GR_USER_INSURE_ENABLE_RESULT 104 //开通结果
  2838. //////////////////////////////////////////////////////////////////////////////////
  2839. //开通银行
  2840. struct CMD_GR_C_EnableInsureRequest
  2841. {
  2842. BYTE cbActivityGame; //游戏动作
  2843. DWORD dwUserID; //用户I D
  2844. TCHAR szLogonPass[LEN_PASSWORD]; //登录密码
  2845. TCHAR szInsurePass[LEN_PASSWORD]; //银行密码
  2846. TCHAR szMachineID[LEN_MACHINE_ID]; //机器序列
  2847. };
  2848. //查询银行
  2849. struct CMD_GR_C_QueryInsureInfoRequest
  2850. {
  2851. BYTE cbActivityGame; //游戏动作
  2852. TCHAR szInsurePass[LEN_PASSWORD]; //银行密码
  2853. };
  2854. //存款请求
  2855. struct CMD_GR_C_SaveScoreRequest
  2856. {
  2857. BYTE cbActivityGame; //游戏动作
  2858. SCORE lSaveScore; //存款数目
  2859. };
  2860. //取款请求
  2861. struct CMD_GR_C_TakeScoreRequest
  2862. {
  2863. BYTE cbActivityGame; //游戏动作
  2864. SCORE lTakeScore; //取款数目
  2865. TCHAR szInsurePass[LEN_PASSWORD]; //银行密码
  2866. };
  2867. //转账金币
  2868. struct CMD_GP_C_TransferScoreRequest
  2869. {
  2870. BYTE cbActivityGame; //游戏动作
  2871. SCORE lTransferScore; //转账金币
  2872. TCHAR szAccounts[LEN_ACCOUNTS]; //目标用户
  2873. TCHAR szInsurePass[LEN_PASSWORD]; //银行密码
  2874. TCHAR szTransRemark[LEN_TRANS_REMARK]; //转账备注
  2875. };
  2876. //查询用户
  2877. struct CMD_GR_C_QueryUserInfoRequest
  2878. {
  2879. BYTE cbActivityGame; //游戏动作
  2880. BYTE cbByNickName; //昵称赠送
  2881. TCHAR szAccounts[LEN_ACCOUNTS]; //目标用户
  2882. };
  2883. //银行资料
  2884. struct CMD_GR_S_UserInsureInfo
  2885. {
  2886. BYTE cbActivityGame; //游戏动作
  2887. BYTE cbEnjoinTransfer; //转账开关
  2888. WORD wRevenueTake; //税收比例
  2889. WORD wRevenueTransfer; //税收比例
  2890. WORD wRevenueTransferMember; //税收比例
  2891. WORD wServerID; //房间标识
  2892. SCORE lUserScore; //用户金币
  2893. SCORE lUserInsure; //银行金币
  2894. SCORE lTransferPrerequisite; //转账条件
  2895. };
  2896. //银行成功
  2897. struct CMD_GR_S_UserInsureSuccess
  2898. {
  2899. BYTE cbActivityGame; //游戏动作
  2900. SCORE lUserScore; //身上金币
  2901. SCORE lUserInsure; //银行金币
  2902. TCHAR szDescribeString[128]; //描述消息
  2903. };
  2904. //银行失败
  2905. struct CMD_GR_S_UserInsureFailure
  2906. {
  2907. BYTE cbActivityGame; //游戏动作
  2908. LONG lErrorCode; //错误代码
  2909. TCHAR szDescribeString[128]; //描述消息
  2910. };
  2911. //用户信息
  2912. struct CMD_GR_S_UserTransferUserInfo
  2913. {
  2914. BYTE cbActivityGame; //游戏动作
  2915. DWORD dwTargetGameID; //目标用户
  2916. TCHAR szAccounts[LEN_ACCOUNTS]; //目标用户
  2917. };
  2918. //开通结果
  2919. struct CMD_GR_S_UserInsureEnableResult
  2920. {
  2921. BYTE cbActivityGame; //游戏动作
  2922. BYTE cbInsureEnabled; //使能标识
  2923. TCHAR szDescribeString[128]; //描述消息
  2924. };
  2925. //////////////////////////////////////////////////////////////////////////////////
  2926. //任务命令
  2927. #define MDM_GR_TASK 6 //任务命令
  2928. //#define SUB_GR_TASK_LOAD_INFO 1 //加载任务
  2929. //#define SUB_GR_TASK_TAKE 2 //领取任务
  2930. //#define SUB_GR_TASK_REWARD 3 //任务奖励
  2931. //
  2932. //#define SUB_GR_TASK_INFO 4 //任务信息
  2933. //#define SUB_GR_TASK_FINISH 5 //任务完成
  2934. //#define SUB_GR_TASK_LIST 6 //任务列表
  2935. //#define SUB_GR_TASK_RESULT 7 //任务结果
  2936. //////////////////////////////////////////////////////////////////////////////////
  2937. ////加载任务
  2938. //struct CMD_GR_C_LoadTaskInfo
  2939. //{
  2940. // DWORD dwUserID; //用户标识
  2941. // TCHAR szPassword[LEN_PASSWORD]; //用户密码
  2942. //};
  2943. //
  2944. ////领取任务
  2945. //struct CMD_GR_C_TakeTask
  2946. //{
  2947. // WORD wTaskID; //任务标识
  2948. // DWORD dwUserID; //用户标识
  2949. // TCHAR szPassword[LEN_PASSWORD]; //登录密码
  2950. // TCHAR szMachineID[LEN_MACHINE_ID]; //机器序列
  2951. //};
  2952. //
  2953. ////领取奖励
  2954. //struct CMD_GR_C_TaskReward
  2955. //{
  2956. // WORD wTaskID; //任务标识
  2957. // DWORD dwUserID; //用户标识
  2958. // TCHAR szPassword[LEN_PASSWORD]; //登录密码
  2959. // TCHAR szMachineID[LEN_MACHINE_ID]; //机器序列
  2960. //};
  2961. //
  2962. ////任务信息
  2963. //struct CMD_GR_S_TaskInfo
  2964. //{
  2965. // WORD wTaskCount; //任务数量
  2966. // tagTaskStatus TaskStatus[TASK_MAX_COUNT]; //任务状态
  2967. //};
  2968. //
  2969. ////任务完成
  2970. //struct CMD_GR_S_TaskFinish
  2971. //{
  2972. // WORD wFinishTaskID; //任务标识
  2973. // TCHAR szTaskName[LEN_TASK_NAME]; //任务名称
  2974. //};
  2975. //
  2976. ////任务结果
  2977. //struct CMD_GR_S_TaskResult
  2978. //{
  2979. // //结果信息
  2980. // bool bSuccessed; //成功标识
  2981. // WORD wCommandID; //命令标识
  2982. //
  2983. // //财富信息
  2984. // SCORE lCurrScore; //当前金币
  2985. // SCORE lCurrIngot; //当前元宝
  2986. //
  2987. // //提示信息
  2988. // TCHAR szNotifyContent[128]; //提示内容
  2989. //};
  2990. //
  2991. //////////////////////////////////////////////////////////////////////////////////
  2992. //兑换命令
  2993. #define MDM_GR_EXCHANGE 7 //兑换命令
  2994. #define SUB_GR_EXCHANGE_LOAD_INFO 400 //加载信息
  2995. #define SUB_GR_EXCHANGE_PARAM_INFO 401 //兑换参数
  2996. #define SUB_GR_PURCHASE_MEMBER 402 //购买会员
  2997. #define SUB_GR_PURCHASE_RESULT 403 //购买结果
  2998. #define SUB_GR_EXCHANGE_SCORE 404 //兑换游戏币
  2999. #define SUB_GR_EXCHANGE_RESULT 405 //兑换结果
  3000. //////////////////////////////////////////////////////////////////////////////////
  3001. //查询参数
  3002. struct CMD_GR_ExchangeParameter
  3003. {
  3004. WORD wExchangeRate; //兑换比率
  3005. };
  3006. //购买会员
  3007. struct CMD_GR_PurchaseMember
  3008. {
  3009. DWORD dwUserID; //用户标识
  3010. BYTE cbMemberOrder; //会员标识
  3011. WORD wPurchaseTime; //购买时间
  3012. TCHAR szMachineID[LEN_MACHINE_ID]; //机器标识
  3013. };
  3014. //购买结果
  3015. struct CMD_GR_PurchaseResult
  3016. {
  3017. bool bSuccessed; //成功标识
  3018. BYTE cbMemberOrder; //会员系列
  3019. DWORD lCurrScore; //当前游戏币
  3020. TCHAR szNotifyContent[128]; //提示内容
  3021. };
  3022. //兑换游戏币
  3023. struct CMD_GR_ExchangeScore
  3024. {
  3025. DWORD dwUserID; //用户标识
  3026. //DWORD lExchangeIngot; //兑换钻石
  3027. DWORD dwExchangeID; //+++兑换ID
  3028. TCHAR szMachineID[LEN_MACHINE_ID]; //机器标识
  3029. };
  3030. //兑换结果
  3031. struct CMD_GR_ExchangeResult
  3032. {
  3033. bool bSuccessed; //成功标识
  3034. DWORD lCurrScore; //当前游戏币
  3035. DWORD lCurrIngot; //当前元宝
  3036. TCHAR szNotifyContent[128]; //提示内容
  3037. };
  3038. //////////////////////////////////////////////////////////////////////////////////
  3039. //管理命令
  3040. #define MDM_GR_MANAGE 8 //管理命令
  3041. #define SUB_GR_SEND_WARNING 1 //发送警告
  3042. #define SUB_GR_SEND_MESSAGE 2 //发送消息
  3043. #define SUB_GR_LOOK_USER_IP 3 //查看地址
  3044. #define SUB_GR_KILL_USER 4 //踢出用户
  3045. #define SUB_GR_LIMIT_ACCOUNS 5 //禁用帐户
  3046. #define SUB_GR_SET_USER_RIGHT 6 //权限设置
  3047. //房间设置
  3048. #define SUB_GR_QUERY_OPTION 7 //查询设置
  3049. #define SUB_GR_OPTION_SERVER 8 //房间设置
  3050. #define SUB_GR_OPTION_CURRENT 9 //当前设置
  3051. #define SUB_GR_LIMIT_USER_CHAT 10 //限制聊天
  3052. #define SUB_GR_KICK_ALL_USER 11 //踢出用户
  3053. #define SUB_GR_DISMISSGAME 12 //解散游戏
  3054. //////////////////////////////////////////////////////////////////////////////////
  3055. //申请解散私有房间
  3056. struct CMD_GR_DELETE_PRIVATE_ROOM_REQ
  3057. {
  3058. WORD wTableID;
  3059. WORD wChairID;
  3060. BYTE leftTime;
  3061. //参数转成字符串
  3062. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  3063. {
  3064. if (sizeof(CMD_GR_DELETE_PRIVATE_ROOM_REQ) * 16 > iLen) return false;
  3065. #ifdef _UNICODE
  3066. _snwprintf(pBuffer, iLen, TEXT("申请解散私有房间->桌子:%d,椅子:%d,定时剩余时间:%d.")
  3067. , wTableID, wChairID, leftTime);
  3068. #else
  3069. _snprintf(pBuffer, iLen, TEXT("申请解散私有房间->桌子:%d,椅子:%d,定时剩余时间:%d.")
  3070. , wTableID, wChairID, leftTime);
  3071. #endif
  3072. //mylog::ToSet(pBuffer, iLen, dUserID);
  3073. return true;
  3074. }
  3075. //名字
  3076. bool ToName(TCHAR* pBuffer, int iLen)
  3077. {
  3078. TCHAR szTemp[] = _T("申请解散私有房间");
  3079. if (TSTRINGLEN(szTemp) > iLen) return false;
  3080. StringCchCopy(pBuffer, iLen, szTemp);
  3081. return true;
  3082. }
  3083. //打印通讯日志
  3084. void ToShow(int dTablePrivate, DWORD dUserID)
  3085. {
  3086. TCHAR szBuffer[BUFFERLEN];
  3087. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  3088. if (ToString(szBuffer, BUFFERLEN, dUserID))
  3089. {
  3090. mylog::OutputString(szBuffer, dTablePrivate);
  3091. }
  3092. }
  3093. };
  3094. //申请解散私有房间的应答
  3095. struct CMD_GR_DELETE_PRIVATE_ROOM_RESP
  3096. {
  3097. WORD wTableID;
  3098. WORD wChairID;
  3099. BYTE bAgree; //是否同意。1同意,0不同意 2 为拒绝
  3100. //参数转成字符串
  3101. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  3102. {
  3103. if (sizeof(CMD_GR_DELETE_PRIVATE_ROOM_RESP) * 16 > iLen) return false;
  3104. #ifdef _UNICODE
  3105. _snwprintf(pBuffer, iLen, TEXT("申请解散私有房间的应答->桌子:%d,椅子:%d,选择:%s.")
  3106. , wTableID, wChairID, bAgree == 1 ? _T("同意") : _T("不同意"));
  3107. #else
  3108. _snprintf(pBuffer, iLen, TEXT("申请解散私有房间的应答->桌子:%d,椅子:%d,选择:%s.")
  3109. , wTableID, wChairID, bAgree == 1 ? _T("同意") : _T("不同意"));
  3110. #endif
  3111. //mylog::ToSet(pBuffer, iLen, dUserID);
  3112. return true;
  3113. }
  3114. //名字
  3115. bool ToName(TCHAR* pBuffer, int iLen)
  3116. {
  3117. TCHAR szTemp[] = _T("申请解散私有房间的应答");
  3118. if (TSTRINGLEN(szTemp) > iLen) return false;
  3119. StringCchCopy(pBuffer, iLen, szTemp);
  3120. return true;
  3121. }
  3122. //打印通讯日志
  3123. void ToShow(int dTablePrivate, DWORD dUserID)
  3124. {
  3125. TCHAR szBuffer[BUFFERLEN];
  3126. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  3127. if (ToString(szBuffer, BUFFERLEN, dUserID))
  3128. {
  3129. mylog::OutputString(szBuffer, dTablePrivate);
  3130. }
  3131. }
  3132. };
  3133. struct CMD_GR_DELETE_PRIVATE_ROOM_RESULT
  3134. {
  3135. WORD wTableID;
  3136. USHORT bState; //0失败,1成功,2超时(也算失败)
  3137. TCHAR szDescription[128]; //描述信息
  3138. //参数转成字符串
  3139. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  3140. {
  3141. if (sizeof(CMD_GR_DELETE_PRIVATE_ROOM_RESULT) * 16 > iLen) return false;
  3142. #ifdef _UNICODE
  3143. _snwprintf(pBuffer, iLen, TEXT("申请解散私有房间的结果->桌子:%d,状态:%s,描述信息:%s.")
  3144. , wTableID, bState == 1 ? _T("成功") : _T("失败"), szDescription);
  3145. #else
  3146. _snprintf(pBuffer, iLen, TEXT("申请解散私有房间的结果->桌子:%d,状态:%s,描述信息:%s.")
  3147. , wTableID, bState == 1 ? _T("成功") : _T("失败"), szDescription);
  3148. #endif
  3149. //mylog::ToSet(pBuffer, iLen, dUserID);
  3150. return true;
  3151. }
  3152. //名字
  3153. bool ToName(TCHAR* pBuffer, int iLen)
  3154. {
  3155. TCHAR szTemp[] = _T("申请解散私有房间的结果");
  3156. if (TSTRINGLEN(szTemp) > iLen) return false;
  3157. StringCchCopy(pBuffer, iLen, szTemp);
  3158. return true;
  3159. }
  3160. //打印通讯日志
  3161. void ToShow(int dTablePrivate, DWORD dUserID)
  3162. {
  3163. TCHAR szBuffer[BUFFERLEN*2];
  3164. ZeroMemory(szBuffer, (BUFFERLEN * 2) * sizeof(TCHAR));
  3165. if (ToString(szBuffer, (BUFFERLEN * 2), dUserID))
  3166. {
  3167. mylog::OutputString(szBuffer, dTablePrivate);
  3168. }
  3169. }
  3170. };
  3171. //发送警告
  3172. struct CMD_GR_SendWarning
  3173. {
  3174. WORD wChatLength; //信息长度
  3175. DWORD dwTargetUserID; //目标用户
  3176. TCHAR szWarningMessage[LEN_USER_CHAT]; //警告消息
  3177. //参数转成字符串
  3178. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  3179. {
  3180. if (sizeof(CMD_GR_SendWarning) * 16 > iLen) return false;
  3181. #ifdef _UNICODE
  3182. _snwprintf(pBuffer, iLen, TEXT("发送警告->信息长度:%d,目标用户:%d,警告消息:%s.")
  3183. , wChatLength, dwTargetUserID, szWarningMessage);
  3184. #else
  3185. _snprintf(pBuffer, iLen, TEXT("发送警告->信息长度:%d,目标用户:%d,警告消息:%s.")
  3186. , wChatLength, dwTargetUserID, szWarningMessage);
  3187. #endif
  3188. //mylog::ToSet(pBuffer, iLen, dUserID);
  3189. return true;
  3190. }
  3191. //名字
  3192. bool ToName(TCHAR* pBuffer, int iLen)
  3193. {
  3194. TCHAR szTemp[] = _T("发送警告");
  3195. if (TSTRINGLEN(szTemp) > iLen) return false;
  3196. StringCchCopy(pBuffer, iLen, szTemp);
  3197. return true;
  3198. }
  3199. //打印通讯日志
  3200. void ToShow(int dTablePrivate, DWORD dUserID)
  3201. {
  3202. TCHAR szBuffer[BUFFERLEN];
  3203. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  3204. if (ToString(szBuffer, BUFFERLEN, dUserID))
  3205. {
  3206. mylog::OutputString(szBuffer, dTablePrivate);
  3207. }
  3208. }
  3209. };
  3210. //系统消息
  3211. struct CMD_GR_SendMessage
  3212. {
  3213. BYTE cbGame; //游戏消息
  3214. BYTE cbRoom; //游戏消息
  3215. BYTE cbAllRoom; //游戏消息
  3216. BYTE cbLoop; //循环标志
  3217. DWORD dwTimeRate; //循环间隔
  3218. __time64_t tConcludeTime; //结束时间
  3219. WORD wChatLength; //信息长度
  3220. TCHAR szSystemMessage[LEN_USER_CHAT]; //系统消息
  3221. };
  3222. //查看地址
  3223. struct CMD_GR_LookUserIP
  3224. {
  3225. DWORD dwTargetUserID; //目标用户
  3226. //参数转成字符串
  3227. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  3228. {
  3229. if (sizeof(CMD_GR_LookUserIP) * 16 > iLen) return false;
  3230. #ifdef _UNICODE
  3231. _snwprintf(pBuffer, iLen, TEXT("查看地址->目标用户:%d.")
  3232. , dwTargetUserID);
  3233. #else
  3234. _snprintf(pBuffer, iLen, TEXT("查看地址->目标用户:%d.")
  3235. , dwTargetUserID);
  3236. #endif
  3237. //mylog::ToSet(pBuffer, iLen, dUserID);
  3238. return true;
  3239. }
  3240. //名字
  3241. bool ToName(TCHAR* pBuffer, int iLen)
  3242. {
  3243. TCHAR szTemp[] = _T("查看地址");
  3244. if (TSTRINGLEN(szTemp) > iLen) return false;
  3245. StringCchCopy(pBuffer, iLen, szTemp);
  3246. return true;
  3247. }
  3248. //打印通讯日志
  3249. void ToShow(int dTablePrivate, DWORD dUserID)
  3250. {
  3251. TCHAR szBuffer[BUFFERLEN];
  3252. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  3253. if (ToString(szBuffer, BUFFERLEN, dUserID))
  3254. {
  3255. mylog::OutputString(szBuffer, dTablePrivate);
  3256. }
  3257. }
  3258. };
  3259. //踢出用户
  3260. struct CMD_GR_KickUser
  3261. {
  3262. DWORD dwTargetUserID; //目标用户
  3263. //参数转成字符串
  3264. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  3265. {
  3266. if (sizeof(CMD_GR_KickUser) * 16 > iLen) return false;
  3267. #ifdef _UNICODE
  3268. _snwprintf(pBuffer, iLen, TEXT("踢出用户->目标用户:%d.")
  3269. , dwTargetUserID);
  3270. #else
  3271. _snprintf(pBuffer, iLen, TEXT("踢出用户->目标用户:%d.")
  3272. , dwTargetUserID);
  3273. #endif
  3274. //mylog::ToSet(pBuffer, iLen, dUserID);
  3275. return true;
  3276. }
  3277. //名字
  3278. bool ToName(TCHAR* pBuffer, int iLen)
  3279. {
  3280. TCHAR szTemp[] = _T("踢出用户");
  3281. if (TSTRINGLEN(szTemp) > iLen) return false;
  3282. StringCchCopy(pBuffer, iLen, szTemp);
  3283. return true;
  3284. }
  3285. //打印通讯日志
  3286. void ToShow(int dTablePrivate, DWORD dUserID)
  3287. {
  3288. TCHAR szBuffer[BUFFERLEN];
  3289. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  3290. if (ToString(szBuffer, BUFFERLEN, dUserID))
  3291. {
  3292. mylog::OutputString(szBuffer, dTablePrivate);
  3293. }
  3294. }
  3295. };
  3296. //禁用帐户
  3297. struct CMD_GR_LimitAccounts
  3298. {
  3299. DWORD dwTargetUserID; //目标用户
  3300. //参数转成字符串
  3301. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  3302. {
  3303. if (sizeof(CMD_GR_LimitAccounts) * 16 > iLen) return false;
  3304. #ifdef _UNICODE
  3305. _snwprintf(pBuffer, iLen, TEXT("禁用帐户->目标用户:%d.")
  3306. , dwTargetUserID);
  3307. #else
  3308. _snprintf(pBuffer, iLen, TEXT("禁用帐户->目标用户:%d.")
  3309. , dwTargetUserID);
  3310. #endif
  3311. //mylog::ToSet(pBuffer, iLen, dUserID);
  3312. return true;
  3313. }
  3314. //名字
  3315. bool ToName(TCHAR* pBuffer, int iLen)
  3316. {
  3317. TCHAR szTemp[] = _T("禁用帐户");
  3318. if (TSTRINGLEN(szTemp) > iLen) return false;
  3319. StringCchCopy(pBuffer, iLen, szTemp);
  3320. return true;
  3321. }
  3322. //打印通讯日志
  3323. void ToShow(int dTablePrivate, DWORD dUserID)
  3324. {
  3325. TCHAR szBuffer[BUFFERLEN];
  3326. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  3327. if (ToString(szBuffer, BUFFERLEN, dUserID))
  3328. {
  3329. mylog::OutputString(szBuffer, dTablePrivate);
  3330. }
  3331. }
  3332. };
  3333. //权限设置
  3334. struct CMD_GR_SetUserRight
  3335. {
  3336. //目标用户
  3337. DWORD dwTargetUserID; //目标用户
  3338. //绑定变量
  3339. BYTE cbGameRight; //帐号权限
  3340. BYTE cbAccountsRight; //帐号权限
  3341. //权限变化
  3342. BYTE cbLimitRoomChat; //大厅聊天
  3343. BYTE cbLimitGameChat; //游戏聊天
  3344. BYTE cbLimitPlayGame; //游戏权限
  3345. BYTE cbLimitSendWisper; //发送消息
  3346. BYTE cbLimitLookonGame; //旁观权限
  3347. };
  3348. //房间设置
  3349. struct CMD_GR_OptionCurrent
  3350. {
  3351. DWORD dwRuleMask; //规则掩码
  3352. tagServerOptionInfo ServerOptionInfo; //房间配置
  3353. };
  3354. //房间设置
  3355. struct CMD_GR_ServerOption
  3356. {
  3357. tagServerOptionInfo ServerOptionInfo; //房间配置
  3358. };
  3359. //踢出所有用户
  3360. struct CMD_GR_KickAllUser
  3361. {
  3362. TCHAR szKickMessage[LEN_USER_CHAT]; //踢出提示
  3363. };
  3364. //解散游戏
  3365. struct CMD_GR_DismissGame
  3366. {
  3367. WORD wDismissTableNum; //解散桌号
  3368. WORD wChairID; //自己椅号
  3369. };
  3370. //////////////////////////////////////////////////////////////////////////////////
  3371. //设置标志
  3372. #define OSF_ROOM_CHAT 1 //大厅聊天
  3373. #define OSF_GAME_CHAT 2 //游戏聊天
  3374. #define OSF_ROOM_WISPER 3 //大厅私聊
  3375. #define OSF_ENTER_TABLE 4 //进入游戏
  3376. #define OSF_ENTER_SERVER 5 //进入房间
  3377. #define OSF_SEND_BUGLE 12 //发送喇叭
  3378. //房间设置
  3379. struct CMD_GR_OptionServer
  3380. {
  3381. BYTE cbOptionFlags; //设置标志
  3382. BYTE cbOptionValue; //设置标志
  3383. };
  3384. //限制聊天
  3385. struct CMD_GR_LimitUserChat
  3386. {
  3387. DWORD dwTargetUserID; //目标用户
  3388. BYTE cbLimitFlags; //限制标志
  3389. BYTE cbLimitValue; //限制与否
  3390. };
  3391. //////////////////////////////////////////////////////////////////////////////////
  3392. //比赛命令
  3393. #define MDM_GR_MATCH 9 //比赛命令
  3394. #define SUB_GR_MATCH_FEE 400 //报名费用
  3395. #define SUB_GR_MATCH_NUM 401 //等待人数
  3396. #define SUB_GR_LEAVE_MATCH 402 //退出比赛
  3397. #define SUB_GR_MATCH_INFO 403 //比赛信息
  3398. #define SUB_GR_MATCH_WAIT_TIP 404 //等待提示
  3399. #define SUB_GR_MATCH_RESULT 405 //比赛结果
  3400. #define SUB_GR_MATCH_STATUS 406 //比赛状态
  3401. #define SUB_GR_MATCH_DESC 408 //比赛描述
  3402. #define SUB_GR_MATCH_GOLDUPDATE 409 //金币更新
  3403. #define SUB_GR_MATCH_ELIMINATE 410 //比赛淘汰
  3404. ////////////////改动以下时 请将游戏里面CMD_GAME.H的同时改动////////////////////////////
  3405. //#define SUB_GR_MATCH_INFO_ER_SPARROWS 410 //比赛信息(2人麻将)
  3406. //费用提醒
  3407. struct CMD_GR_Match_Fee
  3408. {
  3409. SCORE lMatchFee; //报名费用
  3410. TCHAR szNotifyContent[128]; //提示内容
  3411. };
  3412. //比赛人数
  3413. struct CMD_GR_Match_Num
  3414. {
  3415. DWORD dwWaitting; //等待人数
  3416. DWORD dwTotal; //开赛人数
  3417. };
  3418. //赛事信息
  3419. struct CMD_GR_Match_Info
  3420. {
  3421. TCHAR szTitle[4][64]; //信息标题
  3422. WORD wGameCount; //游戏局数
  3423. };
  3424. //提示信息
  3425. struct CMD_GR_Match_Wait_Tip
  3426. {
  3427. SCORE lScore; //当前积分
  3428. WORD wRank; //当前名次
  3429. WORD wCurTableRank; //本桌名次
  3430. WORD wUserCount; //当前人数
  3431. WORD wCurGameCount; //当前局数
  3432. WORD wGameCount; //总共局数
  3433. WORD wPlayingTable; //游戏桌数
  3434. TCHAR szMatchName[LEN_SERVER]; //比赛名称
  3435. };
  3436. //比赛结果
  3437. struct CMD_GR_MatchResult
  3438. {
  3439. SCORE lGold; //金币奖励
  3440. DWORD dwIngot; //元宝奖励
  3441. DWORD dwExperience; //经验奖励
  3442. TCHAR szDescribe[256]; //得奖描述
  3443. };
  3444. #define MAX_MATCH_DESC 4 //最多描述
  3445. //比赛描述
  3446. struct CMD_GR_MatchDesc
  3447. {
  3448. TCHAR szTitle[MAX_MATCH_DESC][16]; //信息标题
  3449. TCHAR szDescribe[MAX_MATCH_DESC][64]; //描述内容
  3450. COLORREF crTitleColor; //标题颜色
  3451. COLORREF crDescribeColor; //描述颜色
  3452. };
  3453. //金币更新
  3454. struct CMD_GR_MatchGoldUpdate
  3455. {
  3456. SCORE lCurrGold; //当前金币
  3457. SCORE lCurrIngot; //当前元宝
  3458. DWORD dwCurrExprience; //当前经验
  3459. };
  3460. //////////////////////////////////////////////////////////////////////////////////
  3461. //俱乐部命令
  3462. #define MDM_GR_CLUB 10 //俱乐部命令
  3463. //////////////////////////////////////////////////////////////////////////////////
  3464. //俱乐部命令
  3465. #define SUB_GR_USER_GET_CLUBLIST 401 //获取俱乐部列表
  3466. #define SUB_GR_USER_GET_CLUBLIST_ACK 402 //获取俱乐部列表应答
  3467. #define SUB_GR_USER_GET_CLUBUSER 403 //获取俱乐部会员
  3468. #define SUB_GR_USER_GET_CLUBUSER_ACK 404 //获取俱乐部会员应答
  3469. #define SUB_GR_USER_GET_CLUBMESSAGE 405 //获取俱乐部消息
  3470. #define SUB_GR_USER_GET_CLUBMESSAGE_ACK 406 //获取俱乐部消息应答
  3471. #define SUB_GR_USER_GET_CLUBRECORD 407 //获取俱乐部记录
  3472. #define SUB_GR_USER_GET_CLUBRECORD_ACK 408 //获取俱乐部记录应答
  3473. #define SUB_GR_USER_CREATE_CLUB 409 //创建俱乐部
  3474. #define SUB_GR_USER_CREATE_CLUB_ACK 410 //创建俱乐部应答
  3475. #define SUB_GR_USER_UPDATE_CLUB 411 //修改俱乐部
  3476. #define SUB_GR_USER_UPDATE_CLUB_ACK 412 //修改俱乐部应答
  3477. #define SUB_GR_USER_DELETE_CLUB 413 //删除俱乐部
  3478. #define SUB_GR_USER_DELETE_CLUB_ACK 414 //删除俱乐部应答
  3479. #define SUB_GR_USER_GET_CLUB 415 //查看俱乐部
  3480. #define SUB_GR_USER_GET_CLUB_ACK 416 //查看俱乐部应答
  3481. #define SUB_GR_USER_JOIN_CLUB 417 //加入俱乐部
  3482. #define SUB_GR_USER_JOIN_CLUB_ACK 418 //加入俱乐部应答
  3483. #define SUB_GR_USER_QUIT_CLUB 419 //退出俱乐部
  3484. #define SUB_GR_USER_QUIT_CLUB_ACK 420 //退出俱乐部应答
  3485. #define SUB_GR_USER_ISAGREE_CLUB 421 //同意俱乐部
  3486. #define SUB_GR_USER_ISAGREE_CLUB_ACK 422 //同意俱乐部应答
  3487. //#define SUB_GR_USER_GET_CLUBONLINE 423 //获取俱乐部在线信息(刷新桌子)
  3488. //#define SUB_GR_USER_GET_CLUBONLINE_ACK 424 //获取俱乐部在线信息应答
  3489. #define SUB_GR_USER_NOTIFY_ACK 425 //通知标志
  3490. #define SUB_GR_USER_GET_CLUBBLACKUSER 426 //获取黑名单
  3491. #define SUB_GR_USER_GET_PROTOLCOL 427 //获取协议
  3492. #define SUB_GR_USER_GET_PROTOLCOL_ACK 428 //获取协议应答
  3493. #define SUB_GR_USER_GET_PROTOLCOLAGREE 429 //同意协议
  3494. #define SUB_GR_USER_GET_PROTOLCOLAGREE_ACK 430 //同意应答
  3495. #define SUB_GR_USER_GET_CLUBBLACKUSER_ACK 431 //获取黑名单应答
  3496. #define SUB_GR_USER_GET_NOTICE 432 //获取公告
  3497. #define SUB_GR_USER_GET_NOTICE_ACK 433 //获取公告应答
  3498. #define SUB_GR_USER_GET_CLUBRECORD_ACK_EX 434 //获取俱乐部记录应答
  3499. #define SUB_GR_USER_GET_CLUBUSE_EX 435 //获取俱乐部会员(在线)
  3500. #define SUB_GR_USER_GET_CLUBONLINE_EX 436 //获取俱乐部在线信息(协议变化)(刷新桌子)
  3501. #define SUB_GR_USER_GET_CLUBONLINE_ACK_EX 437 //获取俱乐部在线信息应答(协议变化)
  3502. #define SUB_GR_USER_GET_CLUBONLINE_TABLE 438 //获取俱乐部房间信息
  3503. #define SUB_GR_USER_GET_CLUBONLINE_TABLE_ACK 439 //获取俱乐部房间信息应答
  3504. #define SUB_GR_USER_GET_CLUBONLINE_TABLEUSER_ACK 440 //获取俱乐部房间用户信息应答
  3505. #define SUB_GR_USER_CLUBTABLE_NOTIFY_ACK 441 //房间更新推送
  3506. #define SUB_GR_USER_CLUBCHANGE_NOTIFY_ACK 442 //俱乐部其他信息推送
  3507. #define SUB_GR_USER_DISSOLVE_ROOM 443 //群主解散俱乐部房间
  3508. #define SUB_GR_USER_GET_MORE_WANFA 444 //获取额外玩法请求
  3509. #define SUB_GR_USER_GET_MORE_WANFA_ACK 445 //获取更多玩法响应 所有额外玩法请求统一一个协议回复
  3510. #define SUB_GR_USER_GET_SAVE_MORE_WANFA 446 //保存or修改额外玩法请求
  3511. #define SUB_GR_CLUB_GET_COUNT_EXPLOITS 450 //俱乐部房间战绩查询
  3512. //#define SUB_GR_CLUB_GET_COUNT_EXPLOITS_ACK 451 //俱乐部统计回应
  3513. #define SUB_GR_CLUB_GET_COUNT_PLAYGAEMS 452 //俱乐部统计对局数
  3514. #define SUB_GR_CLUB_GET_COUNT_PLAYGAEMS_ACK 453 //俱乐部统计对局数回应
  3515. #define SUB_GR_CLUB_GET_COUNT_INTEGRAL 454 //俱乐部统计积分数
  3516. #define SUB_GR_CLUB_GET_COUNT_INTEGRAL_ACK 455 //俱乐部统计积分数回应
  3517. #define SUB_GR_CLUB_GET_MAKEA_SAMPLE 456 //俱乐部打样
  3518. #define SUB_GR_CLUB_GET_MAKEA_SAMPLE_ACK 457 //俱乐部打样回应
  3519. //俱乐部房间配置
  3520. struct tagTableConfig
  3521. {
  3522. WORD wSubGameID; //子游戏类型(0一脚赖油,1无赖到底,2半赖,3血流)
  3523. DWORD wPlayRule; //底分
  3524. WORD wMaxFanRule; //房费(0房间创建者,1打牌者平摊)
  3525. WORD wMaxScore; //IP限制(0限制,1不限制)
  3526. WORD wPlayCountRule; //一次玩的局数(8局?16局?)
  3527. WORD wHadPlayCount; //桌子号
  3528. WORD zmExtraRule; //是否是房主
  3529. WORD dghRule; //
  3530. TCHAR sPrivateTableID[7];
  3531. byte bDuoLai; //多癞子可平胡,0可以 1不可以
  3532. WORD wFengDing; //封顶值
  3533. byte tmp1; //备用字段
  3534. byte tmp2; //备用字段
  3535. byte tmp3; //备用字段
  3536. byte tmp4; //备用字段
  3537. byte tmp5; //备用字段
  3538. };
  3539. //俱乐部列表
  3540. struct CMD_GR_ClubList
  3541. {
  3542. WORD wStartIndex;
  3543. WORD wCount;
  3544. };
  3545. struct ClubList
  3546. {
  3547. DWORD dwUserID;
  3548. WORD dwStartIndex;
  3549. WORD wCount;
  3550. };
  3551. struct CMD_S_ClubInfo
  3552. {
  3553. DWORD dwClubID;
  3554. TCHAR szClubName[32];
  3555. BYTE cbIsOwner;
  3556. WORD wTotalNum;
  3557. WORD wWaitTableNum;
  3558. WORD wOnLineNum;
  3559. WORD wWaitUserNum;
  3560. DWORD dwOwnerID;
  3561. TCHAR szHostName[32];
  3562. TCHAR szHeadUrl[256];
  3563. BYTE temp1; //2表示自动开房
  3564. BYTE temp2;
  3565. BYTE temp3;
  3566. BYTE temp4; //用来表示自动开房时多玩法的0,1,2玩法
  3567. tagTableConfig csGameConfig;
  3568. };
  3569. struct CMD_GR_ClubList_Ack
  3570. {
  3571. WORD wNewsCount;
  3572. WORD wClubCount;
  3573. CMD_S_ClubInfo csGameClubInfo[20];
  3574. };
  3575. struct CMD_S_ClubAutoAddInfo
  3576. {
  3577. DWORD dwClubID; //俱乐部id
  3578. BYTE cbWanfaId; //1 ,2 额外玩法id序号
  3579. BYTE cbStatus; //0 不存在(该值也表示是否為查询获取额外玩法信息) 1 启用 2 禁用
  3580. tagTableConfig gameconfig; //玩法配置
  3581. //参数转成字符串
  3582. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  3583. {
  3584. if (sizeof(CMD_S_ClubAutoAddInfo) * 16 > iLen) return false;
  3585. #ifdef _UNICODE
  3586. _snwprintf(pBuffer, iLen, TEXT("俱乐部额外玩法自动开房请求->俱乐部:%d,额外玩法id序号:%d,状态:%d."), dwClubID, cbWanfaId, cbStatus);
  3587. #else
  3588. _snprintf(pBuffer, iLen, TEXT("俱乐部额外玩法自动开房请求->俱乐部:%d,额外玩法id序号:%d,状态:%d."), dwClubID, cbWanfaId, cbStatus);
  3589. #endif
  3590. //mylog::ToSet(pBuffer, iLen, dUserID);
  3591. return true;
  3592. }
  3593. //打印通讯日志
  3594. void ToShow(int dTablePrivate, DWORD dUserID)
  3595. {
  3596. TCHAR szBuffer[BUFFERLEN];
  3597. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  3598. if (ToString(szBuffer, BUFFERLEN, dUserID))
  3599. {
  3600. mylog::OutputString(szBuffer, dTablePrivate);
  3601. }
  3602. }
  3603. };
  3604. //俱乐部会员
  3605. struct CMD_GR_ClubUser
  3606. {
  3607. DWORD dwClubID;
  3608. WORD wStartIndex;
  3609. WORD wCount;
  3610. };
  3611. //俱乐部会员
  3612. struct CMD_GR_ClubUser2
  3613. {
  3614. DWORD dwClubID;
  3615. WORD wStartIndex;
  3616. WORD wCount;
  3617. BYTE cbKind;
  3618. DWORD dwTemp;
  3619. };
  3620. //俱乐部协议
  3621. struct CMD_GR_ClubProtocol
  3622. {
  3623. DWORD dwClubID;
  3624. DWORD dwTemp;
  3625. };
  3626. //俱乐部协议
  3627. struct CMD_GR_ClubProtocolAgree
  3628. {
  3629. DWORD dwClubID;
  3630. BYTE cbAgree;
  3631. DWORD dwTemp;
  3632. };
  3633. //俱乐部公告
  3634. struct CMD_GR_ClubNotice
  3635. {
  3636. DWORD dwClubID;
  3637. BYTE cbType;
  3638. DWORD dwTemp;
  3639. TCHAR Message[255];
  3640. };
  3641. //俱乐部公告
  3642. struct CMD_GR_ClubNoticeACK
  3643. {
  3644. DWORD dwClubID;
  3645. BYTE cbType;
  3646. DWORD dwTemp;
  3647. BYTE cbResult;
  3648. TCHAR Message[255];
  3649. };
  3650. //俱乐部在线
  3651. struct CMD_GR_ClubOnLine
  3652. {
  3653. DWORD dwClubID;
  3654. WORD wStartIndex;
  3655. WORD wCount;
  3656. };
  3657. //群主解散俱乐部房间
  3658. struct CMD_GR_ClubDissolveRoom
  3659. {
  3660. DWORD dwClubID; //俱乐部id
  3661. DWORD dwRoomID; //房间号
  3662. //参数转成字符串
  3663. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID ,int& RoomID)
  3664. {
  3665. if (sizeof(CMD_GR_ClubDissolveRoom) * 16 > iLen) return false;
  3666. #ifdef _UNICODE
  3667. _snwprintf(pBuffer, iLen, TEXT("群主解散房间->俱乐部:%d,房间号:%d."), dwClubID, dwRoomID);
  3668. #else
  3669. _snwprintf(pBuffer, iLen, TEXT("群主解散房间->俱乐部:%d,房间号:%d."), dwClubID, dwRoomID);
  3670. #endif
  3671. //mylog::ToSet(pBuffer, iLen, dUserID);
  3672. RoomID = dwRoomID;
  3673. return true;
  3674. }
  3675. //打印通讯日志
  3676. void ToShow(int dTablePrivate, DWORD dUserID)
  3677. {
  3678. TCHAR szBuffer[BUFFERLEN];
  3679. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  3680. int tempdTablePrivate = 0;
  3681. if (ToString(szBuffer, BUFFERLEN, dUserID, tempdTablePrivate))
  3682. {
  3683. mylog::OutputString(szBuffer, tempdTablePrivate);
  3684. }
  3685. }
  3686. };
  3687. //俱乐部在线
  3688. struct CMD_GR_ClubOnLineEx
  3689. {
  3690. DWORD dwClubID;
  3691. WORD wStartIndex;
  3692. WORD wCount;
  3693. BYTE cbType; //全部 1,缺一人,2等待中,3游戏中
  3694. };
  3695. struct CMD_GR_ClubOnLineTable
  3696. {
  3697. BYTE cbType; // 0桌子配置,1玩家信息
  3698. DWORD dwClubID;
  3699. DWORD dwTableID;
  3700. };
  3701. struct CMD_GR_ClubOnLineTableCfAck
  3702. {
  3703. DWORD dwTableID;
  3704. JN_GR_RoomListInfo Room;
  3705. };
  3706. struct CMD_GR_ClubOnLineTableAck
  3707. {
  3708. DWORD dwTableID;
  3709. WORD wJushu; //当前局数
  3710. WORD wTableState;//桌子状态
  3711. PlayerInfo Userinfo[5]; //第5个为群主
  3712. };
  3713. struct CMD_S_MemberInfo
  3714. {
  3715. DWORD BangMaID;
  3716. BYTE cbStaus;
  3717. BYTE isHost;
  3718. BYTE isOnline;
  3719. DWORD dwUserID;
  3720. TCHAR szName[32];
  3721. TCHAR szHeadUrl[256];
  3722. };
  3723. struct CMD_S_MemberInfoEx
  3724. {
  3725. BYTE isHost;
  3726. BYTE Agree;
  3727. BYTE isOnline;
  3728. DWORD dwUserID;
  3729. };
  3730. struct CMD_GR_ClubUser_Ack
  3731. {
  3732. BYTE cbHost;
  3733. DWORD dwClubID;
  3734. WORD wCount;
  3735. CMD_S_MemberInfo csMemberInfo[20];
  3736. };
  3737. struct CMD_GR_ClubUser_Ack_Ex
  3738. {
  3739. WORD wStartIndex;
  3740. WORD wCount;
  3741. BYTE cbHost;
  3742. DWORD dwClubID;
  3743. WORD wMemCount;
  3744. CMD_S_MemberInfoEx csMemberInfo[1000];
  3745. };
  3746. struct CMD_GR_ClubUser2_Ack
  3747. {
  3748. BYTE cbKind;
  3749. DWORD tmp;
  3750. BYTE cbHost;
  3751. DWORD dwClubID;
  3752. WORD wCount;
  3753. CMD_S_MemberInfo csMemberInfo[20];
  3754. };
  3755. //俱乐部通知
  3756. struct CMD_GR_ClubMessage
  3757. {
  3758. WORD wStartIndex;
  3759. WORD wCount;
  3760. };
  3761. struct CMD_S_MessageInfo
  3762. {
  3763. WORD dType;
  3764. TCHAR szContent[256];
  3765. DWORD dtActionTime;
  3766. };
  3767. struct CMD_GR_ClubMessage_Ack
  3768. {
  3769. WORD wCount;
  3770. CMD_S_MessageInfo CMD_S_MessageInfo[20];
  3771. };
  3772. //俱乐部记录
  3773. struct CMD_GR_ClubRecord
  3774. {
  3775. DWORD dwClubID;
  3776. WORD wStartIndex;
  3777. WORD wCount;
  3778. DWORD dtStartTime;
  3779. DWORD dwPrivatetable;//把dtEndTime改成privatetable
  3780. };
  3781. struct CMD_S_RecordInfo
  3782. {
  3783. DWORD dwTableID;
  3784. BYTE cbJuShu;
  3785. BYTE cbPayWay;
  3786. DWORD dwTableOwnerID;
  3787. DWORD dtCreateTime;
  3788. DWORD PlayerID[4];
  3789. TCHAR PlayerName[4][32];
  3790. };
  3791. struct CMD_S_RecordInfoEX
  3792. {
  3793. CMD_S_RecordInfo Record;
  3794. INT Score[4];
  3795. DWORD Tmp[4];
  3796. };
  3797. struct CMD_GR_ClubRecord_Ack
  3798. {
  3799. WORD wCount;
  3800. DWORD dwTableCount;
  3801. DWORD dwZunShi;
  3802. DWORD dwClubID;
  3803. CMD_S_RecordInfo csRecordInfo[10];
  3804. };
  3805. struct CMD_GR_ClubRecord_Ack_EX
  3806. {
  3807. WORD wCount;
  3808. DWORD dwTableCount;
  3809. DWORD dwZunShi;
  3810. DWORD dwClubID;
  3811. CMD_S_RecordInfoEX csRecordInfo[10];
  3812. };
  3813. //俱乐部在线信息
  3814. struct CMD_S_Table_Info
  3815. {
  3816. DWORD dwUserID;
  3817. BYTE cbNum;
  3818. TCHAR szHeadUrl[256];
  3819. JN_GR_RoomListInfo room;
  3820. };
  3821. struct CMD_GR_ClubOnLine_Ack
  3822. {
  3823. DWORD dwClubID;
  3824. WORD wOnLineUserNum;
  3825. WORD wTableNum;
  3826. WORD wUserMessageCount;
  3827. WORD wTotalUserCount;
  3828. WORD wNewUserCount;
  3829. WORD wTableInfoCount;
  3830. CMD_S_Table_Info csTableInfo[20];
  3831. };
  3832. //俱乐部在线信息
  3833. struct CMD_S_Table_InfoEx
  3834. {
  3835. BYTE cbJushu;
  3836. BYTE tableStatus;
  3837. BYTE cbNum;
  3838. BYTE tmp2;
  3839. BYTE tmp3;
  3840. BYTE tmp4;
  3841. PlayerInfo player[5];
  3842. JN_GR_RoomListInfo room;
  3843. };
  3844. struct CMD_GR_ClubOnLine_AckEx
  3845. {
  3846. DWORD dwClubID;
  3847. WORD wQueTableNum; //缺一人桌数
  3848. WORD wWaitTableNum; //等待中桌数
  3849. WORD wPlayTableNmu; //游戏中桌数
  3850. DWORD temp; //备用
  3851. WORD wtotalTableNum; //桌子总数
  3852. DWORD tableID[200]; //桌子ID数组;
  3853. };
  3854. //创建俱乐部
  3855. //删除俱乐部
  3856. //加入俱乐部
  3857. //退出俱乐部
  3858. struct CMD_GR_Club_Action_Ack1
  3859. {
  3860. BYTE Result;
  3861. TCHAR Message[255];
  3862. };
  3863. //修改俱乐部
  3864. //查看俱乐部
  3865. struct CMD_GR_Club_Action_Ack2
  3866. {
  3867. BYTE Result;
  3868. CMD_S_ClubInfo ClubInfo;
  3869. TCHAR Message[255];
  3870. };
  3871. //俱乐部打样
  3872. struct CMD_GR_Club_Make_A_Sample
  3873. {
  3874. DWORD dwClubID; //俱乐部id
  3875. BYTE IsSample; //0没打样 1打样
  3876. };
  3877. struct CMD_GR_Club_Action_Ack1Add
  3878. {
  3879. BYTE Result; //1表示成功 0失败
  3880. CMD_S_ClubAutoAddInfo AutoAddInfo; //额外玩法信息
  3881. TCHAR Message[255]; //错误信息
  3882. //参数转成字符串
  3883. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  3884. {
  3885. if (sizeof(CMD_GR_Club_Action_Ack1Add) * 16 > iLen) return false;
  3886. #ifdef _UNICODE
  3887. _snwprintf(pBuffer, iLen, TEXT("俱乐部额外玩法自动开房响应->结果:%d,俱乐部:%d,额外玩法id序号:%d,状态:%d,错误信息:%s."), Result, AutoAddInfo.dwClubID, AutoAddInfo.cbWanfaId, AutoAddInfo.cbStatus, Message);
  3888. #else
  3889. _snprintf(pBuffer, iLen, TEXT("俱乐部额外玩法自动开房响应->结果:%d,俱乐部:%d,额外玩法id序号:%d,状态:%d,错误信息:%s."), Result, AutoAddInfo.dwClubID, AutoAddInfo.cbWanfaId, AutoAddInfo.cbStatus,Message);
  3890. #endif
  3891. //mylog::ToSet(pBuffer, iLen, dUserID);
  3892. return true;
  3893. }
  3894. //打印通讯日志
  3895. void ToShow(int dTablePrivate, DWORD dUserID)
  3896. {
  3897. TCHAR szBuffer[BUFFERLEN];
  3898. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  3899. if (ToString(szBuffer, BUFFERLEN, dUserID))
  3900. {
  3901. mylog::OutputString(szBuffer, dTablePrivate);
  3902. }
  3903. }
  3904. };
  3905. struct CMD_GR_Club_Action_Ack2Ex
  3906. {
  3907. BYTE TableChoiceChange;
  3908. CMD_GR_Club_Action_Ack2 Ack2;
  3909. };
  3910. struct CMD_GR_Club_Action_Ack2Ex2
  3911. {
  3912. DWORD dwUserID;
  3913. CMD_GR_Club_Action_Ack2 Ack2;
  3914. };
  3915. //同意
  3916. //拒绝
  3917. //强退
  3918. struct CMD_GR_Club_Action_Ack3
  3919. {
  3920. DWORD dwClubID;
  3921. BYTE Result;
  3922. TCHAR Message[255];
  3923. BYTE cbAgree;
  3924. };
  3925. //删除
  3926. //查看
  3927. //加入
  3928. //退出
  3929. struct CMD_GR_Club_Action1
  3930. {
  3931. DWORD dwClubID;
  3932. };
  3933. //同意
  3934. //拒绝
  3935. //强退
  3936. struct CMD_GR_Club_Action2
  3937. {
  3938. DWORD dwClubID;
  3939. DWORD dwUserID;
  3940. BYTE cbIsAgree;
  3941. };
  3942. struct CMD_GR_UserData
  3943. {
  3944. BYTE newsFlag;
  3945. DWORD dwUserId; //特定用户
  3946. DWORD dwClubID;
  3947. TCHAR Message[255];
  3948. };
  3949. struct CMD_GR_Table_Notify
  3950. {
  3951. BYTE type; //0,1,2更新修改删除
  3952. DWORD tableID;
  3953. DWORD clubID;
  3954. };
  3955. struct CMD_GR_TableOtherInfo_Notify
  3956. {
  3957. DWORD ClubID;
  3958. DWORD Type;
  3959. WORD totalUserNum; //俱乐部总人数 1
  3960. WORD onlineUserNum; //在线人数 2
  3961. WORD totalTableNum; //总桌子数 4
  3962. WORD newMsgNum; //新消息数 8
  3963. WORD newUserNum; //会员申请数 16
  3964. WORD waitTableNum; //桌子等待中数 32
  3965. WORD playTableNum; //桌子游戏中数
  3966. };
  3967. //俱乐部战绩查询
  3968. struct CMD_GR_ClubExploits
  3969. {
  3970. DWORD dwClubID;
  3971. DWORD PrivateTableID; //桌子号
  3972. };
  3973. //俱乐部对局数查询
  3974. struct CMD_GR_ClubPlaygames
  3975. {
  3976. DWORD dwClubID; //俱乐部
  3977. BYTE wType; //0顺序,1倒序
  3978. WORD StartIndex; //开始索引
  3979. BYTE mCount; //查询数据长度
  3980. WORD wDateCount; //统计天数 1,3,7
  3981. };
  3982. //俱乐部对局数查询
  3983. struct CMD_GR_ClubPlaygamesUser
  3984. {
  3985. DWORD dwClubID; //俱乐部
  3986. BYTE wType; //0顺序,1倒序
  3987. WORD StartIndex; //开始索引
  3988. BYTE mCount; //查询数据长度
  3989. WORD wDateCount; //统计天数 1,3,7
  3990. DWORD UserID;
  3991. };
  3992. //俱乐部积分排序查询
  3993. struct CMD_GR_ClubIntegral
  3994. {
  3995. DWORD dwClubID;//俱乐部
  3996. WORD wType; //统计前10名或者后十名,0,1表示
  3997. WORD wDateCount;//统计天数 1,3,7
  3998. };
  3999. //俱乐部积分排序查询
  4000. struct CMD_GR_ClubIntegralUser
  4001. {
  4002. DWORD dwClubID;//俱乐部
  4003. WORD wType; //统计前10名或者后十名,0,1表示
  4004. WORD wDateCount;//统计天数 1,3,7
  4005. DWORD UserID;
  4006. };
  4007. //////////////////////////////////////////////////////////////////////////////////
  4008. //框架命令
  4009. #define MDM_GF_FRAME 100 //框架命令
  4010. //////////////////////////////////////////////////////////////////////////////////
  4011. //框架命令
  4012. //用户命令
  4013. #define SUB_GF_GAME_OPTION 1 //游戏配置
  4014. #define SUB_GF_USER_READY 2 //用户准备
  4015. #define SUB_GF_LOOKON_CONFIG 3 //旁观配置
  4016. #define SUB_GF_USER_SHUFFLE 4 //用户下一局洗牌
  4017. #define SUB_GF_USER_SHUFFLE_ALL_ACK 5 //用户下一局洗牌 全部选择完回应
  4018. //聊天命令
  4019. #define SUB_GF_USER_CHAT 10 //语音广播
  4020. #define SUB_GF_USER_EXPRESSION 11 //用户表情
  4021. //游戏信息
  4022. #define SUB_GF_GAME_STATUS 100 //游戏状态
  4023. #define SUB_GF_GAME_SCENE 101 //游戏场景
  4024. #define SUB_GF_LOOKON_STATUS 102 //旁观状态
  4025. #define SUB_GF_GAME_SCENEING 103 //游戏中场景
  4026. #define SUB_GF_GAME_USER_DISTANCE 104 //玩家距离
  4027. //系统消息
  4028. #define SUB_GF_SYSTEM_MESSAGE 200 //系统消息
  4029. #define SUB_GF_ACTION_MESSAGE 201 //动作消息
  4030. //////////////////////////////////////////////////////////////////////////////////
  4031. //游戏配置
  4032. struct CMD_GF_GameOption
  4033. {
  4034. BYTE cbAllowLookon; //旁观标志
  4035. DWORD dwFrameVersion; //框架版本
  4036. DWORD dwClientVersion; //游戏版本
  4037. //参数转成字符串
  4038. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  4039. {
  4040. if (sizeof(CMD_GF_GameOption) * 16 > iLen) return false;
  4041. #ifdef _UNICODE
  4042. _snwprintf(pBuffer, iLen, TEXT("游戏配置->旁观标志:%d,框架版本:%d,游戏版本:%d.")
  4043. , cbAllowLookon, dwFrameVersion, dwClientVersion);
  4044. #else
  4045. _snprintf(pBuffer, iLen, TEXT("游戏配置->旁观标志:%d,框架版本:%d,游戏版本:%d.")
  4046. , cbAllowLookon, dwFrameVersion, dwClientVersion);
  4047. #endif
  4048. //mylog::ToSet(pBuffer, iLen, dUserID);
  4049. return true;
  4050. }
  4051. //名字
  4052. bool ToName(TCHAR* pBuffer, int iLen)
  4053. {
  4054. TCHAR szTemp[] = _T("游戏配置");
  4055. if (TSTRINGLEN(szTemp) > iLen) return false;
  4056. StringCchCopy(pBuffer, iLen, szTemp);
  4057. return true;
  4058. }
  4059. //打印通讯日志
  4060. void ToShow(int dTablePrivate, DWORD dUserID)
  4061. {
  4062. TCHAR szBuffer[BUFFERLEN];
  4063. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  4064. if (ToString(szBuffer, BUFFERLEN, dUserID))
  4065. {
  4066. mylog::OutputString(szBuffer, dTablePrivate);
  4067. }
  4068. }
  4069. };
  4070. //旁观配置
  4071. struct CMD_GF_LookonConfig
  4072. {
  4073. DWORD dwUserID; //用户标识
  4074. BYTE cbAllowLookon; //允许旁观
  4075. };
  4076. //旁观状态
  4077. struct CMD_GF_LookonStatus
  4078. {
  4079. BYTE cbAllowLookon; //允许旁观
  4080. };
  4081. //游戏环境
  4082. struct CMD_GF_GameStatus
  4083. {
  4084. BYTE cbGameStatus; //游戏状态
  4085. BYTE cbAllowLookon; //旁观标志
  4086. //参数转成字符串
  4087. bool ToString(TCHAR* pBuffer, int iLen, DWORD dUserID)
  4088. {
  4089. if (sizeof(CMD_GF_GameStatus) * 16 > iLen) return false;
  4090. #ifdef _UNICODE
  4091. _snwprintf(pBuffer, iLen, TEXT("游戏环境->游戏状态:%d,旁观标志:%d.")
  4092. // ReSharper disable CppPrintfExtraArg
  4093. ,cbGameStatus, cbAllowLookon);
  4094. // ReSharper restore CppPrintfExtraArg
  4095. #else
  4096. _snprintf(pBuffer, iLen, TEXT("游戏环境->游戏状态:%d,旁观标志:%d.")
  4097. , cbGameStatus, cbAllowLookon);
  4098. #endif
  4099. //mylog::ToSet(pBuffer, iLen, dUserID);
  4100. return true;
  4101. }
  4102. //名字
  4103. bool ToName(TCHAR* pBuffer, int iLen)
  4104. {
  4105. TCHAR szTemp[] = _T("游戏环境");
  4106. if (TSTRINGLEN(szTemp) > iLen) return false;
  4107. StringCchCopy(pBuffer, iLen, szTemp);
  4108. return true;
  4109. }
  4110. //打印通讯日志
  4111. void ToShow(int dTablePrivate, DWORD dUserID)
  4112. {
  4113. TCHAR szBuffer[BUFFERLEN];
  4114. ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR));
  4115. if (ToString(szBuffer, BUFFERLEN, dUserID))
  4116. {
  4117. mylog::OutputString(szBuffer, dTablePrivate);
  4118. }
  4119. }
  4120. };
  4121. //s->c 用户下一局洗牌 全部选择完回应
  4122. struct USER_SHUFFLE_ALL_ACK
  4123. {
  4124. BYTE cbCount;// 人数
  4125. TCHAR dwUserName[4][32];//昵称
  4126. };
  4127. //用户聊天
  4128. struct CMD_GF_C_UserChat
  4129. {
  4130. WORD wChatLength; //信息长度
  4131. DWORD dwChatColor; //信息颜色
  4132. DWORD dwTargetUserID; //目标用户
  4133. TCHAR szChatString[LEN_USER_CHAT]; //聊天信息
  4134. };
  4135. //用户聊天
  4136. struct CMD_GF_S_UserChat
  4137. {
  4138. WORD wChatLength; //信息长度
  4139. DWORD dwChatColor; //信息颜色
  4140. DWORD dwSendUserID; //发送用户
  4141. DWORD dwTargetUserID; //目标用户
  4142. TCHAR szChatString[LEN_USER_CHAT]; //聊天信息
  4143. };
  4144. //用户表情
  4145. struct CMD_GF_C_UserExpression
  4146. {
  4147. WORD wItemIndex; //表情索引
  4148. DWORD dwTargetUserID; //目标用户
  4149. };
  4150. //用户道具
  4151. struct CMD_GF_S_UserExpression
  4152. {
  4153. WORD wItemIndex; //表情索引
  4154. DWORD dwSendUserID; //发送用户
  4155. DWORD dwTargetUserID; //目标用户
  4156. };
  4157. //用户距离
  4158. struct CMD_GF_UserDistance
  4159. {
  4160. BYTE cbOperLocation[4]; //是否开启定位 0未开启 1开启
  4161. int dwUserDistance[6]; //玩家距离
  4162. };
  4163. //////////////////////////////////////////////////////////////////////////////////
  4164. //游戏命令
  4165. #define MDM_GF_GAME 200 //游戏命令
  4166. //笛卡尔坐标系
  4167. typedef struct tagCRDCARTESIAN{
  4168. double x;
  4169. double y;
  4170. double z;
  4171. }CRDCARTESIAN;
  4172. typedef CRDCARTESIAN *PCRDCARTESIAN;
  4173. //大地坐标系
  4174. typedef struct tagCRDGEODETIC{
  4175. double longitude;
  4176. double latitude;
  4177. double height;
  4178. }CRDGEODETIC;
  4179. typedef CRDGEODETIC *PCRDGEODETIC;
  4180. //////////////////////////////////////////////////////////////////////////////////
  4181. //携带信息
  4182. //其他信息
  4183. #define DTP_GR_TABLE_PASSWORD 1 //桌子密码
  4184. //用户属性
  4185. #define DTP_GR_NICK_NAME 10 //用户昵称
  4186. #define DTP_GR_GROUP_NAME 11 //社团名字
  4187. #define DTP_GR_UNDER_WRITE 12 //个性签名
  4188. //附加信息
  4189. #define DTP_GR_USER_NOTE 20 //用户备注
  4190. #define DTP_GR_CUSTOM_FACE 21 //自定头像
  4191. //////////////////////////////////////////////////////////////////////////////////
  4192. //请求错误
  4193. #define REQUEST_FAILURE_NORMAL 0 //常规原因
  4194. #define REQUEST_FAILURE_NOGOLD 1 //金币不足
  4195. #define REQUEST_FAILURE_NOSCORE 2 //积分不足
  4196. #define REQUEST_FAILURE_PASSWORD 3 //密码错误
  4197. //////////////////////////////////////////////////////////////////////////////////
  4198. //通道检测
  4199. #define MDM_GR_CHECK 999 //通道检测
  4200. ///+++新版本场馆列表 2018-3-21
  4201. #define SUB_GR_VENUE_C_INFO_LIST2 5 ///---请求 拉取场馆信息列表
  4202. #define SUB_GR_VENUE_S_INFO_LIST2 6 ///---应答 (登录成功,主动下行金币场馆列表信息)
  4203. #define SUB_GR_VENUE_C_GAME_SERVER2 7 ///---请求 拉取场馆游戏服务器(返回最优的那个)
  4204. #define SUB_GR_VENUE_S_GAME_SERVER2 8 ///---应答
  4205. ///+++场馆命令
  4206. #define MDM_GR_VENUE 333
  4207. #define SUB_GR_VENUE_C_GAME_SERVER 1 ///---请求 拉取场馆游戏服务器(返回最优的那个)
  4208. #define SUB_GR_VENUE_S_GAME_SERVER 2 ///---应答
  4209. #define SUB_GR_VENUE_C_INFO_LIST 3 ///---请求 拉取场馆信息列表
  4210. #define SUB_GR_VENUE_S_INFO_LIST 4 ///---应答 (登录成功,主动下行金币场馆列表信息)
  4211. ///+++大转盘命令
  4212. #define MDM_GF_ROULETEE 400
  4213. #define SUB_GF_ROULETEE_CONFIG 1 ///---轮盘奖品配置请求
  4214. #define SUB_GF_ROULETEE_CONFIG_ACK 2 ///---轮盘奖品配置结果
  4215. #define SUB_GF_ROULETEE_LOTTERY 3 ///---轮盘抽奖请求
  4216. #define SUB_GF_ROULETEE_LOTTERY_ACK 4 ///---轮盘抽奖结果
  4217. #define SUB_GF_LOTTERY_INFO 5 ///---查询抽奖信息
  4218. #define SUB_GF_LOTTERY_INFO_ACK 6 ///---查询抽奖信息的结果
  4219. #define SUB_GF_LOTTERY_HIS 7 ///---查询抽奖历史记录
  4220. #define SUB_GF_LOTTERY_HIS_ACK 8 ///---查询抽奖历史记录的结果
  4221. #define SUB_GF_LOTTERY_HIS_ACKEX 9 ///---查询抽奖历史记录的结果(个人)
  4222. #define SUB_GF_LOTTERY_AWARD 10 //手动领奖
  4223. #define SUB_GF_LOTTERY_ADDRESS 11 //注册收件信息
  4224. //注册收件信息
  4225. struct CMD_GR_LotteryAddr
  4226. {
  4227. TCHAR szAddressName[20]; //收件人姓名
  4228. TCHAR szAddress[128]; //收件人地址IP
  4229. TCHAR szAddrPhoneNum[11]; //收件人手机号码
  4230. CMD_GR_LotteryAddr()
  4231. {
  4232. memset(this, 0, sizeof(this));
  4233. }
  4234. };
  4235. //客户端发送 我原封不动回复
  4236. struct CHECK
  4237. {
  4238. DWORD connkey;
  4239. DWORD dCheckID; //检测编号
  4240. DWORD dTime[4]; //时间戳 16字节
  4241. };
  4242. //分享奖励钻石
  4243. struct CMD_GR_ShareAwardBean
  4244. {
  4245. DWORD dwUserID; //用户ID
  4246. TCHAR szClientIp[32]; //客户端的IP
  4247. CMD_GR_ShareAwardBean()
  4248. {
  4249. memset(this, 0, sizeof(this));
  4250. }
  4251. };
  4252. //领取胜局抽奖
  4253. struct CMD_GR_GetWinDrawAward
  4254. {
  4255. DWORD dwUserID; //用户ID
  4256. WORD wWinDrawAwardConfigID; // 领取的 胜局奖励配置ID
  4257. TCHAR szClientIp[32]; //客户端的IP
  4258. CMD_GR_GetWinDrawAward()
  4259. {
  4260. memset(this, 0, sizeof(this));
  4261. }
  4262. };
  4263. //根据微信unionId获取会员绑定代理 处理结果
  4264. struct CMD_GR_GetDaiLiSaoMaResult {
  4265. DWORD dwUserID; //用户ID
  4266. DWORD dwBingID; //BingID
  4267. };
  4268. //s->c 3-190
  4269. struct USER_SHUFFLE_ZUANSHI
  4270. {
  4271. DWORD dwUserZuanShi; //请求用户钻石
  4272. DWORD dwNeedZuanshi; //洗牌所需钻石
  4273. };
  4274. #pragma pack()
  4275. #endif