#ifndef _LOGIN_SERVER_INFO_ #define _LOGIN_SERVER_INFO_ #include #include #include #pragma pack(1) // ----------------------------------------------------------------------------- // ¼­¹ö Á¤º¸ °ü·Ã ±¸Á¶Ã¼µé typedef union SERVER_ID* LPSERVER_ID; union SERVER_ID { // ¼­¹ö±º enum Group { GROUP_TEST = 0, // Å×½ºÆ® GROUP_OFFICIAL1 = 1, // Ichman GROUP_OFFICIAL2 = 2, // GROUP_OFFICIAL3 = 3, // GROUP_OFFICIAL4 = 4, // GROUP_OFFICIAL5 = 5, // GROUP_OFFICIAL6 = 6, // GROUP_OFFICIAL7 = 7, // GROUP_OFFICIAL8 = 8, // GROUP_BATTLE_SERVER = 9, // ¹èƲ¼­¹ö // Rodin : MAX_GROUP_NUMÀ» 8·Î ÇÏ¸é ·Î±ä ¼­¹ö°¡ ¸±¸®Áî¿¡¼­ Á×½À´Ï´Ù. ¿Ö?!?! MAX_GROUP_NUM = 10 }; enum Zone { NONE = 0, ZONE1 = 1, // ±×·£µå ÄÚ½ºÆ® ZONE2 = 2, // ·¹ÇÑ ½ºÆÌ ZONE3 = 3, // X ±¸ ¹èƲ±×¶ó¿îµå (ÇöÀç »ç¿ë¾ÈÇÔ) ZONE4 = 4, // »çÀÌ³Ê ¾ÆÀÏ·£µå ZONE5 = 5, // ¾ÆÀÏ·£µå ¿Àºê ÆäÀÎ BATTLE_ZONE = 6, // X ¹èƲ Á¸ ADMIN_TOOL_ZONE = 7, // X (Ŭ¶óÀÌ¾ðÆ® »çÁ¤À¸·Î ¾²ÀÌÁö ¾ÊÀ½) - ¿î¿µÅøÀÌ »ç¿ëÇϰڼÒ. CAPITAL = 8, // Ä«³ª¹ø ZONE9 = 9, // X ±¸ NEWZONE5 ¹øÀε¥ ±Û·Î¹ú¿¡¼­ »ç¿ëÇØ¾ßÇϱ⠶§¹®¿¡ ZONE9·Î ÀÌÀüÈÄ Á¦°Å FRAG_ZONE = 10, // X ¹èƲ ±×¶ó¿îµå Àü¿ë ¼­¹öÀÇ °¡»ó Á¸ BATTLE_SERVER = 11, // X ¹èƲ ±×¶ó¿îµå Àü¿ë ¼­¹ö ZONE12 = 12, // ½ÅÀÇ ´ëÁö STATUE_ZONE = 13, // X ¹èƲ ±×¶ó¿îµå Àü¿ë ¼­¹öÀÇ °¡»ó Á¸ PRISON = 14, // °¨¿Á (°¨±Ý ½Ã½ºÅÛ) CHAR_SELECT = 15, // X ij¸¯ÅÍ ¼±Åà ȭ¸é Á¸ STONE_WAR1 = 16, // ·Î¿ì 40·¦ÀÌÇÏ ¼®»óÀü¿ë STONE_WAR2 = 17, // ·Î¿ì 80·¦ÀÌÇÏ ¼®»óÀü¿ë STONE_WAR3 = 18, // ·Î¿ì 80·¦ÀÌ»ó ¼®»óÀü¿ë MAX_ZONE_NUM = 19 }; enum Channel { // sphawk : ä³Î °ü·ÃÇØ¼­ °íÃÆ½À´Ï´Ù. ¿©±âÀú±â º¹ÀâÇÏ°Ô Èð¾îÁ® ÀÖÀ¸´Ï ÇԺηΠ°ÇµéÁö ¸¶¼¼¿ä. // °íÄ£ ÆÐŶÀº ´ÙÀ½°ú °°½À´Ï´Ù. // 1. ¿©±â. // 2. PktSCInfo (Áß°èÂÊ¿¡¼­µµ »ç¿ëÇÏ´Â ÆÐŶÀÔ´Ï´Ù) // 3. PktCSAck // 4. PktSZMvAck // 5. PktCSDAck (Áß°èÂÊ¿¡¼­µµ »ç¿ëÇÏ´Â ÆÐŶÀÔ´Ï´Ù) // 6. PktSZMvDAck (Áß°èÂÊ¿¡¼­µµ »ç¿ëÇÏ´Â ÆÐŶÀÔ´Ï´Ù) // SERVER_GROUPÂÊÀº ä³ÎÀ̶ó°í ½á ÀÖÁö¸¸ ½ÇÁ¦·Î´Â ÈÞ¸Õ/¾ÆÄ­ ÀÇ Àοø¼öÀÔ´Ï´Ù.(Áß°è ¼Ò½º¸¦ º¸¸é ¾Ð´Ï´Ù.) // Âø¿À ¾øÀ¸½Ã±æ ¹Ù¶ø´Ï´Ù. MAX_CHANNEL_NUM = 5 }; typedef struct SID* LPSID; struct SID { char Type; char Group; char Channel; char ID; }; SID sID; unsigned long dwID; inline char GetType(void) { return sID.Type; } inline char GetChannel(void) { return sID.Channel; } inline char GetZone(void) { return sID.ID; } inline char GetGroup(void) { return sID.Group; } }; typedef struct SERVER* LPSERVER_GROUP; struct SERVER_GROUP { enum { CHANNEL_NUM = 2, SERVER_NAME = 15 }; char m_Group; // ¼­¹ö ±×·ì char m_Name[SERVER_NAME]; // ¼­¹ö À̸§ long m_ClientNum[CHANNEL_NUM]; // Á¢¼Ó ÀÚ ¼ö IN_ADDR m_Address; // ¼­¹ö ÁÖ¼Ò }; typedef struct SERVER* LPSERVER_LIST; struct SERVER_LIST { enum { SERVER_NUM = 10 }; unsigned short m_ServerNum; // ¼­¹ö ¼ýÀÚ SERVER_GROUP m_ServerGroup[SERVER_NUM]; // ¼­¹ö ±×·ì }; #pragma pack() typedef struct RylServerInfo* LPRylServerInfo; struct RylServerInfo { enum { GROUP_NAME_LENGTH = 120, PATCH_ADDRESS_LENGTH = 100 }; SERVER_ID m_ServerUID; IN_ADDR m_ServerAddress; unsigned long m_dwClientVer; unsigned long m_dwChecksum; size_t m_nGroupNameLen; size_t m_nPatchAddressLen; char m_szGroupName[GROUP_NAME_LENGTH]; char m_szPatchAddress[PATCH_ADDRESS_LENGTH]; unsigned short m_usChannelClientNum[SERVER_GROUP::CHANNEL_NUM]; unsigned short m_usChannelNum; RylServerInfo::RylServerInfo() : m_dwClientVer(0), m_dwChecksum(0), m_nPatchAddressLen(0), m_usChannelNum(0) { m_ServerUID.dwID = 0; m_ServerAddress.S_un.S_addr = 0; m_szPatchAddress[0] = '\0'; strncpy(m_szGroupName, "UnKnown", GROUP_NAME_LENGTH); m_nGroupNameLen = strlen(m_szGroupName); std::fill_n(m_usChannelClientNum, int(SERVER_GROUP::CHANNEL_NUM), 0); } }; #endif