Advertisement
Guest User

Untitled

a guest
Dec 15th, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.05 KB | None | 0 0
  1.  
  2. #define OXEVENT_MAP_INDEX 113
  3.  
  4. #ifdef ENABLE_FEATURES_OXEVENT
  5.  
  6. #define PASSWORD_MANAGER "metin2team" // Change here password for login in event manager.
  7.  
  8. enum TypeInfo
  9. {
  10. OXEVENT_TOP_LIMIT = 5,
  11. OXEVENT_FIRST_ANSWER = 1,
  12. OXEVENT_NO_DATA = 999,
  13. OXEVENT_OPEN_LOGIN = 0,
  14. OXEVENT_OPEN_EVENT = 1,
  15. OXEVENT_CLOSE_GATES = 2,
  16. OXEVENT_CLOSE_EVENT = 3,
  17. OXEVENT_REWARD_PLAYERS = 4,
  18. OXEVENT_ASK_QUESTION = 5,
  19. OXEVENT_FORCE_CLOSE_EVENT = 6,
  20. };
  21. #endif
  22.  
  23. struct tag_Quiz
  24. {
  25. char level;
  26. char Quiz[256];
  27. bool answer;
  28. };
  29.  
  30. enum OXEventStatus
  31. {
  32. OXEVENT_FINISH = 0, // OX이벤트가 완전히 끝난 상태
  33. OXEVENT_OPEN = 1, // OX이벤트가 시작됨. 을두지(20012)를 통해서 입장가능
  34. OXEVENT_CLOSE = 2, // OX이벤트의 참가가 끝남. 을두지(20012)를 통한 입장이 차단됨
  35. OXEVENT_QUIZ = 3, // 퀴즈를 출제함.
  36.  
  37. OXEVENT_ERR = 0xff
  38. };
  39.  
  40. class COXEventManager : public singleton<COXEventManager>
  41. {
  42. private :
  43. std::map<DWORD, DWORD> m_map_char;
  44. std::map<DWORD, DWORD> m_map_attender;
  45. std::map<DWORD, DWORD> m_map_miss;
  46. #ifdef ENABLE_FEATURES_OXEVENT
  47. std::map<DWORD, DWORD> m_map_answers;
  48. #endif
  49.  
  50. std::vector<std::vector<tag_Quiz> > m_vec_quiz;
  51.  
  52. LPEVENT m_timedEvent;
  53. #ifdef ENABLE_FEATURES_OXEVENT
  54. LPEVENT m_counterEvent;
  55. #endif
  56.  
  57. protected :
  58. bool CheckAnswer();
  59.  
  60. bool EnterAudience(LPCHARACTER pChar);
  61. bool EnterAttender(LPCHARACTER pChar);
  62.  
  63. public :
  64. bool Initialize();
  65. void Destroy();
  66.  
  67. OXEventStatus GetStatus();
  68. void SetStatus(OXEventStatus status);
  69.  
  70. bool LoadQuizScript(const char* szFileName);
  71.  
  72. bool Enter(LPCHARACTER pChar);
  73.  
  74. bool CloseEvent();
  75.  
  76. void ClearQuiz();
  77. bool AddQuiz(unsigned char level, const char* pszQuestion, bool answer);
  78. bool ShowQuizList(LPCHARACTER pChar);
  79. #ifdef ENABLE_FEATURES_OXEVENT
  80. DWORD GetObserverCount() { return (m_map_char.size() - m_map_attender.size() > 0) ? m_map_char.size() - m_map_attender.size() : 0; }
  81. std::string GetGuildWinner(LPCHARACTER pkChar);
  82.  
  83. bool IsExistVnum(DWORD dwItemVnum);
  84. bool IsExistCount(BYTE count);
  85. bool IsExistKeyAnswers(LPCHARACTER pChar, int * keyAnswers);
  86. //bool CheckPassword(LPCHARACTER pChar, const char* c_szPassword);
  87.  
  88. bool IsLastManStanding();
  89. void InsertAnswers(LPCHARACTER pChar);
  90. void TruncateAnswers(LPCHARACTER pChar);
  91. void RegisterWinner();
  92. void InitializePacket(LPCHARACTER pChar);
  93.  
  94. void RefreshWinners();
  95. void OpenGui(LPCHARACTER pChar);
  96. void Disconnect(LPCHARACTER pChar);
  97.  
  98. void GetErrByStatus(LPCHARACTER pChar, int key);
  99.  
  100. void NoticeAll(std::string msg);
  101. void Manager(LPCHARACTER ch, const char* c_pData);
  102. #endif
  103.  
  104. bool Quiz(unsigned char level, int timelimit);
  105. bool GiveItemToAttender(DWORD dwItemVnum, BYTE count);
  106.  
  107. bool CheckAnswer(bool answer);
  108. void WarpToAudience();
  109.  
  110. bool LogWinner();
  111.  
  112. DWORD GetAttenderCount() { return m_map_attender.size(); }
  113.  
  114. #ifdef ENABLE_BLOCK_DUPLICATE_CONNECTION_OX
  115. bool CheckIpAddress(LPCHARACTER ch);
  116. void RemoveFromAttenderList(DWORD dwPID);
  117. #endif
  118. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement