Guest User

Untitled

a guest
Mar 13th, 2019
272
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.39 KB | None | 0 0
  1. // vim:ts=4 sw=4
  2. #include "stdafx.h"
  3. #include "ClientManager.h"
  4. #include "Main.h"
  5. #include "Config.h"
  6. #include "DBManager.h"
  7. #include "QID.h"
  8.  
  9. void CClientManager::LoadEventFlag()
  10. {
  11. char szQuery[1024];
  12. snprintf(szQuery, sizeof(szQuery), "SELECT szName, lValue FROM quest%s WHERE dwPID = 0", GetTablePostfix());
  13. std::auto_ptr<SQLMsg> pmsg(CDBManager::instance().DirectQuery(szQuery));
  14.  
  15. SQLResult* pRes = pmsg->Get();
  16. if (pRes->uiNumRows)
  17. {
  18. MYSQL_ROW row;
  19. while ((row = mysql_fetch_row(pRes->pSQLResult)))
  20. {
  21. TPacketSetEventFlag p;
  22. strlcpy(p.szFlagName, row[0], sizeof(p.szFlagName));
  23. str_to_number(p.lValue, row[1]);
  24. sys_log(0, "EventFlag Load %s %d", p.szFlagName, p.lValue);
  25. m_map_lEventFlag.insert(std::make_pair(std::string(p.szFlagName), p.lValue));
  26. ForwardPacket(HEADER_DG_SET_EVENT_FLAG, &p, sizeof(TPacketSetEventFlag));
  27. }
  28. }
  29. }
  30.  
  31. void CClientManager::SetEventFlag(TPacketSetEventFlag* p)
  32. {
  33. ForwardPacket(HEADER_DG_SET_EVENT_FLAG, p, sizeof(TPacketSetEventFlag));
  34.  
  35. bool bChanged = false;
  36.  
  37. __typeof(m_map_lEventFlag.begin()) it = m_map_lEventFlag.find(p->szFlagName);
  38. if (it == m_map_lEventFlag.end())
  39. {
  40. bChanged = true;
  41. m_map_lEventFlag.insert(std::make_pair(std::string(p->szFlagName), p->lValue));
  42. }
  43. else if (it->second != p->lValue)
  44. {
  45. bChanged = true;
  46. it->second = p->lValue;
  47. }
  48.  
  49. if (bChanged)
  50. {
  51. char szQuery[1024];
  52. snprintf(szQuery, sizeof(szQuery),
  53. "REPLACE INTO quest%s (dwPID, szName, szState, lValue) VALUES(0, '%s', '', %ld)",
  54. GetTablePostfix(), p->szFlagName, p->lValue);
  55. szQuery[1023] = '\0';
  56.  
  57. //CDBManager::instance().ReturnQuery(szQuery, QID_QUEST_SAVE, 0, NULL);
  58. CDBManager::instance().AsyncQuery(szQuery);
  59. sys_log(0, "HEADER_GD_SET_EVENT_FLAG : Changed CClientmanager::SetEventFlag(%s %d) ", p->szFlagName, p->lValue);
  60. return;
  61. }
  62. sys_log(0, "HEADER_GD_SET_EVENT_FLAG : No Changed CClientmanager::SetEventFlag(%s %d) ", p->szFlagName, p->lValue);
  63. }
  64.  
  65. void CClientManager::SendEventFlagsOnSetup(CPeer* peer)
  66. {
  67. __typeof(m_map_lEventFlag.begin()) it;
  68. for (it = m_map_lEventFlag.begin(); it != m_map_lEventFlag.end(); ++it)
  69. {
  70. TPacketSetEventFlag p;
  71. strlcpy(p.szFlagName, it->first.c_str(), sizeof(p.szFlagName));
  72. p.lValue = it->second;
  73. peer->EncodeHeader(HEADER_DG_SET_EVENT_FLAG, 0, sizeof(TPacketSetEventFlag));
  74. peer->Encode(&p, sizeof(TPacketSetEventFlag));
  75. }
  76. }
Advertisement
Add Comment
Please, Sign In to add comment