#define OXEVENT_MAP_INDEX 113 struct tag_Quiz { char level; char Quiz[256]; bool answer; }; enum OXEventStatus { OXEVENT_FINISH = 0, // OXÀ̺¥Æ®°¡ ¿ÏÀüÈ÷ ³¡³­ »óÅ OXEVENT_OPEN = 1, // OXÀ̺¥Æ®°¡ ½ÃÀÛµÊ. À»µÎÁö(20012)¸¦ ÅëÇؼ­ ÀÔÀå°¡´É OXEVENT_CLOSE = 2, // OXÀ̺¥Æ®ÀÇ Âü°¡°¡ ³¡³². À»µÎÁö(20012)¸¦ ÅëÇÑ ÀÔÀåÀÌ Â÷´ÜµÊ OXEVENT_QUIZ = 3, // ÄûÁ ÃâÁ¦ÇÔ. OXEVENT_ERR = 0xff }; class COXEventManager : public singleton { private : std::map m_map_char; std::map m_map_attender; std::map m_map_miss; std::vector > m_vec_quiz; LPEVENT m_timedEvent; protected : bool CheckAnswer(); bool EnterAudience(LPCHARACTER pChar); bool EnterAttender(LPCHARACTER pChar); public : bool Initialize(); void Destroy(); OXEventStatus GetStatus(); void SetStatus(OXEventStatus status); bool LoadQuizScript(const char* szFileName); bool Enter(LPCHARACTER pChar); bool CloseEvent(); void ClearQuiz(); bool AddQuiz(unsigned char level, const char* pszQuestion, bool answer); bool ShowQuizList(LPCHARACTER pChar); bool Quiz(unsigned char level, int timelimit); bool GiveItemToAttender(DWORD dwItemVnum, BYTE count); bool CheckAnswer(bool answer); void WarpToAudience(); bool LogWinner(); DWORD GetAttenderCount() { return m_map_attender.size(); } };