Advertisement
Guest User

Untitled

a guest
May 7th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.66 KB | None | 0 0
  1. }
  2. else
  3. {
  4. SendNoticeMap(LC_TEXT("5ÃÊ µÚ Ʋ¸®½Å ºÐµéÀ» ¹Ù±ùÀ¸·Î À̵¿ ½ÃÅ°°Ú½À´Ï´Ù."), OXEVENT_MAP_INDEX, true);
  5. }
  6.  
  7. flag++;
  8. return PASSES_PER_SEC(5);
  9.  
  10. case 2:
  11. COXEventManager::instance().WarpToAudience();
  12. COXEventManager::instance().SetStatus(OXEVENT_CLOSE);
  13. SendNoticeMap(LC_TEXT("´ÙÀ½ ¹®Á¦ ÁغñÇØÁÖ¼¼¿ä."), OXEVENT_MAP_INDEX, true);
  14. flag = 0;
  15. break;
  16. }
  17. return 0;
  18. }
  19.  
  20. bool COXEventManager::Quiz(unsigned char level, int timelimit)
  21. {
  22. if (m_vec_quiz.size() == 0) return false;
  23. if (level > m_vec_quiz.size()) level = m_vec_quiz.size() - 1;
  24. if (m_vec_quiz[level].size() <= 0) return false;
  25.  
  26. if (timelimit < 0) timelimit = 30;
  27.  
  28. int idx = number(0, m_vec_quiz[level].size()-1);
  29.  
  30. SendNoticeMap(LC_TEXT("¹®Á¦ ÀÔ´Ï´Ù."), OXEVENT_MAP_INDEX, true);
  31. SendNoticeMap(m_vec_quiz[level][idx].Quiz, OXEVENT_MAP_INDEX, true);
  32. SendNoticeMap(LC_TEXT("¸ÂÀ¸¸é O, Ʋ¸®¸é X·Î À̵¿ÇØÁÖ¼¼¿ä"), OXEVENT_MAP_INDEX, true);
  33.  
  34. if (m_timedEvent != NULL) {
  35. event_cancel(&m_timedEvent);
  36. }
  37.  
  38. OXEventInfoData* answer = AllocEventInfo<OXEventInfoData>();
  39.  
  40. answer->answer = m_vec_quiz[level][idx].answer;
  41.  
  42. timelimit -= 15;
  43. m_timedEvent = event_create(oxevent_timer, answer, PASSES_PER_SEC(timelimit));
  44.  
  45. SetStatus(OXEVENT_QUIZ);
  46.  
  47. m_vec_quiz[level].erase(m_vec_quiz[level].begin()+idx);
  48. return true;
  49. }
  50.  
  51. bool COXEventManager::CheckAnswer(bool answer)
  52. {
  53. if (m_map_attender.size() <= 0) return true;
  54.  
  55. itertype(m_map_attender) iter = m_map_attender.begin();
  56. itertype(m_map_attender) iter_tmp;
  57.  
  58. m_map_miss.clear();
  59.  
  60. int rect[4];
  61. if (answer != true)
  62. {
  63. rect[0] = 892600;
  64. rect[1] = 22900;
  65. rect[2] = 896300;
  66. rect[3] = 26400;
  67. }
  68. else
  69. {
  70. rect[0] = 896600;
  71. rect[1] = 22900;
  72. rect[2] = 900300;
  73. rect[3] = 26400;
  74. }
  75.  
  76. LPCHARACTER pkChar = NULL;
  77. PIXEL_POSITION pos;
  78. for (; iter != m_map_attender.end();)
  79. {
  80. pkChar = CHARACTER_MANAGER::instance().FindByPID(iter->second);
  81. if (pkChar != NULL)
  82. {
  83. pos = pkChar->GetXYZ();
  84.  
  85. if (pos.x < rect[0] || pos.x > rect[2] || pos.y < rect[1] || pos.y > rect[3])
  86. {
  87. pkChar->EffectPacket(SE_FAIL);
  88. iter_tmp = iter;
  89. iter++;
  90. m_map_attender.erase(iter_tmp);
  91. m_map_miss.insert(std::make_pair(pkChar->GetPlayerID(), pkChar->GetPlayerID()));
  92. }
  93. else
  94. {
  95. pkChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Á¤´äÀÔ´Ï´Ù!"));
  96. // pkChar->CreateFly(number(FLY_FIREWORK1, FLY_FIREWORK6), pkChar);
  97. char chatbuf[256];
  98. int len = snprintf(chatbuf, sizeof(chatbuf),
  99. "%s %u %u", number(0, 1) == 1 ? "cheer1" : "cheer2", (DWORD)pkChar->GetVID(), 0);
  100.  
  101. // ¸®ÅÏ°ªÀÌ sizeof(chatbuf) ÀÌ»óÀÏ °æ¿ì truncateµÇ¾ú´Ù´Â ¶æ..
  102. if (len < 0 || len >= (int) sizeof(chatbuf))
  103. len = sizeof(chatbuf) - 1;
  104.  
  105. // \0 ¹®ÀÚ Æ÷ÇÔ
  106. ++len;
  107.  
  108. TPacketGCChat pack_chat;
  109. pack_chat.header = HEADER_GC_CHAT;
  110. pack_chat.size = sizeof(TPacketGCChat) + len;
  111. pack_chat.type = CHAT_TYPE_COMMAND;
  112. pack_chat.id = 0;
  113.  
  114. TEMP_BUFFER buf;
  115. buf.write(&pack_chat, sizeof(TPacketGCChat));
  116. buf.write(chatbuf, len);
  117.  
  118. pkChar->PacketAround(buf.read_peek(), buf.size());
  119. pkChar->EffectPacket(SE_SUCCESS);
  120.  
  121. ++iter;
  122. }
  123. }
  124. else
  125. {
  126. itertype(m_map_char) err = m_map_char.find(iter->first);
  127. if (err != m_map_char.end()) m_map_char.erase(err);
  128.  
  129. itertype(m_map_miss) err2 = m_map_miss.find(iter->first);
  130. if (err2 != m_map_miss.end()) m_map_miss.erase(err2);
  131.  
  132. iter_tmp = iter;
  133. ++iter;
  134. m_map_attender.erase(iter_tmp);
  135. }
  136. }
  137. return true;
  138. }
  139.  
  140. void COXEventManager::WarpToAudience()
  141. {
  142. if (m_map_miss.size() <= 0) return;
  143.  
  144. itertype(m_map_miss) iter = m_map_miss.begin();
  145. LPCHARACTER pkChar = NULL;
  146.  
  147. for (; iter != m_map_miss.end(); ++iter)
  148. {
  149. pkChar = CHARACTER_MANAGER::instance().FindByPID(iter->second);
  150.  
  151. if (pkChar != NULL)
  152. {
  153. switch ( number(0, 3))
  154. {
  155. case 0 : pkChar->Show(OXEVENT_MAP_INDEX, 896300, 28900); break;
  156. case 1 : pkChar->Show(OXEVENT_MAP_INDEX, 890900, 28100); break;
  157. case 2 : pkChar->Show(OXEVENT_MAP_INDEX, 896600, 20500); break;
  158. case 3 : pkChar->Show(OXEVENT_MAP_INDEX, 902500, 28100); break;
  159. default : pkChar->Show(OXEVENT_MAP_INDEX, 896300, 28900); break;
  160. }
  161. }
  162. }
  163.  
  164. m_map_miss.clear();
  165. }
  166.  
  167. bool COXEventManager::CloseEvent()
  168. {
  169. if (m_timedEvent != NULL) {
  170. event_cancel(&m_timedEvent);
  171. }
  172.  
  173. itertype(m_map_char) iter = m_map_char.begin();
  174.  
  175. LPCHARACTER pkChar = NULL;
  176. for (; iter != m_map_char.end(); ++iter)
  177. {
  178. pkChar = CHARACTER_MANAGER::instance().FindByPID(iter->second);
  179.  
  180. if (pkChar != NULL)
  181. pkChar->WarpSet(EMPIRE_START_X(pkChar->GetEmpire()), EMPIRE_START_Y(pkChar->GetEmpire()));
  182. }
  183.  
  184. m_map_char.clear();
  185.  
  186. return true;
  187. }
  188.  
  189. bool COXEventManager::LogWinner()
  190. {
  191. itertype(m_map_attender) iter = m_map_attender.begin();
  192.  
  193. for (; iter != m_map_attender.end(); ++iter)
  194. {
  195. LPCHARACTER pkChar = CHARACTER_MANAGER::instance().FindByPID(iter->second);
  196.  
  197. if (pkChar)
  198. LogManager::instance().CharLog(pkChar, 0, "OXEVENT", "LastManStanding");
  199. }
  200.  
  201. return true;
  202. }
  203.  
  204. bool COXEventManager::GiveItemToAttender(DWORD dwItemVnum, BYTE count)
  205. {
  206. itertype(m_map_attender) iter = m_map_attender.begin();
  207.  
  208. for (; iter != m_map_attender.end(); ++iter)
  209. {
  210. LPCHARACTER pkChar = CHARACTER_MANAGER::instance().FindByPID(iter->second);
  211.  
  212. if (pkChar)
  213. {
  214. pkChar->AutoGiveItem(dwItemVnum, count);
  215. LogManager::instance().ItemLog(pkChar->GetPlayerID(), 0, count, dwItemVnum, "OXEVENT_REWARD", "", pkChar->GetDesc()->GetHostName(), dwItemVnum);
  216. }
  217. }
  218.  
  219. return true;
  220. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement