Restructure repository to include all source folders

Move git root from Client/ to src/ to track all source code:
- Client: Game client source (moved to Client/Client/)
- Server: Game server source
- GameTools: Development tools
- CryptoSource: Encryption utilities
- database: Database scripts
- Script: Game scripts
- rylCoder_16.02.2008_src: Legacy coder tools
- GMFont, Game: Additional resources

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-29 20:17:20 +09:00
parent 5d3cd64a25
commit dd97ddec92
11602 changed files with 1446576 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
#ifndef _GLOBAL_CONSTANTS_H_
#define _GLOBAL_CONSTANTS_H_
namespace GameRYL
{
enum GameContents
{
LEVEL_LIMIT_80 = (1 << 0), // 80<38><30><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
LEVEL_LIMIT_90 = (1 << 1) | LEVEL_LIMIT_80, // 90<39><30><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
LEVEL_LIMIT_100 = (1 << 2) | LEVEL_LIMIT_90 | LEVEL_LIMIT_80, // 100<30><30><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
CAMP = (1 << 3), // <20><><EFBFBD><EFBFBD>
CAMP_UPGRADE = (1 << 4) | CAMP, // <20><><EFBFBD><EFBFBD> <20><>ȭ
SIEGE = (1 << 5) | CAMP_UPGRADE | CAMP, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
JUDGE_PROTOTYPE = (1 << 6), // <20><><EFBFBD>Ʊ<EFBFBD> <20>ĺ<EFBFBD> (<28>ʱ<EFBFBD> <20><><EFBFBD><EFBFBD>)
ACCESSORY = (1 << 7), // <20>Ǽ<EFBFBD><C7BC>
RUNE = (1 << 8), // <20><>
BATTLE_LOHAN = (1 << 9), // <20><>Ʋ <20><><EFBFBD><EFBFBD>
STONE_BATTLE = (1 << 10), // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LOTTO = (1 << 11), // <20><20>ζ<EFBFBD>.
SHOW_ENEMYNAME = (1 << 12), // <20><><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD>͸<EFBFBD> ǥ<><C7A5>
NEWZONE_ZONE9 = (1 << 13), // <20>ű<EFBFBD><C5B1><EFBFBD>
REBALANCE_OVERITEM = (1 << 14), // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
FIFTHSKILL_LOCKITEM = (1 << 15) // 5<>ܰ<EFBFBD> <20><>ų <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
enum ServiceNation
{
KOREA = 0, // <20>ѱ<EFBFBD> (<28><><EFBFBD><EFBFBD>Ʈ)
GLOBAL = 1, // <20>۷ι<DBB7><CEB9><EFBFBD>
CHINA = 2, // <20>߱<EFBFBD>
THAILAND = 3, // <20>±<EFBFBD> IME<4D><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
JAPAN = 4, // <20>Ϻ<EFBFBD> <20><><EFBFBD>¿붧<C2BF><EBB6A7><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
MAX_NATION_TYPE = 5
};
// Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> (<28><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>˸°<CBB8> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ <20><>ƾ <20>и<EFBFBD><D0B8><EFBFBD> <20><><EFBFBD><EFBFBD>...)
enum ServerType
{
SERVER_TEST = 0, // <20>׽<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
SERVER_REGULAR = 1, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
SERVER_BATTLE_LOHAN = 2, // <20><>Ʋ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
MAX_SERVER_TYPE = 3
};
};
#endif

View File

@@ -0,0 +1,920 @@
#include "stdafx.h"
#include "ServerSetup.h"
#include <Log/ServerLog.h>
#include <Utility/Math/Math.h>
#include <Utility/Registry/RegFunctions.h>
#include <Network/Winsock/SocketFactory.h>
#include <Network/Packet/PacketStruct/ServerInfo.h>
const int MAX_INI_STRING = 260;
const char szINIFileName[] = "DemonSetup.ini";
static OleDB::ConnType GetConnTypeFromString(const TCHAR* szConnType)
{
const int MAX_CONNTYPE_STRING = 64;
TCHAR szBuffer[MAX_CONNTYPE_STRING];
_sntprintf(szBuffer, MAX_CONNTYPE_STRING, "%s", szConnType);
szBuffer[MAX_CONNTYPE_STRING - 1] = 0;
_tcsupr(szBuffer);
OleDB::ConnType eConnType = OleDB::ConnType_MSSQL;
if (0 == _tcscmp(szBuffer, "MSSQL")) { eConnType = OleDB::ConnType_MSSQL; }
else if (0 == _tcscmp(szBuffer, "ODBC")) { eConnType = OleDB::ConnType_ODBC; }
else if (0 == _tcscmp(szBuffer, "ORACLE")) { eConnType = OleDB::ConnType_ORACLE; }
return eConnType;
}
CServerSetup& CServerSetup::GetInstance()
{
static CServerSetup serverSetup;
return serverSetup;
}
CServerSetup::CServerSetup()
: m_dwLimitVer(0),
m_dwClientVer(0),
m_dwBillingType(0),
m_dwAuthType(0),
m_eNationType(GameRYL::KOREA),
m_bHanCheck(false),
m_bHackCheck(false),
m_bAdminIPCheck(false),
m_bDuelModeCheck(false),
m_bLotteryEvent(false),
m_bLevelUpEvent(false),
m_bBattleAuth(false),
m_bBattleGame(false),
m_bBattleAgent(false),
m_bSupressCharCreate(false),
m_bSupressCharDelete(false),
m_cRestrictedPart1ToPart2Level(0),
m_cMaxTransferPart1ToPart2Count(0),
m_dwUserLimit(0),
m_dwCheckSum(0),
m_dwExp(0),
m_dwDrop(0),
m_dwFame(0),
m_dwRefine(0),
m_dwMileage(0),
m_dwEquipCorr(0),
m_wBattleLimit(0),
m_wBattleLimitPer(0),
m_dwGameContentsFlag(0)
{
memset(&m_ServerID, 0, sizeof(SERVER_ID));
memset(&m_stPart1UnifiedDBInfo, 0, sizeof(DBInfo));
memset(&m_stAdminToolDBInfo, 0, sizeof(DBInfo));
memset(&m_stKeeperDBInfo, 0, sizeof(DBInfo));
memset(&m_stAuthDBInfo, 0, sizeof(DBInfo));
memset(&m_stGameDBInfo, 0, sizeof(DBInfo));
memset(&m_stLogDBInfo, 0, sizeof(DBInfo));
}
CServerSetup::~CServerSetup()
{
}
unsigned long CServerSetup::GetServerID(void)
{
return m_ServerID;
}
char CServerSetup::GetServerGroup(void)
{
SERVER_ID serverID;
serverID.dwID = m_ServerID;
return serverID.sID.Group;
}
char CServerSetup::GetServerZone(void)
{
SERVER_ID serverID;
serverID.dwID = m_ServerID;
return serverID.sID.ID;
}
char CServerSetup::GetServerChannel(void)
{
SERVER_ID serverID;
serverID.dwID = m_ServerID;
return serverID.sID.Channel;
}
bool CServerSetup::Initialize(ServerType eServerType)
{
bool bResult = false;
switch (eServerType)
{
case LoginServer: bResult = InitLoginServer(); break;
case AuthServer: bResult = InitAuthServer(); break;
case GameServer: bResult = InitGameServer(); break;
case AgentServer: bResult = InitAgentServer(); break;
case UIDServer: bResult = InitUIDServer(); break;
case LogServer: bResult = InitLogServer(); break;
case ChatServer: bResult = InitChatServer(); break;
}
// GameRYL::REBALANCE_OVERITEM |
switch (m_eNationType)
{
case GameRYL::KOREA: m_dwGameContentsFlag = GameRYL::FIFTHSKILL_LOCKITEM | GameRYL::LEVEL_LIMIT_90 | GameRYL::SIEGE | GameRYL::ACCESSORY | GameRYL::JUDGE_PROTOTYPE | GameRYL::STONE_BATTLE; break;
// <20><><EFBFBD>翬 S<>׷<EFBFBD><D7B7>̵<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>
// case GameRYL::GLOBAL: m_dwGameContentsFlag = GameRYL::REBALANCE_OVERITEM | GameRYL::FIFTHSKILL_LOCKITEM | GameRYL::LEVEL_LIMIT_90 | GameRYL::SIEGE | GameRYL::ACCESSORY | GameRYL::JUDGE_PROTOTYPE | GameRYL::STONE_BATTLE; break;
// <20>Ʒ<EFBFBD><C6B7><EFBFBD> <20><><EFBFBD><EFBFBD>
case GameRYL::GLOBAL: m_dwGameContentsFlag = GameRYL::FIFTHSKILL_LOCKITEM | GameRYL::LEVEL_LIMIT_90 | GameRYL::SIEGE | GameRYL::ACCESSORY | GameRYL::JUDGE_PROTOTYPE | GameRYL::STONE_BATTLE; break;
case GameRYL::CHINA: m_dwGameContentsFlag = GameRYL::FIFTHSKILL_LOCKITEM | GameRYL::LEVEL_LIMIT_90 | GameRYL::SIEGE | GameRYL::ACCESSORY | GameRYL::JUDGE_PROTOTYPE | GameRYL::STONE_BATTLE; break;
case GameRYL::THAILAND: m_dwGameContentsFlag = GameRYL::FIFTHSKILL_LOCKITEM | GameRYL::LEVEL_LIMIT_90 | GameRYL::SIEGE | GameRYL::ACCESSORY | GameRYL::JUDGE_PROTOTYPE | GameRYL::STONE_BATTLE; break;
case GameRYL::JAPAN: m_dwGameContentsFlag = GameRYL::FIFTHSKILL_LOCKITEM | GameRYL::LEVEL_LIMIT_90 | GameRYL::SIEGE | GameRYL::ACCESSORY | GameRYL::JUDGE_PROTOTYPE | GameRYL::STONE_BATTLE; break;
}
return bResult;
}
bool CServerSetup::InitLoginServer(void)
{
char szServerID[MAX_INI_STRING] = "";
char szPingCheck[MAX_INI_STRING] = "";
char szAloneMode[MAX_INI_STRING] = "";
char szLimitVer[MAX_INI_STRING] = "";
const char* szErrorString = "Unknown Error";
if (!Registry::ReadString(szINIFileName, "LoginServer", "ServerID", szServerID, MAX_INI_STRING))
{
szErrorString = "LoginServer : <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.";
}
else if (!Registry::ReadString(szINIFileName, "LoginServer", "PingCheck", szPingCheck, MAX_INI_STRING))
{
szErrorString = "LoginServer : <20><>üũ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.";
}
else if (!Registry::ReadString(szINIFileName, "LoginServer", "AloneMode", szAloneMode, MAX_INI_STRING))
{
szErrorString = "LoginServer : ȥ<><C8A5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.";
}
else if (!Registry::ReadString(szINIFileName, "LoginServer", "LeastPatchVer", szLimitVer, MAX_INI_STRING))
{
szErrorString = "LoginServer : Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, "LoginServer", "PatchAddr", m_chPatchAddr, MAX_PATH))
{
szErrorString = "LoginServer : <20><>ġ <20>ּ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.";
}
else
{
m_ServerID = atol(szServerID);
m_bPingCheck = (1 == atol(szPingCheck));
m_bAlone = (1 == atol(szAloneMode));
m_dwClientVer = atol(szLimitVer);
return true;
}
ERRLOG0(g_Log, szErrorString);
return false;
}
bool CServerSetup::InitAuthServer(void)
{
char szServerID[MAX_INI_STRING] = "";
char szAuthType[MAX_INI_STRING] = "";
char szDBAgentAddr[MAX_INI_STRING] = "";
char szPingCheck[MAX_INI_STRING] = "";
char szHanCheck[MAX_INI_STRING] = "";
char szBattleServer[MAX_INI_STRING] = "";
char szBattleAgeLimit[MAX_INI_STRING] = "";
char szSupressCharCreate[MAX_INI_STRING] = "";
char szSupressCharDelete[MAX_INI_STRING] = "";
char szTestGroupAuth[MAX_INI_STRING] = "";
char szAuthDBType[MAX_INI_STRING] = "";
char szAdminToolDBType[MAX_INI_STRING] = "";
char szGammaniaCode[MAX_INI_STRING] = "";
char szGammaniaRegin[MAX_INI_STRING] = "";
char szGammaniaAddr[MAX_INI_STRING] = "";
char szGammaniaPort1[MAX_INI_STRING] = "";
char szGammaniaPort2[MAX_INI_STRING] = "";
const char* szErrorString = "Unknown Error";
if (!Registry::ReadString(szINIFileName, "AuthServer", "ServerID", szServerID, MAX_INI_STRING))
{
szErrorString = "AuthServer : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.";
}
else if (!Registry::ReadString(szINIFileName, "AuthServer", "AuthType", szAuthType, MAX_INI_STRING))
{
szErrorString = "AuthServer : <20><><EFBFBD><EFBFBD> Ÿ<><C5B8> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, "AuthServer", "DBAgentAddr", szDBAgentAddr, MAX_INI_STRING))
{
szErrorString = "AuthServer : <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ּ<EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, "AuthServer", "PingCheck", szPingCheck, MAX_INI_STRING))
{
szErrorString = "AuthServer : <20><>üũ <20><><EFBFBD><EFBFBD>.";
}
else if (!Registry::ReadString(szINIFileName, "AuthServer", "KoreanLangCheck", szHanCheck, MAX_INI_STRING))
{
szErrorString = "AuthServer : <20>ѱ<EFBFBD>üũ <20><><EFBFBD><EFBFBD>.";
}
else if (!Registry::ReadString(szINIFileName, "AuthServer", "BattleServerAuth", szBattleServer, MAX_INI_STRING))
{
szErrorString = "AuthServer : <20><>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, "AuthServer", "TestGroupAuth", szTestGroupAuth, MAX_INI_STRING))
{
szErrorString = "AuthServer : <20>׽<EFBFBD>Ʈ<EFBFBD>׷<EFBFBD><D7B7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>׷<EFBFBD><D7B7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, "AuthServer", "GammaniaServerCode", szGammaniaCode, MAX_INI_STRING))
{
szErrorString = "AuthServer : <20><><EFBFBD><EFBFBD><EFBFBD>Ͼ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڵ<EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, "AuthServer", "GammaniaRegin", szGammaniaRegin, MAX_INI_STRING))
{
szErrorString = "AuthServer : <20><><EFBFBD><EFBFBD><EFBFBD>Ͼ<EFBFBD> Regin <20>ڵ<EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, "AuthServer", "GammaniaAddr", szGammaniaAddr, MAX_INI_STRING))
{
szErrorString = "AuthServer : <20><><EFBFBD><EFBFBD><EFBFBD>Ͼ<EFBFBD> Addr <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, "AuthServer", "GammaniaPort1", szGammaniaPort1, MAX_INI_STRING))
{
szErrorString = "AuthServer : <20><><EFBFBD><EFBFBD><EFBFBD>Ͼ<EFBFBD> Port1 <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, "AuthServer", "GammaniaPort2", szGammaniaPort2, MAX_INI_STRING))
{
szErrorString = "AuthServer : <20><><EFBFBD><EFBFBD><EFBFBD>Ͼ<EFBFBD> Port2 <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (
!Registry::ReadString(szINIFileName, "AuthServer", "AuthDBType", szAuthDBType, MAX_INI_STRING) ||
!Registry::ReadString(szINIFileName, "AuthServer", "AuthDBAddr", m_stAuthDBInfo.m_szDBAddr, DBInfo::MAX_BUFFER) ||
!Registry::ReadString(szINIFileName, "AuthServer", "AuthDBName", m_stAuthDBInfo.m_szDBName, DBInfo::MAX_BUFFER) ||
!Registry::ReadString(szINIFileName, "AuthServer", "AuthDBUser", m_stAuthDBInfo.m_szDBUser, DBInfo::MAX_BUFFER) ||
!Registry::ReadString(szINIFileName, "AuthServer", "AuthDBPass", m_stAuthDBInfo.m_szDBPass, DBInfo::MAX_BUFFER))
{
szErrorString = "AuthServer : <20><><EFBFBD><EFBFBD> DB<44><42><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (
!Registry::ReadString(szINIFileName, "AuthServer", "AdminToolDBType", szAdminToolDBType, MAX_INI_STRING) ||
!Registry::ReadString(szINIFileName, "AuthServer", "AdminToolDBAddr", m_stAdminToolDBInfo.m_szDBAddr, DBInfo::MAX_BUFFER) ||
!Registry::ReadString(szINIFileName, "AuthServer", "AdminToolDBName", m_stAdminToolDBInfo.m_szDBName, DBInfo::MAX_BUFFER) ||
!Registry::ReadString(szINIFileName, "AuthServer", "AdminToolDBUser", m_stAdminToolDBInfo.m_szDBUser, DBInfo::MAX_BUFFER) ||
!Registry::ReadString(szINIFileName, "AuthServer", "AdminToolDBPass", m_stAdminToolDBInfo.m_szDBPass, DBInfo::MAX_BUFFER))
{
szErrorString = "AuthServer : <20><EFBFBD><EEBFB5> DB<44><42><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else
{
m_stAuthDBInfo.m_ConnType = GetConnTypeFromString(szAuthDBType);
m_stAdminToolDBInfo.m_ConnType = GetConnTypeFromString(szAdminToolDBType);
Registry::ReadString(szINIFileName, "AuthServer", "SupressCharCreate", szSupressCharCreate, MAX_INI_STRING);
m_bSupressCharCreate = (1 == atoi(szSupressCharCreate));
Registry::ReadString(szINIFileName, "AuthServer", "SupressCharDelete", szSupressCharDelete, MAX_INI_STRING);
m_bSupressCharDelete = (1 == atoi(szSupressCharDelete));
m_ServerID = atoi(szServerID);
m_bPingCheck = (1 == atoi(szPingCheck));
m_bHanCheck = (1 == atoi(szHanCheck));
m_dwAuthType = atoi(szAuthType);
m_ServerAddress[AgentServer].set_addr(szDBAgentAddr, DBAgentServerAuthServerListen);
m_bBattleAuth = (1 == atoi(szBattleServer));
m_bTestGroupAuth = (1 == atoi(szTestGroupAuth));
////////////////////////////////////////////////////////////////////////
// edith 2008.01.21 <20><><EFBFBD><EFBFBD><EFBFBD>Ͼ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>..
strcpy(m_szGammaniaCode, szGammaniaCode);
strcpy(m_szGammaniaRegin, szGammaniaRegin);
strcpy(m_szGammaniaAddr, szGammaniaAddr);
m_GammaniaPort1 = atoi(szGammaniaPort1);
m_GammaniaPort2 = atoi(szGammaniaPort2);
return true;
}
ERRLOG0(g_Log, szErrorString);
return false;
}
bool CServerSetup::InitAgentServer(void)
{
char szServerID[MAX_INI_STRING] = "";
char szBillingType[MAX_INI_STRING] = "";
char szPingCheck[MAX_INI_STRING] = "";
char szAdminIPCheck[MAX_INI_STRING] = "";
char szServerVersion[MAX_INI_STRING] = "";
char szCheckSum[MAX_INI_STRING] = "";
char szLoginServerAddr[MAX_INI_STRING] = "";
char szUIDServerAddr[MAX_INI_STRING];
char szBattleServer[MAX_INI_STRING] = "";
char szAgentServerType[MAX_INI_STRING];
char szNationType[MAX_INI_STRING] = "";
char szUserLimit[MAX_INI_STRING] = "";
char szBattleLimit[MAX_INI_STRING] = "";
char szBattleLimitPer[MAX_INI_STRING] = "";
char szGameDBConnType[MAX_INI_STRING] = "";
const char* szErrorString = "Unknown Error";
if (!Registry::ReadString(szINIFileName, "DBAgentServer", "ServerID", szServerID, MAX_INI_STRING))
{
szErrorString = "DBAgentServer : <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, "DBAgentServer", "ServerType", szAgentServerType, MAX_INI_STRING))
{
szErrorString = "DBAgentServer : <20><><EFBFBD><EFBFBD> Ÿ<><C5B8> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, "DBAgentServer", "BillingType", szBillingType, MAX_INI_STRING))
{
szErrorString = "DBAgentServer : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ÿ<><C5B8> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, "DBAgentServer", "NationType", szNationType, MAX_INI_STRING))
{
szErrorString = "DBAgentServer : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, "DBAgentServer", "ClientVersion", szServerVersion, MAX_INI_STRING))
{
szErrorString = "DBAgentServer : Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, "DBAgentServer", "PatchAddress", m_chPatchAddr, MAX_INI_STRING))
{
szErrorString = "DBAgentServer : <20><>ġ <20>ּ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.";
}
else if (!Registry::ReadString(szINIFileName, "DBAgentServer", "LoginServerAddr", szLoginServerAddr, MAX_INI_STRING))
{
szErrorString = "DBAgentServer : <20>α<EFBFBD><CEB1><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ּ<EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, "DBAgentServer", "UIDServerAddr", szUIDServerAddr, MAX_INI_STRING))
{
szErrorString = "DBAgentServer : UID <20><><EFBFBD><EFBFBD> <20>ּ<EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, "DBAgentServer", "CheckSum", szCheckSum, MAX_INI_STRING))
{
szErrorString = "DBAgentServer : üũ<C3BC><C5A9> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, "DBAgentServer", "PingCheck", szPingCheck, MAX_INI_STRING))
{
szErrorString = "DBAgentServer : <20><>üũ <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, "DBAgentServer", "AdminIPCheck", szAdminIPCheck, MAX_INI_STRING))
{
szErrorString = "DBAgentServer : <20><><EFBFBD><EFBFBD> IPüũ <20><><EFBFBD><EFBFBD>.";
}
else if (!Registry::ReadString(szINIFileName, "DBAgentServer", "BattleServer", szBattleServer, MAX_INI_STRING))
{
szErrorString = "DBAgentServer : <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, "DBAgentServer", "LimitServerGroupUserNum", szUserLimit, MAX_INI_STRING))
{
szErrorString = "DBAgentServer : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, "DBAgentServer", "LimitBattleUser", szBattleLimit, MAX_INI_STRING))
{
szErrorString = "DBAgentServer : <20><>Ʋ<EFBFBD>׶<EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ο<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.";
}
else if (!Registry::ReadString(szINIFileName, "DBAgentServer", "LimitBattleUserPer", szBattleLimitPer, MAX_INI_STRING))
{
szErrorString = "DBAgentServer : <20><>Ʋ<EFBFBD>׶<EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ο<EFBFBD> <20>ۼ<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.";
}
else if (
!Registry::ReadString(szINIFileName, "DBAgentServer", "GameDBType", szGameDBConnType, MAX_INI_STRING) ||
!Registry::ReadString(szINIFileName, "DBAgentServer", "GameDBAddr", m_stGameDBInfo.m_szDBAddr, DBInfo::MAX_BUFFER) ||
!Registry::ReadString(szINIFileName, "DBAgentServer", "GameDBName", m_stGameDBInfo.m_szDBName, DBInfo::MAX_BUFFER) ||
!Registry::ReadString(szINIFileName, "DBAgentServer", "GameDBUser", m_stGameDBInfo.m_szDBUser, DBInfo::MAX_BUFFER) ||
!Registry::ReadString(szINIFileName, "DBAgentServer", "GameDBPass", m_stGameDBInfo.m_szDBPass, DBInfo::MAX_BUFFER))
{
szErrorString = "DBAgentServer : <20><><EFBFBD><EFBFBD> DB<44><42><EFBFBD><EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else
{
m_stGameDBInfo.m_ConnType = GetConnTypeFromString(szGameDBConnType);
m_ServerID = atol(szServerID);
m_dwBillingType = atoi(szBillingType);
m_bPingCheck = (1 == atoi(szPingCheck));
m_bAdminIPCheck = (1 == atoi(szAdminIPCheck));
m_dwClientVer = atol(szServerVersion);
m_dwUserLimit = atol(szUserLimit);
m_wBattleLimit = static_cast<unsigned short>(atol(szBattleLimit));
m_wBattleLimitPer = static_cast<unsigned short>(atol(szBattleLimitPer));
m_dwCheckSum = Math::Convert::Atoi(szCheckSum);
m_ServerAddress[LoginServer].set_addr(szLoginServerAddr, LoginServerDBAgentServerListen);
m_ServerAddress[UIDServer].set_addr(szUIDServerAddr, UIDServerDBAgentServerListen);
m_bBattleAgent = (1 == atoi(szBattleServer));
m_eAgentServerType = static_cast<UnifiedConst::AgentServerType>(atoi(szAgentServerType));
m_eNationType = static_cast<GameRYL::ServiceNation>(atol(szNationType));
// <20><>Ʈ2 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD><CFB6><EFBFBD> <20>ʿ<EFBFBD><CABF><EFBFBD> <20><><EFBFBD><EFBFBD>
if (UnifiedConst::Part2Unified == m_eAgentServerType)
{
char szPart1UnifiedAgentAddr[MAX_INI_STRING];
char szRestrictedPart1ToPart2Level[MAX_INI_STRING];
char szMaxTransferCount[MAX_INI_STRING];
if (!Registry::ReadString(szINIFileName, "DBAgentServer",
"Part1UnifiedAgentAddr", szPart1UnifiedAgentAddr, MAX_INI_STRING))
{
ERRLOG0(g_Log, "<EFBFBD><EFBFBD>Ʈ1 <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ּ<EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>");
return false;
}
else if (!Registry::ReadString(szINIFileName, "DBAgentServer",
"RestrictedPart1ToPart2Level", szRestrictedPart1ToPart2Level, MAX_INI_STRING))
{
ERRLOG0(g_Log, "<EFBFBD><EFBFBD>Ʈ1<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ʈ2<C6AE><32> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ּҷ<D6BC><D2B7><EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>");
return false;
}
else if (!Registry::ReadString(szINIFileName, "DBAgentServer",
"MaxTransferCharNum", szMaxTransferCount, MAX_INI_STRING))
{
ERRLOG0(g_Log, "<EFBFBD><EFBFBD>Ʈ1<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ʈ2<C6AE><32> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20><> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>");
return false;
}
else
{
m_Part1UnifiedAgentAddr.set_addr(szPart1UnifiedAgentAddr, DBAgentAdminToolServerListen);
m_cRestrictedPart1ToPart2Level = static_cast<unsigned char>(atoi(szRestrictedPart1ToPart2Level));
m_cMaxTransferPart1ToPart2Count = static_cast<unsigned char>(atoi(szMaxTransferCount));
}
}
else if (UnifiedConst::Part2Selectable == m_eAgentServerType)
{
char szSelectableUnifiedServerNum[MAX_INI_STRING];
if (!Registry::ReadString(szINIFileName, "DBAgentServer",
"Part2SelectableUnifiedServerNum", szSelectableUnifiedServerNum, MAX_INI_STRING))
{
ERRLOG0(g_Log, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>");
return false;
}
m_dwSelectableUnifiedServerNum = atol(szSelectableUnifiedServerNum);
}
return true;
}
ERRLOG0(g_Log, szErrorString);
return false;
}
bool CServerSetup::InitUIDServer(void)
{
char szFreeCheck[MAX_INI_STRING] = "";
char szIgnoreFlag[MAX_INI_STRING] = "";
char szBillingType[MAX_INI_STRING] = "";
char szHanUnitedBillingAddr[MAX_INI_STRING] = "";
char szBillingDBConnType[MAX_INI_STRING] = "";
char szGammaniaCode[MAX_INI_STRING] = "";
char szGammaniaRegin[MAX_INI_STRING] = "";
char szGammaniaAddr[MAX_INI_STRING] = "";
char szGammaniaPort1[MAX_INI_STRING] = "";
char szGammaniaPort2[MAX_INI_STRING] = "";
const char* szErrorString = "Unknown Error";
if (!Registry::ReadString(szINIFileName, "UIDServer", "FreeCheck", szFreeCheck, MAX_INI_STRING))
{
szErrorString = "UIDServer : <20><><EFBFBD><EFBFBD>üũ <20><><EFBFBD><EFBFBD>.";
}
else if (!Registry::ReadString(szINIFileName, "UIDServer", "IgnoreFlag", szIgnoreFlag, MAX_INI_STRING))
{
szErrorString = "UIDServer : <20>÷<EFBFBD><C3B7><EFBFBD> <20><><EFBFBD><EFBFBD> üũ <20><><EFBFBD><EFBFBD>.";
}
else if (!Registry::ReadString(szINIFileName, "UIDServer", "BillingType", szBillingType, MAX_INI_STRING))
{
szErrorString = "UIDServer : <20><><EFBFBD><EFBFBD> Ÿ<><C5B8> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, "UIDServer", "GammaniaServerCode", szGammaniaCode, MAX_INI_STRING))
{
szErrorString = "UIDServer : <20><><EFBFBD><EFBFBD><EFBFBD>Ͼ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڵ<EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, "UIDServer", "GammaniaRegin", szGammaniaRegin, MAX_INI_STRING))
{
szErrorString = "UIDServer : <20><><EFBFBD><EFBFBD><EFBFBD>Ͼ<EFBFBD> Regin <20>ڵ<EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, "UIDServer", "GammaniaAddr", szGammaniaAddr, MAX_INI_STRING))
{
szErrorString = "UIDServer : <20><><EFBFBD><EFBFBD><EFBFBD>Ͼ<EFBFBD> Addr <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, "UIDServer", "GammaniaPort1", szGammaniaPort1, MAX_INI_STRING))
{
szErrorString = "UIDServer : <20><><EFBFBD><EFBFBD><EFBFBD>Ͼ<EFBFBD> Port1 <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, "UIDServer", "GammaniaPort2", szGammaniaPort2, MAX_INI_STRING))
{
szErrorString = "UIDServer : <20><><EFBFBD><EFBFBD><EFBFBD>Ͼ<EFBFBD> Port2 <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else
{
////////////////////////////////////////////////////////////////////////
// edith 2008.01.21 <20><><EFBFBD><EFBFBD><EFBFBD>Ͼ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>..
strcpy(m_szGammaniaCode, szGammaniaCode);
strcpy(m_szGammaniaRegin, szGammaniaRegin);
strcpy(m_szGammaniaAddr, szGammaniaAddr);
m_GammaniaPort1 = atoi(szGammaniaPort1);
m_GammaniaPort2 = atoi(szGammaniaPort2);
////////////////////////////////////////////////////////////////////////
m_bFreeCheck = (1 == atoi(szFreeCheck));
m_bIgnoreFlag = (1 == atoi(szIgnoreFlag));
m_dwBillingType = atoi(szBillingType);
if (m_dwBillingType == GamaUnitedBilling &&
!Registry::ReadString(szINIFileName, "UIDServer", "HanUnitedBillingAddr",
szHanUnitedBillingAddr, MAX_INI_STRING))
{
szErrorString = "UIDServer : <20>Ѱ<EFBFBD><D1B0><EFBFBD> <20><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD> <20>ּ<EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (
!Registry::ReadString(szINIFileName, "UIDServer", "BillingDBType", szBillingDBConnType, MAX_INI_STRING) ||
!Registry::ReadString(szINIFileName, "UIDServer", "BillingDBAddr", m_stKeeperDBInfo.m_szDBAddr, DBInfo::MAX_BUFFER) ||
!Registry::ReadString(szINIFileName, "UIDServer", "BillingDBName", m_stKeeperDBInfo.m_szDBName, DBInfo::MAX_BUFFER) ||
!Registry::ReadString(szINIFileName, "UIDServer", "BillingDBUser", m_stKeeperDBInfo.m_szDBUser, DBInfo::MAX_BUFFER) ||
!Registry::ReadString(szINIFileName, "UIDServer", "BillingDBPass", m_stKeeperDBInfo.m_szDBPass, DBInfo::MAX_BUFFER))
{
szErrorString = "UIDServer : <20><><EFBFBD><EFBFBD> DB <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else
{
m_stKeeperDBInfo.m_ConnType =
GetConnTypeFromString(szBillingDBConnType);
unsigned short usPort = static_cast<unsigned short>(
Registry::ReadInt(szINIFileName, "UIDServer", "HanUnitedBillingPort"));
m_HanUnitedBillingAddr.set_addr(szHanUnitedBillingAddr, usPort);
return true;
}
}
ERRLOG0(g_Log, szErrorString);
return false;
}
bool CServerSetup::InitChatServer(void)
{
char szChatServerID[MAX_INI_STRING] = "";
char szDBAgentServerAddr[MAX_INI_STRING] = "";
char szChatPingCheck[MAX_INI_STRING] = "";
char szChatToolIPCheck[MAX_INI_STRING] = "";
char szAdminToolDBType[MAX_INI_STRING] = "";
const char* szErrorString = "Unknown Error";
if (!Registry::ReadString(szINIFileName, "ChatServer", "ServerID", szChatServerID, MAX_INI_STRING))
{
szErrorString = "ChatServer : <20><><EFBFBD><EFBFBD> ID <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, "ChatServer", "PingCheck", szChatPingCheck, MAX_INI_STRING))
{
szErrorString = "ChatServer : <20><> üũ <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, "ChatServer", "UserIPCheck", szChatToolIPCheck, MAX_INI_STRING))
{
szErrorString = "ChatServer : <20><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD> <20><> IP üũ <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, "ChatServer", "DBAgentAddress", szDBAgentServerAddr, MAX_INI_STRING))
{
szErrorString = "ChatServer : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ּ<EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (
!Registry::ReadString(szINIFileName, "ChatServer", "AdminToolDBType", szAdminToolDBType, MAX_INI_STRING) ||
!Registry::ReadString(szINIFileName, "ChatServer", "AdminToolDBAddr", m_stAdminToolDBInfo.m_szDBAddr, DBInfo::MAX_BUFFER) ||
!Registry::ReadString(szINIFileName, "ChatServer", "AdminToolDBName", m_stAdminToolDBInfo.m_szDBName, DBInfo::MAX_BUFFER) ||
!Registry::ReadString(szINIFileName, "ChatServer", "AdminToolDBUser", m_stAdminToolDBInfo.m_szDBUser, DBInfo::MAX_BUFFER) ||
!Registry::ReadString(szINIFileName, "ChatServer", "AdminToolDBPass", m_stAdminToolDBInfo.m_szDBPass, DBInfo::MAX_BUFFER))
{
szErrorString = "ChatServer : <20> DB <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>(For chat ban)";
}
else
{
m_stAdminToolDBInfo.m_ConnType =
GetConnTypeFromString(szAdminToolDBType);
m_ServerID = atoi(szChatServerID);
m_bPingCheck = (1 == atoi(szChatPingCheck)) ? true : false;
m_bChatToolIPCheck = (1 == atol(szChatToolIPCheck)) ? true : false;
m_ServerAddress[AgentServer].set_addr(szDBAgentServerAddr, DBAgentServerChatServerListen);
return true;
}
ERRLOG0(g_Log, szErrorString);
return false;
}
bool CServerSetup::InitLogServer()
{
char szLogDBType[MAX_INI_STRING] = "";
if (!Registry::ReadString(szINIFileName, "LogServer", "LogDBType", szLogDBType, MAX_INI_STRING) ||
!Registry::ReadString(szINIFileName, "LogServer", "LogDBAddr", m_stLogDBInfo.m_szDBAddr, DBInfo::MAX_BUFFER) ||
!Registry::ReadString(szINIFileName, "LogServer", "LogDBName", m_stLogDBInfo.m_szDBName, DBInfo::MAX_BUFFER) ||
!Registry::ReadString(szINIFileName, "LogServer", "LogDBUser", m_stLogDBInfo.m_szDBUser, DBInfo::MAX_BUFFER) ||
!Registry::ReadString(szINIFileName, "LogServer", "LogDBPass", m_stLogDBInfo.m_szDBPass, DBInfo::MAX_BUFFER))
{
ERRLOG0(g_Log, "LogServer : <20>α<EFBFBD> DB <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>");
}
else
{
m_stLogDBInfo.m_ConnType = GetConnTypeFromString(szLogDBType);
return true;
}
return true;
}
const char* CServerSetup::GetServerWindowName(ServerType eServerType)
{
const char* lpWindowName = 0;
switch(eServerType)
{
case LoginServer: lpWindowName = "Login Server"; break;
case AuthServer: lpWindowName = "Auth Server"; break;
case GameServer: lpWindowName = "Game Server"; break;
case AgentServer: lpWindowName = "Agent Server"; break;
case UIDServer: lpWindowName = "UID Server"; break;
case AdminToolServer: lpWindowName = "AdminToolServer"; break;
case LogServer: lpWindowName = "Log Server"; break;
case ChatServer: lpWindowName = "Chat Server"; break;
}
return lpWindowName;
}
const char* CServerSetup::GetManageClientWindowName()
{
return "ManageClient";
}
bool CServerSetup::InitGameServer(void)
{
// <09><><EFBFBD>⼭ Ŀ<>ǵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ľ<EFBFBD><C4BD>ؼ<EFBFBD><D8BC><EFBFBD> <20><><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>־<EFBFBD><D6BE>ָ<EFBFBD> <20><>;
// <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> "-z1 -c1"<22><> Ŀ<>ǵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD><CFB6><EFBFBD> <20><><EFBFBD><EFBFBD> [Zone_0101]
char szSection[MAX_INI_STRING];
char szServerID[MAX_INI_STRING] = "";
char szPingCheck[MAX_INI_STRING] = "";
char szSpeedHack[MAX_INI_STRING] = "";
char szLotteryEvent[MAX_INI_STRING] = "";
char szLevelUpEvent[MAX_INI_STRING] = "";
char szDeathPenaltyEvent[MAX_INI_STRING] = "";
char szExp[MAX_INI_STRING] = "";
char szDrop[MAX_INI_STRING] = "";
char szFame[MAX_INI_STRING] = "";
char szRefine[MAX_INI_STRING] = "";
char szMileage[MAX_INI_STRING] = "";
char szEquipCorr[MAX_INI_STRING] = "";
char szBattleLimit[MAX_INI_STRING] = "";
char szBattleLimitPer[MAX_INI_STRING] = "";
char szDBAgentServerAddr[MAX_INI_STRING] = "";
char szLogServerAddr[MAX_INI_STRING] = "";
char szChatServerAddr[MAX_INI_STRING] = "";
char szNationType[MAX_INI_STRING] = "";
char szBattleServer[MAX_INI_STRING] = "";
const char* szErrorString = "(z:%02d, c:%02d) Unknown Error";
int nZoneIndex = GetZoneFromCmdLine();
int nChannelIndex = GetChannelFromCmdLine();
int nLength = _snprintf( szSection, MAX_INI_STRING - 1, "Zone_%02d%02d", nZoneIndex, nChannelIndex);
if (nLength <= 0)
{
szErrorString = "(z:%02d, c:%02d) Ŀ<>ǵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ľ<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, szSection, "ServerID", szServerID, MAX_INI_STRING))
{
szErrorString = "(z:%02d, c:%02d) <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.";
}
else if (!Registry::ReadString(szINIFileName, szSection, "PingCheck", szPingCheck, MAX_INI_STRING))
{
szErrorString = "(z:%02d, c:%02d) <20><>üũ <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>.";
}
else if (!Registry::ReadString(szINIFileName, szSection, "SpeedHackCheck", szSpeedHack, MAX_INI_STRING))
{
szErrorString = "(z:%02d, c:%02d) <20><>üũ <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>.";
}
else if (!Registry::ReadString(szINIFileName, szSection, "LotteryEvent", szLotteryEvent, MAX_INI_STRING))
{
szErrorString = "(z:%02d, c:%02d) <20><><EFBFBD><EFBFBD> <20>̺<EFBFBD>Ʈ üũ <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>.";
}
else if (!Registry::ReadString(szINIFileName, szSection, "LevelUpEvent", szLevelUpEvent, MAX_INI_STRING))
{
szErrorString = "(z:%02d, c:%02d) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̺<EFBFBD>Ʈ üũ <20><><EFBFBD><EFBFBD>.";
}
else if (!Registry::ReadString(szINIFileName, szSection, "DeathPenaltyEvent", szDeathPenaltyEvent, MAX_INI_STRING))
{
szErrorString = "(z:%02d, c:%02d) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>г<EFBFBD>Ƽ <20>̺<EFBFBD>Ʈ üũ <20><><EFBFBD><EFBFBD>.";
}
else if (!Registry::ReadString(szINIFileName, szSection, "ExpRate", szExp, MAX_INI_STRING))
{
szErrorString = "(z:%02d, c:%02d) <20><><EFBFBD><EFBFBD>ġ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.";
}
else if (!Registry::ReadString(szINIFileName, szSection, "DropRate", szDrop, MAX_INI_STRING))
{
szErrorString = "(z:%02d, c:%02d) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.";
}
else if (!Registry::ReadString(szINIFileName, szSection, "Fame", szFame, MAX_INI_STRING))
{
szErrorString = "(z:%02d, c:%02d) <20><><EFBFBD><EFBFBD>ġ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.";
}
else if (!Registry::ReadString(szINIFileName, szSection, "Refine", szRefine, MAX_INI_STRING))
{
szErrorString = "(z:%02d, c:%02d) <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.";
}
else if (!Registry::ReadString(szINIFileName, szSection, "Mileage", szMileage, MAX_INI_STRING))
{
szErrorString = "(z:%02d, c:%02d) <20><><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.";
}
else if (!Registry::ReadString(szINIFileName, szSection, "EquipCorrRate", szEquipCorr, MAX_INI_STRING))
{
szErrorString = "(z:%02d, c:%02d) <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.";
}
else if (!Registry::ReadString(szINIFileName, szSection, "DBAgentServerAddr", szDBAgentServerAddr, MAX_INI_STRING))
{
szErrorString = "(z:%02d, c:%02d) <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ּ<EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, szSection, "LogServerAddr", szLogServerAddr, MAX_INI_STRING))
{
szErrorString = "(z:%02d, c:%02d) <20>α<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ּ<EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, szSection, "ChatServerAddr", szChatServerAddr, MAX_INI_STRING))
{
szErrorString = "(z:%02d, c:%02d) ä<><C3A4> <20><><EFBFBD><EFBFBD> <20>ּ<EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, szSection, "BattleUserLimit", szBattleLimit, MAX_INI_STRING))
{
szErrorString = "(z:%02d, c:%02d) <20><>Ʋ<EFBFBD>׶<EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ο<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.";
}
else if (!Registry::ReadString(szINIFileName, szSection, "BattleUserLimitPer", szBattleLimitPer, MAX_INI_STRING))
{
szErrorString = "(z:%02d, c:%02d) <20><>Ʋ<EFBFBD>׶<EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ο<EFBFBD> <20>ۼ<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.";
}
else if (!Registry::ReadString(szINIFileName, "Zone_ETC", "GameServerNation", szNationType, MAX_INI_STRING))
{
szErrorString = "(z:%02d, c:%02d) <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else if (!Registry::ReadString(szINIFileName, "Zone_ETC", "BattleServerGroup", szBattleServer, MAX_INI_STRING))
{
szErrorString = "(z:%02d, c:%02d) <20><>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>б<EFBFBD> <20><><EFBFBD><EFBFBD>";
}
else
{
m_ServerID = atol(szServerID);
m_bPingCheck = (1 == atol(szPingCheck));
m_bHackCheck = (1 == atol(szSpeedHack));
m_bLotteryEvent = (1 == atol(szLotteryEvent));
m_bLevelUpEvent = (1 == atol(szLevelUpEvent));
m_bDeathPenaltyEvent = (1 == atol(szDeathPenaltyEvent));
m_bBattleGame = (1 == atol(szBattleServer));
m_dwExp = atol(szExp);
m_dwDrop = atol(szDrop);
m_dwFame = atol(szFame);
m_dwRefine = atol(szRefine);
m_dwMileage = atol(szMileage);
m_dwEquipCorr = atoi(szEquipCorr);
m_wBattleLimit = static_cast<unsigned short>(atol(szBattleLimit));
m_wBattleLimitPer = static_cast<unsigned short>(atol(szBattleLimitPer));
m_eNationType = static_cast<GameRYL::ServiceNation>(atoi(szNationType));
m_ServerAddress[AgentServer].set_addr(szDBAgentServerAddr, DBAgentServerGameServerListen);
m_ServerAddress[LogServer].set_addr(szLogServerAddr, LogServerOtherServerListen);
m_ServerAddress[ChatServer].set_addr(szChatServerAddr, ChatServerGameServerListen);
CTCPFactory tcpFactory;
char szMyAddress[MAX_INI_STRING];
tcpFactory.GetNetworkInfo(szMyAddress, MAX_INI_STRING);
m_P1GameServerUDPAddr.set_addr(szMyAddress, GetP1GameServerUDPPort(m_ServerID));
return true;
}
ERRLOG2(g_Log, szErrorString, nZoneIndex, nChannelIndex);
return false;
}
unsigned short CServerSetup::GetGameServerTCPPort(unsigned long dwServerID)
{
SERVER_ID serverID;
serverID.dwID = dwServerID;
return serverID.GetZone() + serverID.GetChannel() * MAX_ZONE + GameServerClientBaseListen;
}
unsigned short CServerSetup::GetP1GameServerUDPPort(unsigned long dwServerID)
{
SERVER_ID serverID;
serverID.dwID = dwServerID;
return serverID.GetZone() + serverID.GetChannel() * MAX_ZONE + P1GameServerClientUDPListen;
}
char CServerSetup::GetZoneFromCmdLine()
{
char szCommandLineBuffer[MAX_PATH];
const char* szDelimit = " \r\n\t";
char cZone = 1;
int nLength = _snprintf(szCommandLineBuffer, MAX_PATH - 1, "%s", GetCommandLine());
if(nLength < 0)
{
// TODO : write error code
ERRLOG0(g_Log, "CommandLine Parse failed - Zone");
}
else
{
char* szToken = strtok(szCommandLineBuffer, szDelimit);
while(0 != szToken)
{
if(0 == strcmp(szToken, "-z"))
{
// <20><> <20><>ȣ <20>Ľ<EFBFBD>
szToken = strtok(0, szDelimit);
if(0 != szToken)
{
cZone = static_cast<char>(atoi(szToken));
break;
}
}
szToken = strtok(0, szDelimit);
}
}
return cZone;
}
char CServerSetup::GetChannelFromCmdLine()
{
char szCommandLineBuffer[MAX_PATH];
const char* szDelimit = " \r\n\t";
char cChannel = 0;
int nLength = _snprintf(szCommandLineBuffer, MAX_PATH - 1, "%s", GetCommandLine());
if(nLength < 0)
{
// TODO : write error code
ERRLOG0(g_Log, "CommandLine Parse failed - Channel");
}
else
{
char* szToken = strtok(szCommandLineBuffer, szDelimit);
while(0 != szToken)
{
if(0 == strcmp(szToken, "-c"))
{
// Channel <20><>ȣ <20>Ľ<EFBFBD>
szToken = strtok(0, szDelimit);
if(0 != szToken)
{
cChannel = static_cast<char>(atoi(szToken));
break;
}
}
szToken = strtok(0, szDelimit);
}
}
return cChannel;
}

View File

@@ -0,0 +1,301 @@
#ifndef _CGAMESERVER_ADDRESS_H_
#define _CGAMESERVER_ADDRESS_H_
#include <winsock2.h>
#include <windows.h>
#include <vector>
#include <DB/OleDB.h>
#include <Network/Address/INET_Addr.h>
#include <Network/Packet/PacketStruct/UnifiedCharPacket.h>
#include <Utility/Setup/GlobalConstants.h>
class CServerSetup
{
public:
static CServerSetup& GetInstance();
enum DefaultPorts
{
// Ruleset
// 10000 ~ 11000 port : <20>ܺ<EFBFBD> <20><><EFBFBD><EFBFBD>
// 11001 ~ 12000 port : <20><EFBFBD><E7B3BB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// 12001 ~ 13000 port : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>θ<EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD>γ<EFBFBD><CEB3><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
// Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ -> <20><><EFBFBD><EFBFBD> (<28>ܺ<EFBFBD> -> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> <20>ȵ<EFBFBD><><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> <20>ϵ<EFBFBD><CFB5>ڵ<EFBFBD> <20>Ǿ<EFBFBD> <20><><EFBFBD><EFBFBD>))
LoginServerLauncherListen = 10101, // <20><>ó -> <20>α<EFBFBD><CEB1>μ<EFBFBD><CEBC><EFBFBD>
AuthServerClientListen = 10210, // Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ -> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ -> <20><><EFBFBD><EFBFBD> (<28>ܺ<EFBFBD> -> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.. <20><>Ʈ2<C6AE><32> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
P1ChatServerClientListen = 10111,
// Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ -> <20><><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD> (<28>ܺ<EFBFBD> -> <20><><EFBFBD><EFBFBD>, <20><>Ģ<EFBFBD><C4A2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٲ㵵 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.)
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TCP<43><50>Ʈ. GameServerBaseTCPPort + ä<><C3A4> <20><>ȣ(0~4) * 20 + <20><> <20><>ȣ(1~20)
GameServerClientBaseListen = 10400,
MAX_ZONE = 20,
MAX_CHANNEL = 5,
// Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ -> <20><><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD> (<28>ܺ<EFBFBD> -> <20><><EFBFBD><EFBFBD>, <20><>Ģ<EFBFBD><C4A2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٲ㵵 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.)
// <20><>Ʈ 1 <20><><EFBFBD><EFBFBD><EFBFBD>̴<EFBFBD>. <20><>Ʈ 2<><32> UDP<44><50> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ´<CAB4>.
P1GameServerClientUDPListen = 10500,
// <20><><EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD><C6AE>, <20>ܺο<DCBA><CEBF><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ip<69><70> <20><><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> <20>Ѵ<EFBFBD>.
// 11001 ~ 11100 <20><>Ʈ<EFBFBD><C6AE> PCAnywhereȤ<65><C8A4> Remote Desktop<6F><70><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ؼ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>д<EFBFBD>.
P1AdminToolServerClientListen = 11121, // <20><>Ʈ 1 <20><EFBFBD><EEBFB5> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ -> <20><>Ʈ 1 <20><EFBFBD><EEBFB5> <20><><EFBFBD><EFBFBD>
P2AdminToolServerClientListen = 11122, // <20><>Ʈ 2 <20><EFBFBD><EEBFB5> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ -> <20><>Ʈ 2 <20><EFBFBD><EEBFB5> <20><><EFBFBD><EFBFBD>
LogServerLogClientListen = 11123, // <20>α<EFBFBD> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ(<28>α<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD> <20><>) -> <20>α<EFBFBD> <20><><EFBFBD><EFBFBD>
ManageServerManageToolListen = 11124, // <20><><EFBFBD><EFBFBD> <20><> -> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
ChatServerMonitoringToolListen = 11125, // ä<><C3A4> <20><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD> <20><> -> ä<>ü<EFBFBD><C3BC><EFBFBD>
StatServerManageServerListen = 11126, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> -> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28>ܺο<DCBA><CEBF><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ƾ<EFBFBD> <20>Ѵ<EFBFBD>, <20><><EFBFBD>ΰ<EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>)
UIDServerDBAgentServerListen = 12531, // DB<44>߰輭<DFB0><E8BCAD> -> UID<49><44><EFBFBD><EFBFBD>
LoginServerDBAgentServerListen = 12532, // DB<44>߰輭<DFB0><E8BCAD> -> <20>α<EFBFBD><CEB1>μ<EFBFBD><CEBC><EFBFBD>
DBAgentServerGameServerListen = 12533, // <20><><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD> -> DB<44>߰輭<DFB0><E8BCAD>
DBAgentServerAuthServerListen = 12534, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -> DB<44>߰輭<DFB0><E8BCAD>
DBAgentServerChatServerListen = 12535, // ä<>ü<EFBFBD><C3BC><EFBFBD> -> DB<44>߰輭<DFB0><E8BCAD>
DBAgentAdminToolServerListen = 12536, // <20><EFBFBD><EEBFB5> <20><><EFBFBD><EFBFBD> -> DB<44>߰輭<DFB0><E8BCAD>
ChatServerGameServerListen = 12537, // <20><><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD> -> ä<>ü<EFBFBD><C3BC><EFBFBD>
ManageServerManageClientListen = 12538, // <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ -> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
LogServerOtherServerListen = 12539 // <20>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -> <20>α<EFBFBD> <20><><EFBFBD><EFBFBD>
};
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<4F><57><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GamaBilling = 1, // <20>ѱ<EFBFBD> <20>Ϲݰ<CFB9><DDB0><EFBFBD>(<28><><EFBFBD><EFBFBD> <20><><EFBFBD>ݹ<EFBFBD><DDB9><EFBFBD>)
GamaUnitedBilling = 2, // <20>ѱ<EFBFBD> <20><><EFBFBD>հ<EFBFBD><D5B0><EFBFBD>
YouxiLandBilling = 3, // <20><EFBFBD><EBB8B8> <20><><EFBFBD><EFBFBD>
JapanBilling = 4, // <20>Ϻ<EFBFBD><CFBA><EFBFBD> <20><><EFBFBD><EFBFBD>
GammaniaBilling = 5, // <20><><EFBFBD><EFBFBD><EFBFBD>Ͼƿ<CFBE> <20><><EFBFBD><EFBFBD>
MaxBillingType = 6
};
enum AuthType
{
ROWGlobalAuth = 0, // ROW<4F><57><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
HangameAuth = 1, // <20>Ѱ<EFBFBD><D1B0>ӿ<EFBFBD> <20><><EFBFBD><EFBFBD>
GamaAuth = 2, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD>
YouxiLandAuth = 3, // <20><EFBFBD><EBB8B8> <20><><EFBFBD><EFBFBD>
JapanAuth = 4, // <20>Ϻ<EFBFBD><CFBA><EFBFBD> <20><><EFBFBD><EFBFBD>
GammaniaAuth = 5, // <20><><EFBFBD><EFBFBD><EFBFBD>Ͼ<EFBFBD> <20><><EFBFBD><EFBFBD>
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; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
unsigned long m_dwLimitVer; // <20>ּ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
unsigned long m_dwClientVer; // Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
char m_chPatchAddr[MAX_PATH]; // <20><>ġ <20><><EFBFBD><EFBFBD> <20>ּ<EFBFBD> <20><><EFBFBD>ڿ<EFBFBD>
unsigned long m_dwBillingType;
unsigned long m_dwAuthType;
bool m_bPingCheck; // <20><> üũ
bool m_bAlone; // ȥ<><C8A5> <20><><EFBFBD><EFBFBD>
bool m_bHanCheck; // <20>ѱ<EFBFBD> üũ
bool m_bHackCheck; // <20><> üũ
bool m_bAdminIPCheck; // <20><><EFBFBD><EFBFBD> IP üũ
bool m_bDuelModeCheck; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> üũ
bool m_bLotteryEvent; // <20><><EFBFBD><EFBFBD> <20>̺<EFBFBD>Ʈ üũ
bool m_bLevelUpEvent; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̺<EFBFBD>Ʈ üũ
bool m_bDeathPenaltyEvent; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>г<EFBFBD>Ƽ <20>̺<EFBFBD>Ʈ üũ
bool m_bFreeCheck; // <20><><EFBFBD><EFBFBD> üũ
bool m_bIgnoreFlag; // <20>÷<EFBFBD><C3B7><EFBFBD> <20><><EFBFBD><EFBFBD>
bool m_bBattleAuth; // <20><>Ʋ<EFBFBD>׶<EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ΰ<EFBFBD>?
bool m_bBattleGame; // <20><>Ʋ<EFBFBD>׶<EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ΰ<EFBFBD>?
bool m_bBattleAgent; // <20><>Ʋ<EFBFBD>׶<EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ΰ<EFBFBD>?
bool m_bSupressCharCreate; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ°<CFB4>?
bool m_bSupressCharDelete; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ°<CFB4>?
bool m_bTestGroupAuth; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>׼<EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
bool m_bChatToolIPCheck; // <20><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD> <20><><EFBFBD><EFBFBD> IP üũ <20><><EFBFBD><EFBFBD>
unsigned char m_cRestrictedPart1ToPart2Level; // Part1<74><31><EFBFBD><EFBFBD> Part2<74><32> ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʿ<EFBFBD><CABF><EFBFBD> <20>ּ<EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
unsigned char m_cMaxTransferPart1ToPart2Count; // Part1<74><31><EFBFBD><EFBFBD> Part2<74><32> ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȸ<><C8B8>
unsigned long m_dwUserLimit; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
unsigned long m_dwCheckSum; // üũ<C3BC><C5A9>
unsigned long m_dwExp; // <20><><EFBFBD><EFBFBD>ġ(Percentage)
unsigned long m_dwDrop; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Percentage)
unsigned long m_dwFame; // <20><><EFBFBD><EFBFBD>ġ(Percentage)
unsigned long m_dwRefine; // <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD>(Percentage)
unsigned long m_dwMileage; // <20><><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD>(Percentage)
unsigned long m_dwEquipCorr;
unsigned short m_wBattleLimit; // <20><>Ʋ<EFBFBD>׶<EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ο<EFBFBD>
unsigned short m_wBattleLimitPer; // <20><>Ʋ<EFBFBD>׶<EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ۼ<EFBFBD>Ʈ
// <20><><EFBFBD><EFBFBD><EFBFBD>Ͼ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
char m_szGammaniaCode[32];
char m_szGammaniaRegin[32];
char m_szGammaniaAddr[32]; // <20><><EFBFBD><EFBFBD><EFBFBD>Ͼ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD>
int m_GammaniaPort1;
int m_GammaniaPort2;
INET_Addr m_ServerAddress[MaxType]; // <20><><EFBFBD><EFBFBD> <20>ּҵ<D6BC>
INET_Addr m_GameServerUDPAddr;
INET_Addr m_HanUnitedBillingAddr; // <20>Ѱ<EFBFBD><D1B0><EFBFBD> <20><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ּ<EFBFBD>(UID<49><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
INET_Addr m_Part1UnifiedAgentAddr; // <20><>Ʈ1 <20><><EFBFBD>ձ<EFBFBD><D5B1><EFBFBD> <20>߰輭<DFB0><E8BCAD> <20>ּ<EFBFBD>
INET_Addr m_P1GameServerUDPAddr; // <20><>Ʈ1 <20><><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD><EFBFBD><EFBFBD> UDP<44>ּ<EFBFBD>
DBInfo m_stPart1UnifiedDBInfo; // <20><>Ʈ1 <20><><EFBFBD>ձ<EFBFBD><D5B1><EFBFBD> DB <20><><EFBFBD><EFBFBD>
DBInfo m_stAdminToolDBInfo; // <20> DB <20><><EFBFBD><EFBFBD>
DBInfo m_stKeeperDBInfo; // <20><><EFBFBD><EFBFBD> DB <20><><EFBFBD><EFBFBD>
DBInfo m_stAuthDBInfo; // <20><><EFBFBD><EFBFBD> DB <20><><EFBFBD><EFBFBD>
DBInfo m_stGameDBInfo; // <20><><EFBFBD><EFBFBD> DB <20><><EFBFBD><EFBFBD>
DBInfo m_stLogDBInfo; // <20>α<EFBFBD> DB <20><><EFBFBD><EFBFBD>
unsigned long m_dwGameContentsFlag; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD>
GameRYL::ServiceNation m_eNationType; // <20><><EFBFBD><EFBFBD> Ÿ<><C5B8> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ϻΰ<CFBA> <20>ٸ<EFBFBD><D9B8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
std::vector<unsigned long> m_vecAdminUID; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> UID <20><><EFBFBD><EFBFBD>Ʈ
UnifiedConst::AgentServerType m_eAgentServerType; // <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD> Ÿ<><C5B8> (<28><>Ʈ1, <20><>Ʈ2, <20><>Ʈ1<C6AE><31><EFBFBD><EFBFBD>...)
unsigned long m_dwSelectableUnifiedServerNum; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ս<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
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