PageRenderTime 36ms CodeModel.GetById 11ms RepoModel.GetById 1ms app.codeStats 0ms

/branches/Game2/Public/Tools/ServerCenterControl/App/appclass/OnSucMessage.cpp

http://mmo-resourse.googlecode.com/
C++ | 569 lines | 475 code | 53 blank | 41 comment | 96 complexity | 95872871a7102b8c94cceebbcd4b6a0e MD5 | raw file
Possible License(s): Zlib, LGPL-2.1, LGPL-2.0
  1. #include "stdafx.h"
  2. #include "SmManage.h"
  3. #include "UserManage.h"
  4. #include "PackManage.h"
  5. #include "GmSystem.h"
  6. //! ????
  7. VOID OnSucMessage(CMessage *pMsg)
  8. {
  9. switch( pMsg->GetType())
  10. {
  11. //! ????
  12. case MSG_SUC2SCC_LOGIN_Request_Login:
  13. {
  14. tagUserLogin UserLoginInfo;
  15. UserLoginInfo.dwVersion = pMsg->GetDWord();
  16. pMsg->GetStr(UserLoginInfo.szName, MAX_USER_NAME_SZIE);
  17. pMsg->GetEx(UserLoginInfo.szMD5Pwd, MD5_16_PASSWORD_SIZE);
  18. UserManage::GetInstance().OnUserLogin(UserLoginInfo, pMsg->GetSocketID());
  19. }
  20. break;
  21. case MSG_SUC2SCC_LOGIN_Request_ChangePwdQuest:
  22. {
  23. tagChangePWD ChangePWD;
  24. pMsg->GetEx(&ChangePWD, sizeof(tagChangePWD));
  25. UserManage::GetInstance().OnUserChangePwd(ChangePWD, pMsg->GetSocketID());
  26. }
  27. break;
  28. case MSG_SUC2SCC_INFO_Request_Show:
  29. {
  30. LONG lUserID = pMsg->GetSocketID();
  31. OnlineUser *pUser = UserManage::GetInstance().FindUser(lUserID);
  32. if(NULL == pUser) return;
  33. if(!pUser->HasPurview(ePT_Scout2))
  34. {
  35. pUser->SendInfo("Purview not enough!");
  36. return;
  37. }
  38. //! ????
  39. DWORD dwSmID = pMsg->GetDWord();
  40. DWORD dwGappID = pMsg->GetDWord();
  41. DWORD dwInfoType = pMsg->GetDWord();
  42. DWORD dwBeginTime = pMsg->GetDWord();
  43. DWORD dwEndTime = pMsg->GetDWord();
  44. SM *pSM = SmManage::GetInstance().FindSM(dwSmID);
  45. if(NULL != pSM)
  46. {
  47. Gapp *pGapp = pSM->FindGapp(dwGappID);
  48. if(NULL != pGapp)
  49. {
  50. pGapp->FindGameInfoToUser(dwInfoType, dwBeginTime, dwEndTime, lUserID);
  51. return;
  52. }
  53. }
  54. pUser->SendInfo("can't find aim!");
  55. }
  56. break;
  57. case MSG_SUC2SCC_INFO_Request_New:
  58. {
  59. LONG lUserID = pMsg->GetSocketID();
  60. OnlineUser *pUser = UserManage::GetInstance().FindUser(lUserID);
  61. if(NULL == pUser) return;
  62. if(!pUser->HasPurview(ePT_Scout2))
  63. {
  64. pUser->SendInfo("Purview not enough!");
  65. return;
  66. }
  67. //! ????
  68. DWORD dwSmID = pMsg->GetDWord();
  69. DWORD dwGappID = pMsg->GetDWord();
  70. DWORD dwInfoType = pMsg->GetDWord();
  71. SM *pSM = SmManage::GetInstance().FindSM(dwSmID);
  72. if(NULL != pSM)
  73. {
  74. Gapp *pGapp = pSM->FindGapp(dwGappID);
  75. if(NULL != pGapp)
  76. {
  77. CMessage msg(MSG_SCC2SM_INFO_SUC_Request_GameInfo);
  78. msg.Add(lUserID);
  79. msg.Add(dwGappID);
  80. msg.Add(dwInfoType);
  81. msg.SendToSm(pSM->GetSocket());
  82. return;
  83. }
  84. }
  85. pUser->SendInfo("can't find aim!");
  86. }
  87. break;
  88. //! ?????????
  89. case MSG_SUC2SCC_CTRL_Request_InCtrlRoom:
  90. {
  91. //! ??????
  92. LONG lUserID = pMsg->GetSocketID();
  93. OnlineUser *pUser = UserManage::GetInstance().FindUser(lUserID);
  94. if(NULL == pUser) return;
  95. if(!pUser->HasPurview(ePT_ServerControl2))
  96. {
  97. pUser->SendInfo("Purview not enough!");
  98. return;
  99. }
  100. //! ????
  101. DWORD dwSmID = pMsg->GetDWord();
  102. DWORD dwGappID = pMsg->GetDWord();
  103. BOOL bIn = pMsg->GetDWord();
  104. //!
  105. SM *pSM = SmManage::GetInstance().FindSM(dwSmID);
  106. if(NULL != pSM)
  107. {
  108. Gapp *pGapp = pSM->FindGapp(dwGappID);
  109. if(NULL != pGapp)
  110. {
  111. if(pGapp->InCtrlRoom(lUserID, bIn))
  112. {
  113. CMessage msg(MSG_SCC2SUC_CTRL_Re_InCtrlRoom);
  114. msg.Add((DWORD)TRUE);
  115. msg.Add((DWORD)bIn);
  116. msg.Add(dwSmID);
  117. msg.Add(dwGappID);
  118. msg.SendToSuc(lUserID);
  119. if(bIn)
  120. {
  121. pUser->AddCtrlGapp(dwGappID, dwSmID);
  122. ActionLogManage::GetInstance().ActionLog(dwSmID, dwGappID, UserManage::GetInstance().FindUserName(lUserID).c_str(), "user[%s] login gapp console.", pUser->GetName());
  123. }
  124. else
  125. {
  126. pUser->DelCtrlGapp(dwGappID);
  127. ActionLogManage::GetInstance().ActionLog(dwSmID, dwGappID, UserManage::GetInstance().FindUserName(lUserID).c_str(), "user[%s] login gapp console.", pUser->GetName());
  128. }
  129. return;
  130. }
  131. }
  132. }
  133. pUser->SendInfo("can't find aim!");
  134. }
  135. break;
  136. //! ????????GAPP
  137. case MSG_SUC2SCC_CTRL_Request_SHUTDOWN:
  138. case MSG_SUC2SCC_CTRL_Request_START:
  139. case MSG_SUC2SCC_CTRL_Request_RESTART:
  140. {
  141. //! ??????
  142. LONG lUserID = pMsg->GetSocketID();
  143. const OnlineUser *pUser = UserManage::GetInstance().FindUser(lUserID);
  144. if(NULL == pUser) return;
  145. if(!pUser->HasPurview(ePT_ServerControl2))
  146. {
  147. {
  148. pUser->SendInfo("Purview not enough!");
  149. return;
  150. }
  151. }
  152. //! ????
  153. DWORD dwSmID = pMsg->GetDWord();
  154. DWORD dwGappID = pMsg->GetDWord();
  155. DWORD dwCtrlType = pMsg->GetDWord();
  156. //! ????????????
  157. DWORD dwReType = 0;
  158. DWORD dwRequestType = 0;
  159. const char *pCtrl = NULL;
  160. switch( pMsg->GetType())
  161. {
  162. case MSG_SUC2SCC_CTRL_Request_SHUTDOWN:
  163. {
  164. dwReType = MSG_SCC2SUC_CTRL_Re_SHUTDOWN;
  165. dwRequestType = MSG_SCC2SM_CTRL_Request_SHUTDOWN;
  166. pCtrl = "turn off";
  167. }
  168. break;
  169. case MSG_SUC2SCC_CTRL_Request_START:
  170. {
  171. dwReType = MSG_SCC2SUC_CTRL_Re_START;
  172. dwRequestType = MSG_SCC2SM_CTRL_Request_START;
  173. pCtrl = "turn on";
  174. }
  175. break;
  176. case MSG_SUC2SCC_CTRL_Request_RESTART:
  177. {
  178. dwReType = MSG_SCC2SUC_CTRL_Re_RESTART;
  179. dwRequestType = MSG_SCC2SM_CTRL_Request_START;
  180. pCtrl = "reset";
  181. }
  182. break;
  183. default:
  184. return;
  185. }
  186. SM *pSM = SmManage::GetInstance().FindSM(dwSmID);
  187. if(NULL != pSM)
  188. {
  189. Gapp *pGapp = pSM->FindGapp(dwGappID);
  190. if(NULL != pGapp)
  191. {
  192. if (lUserID == pGapp->GetRoomUser())
  193. {
  194. CMessage msgRequest(dwRequestType);
  195. msgRequest.Add(dwGappID);
  196. msgRequest.SendToSm(pSM->GetSocket());
  197. CMessage msg(dwReType);
  198. msg.Add((DWORD)TRUE);
  199. msg.Add(dwSmID);
  200. msg.Add(dwGappID);
  201. msg.Add(dwCtrlType);
  202. msg.SendToSuc(lUserID);
  203. ActionLogManage::GetInstance().ActionLog(dwSmID, dwGappID, UserManage::GetInstance().FindUserName(lUserID).c_str(), "user[%s] %s GAPP[]", pUser->GetName(), pCtrl);
  204. return;
  205. }
  206. }
  207. }
  208. pUser->SendInfo("can't find aim!");
  209. }
  210. break;
  211. //! ???????
  212. case MSG_SUC2SCC_CTRL_Request_UpLoadPack:
  213. {
  214. //! ??????
  215. LONG lUserID = pMsg->GetSocketID();
  216. const OnlineUser *pUser = UserManage::GetInstance().FindUser(lUserID);
  217. if(NULL == pUser) return;
  218. if(!pUser->HasPurview(ePT_Update)) return;
  219. DBReadSet dbReadSet;
  220. pMsg->GetDBReadSet(dbReadSet);
  221. PackManage::GetInstance().OnUserUploadData(dbReadSet, pMsg->GetSocketID());
  222. }
  223. break;
  224. //! ????GAPP
  225. case MSG_SUC2SCC_CTRL_Request_UpdateGapp:
  226. {
  227. //! ??????
  228. LONG lUserID = pMsg->GetSocketID();
  229. const OnlineUser *pUser = UserManage::GetInstance().FindUser(lUserID);
  230. if(NULL == pUser) return;
  231. if(!pUser->HasPurview(ePT_ServerControl2))
  232. {
  233. pUser->SendInfo("Purview not enough!");
  234. return;
  235. }
  236. //! ????
  237. DWORD dwSmID = pMsg->GetDWord();
  238. DWORD dwGappID = pMsg->GetDWord();
  239. BYTE cToNew = pMsg->GetByte();
  240. SM *pSM = SmManage::GetInstance().FindSM(dwSmID);
  241. if(NULL != pSM)
  242. {
  243. Gapp *pGapp = pSM->FindGapp(dwGappID);
  244. if(NULL != pGapp)
  245. {
  246. if (lUserID == pGapp->GetRoomUser())
  247. {
  248. //! ???SM
  249. CMessage msgToSM(MSG_SCC2SM_CTRL_Request_UpdateGapp);
  250. msgToSM.Add(dwGappID);
  251. msgToSM.Add(cToNew);
  252. msgToSM.SendToSm(pSM->GetSocket());
  253. //! ???SUC
  254. CMessage msg(MSG_SCC2SUC_CTRL_Re_UpdateGapp);
  255. msg.Add((DWORD)TRUE);
  256. msg.Add(dwSmID);
  257. msg.Add(dwGappID);
  258. msg.SendToSuc(lUserID);
  259. return;
  260. }
  261. }
  262. }
  263. pUser->SendInfo("can't find aim!");
  264. }
  265. break;
  266. //! ????Gapp?????
  267. case MSG_SUC2SCC_CTRL_Request_ReLoadGapp:
  268. {
  269. //! ??????
  270. LONG lUserID = pMsg->GetSocketID();
  271. const OnlineUser *pUser = UserManage::GetInstance().FindUser(lUserID);
  272. if(NULL == pUser) return;
  273. if(!pUser->HasPurview(ePT_ServerControl2))
  274. {
  275. pUser->SendInfo("Purview not enough!");
  276. return;
  277. }
  278. //! ????
  279. DWORD dwSmID = pMsg->GetDWord();
  280. DWORD dwGappID = pMsg->GetDWord();
  281. SM *pSM = SmManage::GetInstance().FindSM(dwSmID);
  282. if(NULL != pSM)
  283. {
  284. Gapp *pGapp = pSM->FindGapp(dwGappID);
  285. if(NULL != pGapp)
  286. {
  287. if (lUserID == pGapp->GetRoomUser())
  288. {
  289. //! SUC??
  290. CMessage msgSuc(MSG_SCC2SUC_CTRL_Re_ReLoadGapp);
  291. msgSuc.Add(dwSmID);
  292. msgSuc.Add(dwGappID);
  293. //! SM??
  294. CMessage msg(MSG_SCC2SM_CTRL_Re_ServerPack);
  295. DBWriteSet dbWriteSet;
  296. msg.GetDBWriteSet(dbWriteSet);
  297. dbWriteSet.AddToByteArray(dwGappID);
  298. dbWriteSet.AddToByteArray(pGapp->GetType());
  299. if(PackManage::GetInstance().FindAndGetHighestPack(pGapp->GetType(), dbWriteSet))
  300. msgSuc.Add((BYTE)TRUE);
  301. else
  302. msgSuc.Add((BYTE)TRUE);
  303. msg.SendToSm(pSM->GetSocket());
  304. msgSuc.SendToSuc(lUserID);
  305. }
  306. }
  307. }
  308. pUser->SendInfo("can't find aim!");
  309. }
  310. break;
  311. case MSG_SUC2SCC_CTRL_Request_GappAction:
  312. {
  313. //! ??????
  314. LONG lUserID = pMsg->GetSocketID();
  315. const OnlineUser *pUser = UserManage::GetInstance().FindUser(lUserID);
  316. if(NULL == pUser) return;
  317. if(!pUser->HasPurview(ePT_ServerControl2))
  318. {
  319. pUser->SendInfo("Purview not enough!");
  320. return;
  321. }
  322. //! ????
  323. DWORD dwSmID = pMsg->GetDWord();
  324. DWORD dwGappID = pMsg->GetDWord();
  325. SM *pSM = SmManage::GetInstance().FindSM(dwSmID);
  326. if(NULL != pSM)
  327. {
  328. Gapp *pGapp = pSM->FindGapp(dwGappID);
  329. if(NULL != pGapp)
  330. {
  331. if (lUserID == pGapp->GetRoomUser())
  332. {
  333. pMsg->SetType(MSG_SCC2SM_CTRL_Request_GappAction);
  334. pMsg->SendToSm(pSM->GetSocket());
  335. return;
  336. }
  337. }
  338. }
  339. pMsg->SetType(MSG_SCC2SUC_CTRL_Re_GappAction);
  340. pMsg->SendToSuc(lUserID);
  341. }
  342. break;
  343. //! ??????
  344. case MSG_SUC2SCC_CTRL_Request_UploadFile:
  345. {
  346. LONG lUserID = pMsg->GetSocketID();
  347. const OnlineUser *pUser = UserManage::GetInstance().FindUser(lUserID);
  348. if(NULL == pUser) return;
  349. if(!pUser->HasPurview(ePT_Update)) return;
  350. DBReadSet dbReadSet;
  351. pMsg->GetDBReadSet(dbReadSet);
  352. PackManage::GetInstance().OnUserUploadFile(dbReadSet, pMsg->GetSocketID());
  353. }
  354. break;
  355. //! ????????
  356. case MSG_SUC2SCC_INFO_Request_UpdateFile:
  357. {
  358. //! ??????
  359. LONG lUserID = pMsg->GetSocketID();
  360. const OnlineUser *pUser = UserManage::GetInstance().FindUser(lUserID);
  361. if(NULL == pUser) return;
  362. if(!pUser->HasPurview(ePT_Update))
  363. {
  364. pUser->SendInfo("Purview not enough!");
  365. return;
  366. }
  367. DWORD dwGappID = pMsg->GetDWord();
  368. PackManage::GetInstance().SendFileInfoListToClient(dwGappID, pMsg->GetSocketID());
  369. }
  370. break;
  371. case MSG_SUC2SCC_CTRL_Request_SMAction:
  372. {
  373. //! ??????
  374. LONG lUserID = pMsg->GetSocketID();
  375. const OnlineUser *pUser = UserManage::GetInstance().FindUser(lUserID);
  376. if(NULL == pUser) return;
  377. if(!pUser->HasPurview(ePT_ServerControl2))
  378. {
  379. pUser->SendInfo("Purview not enough!");
  380. return;
  381. }
  382. //! ????
  383. DWORD dwSmID = pMsg->GetDWord();
  384. DWORD dwGappID = pMsg->GetDWord();
  385. SM *pSM = SmManage::GetInstance().FindSM(dwSmID);
  386. if(NULL != pSM)
  387. {
  388. Gapp *pGapp = pSM->FindGapp(dwGappID);
  389. if(NULL != pGapp)
  390. {
  391. if (lUserID == pGapp->GetRoomUser())
  392. {
  393. pMsg->SetType(MSG_SCC2SM_CTRL_Request_SMAction);
  394. pMsg->SendToSm(pSM->GetSocket());
  395. return;
  396. }
  397. }
  398. }
  399. }
  400. break;
  401. //! GM????
  402. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  403. //! Gm?????Ws???
  404. case MSG_SUC2SCC_MANAGE_Request_GmToWs:
  405. {
  406. //! ??????
  407. LONG lUserID = pMsg->GetSocketID();
  408. const OnlineUser *pUser = UserManage::GetInstance().FindUser(lUserID);
  409. if(NULL == pUser) return;
  410. BOOL IsIn = (0 != pMsg->GetDWord());
  411. if (IsIn)
  412. {
  413. DWORD dwSmID = pMsg->GetDWord();
  414. DWORD dwGappID = pMsg->GetDWord();
  415. SM *pSM = SmManage::GetInstance().FindSM(dwSmID);
  416. if(NULL != pSM)
  417. {
  418. Gapp *pGapp = pSM->FindGapp(dwGappID);
  419. if(NULL != pGapp)
  420. {
  421. if (eGT_WS == pGapp->GetType())
  422. {
  423. GmSystem::GetInstance().GmInWs(dwSmID, dwGappID, pUser);
  424. }
  425. }
  426. }
  427. }
  428. else
  429. {
  430. GmSystem::GetInstance().GmOutWs(lUserID);
  431. }
  432. }
  433. break;
  434. //! ??????
  435. case MSG_SUC2SCC_MANAGE_Request_VeiwReport:
  436. {
  437. LONG UserID = pMsg->GetSocketID();
  438. GmSystem::GetInstance().OnViewReport(UserID);
  439. }
  440. break;
  441. //! ????????
  442. case MSG_SUC2SCC_MANAGE_Request_VeiwResult:
  443. {
  444. LONG UserID = pMsg->GetSocketID();
  445. tm tmDate;
  446. memset(&tmDate, 0, sizeof(tm));
  447. tmDate.tm_year = pMsg->GetDWord() - 1900;
  448. tmDate.tm_mon = pMsg->GetDWord() - 1;
  449. tmDate.tm_mday = pMsg->GetDWord();
  450. DWORD BeginDate = (DWORD)mktime(&tmDate);
  451. GmSystem::GetInstance().OnViewResult(UserID, BeginDate);
  452. }
  453. break;
  454. //! ????????
  455. case MSG_SUC2SCC_MANAGE_Request_ScoutPlayer:
  456. {
  457. LONG UserID = pMsg->GetSocketID();
  458. BOOL IsWatch = (0 != pMsg->GetDWord());
  459. if(IsWatch)
  460. {
  461. char szPlayerName[GAPP_NAME_SZIE] = {0};
  462. pMsg->GetStr(szPlayerName, GAPP_NAME_SZIE);
  463. GmSystem::GetInstance().OnScoutPlayer(szPlayerName, IsWatch, UserID);
  464. }
  465. else
  466. GmSystem::GetInstance().OnScoutPlayer("", IsWatch, UserID);
  467. }
  468. break;
  469. //! ??????
  470. case MSG_SUC2SCC_MANAGE_Request_OptPlayer:
  471. {
  472. LONG UserID = pMsg->GetSocketID();
  473. tagReportResultInfo ReportResultInfo;
  474. pMsg->GetEx(&ReportResultInfo, sizeof(tagBaseResultInfo));
  475. char szWhy[MAX_AFFICHE_SIZE] = {0};
  476. pMsg->GetStr(szWhy, MAX_AFFICHE_SIZE);
  477. ReportResultInfo._strWhys = szWhy;
  478. GmSystem::GetInstance().OnOptPlayer(ReportResultInfo, UserID);
  479. }
  480. break;
  481. //! ??????
  482. case MSG_SUC2SCC_MANAGE_Request_SendAffiche:
  483. {
  484. LONG UserID = pMsg->GetSocketID();
  485. DWORD SmID = pMsg->GetDWord();
  486. DWORD GappID = pMsg->GetDWord();
  487. SM *pSM = SmManage::GetInstance().FindSM(SmID);
  488. if(NULL != pSM)
  489. {
  490. Gapp *pGapp = pSM->FindGapp(GappID);
  491. if(NULL != pGapp)
  492. {
  493. if (eGT_WS == pGapp->GetType())
  494. {
  495. char szAffiche[MAX_AFFICHE_SIZE] = {0};
  496. pMsg->GetStr(szAffiche, MAX_AFFICHE_SIZE);
  497. GmSystem::GetInstance().OnSendAffiche(szAffiche, UserID, SmID, GappID);
  498. }
  499. }
  500. }
  501. }
  502. break;
  503. //! ?????????GM??????????DWORD?+ ??????512 STR??
  504. case MSG_SUC2SCC_MANAGE_Request_Gm_Command:
  505. {
  506. LONG UserID = pMsg->GetSocketID();
  507. DWORD GmCommand = pMsg->GetDWord();
  508. char szAffiche[512] = {0};
  509. pMsg->GetStr(szAffiche, 512);
  510. GmSystem::GetInstance().OnCommandToPlayer(GmCommand, szAffiche, UserID);
  511. }
  512. break;
  513. default:
  514. break;
  515. }
  516. }