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,577 @@
#include <Log/ServerLog.h>
#include "RylDBStoreCommand.h"
#include "RylDBCharCommand.h"
namespace RylDBCommand
{
#define BOUNDED_SUBTRACT(data, minusval, minbound) if ((data) < (minusval) + (minbound)) { (data) = (minbound); } else { (data) -= (minusval); }
void DBErrorLogByCID(DBErrorType eErrorType,
unsigned long dwCID, HRESULT hr,
const char* szClassName, const CString& DBStatus)
{
switch(eErrorType)
{
case DBERR_CONVERT_FAILED:
ERRLOG2(g_Log, "CID:%10u / %s <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3> <20><><EFBFBD><EFBFBD>", dwCID, szClassName);
break;
case DBERR_SETDATA_FAILED:
ERRLOG4(g_Log, "CID:%10u / hr:0x%08x / %s SetData <20><><EFBFBD><EFBFBD> : DBStatus:%s",
dwCID, hr, szClassName, DBStatus);
break;
case DBERR_UPDATE_FAILED:
ERRLOG4(g_Log, "CID:%10u / hr:0x%08x / %s Update <20><><EFBFBD><EFBFBD> : DBStatus:%s",
dwCID, hr, szClassName, DBStatus);
break;
}
}
void CCharData::Init(void)
{
m_CID = 0;
memset(m_Name, 0, sizeof(char) * CHAR_INFOST::MAX_NAME_LEN);
memset(m_EquipData, 0, sizeof(BYTE) * MAX_EQUIP_DATA);
m_Sex = m_Hair = m_Face = m_Race = 0;
m_Class = 0;
m_Fame = m_Mileage = m_GID = m_PID = 0;
m_Level = 0;
m_Gold = 0;
m_IP = m_STR = m_DEX = m_CON = m_INT = m_WIS = m_HP = m_MP = 0;
m_Exp = 0LL;
m_Chance = 0;
m_NameLen = m_EquipLen = 0;
// Data Status
m_CIDStatus = m_NameStatus = m_SexStatus = m_HairStatus =
m_FaceStatus = m_RaceStatus = m_ClassStatus = m_FameStatus =
m_MileageStatus = m_GIDStatus = m_PIDStatus = m_LevelStatus =
m_GoldStatus = m_IPStatus = m_STRStatus = m_DEXStatus =
m_CONStatus = m_INTStatus = m_WISStatus = m_HPStatus = m_MPStatus = m_ExpStatus =
m_ChanceStatus = m_EquipDataStatus = DBSTATUS_S_OK;
}
bool CCharData::operator == (const CCharData& rhs) const
{
return (m_CID == rhs.m_CID &&
0 == memcmp(m_Name, rhs.m_Name, sizeof(char) * CHAR_INFOST::MAX_NAME_LEN) &&
m_Sex == rhs.m_Sex &&
m_Hair == rhs.m_Hair &&
m_Face == rhs.m_Face &&
m_Race == rhs.m_Race &&
m_Class == rhs.m_Class &&
m_Fame == rhs.m_Fame &&
m_Mileage == rhs.m_Mileage &&
m_GID == rhs.m_GID &&
m_PID == rhs.m_PID &&
m_Level == rhs.m_Level &&
m_Gold == rhs.m_Gold &&
m_IP == rhs.m_IP &&
m_STR == rhs.m_STR &&
m_DEX == rhs.m_DEX &&
m_CON == rhs.m_CON &&
m_INT == rhs.m_INT &&
m_WIS == rhs.m_WIS &&
m_HP == rhs.m_HP &&
m_MP == rhs.m_MP &&
m_Exp == rhs.m_Exp &&
m_Chance == rhs.m_Chance &&
0 == memcmp(m_EquipData, rhs.m_EquipData, sizeof(BYTE) * MAX_EQUIP_DATA));
}
void CCharData::LogError(DBErrorType eErrorType, HRESULT hr)
{
DBErrorLogByCID(eErrorType, GetCID(), hr, "CCharData", GetDBStatus());
}
CString CCharData::GetDBStatus()
{
CString dbStatus;
dbStatus.Format("CID:%10u(0x%08x) "
"Name:%s(0x%08x) "
"Sex:%d(0x%08x) "
"Hair:%d(0x%08x) "
"Face:%d(0x%08x) "
"Race:%d(0x%08x) "
"Class:%d(0x%08x) "
"Fame:%6d(0x%08x) "
"Mileage:%6d(0x%08x) "
"GID:%d(0x%08x) "
"PID:%d(0x%08x) "
"Level:%d(0x%08x) "
"Gold:%10u(0x%08x) "
"IP:%d(0x%08x) "
"STR:%3d(0x%08x) "
"DEX:%3d(0x%08x) "
"CON:%3d(0x%08x) "
"INT:%3d(0x%08x) "
"WIS:%3d(0x%08x) "
"HP:%d(0x%08x) "
"MP:%d(0x%08x) "
"Exp:%I64u(0x%08x) "
"Chance:%d(0x%08x) "
"Equipdata(0x%08x) ",
m_CID, m_CIDStatus,
m_Name, m_NameStatus,
m_Sex, m_SexStatus,
m_Hair, m_HairStatus,
m_Face, m_FaceStatus,
m_Race, m_RaceStatus,
m_Class, m_ClassStatus,
m_Fame, m_FameStatus,
m_Mileage, m_MileageStatus,
m_GID, m_GIDStatus,
m_PID, m_PIDStatus,
m_Level, m_LevelStatus,
m_Gold, m_GoldStatus,
m_IP, m_IPStatus,
m_STR, m_STRStatus,
m_DEX, m_DEXStatus,
m_CON, m_CONStatus,
m_INT, m_INTStatus,
m_WIS, m_WISStatus,
m_HP, m_HPStatus,
m_MP, m_MPStatus,
m_Exp, m_ExpStatus,
m_Chance, m_ChanceStatus,
m_EquipDataStatus);
return dbStatus;
}
void CSkillData::Init(void)
{
m_CID = 0;
memset(m_Skill, 0, sizeof(BYTE) * sizeof(SKILL));
m_SkillLength = 0;
m_CIDStatus = m_SkillStatus = DBSTATUS_S_OK;
}
void CSkillData::LogError(DBErrorType eErrorType, HRESULT hr)
{
DBErrorLogByCID(eErrorType, GetCID(), hr, "CSkillData", GetDBStatus());
}
bool CSkillData::operator == (const CSkillData& rhs) const
{
return m_CID == rhs.m_CID &&
0 == memcmp(m_Skill, rhs.m_Skill, sizeof(SKILL));
}
CString CSkillData::GetDBStatus()
{
CString dbStatus;
dbStatus.Format("CID:%10u(0x%08x) Skill(0x%08x)",
m_CID, m_CIDStatus, m_SkillStatus);
return dbStatus;
}
void CCharItem::Init()
{
m_CID = 0;
memset(m_Quick, 0, sizeof(QUICK));
memset(m_Equip, 0, sizeof(EQUIP));
memset(m_Inven, 0, sizeof(INVEN));
memset(m_Extra, 0, sizeof(EXTRA));
m_QuickLen = m_EquipLen = m_InvenLen = m_ExtraLen = 0;
m_CIDStatus = m_QuickStatus = m_EquipStatus = m_InvenStatus = m_ExtraStatus = DBSTATUS_S_OK;
m_bAdjustSize = false;
}
void CCharItem::LogError(DBErrorType eErrorType, HRESULT hr)
{
DBErrorLogByCID(eErrorType, GetCID(), hr, "CCharItem", GetDBStatus());
}
void CCharItem::AdjustSize(bool bRestore)
{
if (bRestore && m_bAdjustSize)
{
reinterpret_cast<EQUIP&>(m_Equip).dwSize += sizeof(unsigned long);
reinterpret_cast<INVEN&>(m_Inven).dwSize += sizeof(unsigned long);
reinterpret_cast<EXTRA&>(m_Extra).dwSize += sizeof(unsigned long);
m_bAdjustSize = false;
}
else if (!bRestore && !m_bAdjustSize)
{
BOUNDED_SUBTRACT(reinterpret_cast<EQUIP&>(m_Equip).dwSize, sizeof(unsigned long), 0);
BOUNDED_SUBTRACT(reinterpret_cast<INVEN&>(m_Inven).dwSize, sizeof(unsigned long), 0);
BOUNDED_SUBTRACT(reinterpret_cast<EXTRA&>(m_Extra).dwSize, sizeof(unsigned long), 0);
m_bAdjustSize = true;
}
}
bool CCharItem::operator == (const CCharItem& rhs) const
{
return m_CID == rhs.m_CID &&
0 == memcmp(m_Quick, rhs.m_Quick, sizeof(QUICK)) &&
0 == memcmp(m_Equip, rhs.m_Equip, sizeof(EQUIP)) &&
0 == memcmp(m_Inven, rhs.m_Inven, sizeof(INVEN)) &&
0 == memcmp(m_Extra, rhs.m_Extra, sizeof(EXTRA));
}
CString CCharItem::GetDBStatus()
{
CString dbStatus;
dbStatus.Format("CID:%10u(0x%08x) Quick(0x%08x) "
"Equip:%d(0x%08x) Inven:%d(0x%08x) Extra:%d(0x%08x)",
m_CID, m_CIDStatus, m_QuickStatus,
GetEquip().dwSize, m_EquipStatus,
GetInven().dwSize, m_InvenStatus,
GetExtra().dwSize, m_ExtraStatus);
return dbStatus;
}
void CCharItemEx::Init()
{
m_CID = 0;
memset(m_Exchange, 0, sizeof(EXCHANGE));
memset(m_TempInven, 0, sizeof(TEMPINVEN));
m_ExchangeLen = m_TempInvenLen = 0;
m_CIDStatus = m_ExchangeStatus = m_TempInvenStatus = DBSTATUS_S_OK;
m_bAdjustSize = false;
}
void CCharItemEx::LogError(DBErrorType eErrorType, HRESULT hr)
{
DBErrorLogByCID(eErrorType, GetCID(), hr, "CCharItemEx", GetDBStatus());
}
void CCharItemEx::AdjustSize(bool bRestore)
{
if (bRestore && m_bAdjustSize)
{
reinterpret_cast<EXCHANGE&>(m_Exchange).dwSize += sizeof(unsigned long);
reinterpret_cast<TEMPINVEN&>(m_TempInven).dwSize += sizeof(unsigned long);
m_bAdjustSize = false;
}
else if (!bRestore && !m_bAdjustSize)
{
BOUNDED_SUBTRACT(reinterpret_cast<EXCHANGE&>(m_Exchange).dwSize, sizeof(unsigned long), 0);
BOUNDED_SUBTRACT(reinterpret_cast<TEMPINVEN&>(m_TempInven).dwSize, sizeof(unsigned long), 0);
m_bAdjustSize = true;
}
}
bool CCharItemEx::operator == (const CCharItemEx& rhs) const
{
return m_CID == rhs.m_CID &&
0 == memcmp(m_Exchange, rhs.m_Exchange, sizeof(EXCHANGE)) &&
0 == memcmp(m_TempInven, rhs.m_TempInven, sizeof(TEMPINVEN));
}
CString CCharItemEx::GetDBStatus()
{
CString dbStatus;
dbStatus.Format("CID:%10u(0x%08x) Exchange:%d(0x%08x) TempInven:%d(0x%08x)",
m_CID, m_CIDStatus, GetExchange().dwSize, m_ExchangeStatus,
GetTempInven().dwSize, m_TempInvenStatus);
return dbStatus;
}
void CCharQuest::Init()
{
m_CID = 0;
memset(m_Quest, 0, sizeof(QUEST));
memset(m_History, 0, sizeof(HISTORY));
m_QuestLen = m_HistoryLen = 0;
m_CIDStatus = m_QuestStatus = m_HistoryStatus = DBSTATUS_S_OK;
m_bAdjustSize = false;
}
void CCharQuest::LogError(DBErrorType eErrorType, HRESULT hr)
{
DBErrorLogByCID(eErrorType, GetCID(), hr, "CCharQuest", GetDBStatus());
}
void CCharQuest::AdjustSize(bool bRestore)
{
if (bRestore && m_bAdjustSize)
{
reinterpret_cast<QUEST&>(m_Quest).dwSize += sizeof(unsigned long);
reinterpret_cast<HISTORY&>(m_History).dwSize += sizeof(unsigned long);
m_bAdjustSize = false;
}
else if(!bRestore && !m_bAdjustSize)
{
BOUNDED_SUBTRACT(reinterpret_cast<QUEST&>(m_Quest).dwSize, sizeof(unsigned long), 0);
BOUNDED_SUBTRACT(reinterpret_cast<HISTORY&>(m_History).dwSize, sizeof(unsigned long), 0);
m_bAdjustSize = true;
}
}
bool CCharQuest::operator == (const CCharQuest& rhs) const
{
return m_CID == rhs.m_CID &&
0 == memcmp(m_Quest, rhs.m_Quest, sizeof(QUEST)) &&
0 == memcmp(m_History, rhs.m_History, sizeof(HISTORY));
}
CString CCharQuest::GetDBStatus()
{
CString dbStatus;
dbStatus.Format("CID:%10u(0x%08x) Quest(0x%08x) History(0x%08x)",
m_CID, m_CIDStatus, m_QuestStatus, m_HistoryStatus);
return dbStatus;
}
void CPartyData::Init()
{
m_PID = m_GID = 0;
memset(m_PartyInfo, 0, sizeof(m_PartyInfo));
memset(m_UserInfo, 0, sizeof(m_UserInfo));
m_PartyLen = sizeof(m_PartyInfo);
m_UserInfoLen = sizeof(m_UserInfo);
m_PIDStatus = m_GIDStatus =
m_PartyStatus = m_UserInfoStatus = DBSTATUS_S_OK;
}
void CPartyData::LogError(DBErrorType eErrorType, HRESULT hr)
{
switch(eErrorType)
{
case DBERR_CONVERT_FAILED:
ERRLOG1(g_Log, "PID:%10u / CPartyData <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3> <20><><EFBFBD><EFBFBD>", GetPID());
break;
case DBERR_SETDATA_FAILED:
ERRLOG3(g_Log, "PID:%10u / hr:0x%08x / CPartyData SetData <20><><EFBFBD><EFBFBD> : DBStatus:%s",
GetPID(), hr, GetDBStatus());
break;
case DBERR_UPDATE_FAILED:
ERRLOG3(g_Log, "PID:%10u / hr:0x%08x / CPartyData Update <20><><EFBFBD><EFBFBD> : DBStatus:%s",
GetPID(), hr, GetDBStatus());
break;
}
}
bool CPartyData::operator == (const CPartyData& rhs) const
{
return (m_PID == rhs.m_PID &&
m_GID == rhs.m_GID &&
0 == memcmp(m_PartyInfo, rhs.m_PartyInfo, sizeof(m_PartyInfo)) &&
0 == memcmp(m_UserInfo, rhs.m_UserInfo, sizeof(m_UserInfo)));
}
CString CPartyData::GetDBStatus()
{
CString dbStatus;
dbStatus.Format("PID:%10u(0x%08x) GID:%10u(0x%08x) Party(0x%08x) PartyUserInfo(0x%08x)",
m_PID, m_PIDStatus, m_GID, m_GIDStatus, m_PartyStatus, m_UserInfoStatus);
return dbStatus;
}
void CFriendData::Init()
{
m_CID = 0;
memset(m_Friend, 0, sizeof(m_Friend));
memset(m_Ban, 0, sizeof(m_Ban));
memset(m_FriendInfo, 0, sizeof(m_FriendInfo));
memset(m_BanInfo, 0, sizeof(m_BanInfo));
m_FriendLen = sizeof(m_Friend);
m_BanLen = sizeof(m_Ban);
m_FriendInfoLen = sizeof(m_FriendInfo);
m_BanInfoLen = sizeof(m_BanInfo);
m_CIDStatus = m_FriendStatus =
m_BanStatus = m_FriendInfoStatus = m_BanInfoStatus = DBSTATUS_S_OK;
m_bAdjustSize = false;
}
void CFriendData::AdjustSize(bool bRestore)
{
if (bRestore && m_bAdjustSize)
{
*reinterpret_cast<unsigned long*>(m_Friend) += sizeof(unsigned long);
*reinterpret_cast<unsigned long*>(m_FriendInfo) += sizeof(unsigned long);
*reinterpret_cast<unsigned long*>(m_Ban) += sizeof(unsigned long);
*reinterpret_cast<unsigned long*>(m_BanInfo) += sizeof(unsigned long);
m_bAdjustSize = false;
}
else if (!bRestore && !m_bAdjustSize)
{
BOUNDED_SUBTRACT(*reinterpret_cast<unsigned long*>(m_Friend), sizeof(unsigned long), 0);
BOUNDED_SUBTRACT(*reinterpret_cast<unsigned long*>(m_FriendInfo), sizeof(unsigned long), 0);
BOUNDED_SUBTRACT(*reinterpret_cast<unsigned long*>(m_Ban), sizeof(unsigned long), 0);
BOUNDED_SUBTRACT(*reinterpret_cast<unsigned long*>(m_BanInfo), sizeof(unsigned long), 0);
m_bAdjustSize = true;
}
}
void CFriendData::LogError(DBErrorType eErrorType, HRESULT hr)
{
DBErrorLogByCID(eErrorType, GetCID(), hr, "FriendData", GetDBStatus());
}
const FRIEND CFriendData::GetFriend() const
{
FRIEND localFriend;
memcpy(&localFriend, m_Friend, sizeof(m_Friend));
memcpy(reinterpret_cast<BYTE*>(&localFriend) + sizeof(m_Friend),
m_FriendInfo, sizeof(m_FriendInfo));
return localFriend;
}
const BAN CFriendData::GetBan() const
{
BAN localBan;
memcpy(&localBan, m_Ban, sizeof(m_Ban));
memcpy(reinterpret_cast<BYTE*>(&localBan) + sizeof(m_Ban),
m_BanInfo, sizeof(m_BanInfo));
return localBan;
}
void CFriendData::SetFriend(const FRIEND& friendData)
{
memcpy(m_Friend, &friendData.dwSize, sizeof(friendData.dwSize));
memcpy(m_Friend + sizeof(friendData.dwSize),
friendData.Data, sizeof(friendData.Data));
memcpy(m_FriendInfo, &friendData.dwInfoSize, sizeof(friendData.dwInfoSize));
memcpy(m_FriendInfo + sizeof(friendData.dwInfoSize),
friendData.Info, sizeof(friendData.Info));
m_FriendLen = sizeof(m_Friend);
m_FriendInfoLen = sizeof(m_FriendInfo);
m_FriendStatus = DBSTATUS_S_OK;
m_FriendInfoStatus = DBSTATUS_S_OK;
}
void CFriendData::SetBan(const BAN& banData)
{
memcpy(m_Ban, &banData.dwSize, sizeof(banData.dwSize));
memcpy(m_Ban + sizeof(banData.dwSize),
banData.Data, sizeof(banData.Data));
memcpy(m_BanInfo, &banData.dwInfoSize, sizeof(banData.dwInfoSize));
memcpy(m_BanInfo + sizeof(banData.dwSize),
banData.Info, sizeof(banData.Info));
m_BanLen = sizeof(m_Ban);
m_BanInfoLen = sizeof(m_BanInfo);
m_BanStatus = DBSTATUS_S_OK;
m_BanInfoStatus = DBSTATUS_S_OK;
}
bool CFriendData::operator == (const CFriendData& rhs) const
{
return m_CID == rhs.m_CID &&
0 == memcmp(m_Friend, rhs.m_Friend, sizeof(m_Friend)) &&
0 == memcmp(m_Ban, rhs.m_Ban, sizeof(m_Ban)) &&
0 == memcmp(m_FriendInfo, rhs.m_FriendInfo, sizeof(m_FriendInfo)) &&
0 == memcmp(m_BanInfo, rhs.m_BanInfo, sizeof(m_BanInfo));
}
CString CFriendData::GetDBStatus()
{
CString dbStatus;
dbStatus.Format("CID:%10u(0x%08x) Friend(0x%08x) Ban(0x%08x) FriendInfo(0x%08x) BanInfo(0x%08x)",
m_CID, m_CIDStatus, m_FriendStatus, m_BanStatus, m_FriendInfoStatus, m_BanInfoStatus);
return dbStatus;
}
void CUnifiedCharList::Init()
{
m_UID = m_BeforeCID = m_NewCID = 0;
memset(m_BeforeCharName, 0, sizeof(m_BeforeCharName));
m_OldServerGroupID = 0;
m_BeforeCharNameLen = 0;
m_UIDStatus = m_OldServerGroupIDStatus = m_BeforeCIDStatus =
m_NewCIDStatus = m_BeforeCharNameStatus = DBSTATUS_S_ISNULL;
}
void CUnifiedCharList::LogError(DBErrorType eErrorType, HRESULT hr)
{
switch(eErrorType)
{
case DBERR_CONVERT_FAILED:
ERRLOG2(g_Log, "UID:%10u / NewCID:%10u / CUnifiedCharList <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3> <20><><EFBFBD><EFBFBD>",
GetUID(), GetNewCID());
break;
case DBERR_SETDATA_FAILED:
ERRLOG4(g_Log, "CID:%10u / NewCID:%10u / hr:0x%08x / CUnifiedCharList SetData <20><><EFBFBD><EFBFBD> : DBStatus:%s",
GetUID(), GetNewCID(), hr, GetDBStatus());
break;
case DBERR_UPDATE_FAILED:
ERRLOG4(g_Log, "CID:%10u / NewCID:%10u / hr:0x%08x / CUnifiedCharList Update <20><><EFBFBD><EFBFBD> : DBStatus:%s",
GetUID(), GetNewCID(), hr, GetDBStatus());
break;
}
}
CString CUnifiedCharList::GetDBStatus()
{
CString DBStatus;
DBStatus.Format("UIDStatus(0x%08x)/OldServerGroupID(0x%08x)/BeforeCIDStatus(0x%08x)/"
"NewCIDStatus(0x%08x)/BeforeCharNameStatus(0x%08x)",
m_UIDStatus, m_OldServerGroupIDStatus,
m_BeforeCIDStatus, m_NewCIDStatus, m_BeforeCharNameStatus);
return DBStatus;
}
bool CUnifiedCharList::operator == (const CUnifiedCharList& rhs) const
{
return m_UID == rhs.m_UID &&
m_BeforeCID == rhs.m_BeforeCID &&
m_NewCID == rhs.m_NewCID &&
m_OldServerGroupID == rhs.m_OldServerGroupID &&
0 == memcmp(m_BeforeCharName, rhs.m_BeforeCharName, sizeof(m_BeforeCharName));
}
}