/////////////////////////////////////////////////////////////////////////////////////////////// // // ClientSocket Class // /////////////////////////////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "ClientSocket.h" #include #include #include #include #include #include #include #include "GMMemory.h" // forward decl bool GetHostIP(IN_ADDR &Addr, bool AllowVirtual); bool IsWrongIP(IN_ADDR &Addr); bool GetNATAddress(SOCKET Socket_In, SOCKADDR_IN *Address_Out, bool AllowVirtual); ClientSocket* ClientSocket::s_pInstance = 0; ClientSocket* ClientSocket::CreateInstance() { if( s_pInstance ) delete s_pInstance; s_pInstance = new ClientSocket; return s_pInstance; }; ClientSocket::ClientSocket() : m_dwStatusFlag(0) { memset(m_Address, 0, sizeof(SOCKADDR_IN) * (MAX_ADDRESS + 1)); memset(m_lpEventHandler, 0, sizeof(ClientNet::CClientEventHandler*) * MAX_HANDLER + 1); m_bStatusFlag.reset(); m_lpNullEventHandler = &ClientNet::CNullClientEventHandler::GetInstance(); #include "GMUndefNew.h" m_lpEventHandlerMgr = new (std::nothrow) ClientNet::CClientEventHandlerMgr; #include "GMRedefNew.h" InitNSCheckList(); } ClientSocket::~ClientSocket(void) { delete m_lpEventHandlerMgr; } bool ClientSocket::Open(const char* address, unsigned short usport, ClientNet::CClientEventHandler* lpEventHandler) { return (0 != lpEventHandler && 0 != m_lpEventHandlerMgr && m_lpEventHandlerMgr->Connect(INET_Addr(address, usport), lpEventHandler)); } void ClientSocket::SetHandler(ClientNet::CClientEventHandler* lpHandler, HandlerType eHandlerType) { m_lpEventHandler[eHandlerType] = lpHandler; } void ClientSocket::ResetHandler(ClientNet::CClientEventHandler* lpHandler, HandlerType eHandlerType) { if (lpHandler == m_lpEventHandler[eHandlerType]) { m_lpEventHandler[eHandlerType] = 0; } } bool ClientSocket::IsConnected(HandlerType eHandlerType) { return (0 != m_lpEventHandler[eHandlerType]); } void ClientSocket::Disconnect(HandlerType eHandlerType) { if (0 != m_lpEventHandlerMgr) { if (eHandlerType == MAX_HANDLER) { for(int idx = 0; idx < MAX_HANDLER; ++idx) { if(0 != m_lpEventHandler[idx]) { m_lpEventHandlerMgr->Close(m_lpEventHandler[idx]); } } } else if(0 != m_lpEventHandler[eHandlerType]) { m_lpEventHandlerMgr->Close(m_lpEventHandler[eHandlerType]); } } } void ClientSocket::SetAddress(AddressType eAddrType, const char* szAddress, unsigned port) { m_Address[eAddrType] = INET_Addr(szAddress, port).get_addr_in(); } void ClientSocket::HandleEvents(DWORD dwProcessPerCall) { if(0 != m_lpEventHandlerMgr) { m_lpEventHandlerMgr->HandleEvents(dwProcessPerCall); } } bool GetHostIP(IN_ADDR &Addr, bool AllowVirtual) { char HostName[256]; if(!gethostname(HostName, 255)) { PHOSTENT pHost = gethostbyname(HostName); if(NULL == pHost) { return false; } int Count = 0; for(;pHost->h_addr_list[Count]; ++Count) { memcpy(&(Addr.S_un.S_addr), pHost->h_addr_list[Count], sizeof(IN_ADDR)); if(!AllowVirtual) { // °¡»ó ¾ÆÀÌÇÇ È®ÀÎ // 10.0.0.0 ~ 10.255.255.255 // 172.16.0.0 ~ 172.31.255.255 // 192.168.0.0 ~ 192.168.255.255 if((unsigned char)10 == Addr.S_un.S_un_b.s_b1) { continue; } else if((unsigned char)172 == Addr.S_un.S_un_b.s_b1) { if(Addr.S_un.S_un_b.s_b2 >= (unsigned char)16 && Addr.S_un.S_un_b.s_b2 <= (unsigned char)31) { continue; } } else if((unsigned char)192 == Addr.S_un.S_un_b.s_b1) { if((unsigned char)168 == Addr.S_un.S_un_b.s_b2) { continue; } } } // À߸øµÈ ¾ÆÀÌÇÇ // 169.X.X.X ÀÚµ¿ ¾ÆÀÌÇÇ ÇÒ´ç ( SyGate ) // 0.X.X.X if((unsigned char)169 == Addr.S_un.S_un_b.s_b1) { continue; } else if((unsigned char)0 == Addr.S_un.S_un_b.s_b1) { continue; } return true; } if(0 != Count) return true; } return false; } bool IsWrongIP(IN_ADDR &Addr) { if((unsigned char)169 == Addr.S_un.S_un_b.s_b1) { if((unsigned char)254 == Addr.S_un.S_un_b.s_b2) { return true; } } if((unsigned char)0 == Addr.S_un.S_un_b.s_b1) return true; return false; } bool GetNATAddress(SOCKET Socket_In, SOCKADDR_IN *Address_Out, bool AllowVirtual) { int AddressSize = sizeof(SOCKADDR_IN); if(getsockname(Socket_In, (struct sockaddr *)Address_Out, &AddressSize) != SOCKET_ERROR) { char HostName[256]; if(!gethostname(HostName, 255)) { PHOSTENT pHost = gethostbyname(HostName); if(NULL == pHost) { return false; } IN_ADDR& Addr = Address_Out->sin_addr; int Count = 0; for(;pHost->h_addr_list[Count]; ++Count) { memcpy(&(Addr.S_un.S_addr), pHost->h_addr_list[Count], sizeof(IN_ADDR)); if(!AllowVirtual) { // °¡»ó ¾ÆÀÌÇÇ È®ÀÎ // 10.0.0.0 ~ 10.255.255.255 // 172.16.0.0 ~ 172.31.255.255 // 192.168.0.0 ~ 192.168.255.255 if((unsigned char)10 == Addr.S_un.S_un_b.s_b1) { continue; } else if((unsigned char)172 == Addr.S_un.S_un_b.s_b1) { if(Addr.S_un.S_un_b.s_b2 >= (unsigned char)16 && Addr.S_un.S_un_b.s_b2 <= (unsigned char)31) { continue; } } else if((unsigned char)192 == Addr.S_un.S_un_b.s_b1) { if((unsigned char)168 == Addr.S_un.S_un_b.s_b2) { continue; } } } // À߸øµÈ ¾ÆÀÌÇÇ // 169.X.X.X ÀÚµ¿ ¾ÆÀÌÇÇ ÇÒ´ç ( SyGate ) // 0.X.X.X if((unsigned char)169 == Addr.S_un.S_un_b.s_b1) { continue; } else if((unsigned char)0 == Addr.S_un.S_un_b.s_b1) { continue; } return true; } if(0 != Count) return true; } return false; } return false; } //by Hades Kang void ClientSocket::SetStatusFlag(unsigned long dwStatusFlag) { m_dwStatusFlag = dwStatusFlag; } unsigned long ClientSocket::GetStatusFlag() { return m_dwStatusFlag; } bool //ÇØ´ç Ç÷¡±×°¡ üũµÇ¾ú´ÂÁö ¿©ºÎ ClientSocket::IsNSFlagChecked( unsigned char ucCmdFlag ) { if( s_pInstance ) return s_pInstance->m_bStatusFlag[ ucCmdFlag ]; return false; } bool //ÇØ´ç Ç÷¡±× üÀÎÀÌ Ã¼Å©µÇ¾ú´ÂÁö ¿©ºÎ ClientSocket::IsNSFlagChainChecked( unsigned char ucCmdFlag ) { if( s_pInstance ) { std::vector* pCheckList; std::vector::iterator iter; pCheckList = &(s_pInstance->m_SendCheckList[ucCmdFlag]); for( iter = pCheckList->begin() ; iter != pCheckList->end(); iter++ ) { if( s_pInstance->m_bStatusFlag[ (*iter) ] ) //ÇØ´ç Ç÷¹±×°¡ üũ µÇ¾î ÀÖ´Ù¸é... return true; } } return false; } void //ÇØ´ç Ç÷¡±×¸¦ Ȱ¼ºÈ­ ½ÃÅ´ - Send ½Ã¿¡ ¾²ÀÓ ClientSocket::SetNSFlagOn( unsigned char ucCmdFlag ) { if( ucCmdFlag == CmdCharMove || //üũÇÒ ÇÊ¿ä ¾ø´Â ºÎºÐµé. ucCmdFlag == CmdCharUpdateAddress || ucCmdFlag == CmdSysPing || ucCmdFlag == CmdCharAdminCmd ) return ; if( s_pInstance ) s_pInstance->m_bStatusFlag[ ucCmdFlag ] = true; } void //ÇØ´ç Ç÷¡±×¸¦ ºñȰ¼ºÈ­ ½ÃÅ´ - Receive ½Ã¿¡ ¾²ÀÓ ClientSocket::SetNSFlagOff( unsigned char ucCmdFlag ) { if( s_pInstance ) { std::vector* pCheckList; std::vector::iterator iter; pCheckList = &(s_pInstance->m_ReceiveCheckList[ucCmdFlag]); for( iter = pCheckList->begin() ; iter != pCheckList->end(); iter++ ) { s_pInstance->m_bStatusFlag[ (*iter) ] = false; } } } void // Network Status °ü·Ã Check List ÃʱâÈ­ ( Send, Receive ) ClientSocket::InitNSCheckList() { InitSendCheckList(); InitReceiveCheckList(); } void ClientSocket::InitSendCheckList() { /* m_SendCheckList[ CmdAuthAccount ].push_back( CmdAuthAccount ) ; // °èÁ¤ ÀÎÁõ m_SendCheckList[ CmdServerGroup ].push_back( CmdServerGroup ) ; // ¼­¹ö±º ¼±Åà m_SendCheckList[ CmdUserLogin ].push_back( CmdUserLogin ) ; // À¯Àú ·Î±×ÀÎ m_SendCheckList[ CmdUserKill ].push_back( CmdUserKill ) ; // À¯Àú Á¦°Å m_SendCheckList[ CmdCharSelect ].push_back( CmdCharSelect ) ; // ij¸¯ÅÍ ¼±Åà m_SendCheckList[ CmdCharCreate ].push_back( CmdCharCreate ) ; // ij¸¯ÅÍ »ý¼º m_SendCheckList[ CmdCharDelete ].push_back( CmdCharDelete ) ; // ij¸¯ÅÍ »èÁ¦ m_SendCheckList[ CmdCharLogin ].push_back( CmdCharLogin ) ; // ij¸¯ÅÍ ·Î±×ÀÎ m_SendCheckList[ CmdCharSuicide ].push_back( CmdCharSuicide ) ; // ij¸¯ÅÍ ÀÚ»ì m_SendCheckList[ CmdCharRespawn ].push_back( CmdCharRespawn ) ; // ij¸¯ÅÍ ºÎȰ //m_SendCheckList[ CmdCharMove ].push_back( CmdCharMove ) ; // ij¸¯ÅÍ À̵¿ (P2P) m_SendCheckList[ CmdCharMoveUpdate ].push_back( CmdCharMoveUpdate ) ; // ij¸¯ÅÍ À̵¿ ¾÷µ¥ÀÌÆ® m_SendCheckList[ CmdCharChat ].push_back( CmdCharChat ) ; // ij¸¯ÅÍ Ã¤ÆÃ m_SendCheckList[ CmdCharAttack ].push_back( CmdCharAttack ) ; // ij¸¯ÅÍ °ø°Ý m_SendCheckList[ CmdCharCastObject ].push_back( CmdCharCastObject ) ; // ij¸¯ÅÍ ¿ÀºêÁ§Æ® ´øÁö±â m_SendCheckList[ CmdCharUseSkill ].push_back( CmdCharUseSkill ) ; // ij¸¯ÅÍ ½ºÅ³ »ç¿ë */ m_SendCheckList[ CmdCharTakeItem ].push_back( CmdCharTakeItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ Áý±â m_SendCheckList[ CmdCharTakeItem ].push_back( CmdCharSwapItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ ½º¿Ò m_SendCheckList[ CmdCharTakeItem ].push_back( CmdCharRepairItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ ¼ö¸® m_SendCheckList[ CmdCharTakeItem ].push_back( CmdCharUseItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ »ç¿ë m_SendCheckList[ CmdCharTakeItem ].push_back( CmdCharTradeItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ °Å·¡ m_SendCheckList[ CmdCharTakeItem ].push_back( CmdCharItemOptionGraft ) ; // ¾ÆÀÌÅÛ ¿É¼Ç ÀÌ½Ä m_SendCheckList[ CmdCharTakeItem ].push_back( CmdCharItemCompensation ) ; // ¾ÆÀÌÅÛ º¸»ó ÆÇ¸Å m_SendCheckList[ CmdCharTakeItem ].push_back( CmdCharSplitItem ) ; // ij¸¯ÅÍ ½ºÇø´ ¾ÆÀÌÅÛ (°³¼ö ÀÖ´Â ¾ÆÀÌÅÛÀ» µÎ°³·Î Âɰ¶ ¶§ ¾²ÀÓ) m_SendCheckList[ CmdCharSwapItem ].push_back( CmdCharSwapItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ ½º¿Ò m_SendCheckList[ CmdCharSwapItem ].push_back( CmdCharTakeItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ Áý±â m_SendCheckList[ CmdCharSwapItem ].push_back( CmdCharTradeItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ °Å·¡ m_SendCheckList[ CmdCharSwapItem ].push_back( CmdCharRepairItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ ¼ö¸® m_SendCheckList[ CmdCharSwapItem ].push_back( CmdCharUseItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ »ç¿ë m_SendCheckList[ CmdCharSwapItem ].push_back( CmdCharItemOptionGraft ) ; // ¾ÆÀÌÅÛ ¿É¼Ç ÀÌ½Ä m_SendCheckList[ CmdCharSwapItem ].push_back( CmdCharItemCompensation ) ; // ¾ÆÀÌÅÛ º¸»ó ÆÇ¸Å m_SendCheckList[ CmdCharSwapItem ].push_back( CmdCharSplitItem ) ; // ij¸¯ÅÍ ½ºÇø´ ¾ÆÀÌÅÛ (°³¼ö ÀÖ´Â ¾ÆÀÌÅÛÀ» µÎ°³·Î Âɰ¶ ¶§ ¾²ÀÓ) m_SendCheckList[ CmdCharRepairItem ].push_back( CmdCharRepairItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ ¼ö¸® m_SendCheckList[ CmdCharRepairItem ].push_back( CmdCharTradeItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ °Å·¡ m_SendCheckList[ CmdCharRepairItem ].push_back( CmdCharTakeItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ Áý±â m_SendCheckList[ CmdCharRepairItem ].push_back( CmdCharSwapItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ ½º¿Ò m_SendCheckList[ CmdCharRepairItem ].push_back( CmdCharUseItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ »ç¿ë m_SendCheckList[ CmdCharRepairItem ].push_back( CmdCharItemOptionGraft ) ; // ¾ÆÀÌÅÛ ¿É¼Ç ÀÌ½Ä m_SendCheckList[ CmdCharRepairItem ].push_back( CmdCharItemCompensation ) ; // ¾ÆÀÌÅÛ º¸»ó ÆÇ¸Å m_SendCheckList[ CmdCharRepairItem ].push_back( CmdCharSplitItem ) ; // ij¸¯ÅÍ ½ºÇø´ ¾ÆÀÌÅÛ (°³¼ö ÀÖ´Â ¾ÆÀÌÅÛÀ» µÎ°³·Î Âɰ¶ ¶§ ¾²ÀÓ) m_SendCheckList[ CmdCharUseItem ].push_back( CmdCharUseItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ »ç¿ë m_SendCheckList[ CmdCharUseItem ].push_back( CmdCharTradeItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ °Å·¡ m_SendCheckList[ CmdCharUseItem ].push_back( CmdCharTakeItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ Áý±â m_SendCheckList[ CmdCharUseItem ].push_back( CmdCharSwapItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ ½º¿Ò m_SendCheckList[ CmdCharUseItem ].push_back( CmdCharRepairItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ ¼ö¸® m_SendCheckList[ CmdCharUseItem ].push_back( CmdCharItemOptionGraft ) ; // ¾ÆÀÌÅÛ ¿É¼Ç ÀÌ½Ä m_SendCheckList[ CmdCharUseItem ].push_back( CmdCharItemCompensation ) ; // ¾ÆÀÌÅÛ º¸»ó ÆÇ¸Å m_SendCheckList[ CmdCharUseItem ].push_back( CmdCharSplitItem ) ; // ij¸¯ÅÍ ½ºÇø´ ¾ÆÀÌÅÛ (°³¼ö ÀÖ´Â ¾ÆÀÌÅÛÀ» µÎ°³·Î Âɰ¶ ¶§ ¾²ÀÓ) m_SendCheckList[ CmdCharTradeItem ].push_back( CmdCharTradeItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ °Å·¡ m_SendCheckList[ CmdCharTradeItem ].push_back( CmdCharTakeItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ Áý±â m_SendCheckList[ CmdCharTradeItem ].push_back( CmdCharSwapItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ ½º¿Ò m_SendCheckList[ CmdCharTradeItem ].push_back( CmdCharRepairItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ ¼ö¸® m_SendCheckList[ CmdCharTradeItem ].push_back( CmdCharUseItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ »ç¿ë m_SendCheckList[ CmdCharTradeItem ].push_back( CmdCharItemOptionGraft ) ; // ¾ÆÀÌÅÛ ¿É¼Ç ÀÌ½Ä m_SendCheckList[ CmdCharTradeItem ].push_back( CmdCharItemCompensation ) ; // ¾ÆÀÌÅÛ º¸»ó ÆÇ¸Å m_SendCheckList[ CmdCharTradeItem ].push_back( CmdCharSplitItem ) ; // ij¸¯ÅÍ ½ºÇø´ ¾ÆÀÌÅÛ (°³¼ö ÀÖ´Â ¾ÆÀÌÅÛÀ» µÎ°³·Î Âɰ¶ ¶§ ¾²ÀÓ) m_SendCheckList[ CmdCharStartQuest ].push_back( CmdCharStartQuest ) ; // Äù½ºÆ® ½ÃÀÛ m_SendCheckList[ CmdCharEquipShopInfo ].push_back( CmdCharEquipShopInfo ) ; // NPC Àåºñ »óÁ¡ Á¤º¸ m_SendCheckList[ CmdCharItemOptionGraft ].push_back( CmdCharItemOptionGraft ) ; // ¾ÆÀÌÅÛ ¿É¼Ç ÀÌ½Ä m_SendCheckList[ CmdCharItemOptionGraft ].push_back( CmdCharTradeItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ °Å·¡ m_SendCheckList[ CmdCharItemOptionGraft ].push_back( CmdCharTakeItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ Áý±â m_SendCheckList[ CmdCharItemOptionGraft ].push_back( CmdCharSwapItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ ½º¿Ò m_SendCheckList[ CmdCharItemOptionGraft ].push_back( CmdCharRepairItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ ¼ö¸® m_SendCheckList[ CmdCharItemOptionGraft ].push_back( CmdCharUseItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ »ç¿ë m_SendCheckList[ CmdCharItemOptionGraft ].push_back( CmdCharItemCompensation ) ; // ¾ÆÀÌÅÛ º¸»ó ÆÇ¸Å m_SendCheckList[ CmdCharItemOptionGraft ].push_back( CmdCharSplitItem ) ; // ij¸¯ÅÍ ½ºÇø´ ¾ÆÀÌÅÛ (°³¼ö ÀÖ´Â ¾ÆÀÌÅÛÀ» µÎ°³·Î Âɰ¶ ¶§ ¾²ÀÓ) m_SendCheckList[ CmdCharItemCompensation ].push_back( CmdCharItemCompensation ) ; // ¾ÆÀÌÅÛ º¸»ó ÆÇ¸Å m_SendCheckList[ CmdCharItemCompensation ].push_back( CmdCharTradeItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ °Å·¡ m_SendCheckList[ CmdCharItemCompensation ].push_back( CmdCharTakeItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ Áý±â m_SendCheckList[ CmdCharItemCompensation ].push_back( CmdCharSwapItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ ½º¿Ò m_SendCheckList[ CmdCharItemCompensation ].push_back( CmdCharRepairItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ ¼ö¸® m_SendCheckList[ CmdCharItemCompensation ].push_back( CmdCharUseItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ »ç¿ë m_SendCheckList[ CmdCharItemCompensation ].push_back( CmdCharItemOptionGraft ) ; // ¾ÆÀÌÅÛ ¿É¼Ç ÀÌ½Ä m_SendCheckList[ CmdCharItemCompensation ].push_back( CmdCharSplitItem ) ; // ij¸¯ÅÍ ½ºÇø´ ¾ÆÀÌÅÛ (°³¼ö ÀÖ´Â ¾ÆÀÌÅÛÀ» µÎ°³·Î Âɰ¶ ¶§ ¾²ÀÓ) m_SendCheckList[ CmdCharSplitItem ].push_back( CmdCharSplitItem ) ; // ij¸¯ÅÍ ½ºÇø´ ¾ÆÀÌÅÛ (°³¼ö ÀÖ´Â ¾ÆÀÌÅÛÀ» µÎ°³·Î Âɰ¶ ¶§ ¾²ÀÓ) m_SendCheckList[ CmdCharSplitItem ].push_back( CmdCharTradeItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ °Å·¡ m_SendCheckList[ CmdCharSplitItem ].push_back( CmdCharTakeItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ Áý±â m_SendCheckList[ CmdCharSplitItem ].push_back( CmdCharSwapItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ ½º¿Ò m_SendCheckList[ CmdCharSplitItem ].push_back( CmdCharRepairItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ ¼ö¸® m_SendCheckList[ CmdCharSplitItem ].push_back( CmdCharUseItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ »ç¿ë m_SendCheckList[ CmdCharSplitItem ].push_back( CmdCharItemOptionGraft ) ; // ¾ÆÀÌÅÛ ¿É¼Ç ÀÌ½Ä m_SendCheckList[ CmdCharSplitItem ].push_back( CmdCharItemCompensation ) ; // ¾ÆÀÌÅÛ º¸»ó ÆÇ¸Å m_SendCheckList[ CmdCharPullDown ].push_back( CmdCharPullDown ) ; m_SendCheckList[ CmdCharPullDown ].push_back( CmdCharPickUp ) ; m_SendCheckList[ CmdCharPullDown ].push_back( CmdCharSplitItem ) ; // ij¸¯ÅÍ ½ºÇø´ ¾ÆÀÌÅÛ (°³¼ö ÀÖ´Â ¾ÆÀÌÅÛÀ» µÎ°³·Î Âɰ¶ ¶§ ¾²ÀÓ) m_SendCheckList[ CmdCharPullDown ].push_back( CmdCharTradeItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ °Å·¡ m_SendCheckList[ CmdCharPullDown ].push_back( CmdCharTakeItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ Áý±â m_SendCheckList[ CmdCharPullDown ].push_back( CmdCharSwapItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ ½º¿Ò m_SendCheckList[ CmdCharPullDown ].push_back( CmdCharRepairItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ ¼ö¸® m_SendCheckList[ CmdCharPullDown ].push_back( CmdCharUseItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ »ç¿ë m_SendCheckList[ CmdCharPullDown ].push_back( CmdCharItemOptionGraft ) ; // ¾ÆÀÌÅÛ ¿É¼Ç ÀÌ½Ä m_SendCheckList[ CmdCharPullDown ].push_back( CmdCharItemCompensation ) ; // ¾ÆÀÌÅÛ º¸»ó ÆÇ¸Å m_SendCheckList[ CmdCharPickUp ].push_back( CmdCharPickUp ) ; m_SendCheckList[ CmdCharPickUp ].push_back( CmdCharSplitItem ) ; // ij¸¯ÅÍ ½ºÇø´ ¾ÆÀÌÅÛ (°³¼ö ÀÖ´Â ¾ÆÀÌÅÛÀ» µÎ°³·Î Âɰ¶ ¶§ ¾²ÀÓ) m_SendCheckList[ CmdCharPickUp ].push_back( CmdCharTradeItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ °Å·¡ m_SendCheckList[ CmdCharPickUp ].push_back( CmdCharTakeItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ Áý±â m_SendCheckList[ CmdCharPickUp ].push_back( CmdCharSwapItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ ½º¿Ò m_SendCheckList[ CmdCharPickUp ].push_back( CmdCharRepairItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ ¼ö¸® m_SendCheckList[ CmdCharPickUp ].push_back( CmdCharUseItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ »ç¿ë m_SendCheckList[ CmdCharPickUp ].push_back( CmdCharItemOptionGraft ) ; // ¾ÆÀÌÅÛ ¿É¼Ç ÀÌ½Ä m_SendCheckList[ CmdCharPickUp ].push_back( CmdCharItemCompensation ) ; // ¾ÆÀÌÅÛ º¸»ó ÆÇ¸Å /* m_SendCheckList[ CmdCharSkillLock ].push_back( CmdCharSkillLock ) ; // ij¸¯ÅÍ ½ºÅ³ ¶ô m_SendCheckList[ CmdCharSkillCreate ].push_back( CmdCharSkillCreate ) ; // ij¸¯ÅÍ ½ºÅ³ »ý¼º m_SendCheckList[ CmdCharSkillErase ].push_back( CmdCharSkillErase ) ; // ij¸¯ÅÍ ½ºÅ³ Áö¿ì±â m_SendCheckList[ CmdCharClassUpgrade ].push_back( CmdCharClassUpgrade ) ; // ij¸¯ÅÍ Å¬·¡½º ¾÷±×·¹À̵å m_SendCheckList[ CmdCharShapeInfo ].push_back( CmdCharShapeInfo ) ; // ij¸¯ÅÍ Á¤º¸ (P2P) m_SendCheckList[ CmdCharIncreasePoint ].push_back( CmdCharIncreasePoint ) ; // ij¸¯ÅÍ ´É·Â Æ÷ÀÎÆ® Áõ°¡ m_SendCheckList[ CmdCharBindPosition ].push_back( CmdCharBindPosition ) ; // ij¸¯ÅÍ ¹ÙÀÎµå Æ÷Áö¼Ç m_SendCheckList[ CmdCharRequireInfo ].push_back( CmdCharRequireInfo ) ; // ij¸¯ÅÍ ÇØ´ç Á¤º¸ ¿äû // m_SendCheckList[ CmdCharUpdateAddress ].push_back( CmdCharUpdateAddress ) ; // ij¸¯ÅÍ UDP ÁÖ¼Ò ¾÷µ¥ÀÌÆ® m_SendCheckList[ CmdCharPartyCmd ].push_back( CmdCharPartyCmd ) ; // ij¸¯ÅÍ ÆÄƼ ¸í·É m_SendCheckList[ CmdCharPartyMemInfo ].push_back( CmdCharPartyMemInfo ) ; // ij¸¯ÅÍ ÆÄƼ ¸É¹ö Á¤º¸ Àü´Þ (P2P) m_SendCheckList[ CmdCharExchangeCmd ].push_back( CmdCharExchangeCmd ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ ±³È¯ ¸í·É m_SendCheckList[ CmdSysConnectAgent ].push_back( CmdSysConnectAgent ) ; // ½Ã½ºÅÛ Áß°è Á¢¼Ó (UDP Áß°è) # »ç¿ë ¾ÈÇÔ m_SendCheckList[ CmdSysPacketTransmit ].push_back( CmdSysPacketTransmit ) ; // ½Ã½ºÅÛ ÆÐŶ Àü´Þ (UDP Áß°è) # »ç¿ë ¾ÈÇÔ m_SendCheckList[ CmdCharLogout ].push_back( CmdCharLogout ) ; // ij¸¯ÅÍ ·Î±× ¾Æ¿ô m_SendCheckList[ CmdDBGetData ].push_back( CmdDBGetData ) ; // DB µ¥ÀÌÅÍ ¾ò±â m_SendCheckList[ CmdDBUpdateData ].push_back( CmdDBUpdateData ) ; // ¾÷µ¥ÀÌÆ® DB µ¥ÀÌÅÍ m_SendCheckList[ CmdAgentParty ].push_back( CmdAgentParty ) ; // DB ¿¡ÀÌÀüÆ® ÆÄƼ m_SendCheckList[ CmdSysServerLogin ].push_back( CmdSysServerLogin ) ; // ½Ã½ºÅÛ ¼­¹ö ·Î±×ÀÎ m_SendCheckList[ CmdServerZone ].push_back( CmdServerZone ) ; // ¼­¹öÁ¸ ¼±Åà m_SendCheckList[ CmdGameCellInfo ].push_back( CmdGameCellInfo ) ; // °ÔÀÓ ¼¿ Á¤º¸ (¿ÀºêÁ§Æ® Á¤º¸) m_SendCheckList[ CmdCharInfo ].push_back( CmdCharInfo ) ; // ij¸¯ÅÍ Á¤º¸ # »ç¿ë ¾ÈÇÔ m_SendCheckList[ CmdCharAddressInfo ].push_back( CmdCharAddressInfo ) ; // ij¸¯ÅÍ UDP ÁÖ¼Ò Á¤º¸ m_SendCheckList[ CmdCharCellLogin ].push_back( CmdCharCellLogin ) ; // ij¸¯ÅÍ ¼¿ ·Î±×ÀÎ m_SendCheckList[ CmdCharCellLogout ].push_back( CmdCharCellLogout ) ; // ij¸¯ÅÍ ¼¿ ·Î±×¾Æ¿ô m_SendCheckList[ CmdMonMove ].push_back( CmdMonMove ) ; // ¸ó½ºÅÍ À̵¿ m_SendCheckList[ CmdCharAttackInfo ].push_back( CmdCharAttackInfo ) ; // ij¸¯ÅÍ °ø°Ý Á¤º¸ (P2P) m_SendCheckList[ CmdCharAttacked ].push_back( CmdCharAttacked ) ; // ij¸¯ÅÍ °ø°Ý ¾òÀ½ m_SendCheckList[ CmdCharAward ].push_back( CmdCharAward ) ; // ij¸¯ÅÍ ¾î¿öµå m_SendCheckList[ CmdCharItemInfo ].push_back( CmdCharItemInfo ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ Á¤º¸ m_SendCheckList[ CmdCharPickUp ].push_back( CmdCharPickUp ) ; // ij¸¯ÅÍ Áý±â m_SendCheckList[ CmdCharPullDown ].push_back( CmdCharPullDown ) ; // ij¸¯ÅÍ ¶³±¸±â m_SendCheckList[ CmdCharPickUpInfo ].push_back( CmdCharPickUpInfo ) ; // ij¸¯ÅÍ Áý±â Á¤º¸ m_SendCheckList[ CmdCharPullDownInfo ].push_back( CmdCharPullDownInfo ) ; // ij¸¯ÅÍ ¶³±¸±â Á¤º¸ m_SendCheckList[ CmdCharCastObjectInfo ].push_back( CmdCharCastObjectInfo ) ; // ij¸¯ÅÍ ´øÁö±â ¿ÀºêÁ§Æ® Á¤º¸ m_SendCheckList[ CmdCharInstallSocket ].push_back( CmdCharInstallSocket ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ ¼ÒÄÏ ¼³Ä¡ m_SendCheckList[ CmdCharLevelUp ].push_back( CmdCharLevelUp ) ; // ij¸¯ÅÍ ·¹º§ ¾÷ m_SendCheckList[ CmdCharPartyInfo ].push_back( CmdCharPartyInfo ) ; // ij¸¯ÅÍ ÆÄƼ Á¤º¸ m_SendCheckList[ CmdCharUpgradeItem ].push_back( CmdCharUpgradeItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ ¾÷±×·¹À̵å m_SendCheckList[ CmdCharHPRegen ].push_back( CmdCharHPRegen ) ; // ij¸¯ÅÍ HP ¸®Á¨ m_SendCheckList[ CmdCharLevelUpInfo ].push_back( CmdCharLevelUpInfo ) ; // ij¸¯ÅÍ ·¹º§¾÷ Á¤º¸ m_SendCheckList[ CmdCharSplitItem ].push_back( CmdCharSplitItem ) ; // ij¸¯ÅÍ ½ºÇø´ ¾ÆÀÌÅÛ (°³¼ö ÀÖ´Â ¾ÆÀÌÅÛÀ» µÎ°³·Î Âɰ¶ ¶§ ¾²ÀÓ) m_SendCheckList[ CmdUpdateUIDTable ].push_back( CmdUpdateUIDTable ) ; // UID Å×ÀÌºí ¾÷µ¥ÀÌÆ® m_SendCheckList[ CmdCharQuickSlotMove ].push_back( CmdCharQuickSlotMove ) ; // ij¸¯ÅÍ Äü½½·Ô À̵¿ m_SendCheckList[ CmdCharSwitchEQ ].push_back( CmdCharSwitchHand ) ; // ¼Õ ¹Ù²Ù±â m_SendCheckList[ CmdSysMngerRegistry ].push_back( CmdSysMngerRegistry ) ; // ¼­¹ö °ü¸®ÀÚ µî·Ï m_SendCheckList[ CmdSysMngerRequest ].push_back( CmdSysMngerRequest ) ; // ¼­¹ö °ü¸®ÀÚÀÇ ¿äû m_SendCheckList[ CmdSysMngerResponse ].push_back( CmdSysMngerResponse ) ; // ¼­¹ö °ü¸®ÀÚ·Î ÀÀ´ä m_SendCheckList[ CmdCharTakeItems ].push_back( CmdCharTakeItems ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ Áý±â (º¹¼ö) m_SendCheckList[ CmdCharTakeGold ].push_back( CmdCharTakeGold ) ; // ij¸¯ÅÍ µ· Áý±â m_SendCheckList[ CmdCharExchangeItem ].push_back( CmdCharExchangeItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ ±³È¯ m_SendCheckList[ CmdCellBroadCasting ].push_back( CmdCellBroadCasting ) ; // ¼¿ ºê·Îµå ij½ºÆÃ m_SendCheckList[ CmdSysPatchAddress ].push_back( CmdSysPatchAddress ) ; // ÆÐÄ¡ ÁÖ¼Ò m_SendCheckList[ CmdCharPartyCmdInfo ].push_back( CmdCharPartyCmdInfo ) ; // ÆÄƼ ¸í·É Á¤º¸ m_SendCheckList[ CmdServerLog ].push_back( CmdServerLog ) ; // ·Î±× Á¤º¸ (???) m_SendCheckList[ CmdCharWhisper ].push_back( CmdCharWhisper ) ; // ij¸¯ÅÍ ±Ó¼Ó¸» m_SendCheckList[ CmdSysServerVerUpdate ].push_back( CmdSysServerVerUpdate ) ; // ¼­¹ö ¹öÁ¯ ¾÷µ¥ÀÌÆ® m_SendCheckList[ CmdSysMng ].push_back( CmdSysMng ) ; // ¼­¹ö °ü¸® ¼­¹ö, Ŭ¶óÀÌ¾ðÆ®°¡ »ç¿ëÇÏ´Â ÆÐŶ (ÀÓ½Ã) (???) m_SendCheckList[ CmdSysChannelUpdate ].push_back( CmdSysChannelUpdate ) ; // ¼­¹ö ä³Î ¾÷µ¥ÀÌÆ® m_SendCheckList[ CmdCharPartyFind ].push_back( CmdCharPartyFind ) ; // ÆÄƼ ã±â m_SendCheckList[ CmdCharPartyMemData ].push_back( CmdCharPartyMemData ) ; // ÆÄƼ ¸â¹ö µ¥ÀÌÅÍ m_SendCheckList[ CmdCharControlOption ].push_back( CmdCharControlOption ) ; // ij¸¯ÅÍ ¿É¼Ç Á¶Á¤ m_SendCheckList[ CmdCharDuelCmd ].push_back( CmdCharDuelCmd ) ; // ij¸¯ÅÍ µà¾ó ¸í·É m_SendCheckList[ CmdCharFameInfo ].push_back( CmdCharFameInfo ) ; // ij¸¯ÅÍ ¸í¼º Á¤º¸ m_SendCheckList[ CmdLoginServerList ].push_back( CmdLoginServerList ) ; // ¼­¹ö ¸®½ºÆ® #!! ¹øÈ£ ¼öÁ¤ ºÒ°¡ !!# m_SendCheckList[ CmdCharSpellInfo ].push_back( CmdCharSpellInfo ) ; // ij¸¯ÅÍ Ã¦Æ®&ÀÎæƮ Á¤º¸ m_SendCheckList[ CmdCharSkillUnLock ].push_back( CmdCharSkillUnLock ) ; // ij¸¯ÅÍ ½ºÅ³ ¶ô ÇØÁ¦ // m_SendCheckList[ CmdSysPing ].push_back( CmdSysPing ) ; // ¼­¹ö ÇÎ ÆÐŶ m_SendCheckList[ CmdCharMoveZone ].push_back( CmdCharMoveZone ) ; // Á¸ À̵¿ m_SendCheckList[ CmdAgentZone ].push_back( CmdAgentZone ) ; // Á¸ °ü¸® m_SendCheckList[ CmdDeposit ].push_back( CmdDeposit ) ; // â°í ó¸® ÆÐŶ (Client <--> GameServer) m_SendCheckList[ CmdDepositUpdate ].push_back( CmdDepositUpdate ) ; // â°í ¾÷µ¥ÀÌÆ® ÆÐŶ (GameServer <--> DBAgent) m_SendCheckList[ CmdCharStallOpen ].push_back( CmdCharStallOpen ) ; // ij¸¯ÅÍ ³ëÁ¡»ó °³¼³ m_SendCheckList[ CmdCharStallRegisterItem ].push_back( CmdCharStallRegisterItem ) ; // ij¸¯ÅÍ ³ëÁ¡»ó ¾ÆÀÌÅÛ µî·Ï m_SendCheckList[ CmdCharStallEnter ].push_back( CmdCharStallEnter ) ; // ij¸¯ÅÍ ³ëÁ¡»ó ÀÔÀå m_SendCheckList[ CmdCharStallItemInfo ].push_back( CmdCharStallItemInfo ) ; // ij¸¯ÅÍ ³ëÁ¡»ó ¾ÆÀÌÅÛ Á¤º¸ //m_SendCheckList[ CmdCharAdminCmd ].push_back( CmdCharAdminCmd ) ; // ij¸¯ÅÍ ¾îµå¹Î m_SendCheckList[ CmdCharTeamBattleInfo ].push_back( CmdCharTeamBattleInfo ) ; // ÆÀ¹èƲ Á¤º¸ m_SendCheckList[ CmdFriendAddRequest ].push_back( CmdFriendAddRequest ) ; // Ä£±¸ Ãß°¡ m_SendCheckList[ CmdFriendRemoveRequest ].push_back( CmdFriendRemoveRequest ) ; // Ä£±¸ »èÁ¦ m_SendCheckList[ CmdFriendEtcRequest ].push_back( CmdFriendEtcRequest ) ; // Ä£±¸ ±âŸ m_SendCheckList[ CmdFriendAck ].push_back( CmdFriendAck ) ; // Ä£±¸ Ack m_SendCheckList[ CmdFriendDB ].push_back( CmdFriendDB ) ; // Ä£±¸ µ¥ÀÌÅÍ (¹× Ä£±¸ ¸®½ºÆ® Á¤º¸) m_SendCheckList[ CmdEliteBonus ].push_back( CmdEliteBonus ) ; // ¿¤¸®Æ® º¸³Ê½º m_SendCheckList[ CmdCharOperateTrigger ].push_back( CmdCharOperateTrigger ) ; // Æ®¸®°Å ¹ßµ¿ m_SendCheckList[ CmdQuestDB ].push_back( CmdQuestDB ) ; // Äù½ºÆ® Á¤º¸ (DB¿¡ ¼¼À̺ê/·Îµå, ij¸¯ÅÍ ·Î±ä½Ã) m_SendCheckList[ CmdCharEndQuest ].push_back( CmdCharEndQuest ) ; // Äù½ºÆ® Á¾·á m_SendCheckList[ CmdCharDisappearItem ].push_back( CmdCharDisappearItem ) ; // ij¸¯ÅÍ ¾ÆÀÌÅÛ »ç¶óÁö±â m_SendCheckList[ CmdCharAuthorizePanel ].push_back( CmdCharAuthorizePanel ) ; // ij¸¯ÅÍ ÀÎÁõ ÆÇ³Ú m_SendCheckList[ CmdCharPeaceMode ].push_back( CmdCharPeaceMode ) ; // ij¸¯ÅÍ ¹ÝÀü ¸ðµå m_SendCheckList[ CmdConfigInfoDB ].push_back( CmdConfigInfoDB ) ; // ¼³Á¤ Á¤º¸ m_SendCheckList[ CmdCharAutoRouting ].push_back( CmdCharAutoRouting ) ; // ij¸¯ÅÍ ¿ÀÅä ·çÆÃ m_SendCheckList[ CmdRankingInfo ].push_back( CmdRankingInfo ) ; // ·©Å· Á¤º¸ m_SendCheckList[ CmdCharStateRedistribution ].push_back( CmdCharStateRedistribution ) ; // ½ºÅÈ ÀçºÐ¹è (Ŭ·¡½º óÀ½ »óÅ·Î) m_SendCheckList[ CmdBillingTimeoutNotify ].push_back( CmdBillingTimeoutNotify ) ; // ºô¸µ ŸÀӾƿô NotifyÁ¤º¸ m_SendCheckList[ CmdAdminToolGetData ].push_back( CmdAdminToolGetData ) ; // ¿î¿µÅø¿¡¼­ DBAgentÀÇ µ¥ÀÌÅÍ ¾ò¾î ¿À±â. m_SendCheckList[ CmdAdminToolSetData ].push_back( CmdAdminToolSetData ) ; // ¿î¿µÅø¿¡¼­ DBAgent·Î µ¥ÀÌÅÍ ¾²±â. m_SendCheckList[ CmdEventDropItem ].push_back( CmdEventDropItem ) ; // ¾ÆÀÌÅÛ ¶³±¸±â À̺¥Æ® m_SendCheckList[ CmdCharCancelQuest ].push_back( CmdCharCancelQuest ) ; // Äù½ºÆ® Ãë¼Ò m_SendCheckList[ CmdBillingTimeCheckNotify ].push_back( CmdBillingTimeCheckNotify ) ; // ºô¸µ ŸÀÓ Ã¼Å© m_SendCheckList[ CmdCharLotteryResult ].push_back( CmdCharLotteryResult ) ; // º¹±Ç °á°ú m_SendCheckList[ CmdCharSummonCmd ].push_back( CmdCharSummonCmd ) ; // ¼Òȯ¼ö ¸í·É m_SendCheckList[ CmdChatClientLogin ].push_back( CmdChatClientLogin ) ; // Ŭ¶óÀÌ¾ðÆ®¿¡¼­ äÆÃ¼­¹ö¿¡ ºÙÀ» ¶§ Á¤º¸ ÁÜ m_SendCheckList[ CmdChatLogin ].push_back( CmdChatLogin ) ; // Áß°è¼­¹ö°¡ äÆÃ¼­¹ö·Î Ŭ¶óÀÌ¾ðÆ® ·Î±×ÀÎ ÁÜ. m_SendCheckList[ CmdChatLogout ].push_back( CmdChatLogout ) ; // Áß°è¼­¹ö°¡ äÆÃ¼­¹ö·Î Ŭ¶óÀÌ¾ðÆ® ·Î±×¾Æ¿ô ÁÜ. m_SendCheckList[ CmdChatInfoChanged ].push_back( CmdChatInfoChanged ) ; // Áß°è¼­¹ö°¡ äÆÃ¼­¹ö·Î Ŭ¶óÀÌ¾ðÆ® Á¤º¸ º¯°æ ÁÜ. m_SendCheckList[ CmdCharSummon ].push_back( CmdCharSummon ) ; // ¼Òȯ m_SendCheckList[ CmdJapanAuthAccount ].push_back( CmdJapanAuthAccount ) ; // ÀϺ»ÂÊ °èÁ¤ ÀÎÁõ (ID, Password´ë½Å, ÀÎÁõµÈ Äڵ尡 ¿Â´Ù.) m_SendCheckList[ CmdCharBattleGroundRespawn ].push_back( CmdCharBattleGroundRespawn ) ; // ¸®½ºÆù (¹èƲ±×¶ó¿îµå ´ë±âÁß) m_SendCheckList[ CmdCharRespawnWaitQueue ].push_back( CmdCharRespawnWaitQueue ) ; // ¸®½ºÆù Å¥ ´ë±âÀÎ Á¤º¸ (¹èƲ±×¶ó¿îµå¿ë) m_SendCheckList[ CmdStatueInfo ].push_back( CmdStatueInfo ) ; // ¼®»ó Á¤º¸ m_SendCheckList[ CmdCameraScript ].push_back( CmdCameraScript ) ; // Ä«¸Þ¶ó ½ºÅ©¸³Æ® m_SendCheckList[ CmdCharEquipDurability ].push_back( CmdCharEquipDurability ) ; // ij¸¯ÅÍ Àåºñ ³»±¸µµ m_SendCheckList[ CmdCreateGuild ].push_back( CmdCreateGuild ) ; // ±æµå »ý¼º m_SendCheckList[ CmdGuildCmd ].push_back( CmdGuildCmd ) ; // ±æµå ¸â¹ö °ü·Ã ¸í·É m_SendCheckList[ CmdGuildMark ].push_back( CmdGuildMark ) ; // ±æµå ¸¶Å© º¯°æ m_SendCheckList[ CmdGuildLevel ].push_back( CmdGuildLevel ) ; // ±æµå ·¹º§ º¯°æ m_SendCheckList[ CmdGuildRelation ].push_back( CmdGuildRelation ) ; // ±æµå °ü°è º¯°æ m_SendCheckList[ CmdGuildList ].push_back( CmdGuildList ) ; // ±æµå ¸®½ºÆ® m_SendCheckList[ CmdGuildDB ].push_back( CmdGuildDB ) ; // ±æµå µ¥ÀÌÅÍ m_SendCheckList[ CmdGuildRight ].push_back( CmdGuildRight ) ; // ±æµå ±ÇÇÑ ¼³Á¤ m_SendCheckList[ CmdGuildMemberList ].push_back( CmdGuildMemberList ) ; // ±æµå ¸â¹ö ¸®½ºÆ® m_SendCheckList[ CmdMyGuildInfo ].push_back( CmdMyGuildInfo ) ; // Àڱ⠱æµå Á¤º¸ m_SendCheckList[ CmdGuildSafe ].push_back( CmdGuildSafe ) ; // ±æµå ±Ý°í m_SendCheckList[ CmdGuildMemberInfoUpdate ].push_back( CmdGuildMemberInfoUpdate ) ; // ±æµå ¸â¹ö Á¤º¸ ¾÷µ¥ÀÌÆ® m_SendCheckList[ CmdCharStatusRetrain ].push_back( CmdCharStatusRetrain ) ; // ½ºÅ×ÀÌÅͽº ÀçÈÆ·Ã (ÀÏÁ¤·® ´Ù½Ã µ¹·Á¹ÞÀ½) m_SendCheckList[ CmdSysServerLogout ].push_back( CmdSysServerLogout ) ; // ¼­¹ö ·Î±×¾Æ¿ô // m_SendCheckList[ CmdCharPartyAddress ].push_back( CmdCharPartyAddress ) ; // ÆÄƼ¿ø UDP ÁÖ¼Ò Á¤º¸ // m_SendCheckList[ CmdCharPartyMemAddress ].push_back( CmdCharPartyMemAddress ) ; // ÆÄƼ¿ø UDP ÁÖ¼Ò Á¤º¸ (P2P) m_SendCheckList[ CmdBGServerMapList ].push_back( CmdBGServerMapList ) ; // ¹èƲ ±×¶ó¿îµå ¼­¹ö ¸Ê(¹æ) Á¤º¸ ¸®½ºÆ® ¿äû m_SendCheckList[ CmdBGServerResultList ].push_back( CmdBGServerResultList ) ; // ¹èƲ ±×¶ó¿îµå ¼­¹ö ¸Ê(¹æ) °á°ú ¸®½ºÆ® ¿äû m_SendCheckList[ CmdBGServerMoveZone ].push_back( CmdBGServerMoveZone ) ; // ¹èƲ ±×¶ó¿îµå ¼­¹ö ¸Ê(¹æ) À̵¿ (Á¸ À̵¿) m_SendCheckList[ CmdBGServerMileageChange ].push_back( CmdBGServerMileageChange ) ; // ¹èƲ ±×¶ó¿îµå ¼­¹ö ȯÀü¼Ò ¸í·É m_SendCheckList[ CmdBGServerCharSlot ].push_back( CmdBGServerCharSlot ) ; // ¹èƲ ±×¶ó¿îµå ¼­¹ö Á¤¼· ij¸¯ÅÍ Á¤º¸ ¿äû m_SendCheckList[ CmdHanBTNWarning ].push_back( CmdHanBTNWarning ) ; // ÇѰÔÀÓ ÅëÇÕºô¸µ Á¢¼Ó ²÷±âÀü °æ°í ¸Þ½ÃÁö m_SendCheckList[ CmdHanBTNUserKill ].push_back( CmdHanBTNUserKill ) ; // ÇѰÔÀÓ ÅëÇÕºô¸µ Á¢¼Ó ²÷±â ¸Þ½ÃÁö m_SendCheckList[ CmdCharRepairAllItem ].push_back( CmdCharRepairAllItem ) ; // Àåºñ ¾ÆÀÌÅÛ ¸ðµÎ ¼ö¸® m_SendCheckList[ CmdCSAuth ].push_back( CmdCSAuth ) ; // ÀÎÁõ ÄÚµå (°ÔÀÓ °¡µå) m_SendCheckList[ CmdCharItemChemical ].push_back( CmdCharItemChemical ) ; // ¾ÆÀÌÅÛ ÇÕ¼º m_SendCheckList[ CmdItemQtyCheck ].push_back( CmdItemQtyCheck ) ; // ¾ÆÀÌÅÛ ¼ö·® Á¦¾î m_SendCheckList[ CmdGuildInclination ].push_back( CmdGuildInclination ) ; // ±æµå ¼ºÇâ m_SendCheckList[ CmdGuildMemberFameUpdate ].push_back( CmdGuildMemberFameUpdate ) ; // ±æµå ¸â¹ö ¸í¼º ¾÷µ¥ÀÌÆ® m_SendCheckList[ CmdCastleInfo ].push_back( CmdCastleInfo ) ; // ¼º Á¤º¸ º¸³»±â (DBAgentServer -> GameServer) m_SendCheckList[ CmdCampInfo ].push_back( CmdCampInfo ) ; // ±æµå ¿ä»õ Á¤º¸ º¸³»±â (DBAgentServer -> GameServer) m_SendCheckList[ CmdCreateCastle ].push_back( CmdCreateCastle ) ; // ¼º »ý¼º (GameServer -> Client) m_SendCheckList[ CmdCreateCamp ].push_back( CmdCreateCamp ) ; // ±æµå ¿ä»õ »ý¼º (Client <- GameServer -> DBAgentServer) m_SendCheckList[ CmdCreateSiegeArms ].push_back( CmdCreateSiegeArms ) ; // °ø¼º º´±â »ý¼º (Client <- GameServer -> DBAgentServer) m_SendCheckList[ CmdCastleCmd ].push_back( CmdCastleCmd ) ; // ¼º °ü·Ã ¸í·É ÆÐŶ (Client <-> GameServer <-> DBAgentServer) m_SendCheckList[ CmdCampCmd ].push_back( CmdCampCmd ) ; // ±æµå ¿ä»õ °ü·Ã ¸í·É ÆÐŶ (Client <-> GameServer <-> DBAgentServer) m_SendCheckList[ CmdSiegeArmsCmd ].push_back( CmdSiegeArmsCmd ) ; // °ø¼º º´±â °ü·Ã ¸í·É ÆÐŶ (Client <-> GameServer <-> DBAgentServer) m_SendCheckList[ CmdCastleRight ].push_back( CmdCastleRight ) ; // ¼º °ü¸® ±ÇÇÑ ÆÐŶ (Client <-> GameServer <-> DBAgentServer) m_SendCheckList[ CmdCampRight ].push_back( CmdCampRight ) ; // ±æµå ¿ä»õ °ü¸® ±ÇÇÑ ÆÐŶ m_SendCheckList[ CmdSiegeBroadCast ].push_back( CmdSiegeBroadCast ) ; // °ø¼º ¿ÀºêÁ§Æ® ºê·Îµå ij½ºÆ® m_SendCheckList[ CmdSiegeTimeInfo ].push_back( CmdSiegeTimeInfo ) ; // °ø¼º ½Ã°£ Á¤º¸ m_SendCheckList[ CmdStealthInfo ].push_back( CmdStealthInfo ) ; // ½ºÅÚ½º »ç¿ë°¡´É Á¤º¸ m_SendCheckList[ CmdCellBroadCast2nd ].push_back( CmdCellBroadCast2nd ) ; // ¼¿ ºê·Îµåij½ºÆ® ¼öÁ¤µÈ ÆÐŶ m_SendCheckList[ CmdCharRespawnInfo ].push_back( CmdCharRespawnInfo ) ; // ¸®½ºÆù Á¤º¸ (¸®½ºÆù Áö¿ª ¸®½ºÆ® Á¤º¸) m_SendCheckList[ CmdCharRespawnAreaInfo ].push_back( CmdCharRespawnAreaInfo ) ; // ¼±ÅÃÇÑ ¸®½ºÆù Áö¿ªÀÇ ¼¼ºÎ Á¤º¸ m_SendCheckList[ CmdCharEquipShopInfo ].push_back( CmdCharEquipShopInfo ) ; // NPC Àåºñ »óÁ¡ Á¤º¸ m_SendCheckList[ CmdSiegeBroadCast2nd ].push_back( CmdSiegeBroadCast2nd ) ; // °ø¼º ¿ÀºêÁ§Æ® ºê·Îµå ij½ºÆ® ´Ù¸¥ ¹öÁ¯ m_SendCheckList[ CmdCharItemOptionGraft ].push_back( CmdCharItemOptionGraft ) ; // ¾ÆÀÌÅÛ ¿É¼Ç ÀÌ½Ä m_SendCheckList[ CmdCharItemCompensation ].push_back( CmdCharItemCompensation ) ; // ¾ÆÀÌÅÛ º¸»ó ÆÇ¸Å */ } void ClientSocket::InitReceiveCheckList() { for (int nIndex = 0; nIndex < CmdFinalPacketNum; ++nIndex) { m_ReceiveCheckList[nIndex].push_back(nIndex); } } int ClientSocket::CheckFlag( int* arrFlag ) //µð¹ö±ë¿ë { int res = 0; for( int i = 0; i < CmdFinalPacketNum ; i++ ) { if( s_pInstance->m_bStatusFlag[i] ) arrFlag[res++] = i; } return res; }