#ifndef _CGAMESERVER_ADDRESS_H_ #define _CGAMESERVER_ADDRESS_H_ #include #include #include #include #include #include #include class CServerSetup { public: static CServerSetup& GetInstance(); enum DefaultPorts { // Ruleset // 10000 ~ 11000 port : ¿ÜºÎ ¿ÀÇ // 11001 ~ 12000 port : »ç³»¿¡¸¸ ¿ÀÇ // 12001 ~ 13000 port : ³»ºÎ ¼­¹ö°£ ¿¬°á·Î¸¸ »ç¿ë (³»ºÎ³¢¸®¸¸ ¿ÀÇÂ) // Ŭ¶óÀÌ¾ðÆ® -> ¼­¹ö (¿ÜºÎ -> ³»ºÎ, º¯°æÇÏ¸é ¾ÈµÊ(Ŭ¶óÀÌ¾ðÆ®¿¡ ÇϵåÄÚµå µÇ¾î ÀÖÀ½)) LoginServerLauncherListen = 10101, // ·±Ã³ -> ·Î±×Àμ­¹ö AuthServerClientListen = 10210, // Ŭ¶óÀÌ¾ðÆ® -> ÀÎÁõ¼­¹ö // Ŭ¶óÀÌ¾ðÆ® -> ¼­¹ö (¿ÜºÎ -> ³»ºÎ, º¯°æÇصµ »ó°ü ¾øÀ½.. ÆÄÆ®2´Â »ç¿ë ¾ÈÇÔ) P1ChatServerClientListen = 10111, // Ŭ¶óÀÌ¾ðÆ® -> °ÔÀÓ¼­¹ö (¿ÜºÎ -> ³»ºÎ, ±ÔÄ¢¿¡ µû¶ó º¯µ¿µÊ, ¹üÀ§ ³»¿¡¼­´Â ¹Ù²ãµµ ±¦Âú´Ù.) // °ÔÀÓÂÊ TCPÆ÷Æ®. GameServerBaseTCPPort + ä³Î ¹øÈ£(0~4) * 20 + Á¸ ¹øÈ£(1~20) GameServerClientBaseListen = 10400, MAX_ZONE = 20, MAX_CHANNEL = 5, // Ŭ¶óÀÌ¾ðÆ® -> °ÔÀÓ¼­¹ö (¿ÜºÎ -> ³»ºÎ, ±ÔÄ¢¿¡ µû¶ó º¯µ¿µÊ, ¹üÀ§ ³»¿¡¼­´Â ¹Ù²ãµµ ±¦Âú´Ù.) // ÆÄÆ® 1 Àü¿ëÀÌ´Ù. ÆÄÆ® 2´Â UDP¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù. P1GameServerClientUDPListen = 10500, // ´ÙÀ½ Æ÷Æ®´Â, ¿ÜºÎ¿¡¼­´Â Çã¿ëµÈ ip¿¡ ÇÑÇØ¼­¸¸ Á¢±Ù °¡´ÉÇϵµ·Ï ÇÑ´Ù. // 11001 ~ 11100 Æ÷Æ®´Â PCAnywhereȤÀº Remote DesktopµîÀ» ¿­¾î ³õ±â À§Çؼ­ ºñ¿ö µÐ´Ù. P1AdminToolServerClientListen = 11121, // ÆÄÆ® 1 ¿î¿µÅø Ŭ¶óÀÌ¾ðÆ® -> ÆÄÆ® 1 ¿î¿µÅø ¼­¹ö P2AdminToolServerClientListen = 11122, // ÆÄÆ® 2 ¿î¿µÅø Ŭ¶óÀÌ¾ðÆ® -> ÆÄÆ® 2 ¿î¿µÅø ¼­¹ö LogServerLogClientListen = 11123, // ·Î±× Ŭ¶óÀ̾ðÆ®(·Î±× ¸ð´ÏÅ͸µ Åø) -> ·Î±× ¼­¹ö ManageServerManageToolListen = 11124, // °ü¸® Åø -> °ü¸® ¼­¹ö ChatServerMonitoringToolListen = 11125, // äÆÃ ¸ð´ÏÅ͸µ Åø -> äÆÃ¼­¹ö StatServerManageServerListen = 11126, // °ü¸® ¼­¹ö -> Åë°è ¼­¹ö // °¢ ¼­¹ö°£ ¿¬°á (¿ÜºÎ¿¡´Â ÀüºÎ ¸·¾Æ ³õ¾Æ¾ß ÇÑ´Ù, ³»ºÎ°£ ¿¬°á¸¸ Çã¿ëÇÑ´Ù) UIDServerDBAgentServerListen = 12531, // DBÁß°è¼­¹ö -> UID¼­¹ö LoginServerDBAgentServerListen = 12532, // DBÁß°è¼­¹ö -> ·Î±×Àμ­¹ö DBAgentServerGameServerListen = 12533, // °ÔÀÓ¼­¹ö -> DBÁß°è¼­¹ö DBAgentServerAuthServerListen = 12534, // ÀÎÁõ¼­¹ö -> DBÁß°è¼­¹ö DBAgentServerChatServerListen = 12535, // äÆÃ¼­¹ö -> DBÁß°è¼­¹ö DBAgentAdminToolServerListen = 12536, // ¿î¿µÅø ¼­¹ö -> DBÁß°è¼­¹ö ChatServerGameServerListen = 12537, // °ÔÀÓ¼­¹ö -> äÆÃ¼­¹ö ManageServerManageClientListen = 12538, // °ü¸® Ŭ¶óÀÌ¾ðÆ® -> °ü¸® ¼­¹ö LogServerOtherServerListen = 12539 // ´Ù¸¥ ¼­¹öµé -> ·Î±× ¼­¹ö }; enum ServerType { LoginServer = 0, AuthServer = 1, GameServer = 2, AgentServer = 3, UIDServer = 4, AdminToolServer = 5, LogServer = 6, ChatServer = 7, MaxType = 8 }; enum BillingType { ROWGlobalBilling = 0, // ROW°íÀ¯ÀÎÁõ GamaBilling = 1, // Çѱ¹ ÀϹݰú±Ý(¿¹Àü °ú±Ý¹æ½Ä) GamaUnitedBilling = 2, // Çѱ¹ ÅëÇÕ°ú±Ý YouxiLandBilling = 3, // ´ë¸¸¿ë °ú±Ý JapanBilling = 4, // ÀϺ»¿ë °ú±Ý GammaniaBilling = 5, // °¨¸¶´Ï¾Æ¿ë °ú±Ý MaxBillingType = 6 }; enum AuthType { ROWGlobalAuth = 0, // ROW°íÀ¯ÀÎÁõ HangameAuth = 1, // ÇѰÔÀÓ¿ë ÀÎÁõ GamaAuth = 2, // °¡¸¶¼ÒÇÁÆ®¿ë ÀÎÁõ YouxiLandAuth = 3, // ´ë¸¸¿ë ÀÎÁõ JapanAuth = 4, // ÀϺ»¿ë ÀÎÁõ GammaniaAuth = 5, // °¨¸¶´Ï¾Æ ÀÎÁõ MaxAuthType = 6 }; struct DBInfo { enum Const { MAX_BUFFER = 128 }; OleDB::ConnType m_ConnType; char m_szDBAddr[MAX_BUFFER]; char m_szDBName[MAX_BUFFER]; char m_szDBUser[MAX_BUFFER]; char m_szDBPass[MAX_BUFFER]; }; protected: unsigned long m_ServerID; // ¼­¹ö ¾ÆÀ̵ð unsigned long m_dwLimitVer; // ÃÖ¼Ò Á¦ÇÑ ¹öÁ¯ unsigned long m_dwClientVer; // Ŭ¶óÀÌ¾ðÆ® ¹öÁ¯ char m_chPatchAddr[MAX_PATH]; // ÆÐÄ¡ ¼­¹ö ÁÖ¼Ò ¹®ÀÚ¿­ unsigned long m_dwBillingType; unsigned long m_dwAuthType; bool m_bPingCheck; // ÇΠüũ bool m_bAlone; // È¥ÀÚ ¸ðµå bool m_bHanCheck; // ÇÑ±Û Ã¼Å© bool m_bHackCheck; // Ç٠üũ bool m_bAdminIPCheck; // ¿µÀÚ IP üũ bool m_bDuelModeCheck; // µà¾ó ¸ðµå üũ bool m_bLotteryEvent; // º¹±Ç À̺¥Æ® üũ bool m_bLevelUpEvent; // ·¹º§¾÷ À̺¥Æ® üũ bool m_bDeathPenaltyEvent; // »ç¸Á½Ã ÆÐ³ÎƼ À̺¥Æ® üũ bool m_bFreeCheck; // ÇÁ¸® üũ bool m_bIgnoreFlag; // Ç÷¡±× ¹«½Ã bool m_bBattleAuth; // ¹èƲ±×¶ó¿îµå ÀÎÁõ ¼­¹öÀΰ¡? bool m_bBattleGame; // ¹èƲ±×¶ó¿îµå °ÔÀÓ ¼­¹öÀΰ¡? bool m_bBattleAgent; // ¹èƲ±×¶ó¿îµå Áß°è ¼­¹öÀΰ¡? bool m_bSupressCharCreate; // ij¸¯ÅÍ »ý¼ºÀ» Á¦ÇÑÇϴ°¡? bool m_bSupressCharDelete; // ij¸¯ÅÍ »èÁ¦¸¦ Á¦ÇÑÇϴ°¡? bool m_bTestGroupAuth; // ÀÎÁõ ¼­¹ö°¡ Á¤¼·ÀÎÁö Å×¼·ÀÎÁö ¿©ºÎ bool m_bChatToolIPCheck; // ¸ð´ÏÅ͸µ ÅøÀÇ IP üũ ¿©ºÎ unsigned char m_cRestrictedPart1ToPart2Level; // Part1¿¡¼­ Part2·Î ij¸¯ÅÍ ÀÌÀü½Ã ÇÊ¿äÇÑ ÃÖ¼Ò Ä³¸¯ÅÍ ·¹º§ unsigned char m_cMaxTransferPart1ToPart2Count; // Part1¿¡¼­ Part2·Î ij¸¯ÅÍ ÀÌÀü °¡´ÉÇÑ È¸¼ö unsigned long m_dwUserLimit; // À¯Àú Á¦ÇÑ ¼ýÀÚ unsigned long m_dwCheckSum; // üũ½æ unsigned long m_dwExp; // °æÇèÄ¡(Percentage) unsigned long m_dwDrop; // µå¶ø·ü(Percentage) unsigned long m_dwFame; // ¸í¼ºÄ¡(Percentage) unsigned long m_dwRefine; // Á¦·Ã¼º°øÀ²(Percentage) unsigned long m_dwMileage; // ¸¶Àϸ®Áö(Percentage) unsigned long m_dwEquipCorr; unsigned short m_wBattleLimit; // ¹èƲ±×¶ó¿îµå Á¦ÇÑ Àοø unsigned short m_wBattleLimitPer; // ¹èƲ±×¶ó¿îµå Á¦ÇÑ ÆÛ¼¾Æ® // °¨¸¶´Ï¾Æ Àü¿ë Á¤º¸ char m_szGammaniaCode[32]; char m_szGammaniaRegin[32]; char m_szGammaniaAddr[32]; // °¨¸¶´Ï¾Æ ¼­¹öÁÖ¼Ò int m_GammaniaPort1; int m_GammaniaPort2; INET_Addr m_ServerAddress[MaxType]; // ¼­¹ö ÁÖ¼Òµé INET_Addr m_GameServerUDPAddr; INET_Addr m_HanUnitedBillingAddr; // ÇѰÔÀÓ ÅëÇÕºô¸µ ¼­¹ö ÁÖ¼Ò(UID¼­¹ö¸¸ ¼¼ÆÃÇÔ) INET_Addr m_Part1UnifiedAgentAddr; // ÆÄÆ®1 ÅëÇÕ±ºÀÇ Áß°è¼­¹ö ÁÖ¼Ò INET_Addr m_P1GameServerUDPAddr; // ÆÄÆ®1 °ÔÀÓ¼­¹öÀÇ UDPÁÖ¼Ò DBInfo m_stPart1UnifiedDBInfo; // ÆÄÆ®1 ÅëÇÕ±ºÀÇ DB Á¤º¸ DBInfo m_stAdminToolDBInfo; // ¿î¿µ DB Á¤º¸ DBInfo m_stKeeperDBInfo; // °ú±Ý DB Á¤º¸ DBInfo m_stAuthDBInfo; // ÀÎÁõ DB Á¤º¸ DBInfo m_stGameDBInfo; // °ÔÀÓ DB Á¤º¸ DBInfo m_stLogDBInfo; // ·Î±× DB Á¤º¸ unsigned long m_dwGameContentsFlag; // Àû¿ëµÈ ÄÁÅÙÃ÷¸¦ °ü¸®ÇÏ´Â Ç÷¡±× GameRYL::ServiceNation m_eNationType; // ±¹°¡ ŸÀÔ (±¹°¡¿¡ µû¶ó °ÔÀÓ ·êÀÇ ÀϺΰ¡ ´Ù¸£°Ô Àû¿ëµÊ) std::vector m_vecAdminUID; // µð¹ö±ë¿ë UID ¸®½ºÆ® UnifiedConst::AgentServerType m_eAgentServerType; // Áß°è ¼­¹ö ŸÀÔ (ÆÄÆ®1, ÆÄÆ®2, ÆÄÆ®1ÅëÇÕ...) unsigned long m_dwSelectableUnifiedServerNum; // ¼­¹ö ÅëÇսà ÅëÇÕÇÑ ¼­¹ö ´ë¼ö public: static const char* GetServerWindowName(ServerType eServerType); static const char* GetManageClientWindowName(); static unsigned short GetGameServerTCPPort(unsigned long dwServerID); static unsigned short GetP1GameServerUDPPort(unsigned long dwServerID); static char GetZoneFromCmdLine(); static char GetChannelFromCmdLine(); CServerSetup(); virtual ~CServerSetup(); bool Initialize(ServerType eServerType); bool InitLoginServer(void); bool InitAuthServer(void); bool InitGameServer(void); bool InitAgentServer(void); bool InitUIDServer(void); bool InitLogServer(void); bool InitChatServer(void); unsigned long GetServerID(void); char GetServerGroup(void); char GetServerZone(void); char GetServerChannel(void); unsigned long GetLimitVer(void) { return m_dwLimitVer; } unsigned long GetClientVer(void) { return m_dwClientVer; } char* GetPatchAddress(void) { return m_chPatchAddr; } unsigned long GetBillingType(void) { return m_dwBillingType; } unsigned long GetAuthType(void) { return m_dwAuthType; } GameRYL::ServiceNation GetNationType(void) { return m_eNationType; } UnifiedConst::AgentServerType GetAgentServerType() { return m_eAgentServerType; } unsigned long GetSelectableUnifiedServerNum(void) { return m_dwSelectableUnifiedServerNum; } bool IsSupressCharCreate() { return m_bSupressCharCreate; } bool IsSupressCharDelete() { return m_bSupressCharDelete; } bool IsTestGroupAuth(void) { return m_bTestGroupAuth; } unsigned char GetRestrictedPart1ToPart2Level() { return m_cRestrictedPart1ToPart2Level; } unsigned char GetMaxTransferPart1ToPart2Count() { return m_cMaxTransferPart1ToPart2Count; } bool GetPingCheck(void) { return m_bPingCheck; } bool GetAlone(void) { return m_bAlone; } bool GetHanCheck(void) { return m_bHanCheck; } bool GetHackCheck(void) { return m_bHackCheck; } bool GetAdminIPCheck(void) { return m_bAdminIPCheck; } bool GetDuelModeCheck(void) { return m_bDuelModeCheck; } bool GetLotteryEvent(void) { return m_bLotteryEvent; } bool GetLevelUpEvent(void) { return m_bLevelUpEvent; } bool GetDeathPenaltyEvent(void) { return m_bDeathPenaltyEvent; } bool GetChatToolIPCheck(void) { return m_bChatToolIPCheck; } bool GetFreeCheck(void) { return m_bFreeCheck; } bool GetIgnoreFlag(void) { return m_bIgnoreFlag; } unsigned long GetUserLimit(void) { return m_dwUserLimit; } unsigned long GetCheckSum(void) { return m_dwCheckSum; } unsigned long GetExpDefault(void) { return m_dwExp; } unsigned long GetDropDefault(void) { return m_dwDrop; } unsigned long GetFameDefault(void) { return m_dwFame; } unsigned long GetRefineDefault(void) { return m_dwRefine; } unsigned long GetMileageDefault(void) { return m_dwMileage; } unsigned long GetEquipCorrDefault(void) { return m_dwEquipCorr; } unsigned short GetBattleLimit(void) { return m_wBattleLimit; } unsigned short GetBattleLimitPer(void) { return m_wBattleLimitPer; } INET_Addr& GetServerAddress(ServerType eServerType) { return m_ServerAddress[eServerType]; } INET_Addr& GetP1GameServerUDPAddress() { return m_P1GameServerUDPAddr; } INET_Addr& GetHanUnitedBillingAddr() { return m_HanUnitedBillingAddr; } INET_Addr& GetPart1UnifiedAgentAddr() { return m_Part1UnifiedAgentAddr; } unsigned long SetClientVer(unsigned long ClientVer_In) { return m_dwClientVer = ClientVer_In; } unsigned long SetCheckSum(unsigned long CheckSum_In) { return m_dwCheckSum = CheckSum_In; } bool IsBattleAuthServer(void) const { return m_bBattleAuth; } bool IsBattleGameServer(void) const { return m_bBattleGame; } bool IsBattleAgentServer(void) const { return m_bBattleAgent; } DBInfo& GetPart1UnifiedDBInfo() { return m_stPart1UnifiedDBInfo; } DBInfo& GetAdminToolDBInfo() { return m_stAdminToolDBInfo; } DBInfo& GetKeeperDBInfo() { return m_stKeeperDBInfo; } DBInfo& GetAuthDBInfo() { return m_stAuthDBInfo; } DBInfo& GetGameDBInfo() { return m_stGameDBInfo; } DBInfo& GetLogDBInfo() { return m_stLogDBInfo; } char* GetGammaniaCode() { return m_szGammaniaCode; } char* GetGammaniaRegin() { return m_szGammaniaRegin; } char* GetGammaniaAddr() { return m_szGammaniaAddr; } int GammaniaPort1() { return m_GammaniaPort1; } int GammaniaPort2() { return m_GammaniaPort2; } bool UseContents(unsigned long dwContents) { return (m_dwGameContentsFlag & dwContents) == dwContents; } }; #endif