诸暨麻将添加redis
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 
 
 
 

924 líneas
39 KiB

  1. #ifndef ATTEMPER_ENGINE_SINK_HEAD_FILE
  2. #define ATTEMPER_ENGINE_SINK_HEAD_FILE
  3. #pragma once
  4. #include "Stdafx.h"
  5. #include "TableFrame.h"
  6. #include "InitParameter.h"
  7. #include "ServerListManager.h"
  8. #include "DataBasePacket.h"
  9. #include "DistributeManager.h"
  10. #include "SensitiveWordsFilter.h"
  11. #include <unordered_map>
  12. #include <memory>
  13. //////////////////////////////////////////////////////////////////////////////////
  14. //连接类型
  15. #define CLIENT_KIND_FALSH 1 //网页类型
  16. #define CLIENT_KIND_MOBILE 2 //手机类型
  17. #define CLIENT_KIND_COMPUTER 3 //电脑类型
  18. #define PRIVATE_TABLE_MIN_ID 1000 //私有房间的最小ID
  19. //系统消息
  20. struct tagSystemMessage
  21. {
  22. DWORD dwLastTime; //发送时间
  23. DBR_GR_SystemMessage SystemMessage; //系统消息
  24. };
  25. //数组说明
  26. typedef CWHArray<CTableFrame *> CTableFrameArray; //桌子数组
  27. typedef CWHArray<tagSystemMessage *> CSystemMessageArray; //系统消息
  28. typedef CWHArray<tagTaskParameter *> CTaskParameterArray; //任务数组
  29. typedef CMap<DWORD, DWORD, DWORD, DWORD &> CKickUserItemMap; //踢人映射
  30. typedef CMap<WORD, WORD, tagTaskParameter *, tagTaskParameter *> CTaskParameterMap;
  31. //////////////////////////////////////////////////////////////////////////////////
  32. //调度钩子
  33. class CAttemperEngineSink : public IAttemperEngineSink, public IMainServiceFrame, public IServerUserItemSink
  34. {
  35. //友元定义
  36. friend class CServiceUnits;
  37. friend class CHttpClient;
  38. //状态变量
  39. protected:
  40. static DWORD m_DwordThead;
  41. time_t m_lastRankListTime;
  42. char* m_pRankListData;
  43. DWORD m_pRankListDataSize;
  44. bool m_bCollectUser; //汇总标志
  45. bool m_bNeekCorrespond; //协调标志
  46. DWORD m_dwCorrespondNum; //协调计数
  47. TagUpData m_Data; //统计数据
  48. int m_Service; //服务状态 1提供服务 0 主动不提供服务 <0 被攻击被动不提供服务
  49. ST_JCDATA m_JC; //监测ID
  50. //控制变量
  51. protected:
  52. DWORD m_dwIntervalTime; //间隔时间
  53. DWORD m_dwLastDisposeTime; //处理时间
  54. //绑定信息
  55. protected:
  56. tagBindParameter * m_pNormalParameter; //绑定信息
  57. CCriticalSection m_CriticalSection; //同步对象
  58. //tagBindParameter * m_pAndroidParameter; //绑定信息
  59. //配置信息
  60. protected:
  61. CInitParameter * m_pInitParameter; //配置参数
  62. tagGameParameter * m_pGameParameter; //配置参数
  63. tagGameMatchOption * m_pGameMatchOption; //比赛配置
  64. tagGameServiceAttrib * m_pGameServiceAttrib; //服务属性
  65. tagGameServiceOption * m_pGameServiceOption; //服务配置
  66. BOOL m_BCreate; //允许创建房间
  67. BOOL m_BAddCreate; //允许加入房间
  68. BOOL m_BCreate_Hua; //允许创建花牌房间
  69. WORD m_wShuffleZuan; //洗牌所需钻石
  70. //配置数据
  71. protected:
  72. //CMD_GR_ConfigColumn m_DataConfigColumn; //列表配置
  73. //CMD_GR_ConfigProperty m_DataConfigProperty; //道具配置
  74. //会员参数
  75. protected:
  76. WORD m_wMemberCount; //会员数目
  77. tagMemberParameter m_MemberParameter[10]; //会员参数
  78. //任务参数
  79. protected:
  80. WORD m_wTaskCount; //任务数目
  81. tagTaskParameter m_TaskParameter[TASK_MAX_COUNT]; //任务参数
  82. ///+++场馆列表
  83. protected:
  84. std::vector<tagVenueInfo> m_vecVenueInfo; //++场馆列表
  85. //bool OnTCPNetworkGetVenueInfoList(VOID * pData, WORD wDataSize, DWORD dwSocketID); ///+++拉取场馆信息列表
  86. //bool OnTCPNetworkGetVenueGameSvr(VOID * pData, WORD wDataSize, DWORD dwSocketID); ///+++拉取金币场服务器
  87. //bool isVenueServer(); ///+++是否为金币场服务器
  88. //tagVenueInfo getVenueInfo(WORD wVenueID);
  89. tagCheckinReward m_checkinReward[LEN_WEEK]; //签到奖励 [7天签到奖励的配置信息]
  90. //组件变量
  91. protected:
  92. std::list<unsigned short> m_privateTableIDPool;
  93. ///在超时情况下需要清空,牌局打完的情况下也需要清空。
  94. std::unordered_map<DWORD, JN_GR_RoomListGroup> m_UserID_2_PriTableIDGROUP; //创建者ID 转 私有桌子ID结构组
  95. std::unordered_map<DWORD, JN_GR_RoomListBig> m_PrivateRoomAll; //所有服务器私有房间信息
  96. std::unordered_map<DWORD, CMD_CS_C_UserEnter> m_OnLineUserAll; //所有服务器用户信息
  97. std::unordered_map<std::wstring,DWORD> m_PriTableID_2_TableID; //私有桌子id 转换为普通ID
  98. std::unordered_map<DWORD, std::shared_ptr<CTableFrame>> m_TableFrameArray; //桌子数组
  99. CServerUserManager m_ServerUserManager; //用户管理
  100. //CAndroidUserManager m_AndroidUserManager; //机器管理
  101. //CUserTaskManager m_UserTaskManager; //任务管理
  102. //CGamePropertyManager m_GamePropertyManager; //道具管理
  103. CDistributeManager m_DistributeManage; //分组管理
  104. //CKickUserItemMap m_KickUserItemMap; //踢人管理
  105. CSystemMessageArray m_SystemMessageActive; //系统消息
  106. CSystemMessageArray m_SystemMessageBuffer; //消息缓冲
  107. //CSensitiveWordsFilter m_WordsFilter; //脏字过滤
  108. public:
  109. CServerListManager m_ServerListManager; //列表管理
  110. //距离记录
  111. CMap<DWORD, DWORD, LONGLONG, LONGLONG> m_MapUserIDJuli;
  112. //组件接口
  113. protected:
  114. ITimerEngine * m_pITimerEngine; //时间引擎
  115. IAttemperEngine * m_pIAttemperEngine; //调度引擎
  116. ITCPSocketService * m_pITCPSocketService; //网络服务
  117. ITCPNetworkEngine * m_pITCPNetworkEngine; //网络引擎
  118. IGameServiceManager * m_pIGameServiceManager; //服务管理
  119. //比赛服务
  120. public:
  121. //IMatchServiceManager * m_pIMatchServiceManager; //比赛管理
  122. //数据引擎
  123. public:
  124. IDataBaseEngine * m_pIRecordDataBaseEngine; //数据引擎
  125. IDataBaseEngine * m_pIKernelDataBaseEngine; //数据引擎
  126. IDBCorrespondManager * m_pIDBCorrespondManager; //数据协调
  127. //函数定义
  128. public:
  129. //构造函数
  130. CAttemperEngineSink();
  131. //析构函数
  132. virtual ~CAttemperEngineSink();
  133. //基础接口
  134. public:
  135. //释放对象
  136. virtual VOID Release() { return; }
  137. //接口查询
  138. virtual VOID * QueryInterface(REFGUID Guid, DWORD dwQueryVer);
  139. //异步接口
  140. public:
  141. //启动事件
  142. virtual bool OnAttemperEngineStart(IUnknownEx * pIUnknownEx);
  143. //停止事件
  144. virtual bool OnAttemperEngineConclude(IUnknownEx * pIUnknownEx);
  145. //事件接口
  146. public:
  147. //控制事件
  148. virtual bool OnEventControl(WORD wIdentifier, VOID * pData, WORD wDataSize);
  149. //自定事件
  150. virtual bool OnEventAttemperData(WORD wRequestID, VOID * pData, WORD wDataSize);
  151. //内核事件
  152. public:
  153. //时间事件
  154. virtual bool OnEventTimer(DWORD dwTimerID, WPARAM wBindParam);
  155. //数据库事件
  156. virtual bool OnEventDataBase(WORD wRequestID, DWORD dwContextID, VOID * pData, WORD wDataSize);
  157. //连接事件
  158. public:
  159. //连接事件
  160. virtual bool OnEventTCPSocketLink(WORD wServiceID, INT nErrorCode);
  161. //关闭事件
  162. virtual bool OnEventTCPSocketShut(WORD wServiceID, BYTE cbShutReason);
  163. //读取事件
  164. virtual bool OnEventTCPSocketRead(WORD wServiceID, TCP_Command Command, VOID * pData, WORD wDataSize);
  165. ///+++场馆命令
  166. //bool OnTCPNetworkMainVenue(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID);
  167. //网络事件
  168. public:
  169. //应答事件
  170. virtual bool OnEventTCPNetworkBind(DWORD dwClientAddr, DWORD dwSocketID);
  171. //关闭事件
  172. virtual bool OnEventTCPNetworkShut(DWORD dwClientAddr, DWORD dwActiveTime, DWORD dwSocketID);
  173. ///测试
  174. std::unordered_map<DWORD, DWORD> Socket_2_UserID; //Socket关联UserID
  175. //读取事件
  176. virtual bool OnEventTCPNetworkRead(TCP_Command Command, VOID * pData, WORD wDataSize, DWORD dwSocketID);
  177. //消息接口
  178. public:
  179. //房间消息
  180. virtual bool SendRoomMessage(LPCTSTR lpszMessage, WORD wType);
  181. //游戏消息
  182. virtual bool SendGameMessage(LPCTSTR lpszMessage, WORD wType);
  183. //房间消息
  184. virtual bool SendRoomMessage(IServerUserItem * pIServerUserItem, LPCTSTR lpszMessage, WORD wType);
  185. //游戏消息
  186. virtual bool SendGameMessage(IServerUserItem * pIServerUserItem, LPCTSTR lpszMessage, WORD wType);
  187. //房间消息
  188. virtual bool SendRoomMessage(DWORD dwSocketID, LPCTSTR lpszMessage, WORD wType, bool bAndroid);
  189. //同步事件
  190. virtual bool OnTongBu(int Command, DWORD dwContextID, VOID * pData, WORD wDataSize);
  191. //网络接口
  192. public:
  193. //发送数据
  194. virtual bool SendData(BYTE cbSendMask, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize);
  195. //发送数据
  196. virtual bool SendData(DWORD dwSocketID, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize);
  197. //发送数据
  198. virtual bool SendData(IServerUserItem * pIServerUserItem, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize);
  199. //群发数据
  200. virtual bool SendDataBatchToMobileUser(WORD wCmdTable, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize, IServerUserItem * pUserItem = NULL);
  201. //功能接口
  202. public:
  203. //插入用户
  204. virtual bool InsertDistribute(IServerUserItem * pIServerUserItem);
  205. //删除用户
  206. virtual bool DeleteDistribute(IServerUserItem * pIServerUserItem);
  207. //敏感词过滤
  208. virtual void SensitiveWordFilter(LPCTSTR pMsg, LPTSTR pszFiltered, int nMaxLen);
  209. //删除私有桌子
  210. virtual bool DeletePrivateTable(ITableFrame* pTableFrame);
  211. //用户接口
  212. public:
  213. //用户积分
  214. virtual bool OnEventUserItemScore(IServerUserItem * pIServerUserItem, BYTE cbReason);
  215. //用户状态
  216. virtual bool OnEventUserItemStatus(IServerUserItem * pIServerUserItem, WORD wOldTableID = INVALID_TABLE, WORD wOldChairID = INVALID_CHAIR, bool bSendState = false);
  217. //用户权限
  218. virtual bool OnEventUserItemRight(IServerUserItem *pIServerUserItem, DWORD dwAddRight, DWORD dwRemoveRight, BYTE cbRightKind);
  219. //删除用户的桌子列表中的数据
  220. bool DecUserTable(DWORD dwUser, DWORD dwTableID ,int TableCount);
  221. //发送我的房间的状态
  222. bool UpdataMyOwnRoom(IServerUserItem * pIServerUserItem, VOID * pData, WORD wDataSize);
  223. //添加桌子局数通知
  224. bool UpdataTableJushu(DWORD PrivateTableID,DWORD CurrentJushu);
  225. std::shared_ptr<CTableFrame> GetTableFrame(DWORD wTableID)
  226. {
  227. auto iter = m_TableFrameArray.find(wTableID);
  228. if (iter == m_TableFrameArray.end())
  229. return nullptr;
  230. return iter->second;
  231. }
  232. std::shared_ptr<CTableFrame> GetPriTableFrame(std::wstring sPriTableID)
  233. {
  234. auto iter = m_PriTableID_2_TableID.find(sPriTableID);
  235. if (iter == std::end(m_PriTableID_2_TableID))
  236. return nullptr;
  237. auto iter2 = m_TableFrameArray.find(iter->second);
  238. if (iter2 == m_TableFrameArray.end())
  239. return nullptr;
  240. return iter2->second;
  241. }
  242. //数据事件
  243. protected:
  244. bool CheckConfig(tagGameConfig UserSitDown);
  245. //检验
  246. bool CheckConfigXueLiu(tagGameConfig UserSitDown);
  247. //字牌
  248. bool CheckConfigZiPai(tagGameConfig UserSitDown);
  249. //戳瞎子
  250. bool CheckConfigXiaZi(tagGameConfig UserSitDown);
  251. //登录成功
  252. bool OnDBLogonSuccessSend(DWORD dwContextID, VOID * pData, WORD wDataSize);
  253. //登录成功
  254. bool OnDBLogonSuccess(DWORD dwContextID, VOID * pData, WORD wDataSize);
  255. //登录失败
  256. bool OnDBLogonFailure(DWORD dwContextID, VOID * pData, WORD wDataSize);
  257. //获取游戏积分记录列表
  258. bool OnDBGetUserGameScoreList(DWORD dwContextID, VOID * pData, WORD wDataSize);
  259. //获取游戏积分记录详情
  260. bool OnDBGetUserGameScoreRecordDetail(DWORD dwContextID, VOID * pData, WORD wDataSize);
  261. //插入父节点房间的返回
  262. bool OnDBO_GR_GameScoreRecord_RESULT(DWORD dwContextID, VOID * pData, WORD wDataSize);
  263. //获取临时积分排行榜
  264. bool OnDBO_GR_GameTmpScoreRankListResult(DWORD dwContextID, VOID * pData, WORD wDataSize);
  265. //获取游戏回放数据
  266. bool OnDBGetUserGameScoreReplayRecord(DWORD dwContextID, VOID * pData, WORD wDataSize);
  267. //配置信息
  268. bool OnDBGameParameter(DWORD dwContextID, VOID * pData, WORD wDataSize);
  269. //列表信息
  270. //bool OnDBGameColumnInfo(DWORD dwContextID, VOID * pData, WORD wDataSize);
  271. ////机器信息
  272. //bool OnDBGameAndroidInfo(DWORD dwContextID, VOID * pData, WORD wDataSize);
  273. ////机器参数
  274. //bool OnDBGameAndroidParameter(DWORD dwContextID, VOID * pData, WORD wDataSize);
  275. //道具信息
  276. //bool OnDBGamePropertyInfo(DWORD dwContextID, VOID * pData, WORD wDataSize);
  277. ////会员参数
  278. //bool OnDBGameMemberParameter(DWORD dwContextID, VOID * pData, WORD wDataSize);
  279. ////银行信息
  280. //bool OnDBUserInsureInfo(DWORD dwContextID, VOID * pData, WORD wDataSize);
  281. ////银行成功
  282. //bool OnDBUserInsureSuccess(DWORD dwContextID, VOID * pData, WORD wDataSize);
  283. ////银行失败
  284. //bool OnDBUserInsureFailure(DWORD dwContextID, VOID * pData, WORD wDataSize);
  285. ////用户信息
  286. //bool OnDBUserInsureUserInfo(DWORD dwContextID, VOID * pData, WORD wDataSize);
  287. ////开通结果
  288. //bool OnDBUserInsureEnableResult(DWORD dwContextID, VOID * pData, WORD wDataSize);
  289. //直接扣除元宝
  290. bool OnDBR_GR_USER_ZHIJIE_BEANS_RETURNSEND(DWORD dwContextID, VOID * pData, WORD wDataSize);
  291. //直接扣除元宝
  292. bool OnDBR_GR_USER_ZHIJIE_BEANS_RETURN(DWORD dwContextID, VOID * pData, WORD wDataSize);
  293. //从冻结中消耗元宝不需要通知客户
  294. bool OnDBR_GR_USER_REDUCE_BEANS_RETURN(DWORD dwContextID, VOID * pData, WORD wDataSize);
  295. //消耗元宝不需要通知客户
  296. bool OnDBR_GR_USER_REDUCE_BEANS_RETURNSEND(DWORD dwContextID, VOID * pData, WORD wDataSize);
  297. //冻结元宝结果通知客户
  298. bool OnDBR_GR_USER_LOCK_BEANS_RETURNSEND(DWORD dwContextID, VOID * pData, WORD wDataSize);
  299. //冻结元宝结果通知客户
  300. bool OnDBR_GR_USER_LOCK_BEANS_RETURN(DWORD dwContextID, VOID * pData, WORD wDataSize);
  301. //解冻元宝结果通知客户
  302. bool OnDBR_GR_USER_UNLOCK_BEANS_RETURN(DWORD dwContextID, VOID * pData, WORD wDataSize);
  303. //解冻元宝结果通知客户
  304. bool OnDBR_GR_USER_UNLOCK_BEANS_RETURNSEND(DWORD dwContextID, VOID * pData, WORD wDataSize);
  305. //获取刷新元宝
  306. bool OnDBO_GR_GetBearn(DWORD dwContextID, VOID * pData, WORD wDataSize);
  307. //手机重复绑定查询
  308. bool OnDBO_GR_GetVerifCode(DWORD dwContextID, VOID * pData, WORD wDataSize);
  309. //手机绑定查询
  310. bool OnDBO_GR_CheckIphoneQuery(DWORD dwContextID, VOID * pData, WORD wDataSize);
  311. //手机绑定
  312. bool OnDBO_GR_CheckIphone(DWORD dwContextID, VOID * pData, WORD wDataSize);
  313. //实名认证
  314. bool OnDBO_GR_CheckName(DWORD dwContextID, VOID * pData, WORD wDataSize);
  315. //实名认证查询
  316. bool OnDBO_GR_CheckNameQuery(DWORD dwContextID, VOID * pData, WORD wDataSize);
  317. //应答修改地址
  318. bool OnDBO_GR_UpdateAddr(DWORD dwContextID, VOID * pData, WORD wDataSize);
  319. //获取刷新元宝
  320. bool OnDBO_GR_GetBearnSEND(DWORD dwContextID, VOID * pData, WORD wDataSize);
  321. //任务列表
  322. //bool OnDBUserTaskList(DWORD dwContextID, VOID * pData, WORD wDataSize);
  323. //任务结束
  324. //bool OnDBUserTaskListEnd(DWORD dwContextID, VOID * pData, WORD wDataSize);
  325. //任务信息
  326. //bool OnDBUserTaskInfo(DWORD dwContextID, VOID * pData, WORD wDataSize);
  327. //任务结果
  328. //bool OnDBUserTaskResult(DWORD dwContextID, VOID * pData, WORD wDataSize);
  329. //道具成功
  330. //bool OnDBPropertySuccess(DWORD dwContextID, VOID * pData, WORD wDataSize);
  331. //道具失败
  332. //bool OnDBPropertyFailure(DWORD dwContextID, VOID * pData, WORD wDataSize);
  333. //购买结果
  334. //bool OnDBPurchaseResult(DWORD dwContextID, VOID * pData, WORD wDataSize);
  335. //兑换结果
  336. //bool OnDBExChangeResult(DWORD dwContextID, VOID * pData, WORD wDataSize);
  337. //系统消息
  338. //bool OnDBSystemMessage(DWORD dwContextID, VOID * pData, WORD wDataSize);
  339. //加载敏感词
  340. //bool OnDBSensitiveWords(DWORD dwContextID, VOID * pData, WORD wDataSize);
  341. //加载完成
  342. //bool OnDBSystemMessageFinish(DWORD dwContextID, VOID * pData, WORD wDataSize);
  343. //分享奖励钻石结果
  344. bool OnDBShareAwardResult(DWORD dwContextID, VOID * pData, WORD wDataSize);
  345. //分享信息
  346. bool OnDBShareInfoResult(DWORD dwContextID, VOID * pData, WORD wDataSize);
  347. ///+++拉取胜局榜列表
  348. //BOOL OnDBTopWinList(DWORD dwContextID, VOID * pData, WORD wDataSize);
  349. ///+++钻石兑换金币列表
  350. //BOOL OnDBExchangeConfigList(DWORD dwContextID, VOID * pData, WORD wDataSize);
  351. ///+++查询破产信息结果
  352. //BOOL OnDBReliefInfo(DWORD dwContextID, VOID * pData, WORD wDataSize);
  353. ///+++破产领取信息
  354. //BOOL OnDBGetRelief(DWORD dwContextID, VOID * pData, WORD wDataSize);
  355. //签到信息
  356. bool OnDBUserCheckInInfo(DWORD dwContextID, VOID * pData, WORD wDataSize);
  357. //签到结果
  358. bool OnDBUserCheckInResult(DWORD dwContextID, VOID * pData, WORD wDataSize);
  359. //签到奖励的配置
  360. bool OnDBCheckInReward(DWORD dwContextID, VOID * pData, WORD wDataSize);
  361. //查询抽奖信息
  362. bool OnDBQueryLotteryInfoResult(DWORD dwContextID, VOID * pData, WORD wDataSize);
  363. //查询福利信息应答
  364. BOOL OnDBWelfareInfoResult(DWORD dwContextID, VOID * pData, WORD wDataSize);
  365. //俱乐部
  366. //列表
  367. bool OnDBGetClubList(DWORD dwContextID, VOID * pData, WORD wDataSize);
  368. //会员
  369. bool OnDBGetClubUser(DWORD dwContextID, VOID * pData, WORD wDataSize);
  370. //会员
  371. bool OnDBGetClubUserEx(DWORD dwContextID, VOID * pData, WORD wDataSize);
  372. //通知
  373. bool OnDBGetClubMessage(DWORD dwContextID, VOID * pData, WORD wDataSize);
  374. //记录
  375. bool OnDBGetClubRecord(DWORD dwContextID, VOID * pData, WORD wDataSize);
  376. //记录
  377. bool OnDBGetClubRecordEx(DWORD dwContextID, VOID * pData, WORD wDataSize);
  378. //创建
  379. bool OnDBCreateClub(DWORD dwContextID, VOID * pData, WORD wDataSize);
  380. //修改
  381. bool OnDBUpdateClub(DWORD dwContextID, VOID * pData, WORD wDataSize);
  382. //删除
  383. bool OnDBDeleteClub(DWORD dwContextID, VOID * pData, WORD wDataSize);
  384. //查看
  385. bool OnDBGetClub(DWORD dwContextID, VOID * pData, WORD wDataSize);
  386. //加入
  387. bool OnDBJoinClub(DWORD dwContextID, VOID * pData, WORD wDataSize);
  388. //退出
  389. bool OnDBQuitClub(DWORD dwContextID, VOID * pData, WORD wDataSize);
  390. //同意加入
  391. bool OnDBAgreeClub(DWORD dwContextID, VOID * pData, WORD wDataSize);
  392. //在线信息
  393. //bool OnDBGetClubOnLine(DWORD dwContextID, VOID * pData, WORD wDataSize);
  394. //在线信息
  395. bool OnDBGetClubOnLineEx(DWORD dwContextID, VOID * pData, WORD wDataSize);
  396. //通知
  397. bool OnDBNotifyClubUser(DWORD dwContextID, VOID * pData, WORD wDataSize);
  398. //特殊成员
  399. bool OnDBGetClubBlackUser(DWORD dwContextID, VOID * pData, WORD wDataSize);
  400. //协议
  401. bool OnDBGetClubProtocol(DWORD dwContextID, VOID * pData, WORD wDataSize);
  402. //同意协议
  403. bool OnDBAgreeClubProtocol(DWORD dwContextID, VOID * pData, WORD wDataSize);
  404. //群主信息
  405. bool OnDBGetClubHostInfo(DWORD dwContextID, VOID * pData, WORD wDataSize);
  406. //自动创房
  407. bool OnDBAutoCreateTable(DWORD dwContextID, VOID * pData, WORD wDataSize);
  408. //公告
  409. bool OnDBGetClubNotice(DWORD dwContextID, VOID * pData, WORD wDataSize);
  410. //群主解散俱乐部房间
  411. bool OnDBGetClubDissolveRoom(DWORD dwContextID, VOID * pData, WORD wDataSize);
  412. //俱乐部战绩记录
  413. //bool OnDBGetClubCount_Exploits_Ack(DWORD dwContextID, VOID * pData, WORD wDataSize);
  414. //俱乐部局数排名
  415. bool OnDBGetClubPlaygames_Ack(DWORD dwContextID, VOID * pData, WORD wDataSize);
  416. //俱乐部积分排名
  417. bool OnDBGetClubIntegral_Ack(DWORD dwContextID, VOID * pData, WORD wDataSize);
  418. //打样
  419. bool OnDBGetClubSample(DWORD dwContextID, VOID * pData, WORD wDataSize);
  420. //连接处理
  421. protected:
  422. //注册事件
  423. bool OnTCPSocketMainRegister(WORD wSubCmdID, VOID * pData, WORD wDataSize);
  424. //列表事件
  425. bool OnTCPSocketMainServiceInfo(WORD wSubCmdID, VOID * pData, WORD wDataSize);
  426. //汇总事件
  427. bool OnTCPSocketMainUserCollect(WORD wSubCmdID, VOID * pData, WORD wDataSize);
  428. //管理服务
  429. bool OnTCPSocketMainManagerService(WORD wSubCmdID, VOID * pData, WORD wDataSize);
  430. //机器服务
  431. //bool OnTCPSocketMainAndroidService(WORD wSubCmdID, VOID * pData, WORD wDataSize);
  432. //中心服务器群发某人的房间的状态
  433. bool OnUpdataBodyOwnRoom(VOID * pData, WORD wDataSize);
  434. //更新其他服务器私人房间数据
  435. bool OnUpdataBodyOtherRoom(VOID * pData, WORD wDataSize);
  436. //网络事件
  437. protected:
  438. //用户处理
  439. bool OnTCPNetworkMainUser(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID);
  440. //登录处理
  441. bool OnTCPNetworkMainLogon(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID);
  442. //游戏处理
  443. bool OnTCPNetworkMainGame(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID);
  444. //框架处理
  445. bool OnTCPNetworkMainFrame(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID);
  446. //银行处理
  447. //bool OnTCPNetworkMainInsure(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID);
  448. //任务处理
  449. //bool OnTCPNetworkMainTask(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID);
  450. //兑换处理
  451. //bool OnTCPNetworkMainExchange(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID);
  452. //管理处理
  453. bool OnTCPNetworkMainManage(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID);
  454. //比赛命令
  455. //bool OnTCPNetworkMainMatch(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID);
  456. //俱乐部命令
  457. bool OnTCPNetworkMainClub(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID);
  458. //网络事件
  459. protected:
  460. //I D 登录
  461. bool OnTCPNetworkSubLogonUserID(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  462. //手机登录
  463. bool OnTCPNetworkSubLogonMobile(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  464. //帐号登录
  465. bool OnTCPNetworkSubLogonAccounts(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  466. //用户命令
  467. protected:
  468. ///---福利领取信息
  469. bool OnTCPNetworkWelfareInfo(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  470. ///---查询签到奖品
  471. bool OnTCPNetworkCheckinReward(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  472. ///---查询签到
  473. bool OnTCPNetworkCheckinQuery(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  474. ///---执行签到
  475. bool OnTCPNetworkCheckinDone(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  476. ///---胜局榜
  477. //bool OnTCPNetworkTopWinList(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  478. ///---查询破产补助信息
  479. //bool OnTCPNetworkQueryRelief(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  480. ///---领取破产补助
  481. //bool OnTCPNetworkGetRelief(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  482. ///---拉取好友房服务器
  483. //bool OnTCPNetworkPrivateGameSvr(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  484. //用户规则
  485. bool OnTCPNetworkSubUserRule(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  486. //用户旁观
  487. bool OnTCPNetworkSubUserLookon(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  488. //用户起立
  489. bool OnTCPNetworkSubUserStandUp(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  490. //用户创建私有房间第一步
  491. bool OnTCPNetworkSubUserCreateRoom(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  492. //用户创建私有房间第二步
  493. bool OnTCPNetworkSubUserCreateRoomEx(VOID * pData, WORD wDataSize,DWORD dwSocketID);
  494. //自动创建房间
  495. bool OnTCPNetworkSubUserCreateRoomEx2(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  496. //用户坐下请求
  497. bool OnTCPNetworkSubUserDown(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  498. //订单编号返回应答
  499. bool OnTCPNetworkSubUserGetDingdanCallBack(GETDUILIE Data, DWORD dwSocketID);
  500. //请求订单编号
  501. bool OnTCPNetworkSubUserGetDingdan(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  502. //新方式请求订单
  503. bool OnTCPNetworkSubUserGetDingdanNew(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  504. //用户解绑代理结果回调
  505. bool OnTCPNetworkSubUserUntieAgentCallBack(CString csTest, DWORD dwSocketID);
  506. //获取验证码
  507. bool OnTCPNetworkSubUserCheckVerifCode(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  508. //获取手机验证码,写个线程去调短信接口
  509. bool OnTCPNetworkSubUserCheckVerifCodeCallBack(CString csIphoneNum, CString VerfCode, DWORD dwSocketID);
  510. //绑定手机
  511. bool OnTCPNetworkSubUserCheckIphone(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  512. //绑定手机查询,闲聊也通过这个
  513. bool OnTCPNetworkSubUserCheckIphoneQuery(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  514. //绑定闲聊
  515. bool OnTCPNetworkSubUserXianLiao(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  516. //实名认证
  517. bool OnTCPNetworkSubUserCheckName(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  518. //实名认证
  519. bool OnTCPNetworkSubUserCheckNameQuery(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  520. //获取购买记录返回应答
  521. bool OnTCPNetworkSubUserGetDingdanListCallBack(CString csTest, DWORD dwSocketID);
  522. //获取购买记录
  523. bool OnTCPNetworkSubUserGetDingdanList(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  524. //绑定代理
  525. bool OnTCPNetworkSubUseBangDing(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  526. //绑定代理信息
  527. bool OnTCPNetworkSubUseGetDaiLiInfo(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  528. //绑定代理应答
  529. bool OnTCPNetworkSubUserBangDingCallBack(CString csTest, DWORD dwSocketID, DWORD dDaiLi);
  530. //房主请求解散
  531. bool OnTCPNetworkFangZhuJieSan(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  532. //请求元宝
  533. bool OnTCPNetworkGetBearn(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  534. //获取加入房间信息
  535. bool OnTCPNetworkSubUserJoinRoomInfo(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  536. //获取距离排名
  537. bool GetPaiMing(DWORD dUserID, LONGLONG JuLi, int& iPaiMing, int& iCount);
  538. //用户加入私有房间
  539. bool OnTCPNetworkSubUserJoinRoom(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  540. //获取游戏积分记录
  541. bool OnTCPSocketGetUserGameScoreRecordList(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  542. //获取游戏积分详情
  543. bool OnTCPSocketGetUserGameScoreRecordDetail(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  544. //获取游戏回放记录
  545. bool OnTCPSocketGetUserGameReplayRecord(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  546. //获取临时积分排行榜
  547. bool OnTCPSocketGetUserGameTempScoreRankList(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  548. //用户聊天
  549. bool OnTCPNetworkSubUserChat(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  550. //用户私聊
  551. bool OnTCPNetworkSubWisperChat(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  552. //用户表情
  553. bool OnTCPNetworkSubUserExpression(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  554. //用户表情
  555. bool OnTCPNetworkSubWisperExpression(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  556. //购买道具
  557. //bool OnTCPNetworkSubPropertyBuy(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  558. //使用道具
  559. //bool OnTCPNetwordSubSendTrumpet(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  560. //邀请用户
  561. //bool OnTCPNetworkSubUserInviteReq(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  562. //拒绝厌友
  563. // bool OnTCPNetworkSubUserRepulseSit(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  564. //踢出命令
  565. // bool OnTCPNetworkSubMemberKickUser(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  566. //请求用户信息
  567. bool OnTCPNetworkSubUserInfoReq(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  568. //请求更换位置
  569. bool OnTCPNetworkSubUserChairReq(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  570. //请求椅子用户信息
  571. bool OnTCPNetworkSubChairUserInfoReq(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  572. //戳瞎子需要多少元宝
  573. USHORT GetNeedPayCxz(WORD wPlayCountRule);
  574. //纸牌
  575. USHORT GetNeedPayZhiP(WORD wPlayCountRule);
  576. //此局总共需要多少元宝
  577. USHORT GetNeedPay(WORD wPlayCountRule);
  578. //此局总共需要多少元宝
  579. USHORT GetNeedPayEx(WORD wPlayCountRule);
  580. //分享奖励钻石(仅当天首次分享才有奖励)
  581. bool OnTCPNetworkShareAwardBean(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  582. bool OnTCPNetworkShareInfo(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  583. //银行命令
  584. protected:
  585. //查询银行
  586. //bool OnTCPNetworkSubQueryInsureInfo(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  587. //开通银行
  588. //bool OnTCPNetworkSubEnableInsureRequest(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  589. //存款请求
  590. //bool OnTCPNetworkSubSaveScoreRequest(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  591. //取款请求
  592. //bool OnTCPNetworkSubTakeScoreRequest(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  593. //转帐请求
  594. //bool OnTCPNetworkSubTransferScoreRequest(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  595. //查询用户请求
  596. //bool OnTCPNetworkSubQueryUserInfoRequest(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  597. //任务命令
  598. protected:
  599. //领取任务
  600. //bool OnTCPNetworkSubTakeTaskRequest(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  601. //领取奖励
  602. //bool OnTCPNetworkSubTaskRewardRequest(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  603. //加载任务
  604. //bool OnTCPNetworkSubLoadTaskInfoRequest(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  605. //兑换命令
  606. protected:
  607. //查询参数
  608. //bool OnTCPNetworkSubQueryExchangeInfo(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  609. //购买会员
  610. //bool OnTCPNetworkSubPurchaseMember(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  611. //兑换游戏币
  612. //bool OnTCPNetworkSubExchangeScore(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  613. //俱乐部命令
  614. protected:
  615. //列表
  616. bool OnTCPNetworkSubGetClubList(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  617. //会员
  618. bool OnTCPNetworkSubGetClubUser(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  619. //会员
  620. bool OnTCPNetworkSubGetClubUserEx(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  621. //通知
  622. bool OnTCPNetworkSubGetClubMessage(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  623. //记录
  624. bool OnTCPNetworkSubGetClubRecord(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  625. //创建
  626. bool OnTCPNetworkSubCreateClub(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  627. //修改
  628. bool OnTCPNetworkSubUpdateClub(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  629. //删除
  630. bool OnTCPNetworkSubDeleteClub(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  631. //查看
  632. bool OnTCPNetworkSubGetClub(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  633. //加入
  634. bool OnTCPNetworkSubJoinClub(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  635. //退出
  636. bool OnTCPNetworkSubQuitClub(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  637. //同意加入
  638. bool OnTCPNetworkSubAgreeClub(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  639. //在线信息
  640. //bool OnTCPNetworkSubGetClubOnLine(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  641. //在线信息
  642. bool OnTCPNetworkSubGetClubOnLineEx(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  643. //检测协议
  644. bool OnTCPNetworkSubGetClubProtocol(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  645. //同意协议
  646. bool OnTCPNetworkSubAgreeClubProtocol(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  647. //会员黑名单(管理员)
  648. bool OnTCPNetworkSubGetClubBlackUser(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  649. //公告
  650. bool OnTCPNetworkSubGetClubNotice(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  651. //桌子信息
  652. bool OnTCPNetworkSubGetClubTable(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  653. //群主解散俱乐部房间
  654. bool OnTCPNetworkSubDissolveRoom(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  655. //俱乐部统计战绩
  656. bool OnTCPNetworkSubGetClubCountExploits(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  657. //俱乐部统计对局数排名
  658. bool OnTCPNetworkSubGetClubCountPlaygames(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  659. //俱乐部统计积分数排名
  660. bool OnTCPNetworkSubGetClubCountIntegral(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  661. //打样
  662. bool OnTCPNetworkSubGetClubSample(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  663. //管理命令
  664. protected:
  665. //查询设置
  666. bool OnTCPNetworkSubQueryOption(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  667. //房间设置
  668. bool OnTCPNetworkSubOptionServer(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  669. //踢出用户
  670. //bool OnTCPNetworkSubManagerKickUser(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  671. //限制聊天
  672. //bool OnTCPNetworkSubLimitUserChat(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  673. //解散所有所有游戏中牌桌
  674. bool OnTCPNetworkSubKickAllUser();
  675. //发布消息
  676. bool OnTCPNetworkSubSendMessage(VOID * pData, WORD wDataSize);
  677. //解散游戏
  678. bool OnTCPNetworkSubDismissGame(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  679. //申请删除私有房间
  680. bool OnTCPNetworkSubDeletePrivateTableReq(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  681. //删除私有房间应答
  682. bool OnTCPNetworkSubDeletePrivateTableResp(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  683. //警告命令
  684. bool OnTCPNetworkSubWarningUser(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  685. //内部事件
  686. protected:
  687. //用户登录
  688. VOID OnEventUserLogon(IServerUserItem * pIServerUserItem, bool bAlreadyOnLine);
  689. //用户登出
  690. VOID OnEventUserLogout(IServerUserItem * pIServerUserItem, DWORD dwLeaveReason);
  691. //执行功能
  692. protected:
  693. //分配用户
  694. bool PerformDistribute();
  695. //解锁游戏币
  696. bool PerformUnlockScore(DWORD dwUserID, DWORD dwInoutIndex, DWORD dwLeaveReason);
  697. //版本检查
  698. bool PerformCheckVersion(DWORD dwPlazaVersion, DWORD dwFrameVersion, DWORD dwClientVersion, DWORD dwSocketID);
  699. //推进任务
  700. bool PerformTaskProgress(IServerUserItem * pIServerUserItem, tagUserTaskEntry * pUserTaskEntry, DWORD dwWinCount, DWORD dwLostCount, DWORD dwDrawCount);
  701. //切换连接
  702. bool SwitchUserItemConnect(IServerUserItem * pIServerUserItem, TCHAR szMachineID[LEN_MACHINE_ID], WORD wTargetIndex, BYTE cbDeviceType = DEVICE_TYPE_PC, WORD wBehaviorFlags = 0, WORD wPageTableCount = 0);
  703. //玩家自主申请解绑
  704. bool OnTCPNetworkSubUserUntieAgent(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  705. BOOL OnDBUserUntieAgent(DWORD dwContextID, VOID * pData, WORD wDataSize);
  706. //用户获得代理解绑相关信息
  707. bool OnTCPNetworkSubUserAgentInfo(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  708. BOOL OnDBUserAgentInfo(DWORD dwContextID, VOID * pData, WORD wDataSize);
  709. //发送函数
  710. protected:
  711. //用户信息
  712. bool SendUserInfoPacket(IServerUserItem * pIServerUserItem, DWORD dwSocketID, bool bSendAndroidFalg = false);
  713. //辅助函数
  714. protected:
  715. //购前事件
  716. //bool OnEventPropertyBuyPrep(WORD cbRequestArea, WORD wPropertyIndex, IServerUserItem *pISourceUserItem, IServerUserItem *pTargetUserItem);
  717. //道具消息
  718. //bool SendPropertyMessage(DWORD dwSourceID, DWORD dwTargerID, WORD wPropertyIndex, WORD wPropertyCount);
  719. //道具效应
  720. //bool SendPropertyEffect(IServerUserItem * pIServerUserItem);
  721. //辅助函数
  722. protected:
  723. //登录失败
  724. bool SendLogonFailure(LPCTSTR pszString, LONG lErrorCode, DWORD dwSocketID);
  725. //银行失败
  726. bool SendInsureFailure(IServerUserItem * pIServerUserItem, LPCTSTR pszDescribe, LONG lErrorCode, BYTE cbActivityGame);
  727. //请求失败
  728. bool SendRequestFailure(IServerUserItem * pIServerUserItem, LPCTSTR pszDescribe, LONG lErrorCode);
  729. //道具失败
  730. //bool SendPropertyFailure(IServerUserItem * pIServerUserItem, LPCTSTR pszDescribe, LONG lErrorCode, WORD wRequestArea);
  731. //辅助函数
  732. public:
  733. //查找用户
  734. virtual IServerUserItem * SearchUserItem(DWORD dwUserID) { return m_ServerUserManager.SearchUserItem(dwUserID); }
  735. //绑定用户
  736. virtual IServerUserItem * GetBindUserItem(WORD wBindIndex);
  737. //绑定参数
  738. virtual tagBindParameter * GetBindParameter(WORD wBindIndex);
  739. //道具类型
  740. WORD GetPropertyType(WORD wPropertyIndex);
  741. //设置用户在ServerID中的游戏状态 ,1 牌桌游戏中,0为未游戏。
  742. bool SetUserServerID(IServerUserItem * pIServerUserItem, BYTE cbFlag, WORD ServerID);
  743. //向中心服务器群发某人的房间的状态
  744. bool UpdataBodyOwnRoomToServer(VOID * pData, WORD wDataSize);
  745. //发送某人的房间的状态
  746. bool UpdataBodyOwnRoom(IServerUserItem * pIServerUserItem, VOID * pData, WORD wDataSize);
  747. //更新服务器服务状态
  748. bool UpdataServerStata(VOID * pData, WORD wDataSize);
  749. ITCPNetworkEngine * GetTCPNetworkEngine() { return m_pITCPNetworkEngine; }
  750. //辅助函数
  751. protected:
  752. //配置机器
  753. bool InitAndroidUser();
  754. //配置桌子
  755. bool InitTableFrameArray();
  756. //获取一个可用的私有桌子ID
  757. std::wstring GetNextPrivateRoomID(int idLen = 10);
  758. //创建私有桌子
  759. std::shared_ptr<CTableFrame> CreatePrivateTable(DWORD RoomID, WORD wGameType);
  760. //配置比赛
  761. //bool InitMatchServiceManager();
  762. //发送请求
  763. bool SendUIControlPacket(WORD wRequestID, VOID * pData, WORD wDataSize);
  764. //设置参数
  765. void SetMobileUserParameter(IServerUserItem * pIServerUserItem, BYTE cbDeviceType, WORD wBehaviorFlags, WORD wPageTableCount);
  766. //群发用户信息
  767. bool SendUserInfoPacketBatchToMobileUser(IServerUserItem * pIServerUserItem);
  768. //发可视用户信息
  769. bool SendViewTableUserInfoPacketToMobileUser(IServerUserItem * pIServerUserItem, DWORD dwUserIDReq);
  770. //手机立即登录
  771. bool MobileUserImmediately(IServerUserItem * pIServerUserItem);
  772. //购买道具
  773. //int OnPropertyBuy(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  774. //发送系统消息
  775. bool SendSystemMessage(CMD_GR_SendMessage * pSendMessage, WORD wDataSize);
  776. //辅助函数
  777. protected:
  778. //移除消息
  779. void RemoveSystemMessage();
  780. CString dwIP2csIP(DWORD dwIP);
  781. public:
  782. // 是否监测此用户
  783. virtual BOOL IsJC(DWORD UserID);
  784. // 更新通道
  785. int UpDataTongDao();
  786. ///统计该场的总人数
  787. //DWORD SumOnlineCount(WORD wVenueID);
  788. ///能否领取救济
  789. //bool CanGetRelief(IServerUserItem* pIServerUserItem, WORD venueID);
  790. public:
  791. std::vector<tagRouletteConfig> m_vecRouletteConfig; ///---转盘奖品配置数组
  792. ///+++大转盘命令
  793. bool OnTCPNetworkMainRoulette(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID);
  794. ///奖品配置
  795. bool OnTCPNetworkMyRouletteConfig(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  796. ///转盘抽奖
  797. bool OnTCPNetworkRouletteLottery(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  798. /// 转盘抽奖
  799. bool _DoRouletteLottery(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  800. ///查询抽奖信息
  801. bool OnTCPNetworkLotteryInfo(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  802. ///查询抽奖历史记录
  803. bool OnTCPNetworkLotteryHis(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  804. ///手动领奖
  805. bool OnTCPNetworkLotteryAward(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  806. ///注册收件信息
  807. bool OnTCPNetworkLotteryAddress(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  808. //扫码更新钻石
  809. bool OnSetAddBingIDAndCurrency(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  810. bool OnDBUserZuanShi(DWORD dwContextID, VOID * pData, WORD wDataSize);
  811. ///+++大转盘奖品列表
  812. BOOL OnDBRouletteConfig(DWORD dwContextID, VOID * pData, WORD wDataSize);
  813. ///+++"我"的转盘信息
  814. BOOL OnDBMyRouletteInfo(DWORD dwContextID, VOID * pData, WORD wDataSize);
  815. ///+++中奖历史
  816. BOOL OnDBLotteryHis(DWORD dwContextID, VOID * pData, WORD wDataSize);
  817. BOOL OnDBLotteryHisEx(DWORD dwContextID, VOID * pData, WORD wDataSize);
  818. ///+++轮盘抽奖
  819. BOOL OnDBRouletteLottery(DWORD dwContextID, VOID * pData, WORD wDataSize);
  820. //回调抽奖记录入库,更新领取标志
  821. bool OnTCPNetworkSubUserLotteryResultCallBack(WORD wLotteryID, DWORD dwSocketID);
  822. //手动领奖
  823. BOOL OnDBRouletteAward(DWORD dwContextID, VOID * pData, WORD wDataSize);
  824. //额外玩法 2018-10-31
  825. bool OnTCPNetworkSubUpdateAddClub(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  826. bool OnDBUpdateAddClub(DWORD dwContextID, VOID * pData, WORD wDataSize);
  827. bool OnDBGetAddClub(DWORD dwContextID, VOID * pData, WORD wDataSize);
  828. bool OnAutoCreateRoomToDB(DWORD dwClubID, DWORD dwUserID, WORD wWanFa);
  829. //分享战绩到闲聊
  830. bool OnDBFenXiangReCord(DWORD dwContextID, VOID * pData, WORD wDataSize);
  831. bool OnWlShuffleGameHandle(VOID * pData, WORD wDataSize, DWORD dwSocketID);
  832. bool OnWlShuffleGameHandleACK(DWORD dwContextID, VOID * pData, WORD wDataSize);
  833. bool OnWlShuffleGameDeductHandle(VOID * pData, WORD wDataSize);
  834. };
  835. //////////////////////////////////////////////////////////////////////////////////
  836. #endif