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,348 @@
// RebalanceViewerDlg.cpp : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
//
#include "stdafx.h"
#include "RebalanceViewer.h"
#include "RebalanceViewerDlg.h"
#include ".\rebalanceviewerdlg.h"
#include <Item/Item.h>
#include <Item/ItemFactory.h>
#include <Item/ItemStructure.h>
#include <Item/ItemConstants.h>
#include <Item/ItemMgr.h>
#include <Item/RebalanceConvert/RebalanceItem.h>
#include <Item/RebalanceConvert/OldItemConstants.h>
#include <Item/RebalanceConvert/OldItemMgr.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CRebalanceViewerDlg <20><>ȭ <20><><EFBFBD><EFBFBD>
CRebalanceViewerDlg::CRebalanceViewerDlg(CWnd* pParent /*=NULL*/)
: CDialog(CRebalanceViewerDlg::IDD, pParent)
, m_szItemName(_T(""))
, m_CriticalPercentage(0.0f)
, m_MinDamage(0)
, m_MaxDamage(0)
, m_OffRevision(0)
, m_Defence(0)
, m_DefenceRevision(0)
, m_MagicResist(0)
, m_BlockingPercentage(0.0f)
, m_MaxHP(0)
, m_MaxMP(0)
, m_HPRegen(0)
, m_MPRegen(0)
, m_UpgradeLevel(0)
, m_bForceOverStore(FALSE)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CRebalanceViewerDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_ITEM_NAME, m_szItemName);
DDX_Text(pDX, IDC_OUTPUT_ITEM_INFO, m_szOutputData);
DDX_Text(pDX, IDC_CRI_PERCENT, m_CriticalPercentage);
DDV_MinMaxFloat(pDX, m_CriticalPercentage, 0.0f, 4096.0f);
DDX_Text(pDX, IDC_BLOCKING_PERCENTAGE, m_BlockingPercentage);
DDV_MinMaxFloat(pDX, m_BlockingPercentage, 0.0f, 4096.0f);
DDX_Text(pDX, IDC_MIN_DAMAGE, m_MinDamage);
DDV_MinMaxShort(pDX, m_MinDamage, 0, 4096);
DDX_Text(pDX, IDC_MAX_DAMAGE, m_MaxDamage);
DDV_MinMaxShort(pDX, m_MaxDamage, 0, 4096);
DDX_Text(pDX, IDC_OFFENCE_REVISION, m_OffRevision);
DDV_MinMaxShort(pDX, m_OffRevision, 0, 4096);
DDX_Text(pDX, IDC_DEFENCE, m_Defence);
DDV_MinMaxShort(pDX, m_Defence, 0, 4096);
DDX_Text(pDX, IDC_DEFENCE_REVISION, m_DefenceRevision);
DDV_MinMaxShort(pDX, m_DefenceRevision, 0, 4096);
DDX_Text(pDX, IDC_MAGIC_REGISTANCE, m_MagicResist);
DDV_MinMaxShort(pDX, m_MagicResist, 0, 4096);
DDX_Text(pDX, IDC_MAX_HP, m_MaxHP);
DDV_MinMaxShort(pDX, m_MaxHP, 0, 10000);
DDX_Text(pDX, IDC_MAX_MP, m_MaxMP);
DDV_MinMaxShort(pDX, m_MaxMP, 0, 10000);
DDX_Text(pDX, IDC_HP_REGEN_AMOUNT, m_HPRegen);
DDV_MinMaxShort(pDX, m_HPRegen, 0, 4096);
DDX_Text(pDX, IDC_MP_REGEN_AMOUNT, m_MPRegen);
DDV_MinMaxShort(pDX, m_MPRegen, 0, 4096);
DDX_Text(pDX, IDC_UPGRADE_LEVEL, m_UpgradeLevel);
DDV_MinMaxShort(pDX, m_UpgradeLevel, 0, 12);
DDX_Control(pDX, IDC_SELECT_TYPE, m_SelectType);
DDX_Check(pDX, IDC_FORCE_OVER_STORE, m_bForceOverStore);
}
BEGIN_MESSAGE_MAP(CRebalanceViewerDlg, CDialog)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_CONVERT, OnBnClickedConvert)
END_MESSAGE_MAP()
// CRebalanceViewerDlg <20>޽<EFBFBD><DEBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD>
BOOL CRebalanceViewerDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// <20><> <20><>ȭ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20><> â<><C3A2> <20><>ȭ <20><><EFBFBD>ڰ<EFBFBD> <20>ƴ<EFBFBD> <20><><EFBFBD><EFBFBD><ECBFA1>
// <20><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>ũ<EFBFBD><C5A9> <20><> <20>۾<EFBFBD><DBBE><EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
SetIcon(m_hIcon, TRUE); // ū <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
SetIcon(m_hIcon, FALSE); // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
// TODO: <20><><EFBFBD><20>߰<EFBFBD> <20>ʱ<EFBFBD>ȭ <20>۾<EFBFBD><DBBE><EFBFBD> <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
if(!Item::CItemMgr::GetInstance().LoadItemProtoType("./NewItemScript.txt"))
{
AfxMessageBox("NewItemScript.txt load failed");
}
if(!OldItem::CItemMgr::GetInstance().LoadItemProtoType("./OldItemScript.txt"))
{
AfxMessageBox("OldItemScript.txt load failed");
}
m_SelectType.InsertString(0, "QA");
m_SelectType.InsertString(1, "Dev");
m_SelectType.SetCurSel(0);
return TRUE; // <20><>Ʈ<EFBFBD>ѿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> TRUE<55><45> <20><>ȯ<EFBFBD>մϴ<D5B4>.
}
// <20><>ȭ <20><><EFBFBD>ڿ<EFBFBD> <20>ּ<EFBFBD>ȭ <20><><EFBFBD>߸<EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>׸<EFBFBD><D7B8><EFBFBD><EFBFBD><EFBFBD>
// <20>Ʒ<EFBFBD> <20>ڵ尡 <20>ʿ<EFBFBD><CABF>մϴ<D5B4>. <20><><EFBFBD><EFBFBD>/<2F><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> MFC <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD><ECBFA1>
// <20><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>ũ<EFBFBD><C5A9><EFBFBD><EFBFBD> <20><> <20>۾<EFBFBD><DBBE><EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
void CRebalanceViewerDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // <20>׸<EFBFBD><D7B8><20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD> <20><><EFBFBD>ؽ<EFBFBD>Ʈ
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ <20><EFBFBD><E7B0A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EEB5A5> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>׸<EFBFBD><D7B8>ϴ<EFBFBD>.
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// <20><><EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD> <20>ּ<EFBFBD>ȭ<EFBFBD><C8AD> â<><C3A2> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ȿ<EFBFBD> Ŀ<><C4BF><EFBFBD><EFBFBD> ǥ<>õǵ<C3B5><C7B5><EFBFBD> <20>ý<EFBFBD><C3BD>ۿ<EFBFBD><DBBF><EFBFBD>
// <20><> <20>Լ<EFBFBD><D4BC><EFBFBD> ȣ<><C8A3><EFBFBD>մϴ<D5B4>.
HCURSOR CRebalanceViewerDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
void CRebalanceViewerDlg::OnBnClickedConvert()
{
// TODO: <20><><EFBFBD><20><>Ʈ<EFBFBD><C6AE> <20>˸<EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
UpdateData(true);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD>, <20>Ӽ<EFBFBD><D3BC><EFBFBD> <20>ִ´<D6B4>.
m_szOutputData = "";
const OldItem::ItemInfo* lpOldItemInfo =
OldItem::CItemMgr::GetInstance().GetItemInfoFromItemName(m_szItemName);
const Item::ItemInfo* lpNewItemInfo =
Item::CItemMgr::GetInstance().GetItemInfoFromItemName(m_szItemName);
if(0 == lpOldItemInfo || 0 == lpNewItemInfo)
{
AfxMessageBox("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>!");
return;
}
int nIndex = m_SelectType.GetCurSel();
char szItemData[Item::MAX_ITEM_SIZE];
Item::ItemData* lpItemData = reinterpret_cast<Item::ItemData*>(szItemData);
OldItem::EquipmentInfo* lpEquipmentInfo = reinterpret_cast<OldItem::EquipmentInfo*>(lpItemData + 1);
OldItem::ItemAttribute* lpAttribute = reinterpret_cast<OldItem::ItemAttribute*>(lpEquipmentInfo + 1);
lpItemData->m_dwUID = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> UID
lpItemData->m_usProtoTypeID = lpOldItemInfo->m_usProtoTypeID; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ID
lpItemData->m_ItemPos = Item::ItemPos(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ġ
lpItemData->m_cItemSize = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ü ũ<><C5A9>
lpItemData->m_cNumOrDurability = 0; // <20><><EFBFBD><EFBFBD> Ȥ<><C8A4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
lpEquipmentInfo->m_cRuneSocket = 0;
lpEquipmentInfo->m_cDiffMaterialType = m_UpgradeLevel;
lpEquipmentInfo->m_cDiffMaxSocket = 0;
lpEquipmentInfo->m_cReserved = 0;
lpEquipmentInfo->m_cSocketNum = 0;
lpEquipmentInfo->m_cAttributeNum = 0;
lpEquipmentInfo->m_cDiffMaxDurability = 0;
lpEquipmentInfo->m_cReserved2 = 0;
OldItem::ItemAttribute* lpAttributePos = lpAttribute;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
if(m_bForceOverStore)
{
const unsigned short* usOldAttr = lpOldItemInfo->m_EquipAttribute.m_usAttributeValue;
m_CriticalPercentage = max(m_CriticalPercentage, float(usOldAttr[OldItem::Attribute::CRITICAL_PERCENTAGE]));
m_BlockingPercentage = max(m_BlockingPercentage, float(usOldAttr[OldItem::Attribute::BLOCKING_PERCENTAGE]));
m_MinDamage = max(m_MinDamage, short(usOldAttr[OldItem::Attribute::MIN_DAMAGE]));
m_MaxDamage = max(m_MaxDamage, short(usOldAttr[OldItem::Attribute::MAX_DAMAGE]));
m_OffRevision = max(m_OffRevision, short(usOldAttr[OldItem::Attribute::OFFENCE_REVISION]));
m_Defence = max(m_Defence, short(usOldAttr[OldItem::Attribute::DEFENCE]));
m_DefenceRevision = max(m_DefenceRevision, short(usOldAttr[OldItem::Attribute::DEFENCE_REVISION]));
m_MagicResist = max(m_MagicResist, short(usOldAttr[OldItem::Attribute::MAGIC_RESISTANCE]));
m_MaxHP = max(m_MaxHP, short(usOldAttr[OldItem::Attribute::MAX_HP]));
m_MaxMP = max(m_MaxMP, short(usOldAttr[OldItem::Attribute::MAX_MP]));
m_HPRegen = max(m_HPRegen, short(usOldAttr[OldItem::Attribute::HP_REGEN_AMOUNT]));
m_MPRegen = max(m_MPRegen, short(usOldAttr[OldItem::Attribute::MP_REGEN_AMOUNT]));
}
short usGetValue[OldItem::Attribute::MAX_ATTRIBUTE_NUM] = { 0, };
usGetValue[OldItem::Attribute::MIN_DAMAGE] = m_MinDamage;
usGetValue[OldItem::Attribute::MAX_DAMAGE] = m_MaxDamage;
usGetValue[OldItem::Attribute::OFFENCE_REVISION] = m_OffRevision;
usGetValue[OldItem::Attribute::DEFENCE] = m_Defence;
usGetValue[OldItem::Attribute::DEFENCE_REVISION] = m_DefenceRevision;
usGetValue[OldItem::Attribute::MAGIC_RESISTANCE] = m_MagicResist;
usGetValue[OldItem::Attribute::HP_REGEN_AMOUNT] = m_HPRegen;
usGetValue[OldItem::Attribute::MP_REGEN_AMOUNT] = m_MPRegen;
if(0 == nIndex)
{
// QA<51><41> <20><><EFBFBD><EFBFBD>
usGetValue[OldItem::Attribute::CRITICAL_PERCENTAGE] = static_cast<short>(m_CriticalPercentage * 2);
usGetValue[OldItem::Attribute::BLOCKING_PERCENTAGE] = static_cast<short>(m_BlockingPercentage * 2);
usGetValue[OldItem::Attribute::MAX_HP] = m_MaxHP / 50;
usGetValue[OldItem::Attribute::MAX_MP] = m_MaxMP / 50;
}
else if(1 == nIndex)
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
usGetValue[OldItem::Attribute::CRITICAL_PERCENTAGE] = static_cast<short>(m_CriticalPercentage);
usGetValue[OldItem::Attribute::BLOCKING_PERCENTAGE] = static_cast<short>(m_BlockingPercentage);
usGetValue[OldItem::Attribute::MAX_HP] = m_MaxHP;
usGetValue[OldItem::Attribute::MAX_MP] = m_MaxMP;
}
for(short usAttrCount = 0; usAttrCount < OldItem::Attribute::MAX_ATTRIBUTE_NUM; ++usAttrCount)
{
short usValue = usGetValue[usAttrCount] -
lpOldItemInfo->m_EquipAttribute.m_usAttributeValue[usAttrCount];
if(0 != usValue)
{
lpAttributePos->m_cType = usAttrCount;
lpAttributePos->m_usValue = usValue;
++lpAttributePos;
}
}
size_t nAttrNum = lpAttributePos - lpAttribute;
lpEquipmentInfo->m_cAttributeNum = static_cast<unsigned char>(nAttrNum);
lpItemData->m_cItemSize = static_cast<unsigned char>(sizeof(OldItem::ItemData) +
sizeof(OldItem::EquipmentInfo) + sizeof(OldItem::ItemAttribute) * nAttrNum);
char szDataOut[Item::MAX_ITEM_SIZE];
unsigned long dwItemDataSize = Item::MAX_ITEM_SIZE;
Item::Grade::GradeInfo convertedGradeInfo;
if(RebalanceLib::ConvertRebalanceItem(0, 0, lpItemData,
*lpNewItemInfo, *lpOldItemInfo, szDataOut, dwItemDataSize, convertedGradeInfo))
{
size_t nItemDataSize = static_cast<size_t>(dwItemDataSize);
Item::CItem* lpNewItem =
Item::CItemFactory::GetInstance().CreateItem(szDataOut, nItemDataSize);
Item::CEquipment* lpNewEquip = Item::CEquipment::DowncastToEquipment(lpNewItem);
if(0 != lpNewEquip)
{
// ǥ<><C7A5> <20>׸<EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD> / <20><><EFBFBD><EFBFBD>ID / Option
const char* szPlus = "++++++++++++++++++++++++++++++++++++++++++++++";
m_szOutputData.Format("%6d : %s : Grade(%s",
lpNewEquip->GetPrototypeID(),
lpNewEquip->GetItemInfo().m_SpriteData.m_szName,
RebalanceLib::GetGradeString(convertedGradeInfo.m_eItemGrade));
m_szOutputData.Append(szPlus, convertedGradeInfo.m_cPlus);
m_szOutputData.Append(")\r\n\r\n");
short usNewAttribute[Item::Attribute::MAX_ATTRIBUTE_NUM] = { 0, };
lpNewEquip->GetAttribute(usNewAttribute, Item::Attribute::MAX_ATTRIBUTE_NUM);
usNewAttribute[Item::Attribute::MAX_HP] *= 50;
usNewAttribute[Item::Attribute::MAX_MP] *= 50;
for(short usAttrCount = 0; usAttrCount < Item::Attribute::MAX_ATTRIBUTE_NUM; ++usAttrCount)
{
if(0 != usNewAttribute[usAttrCount])
{
m_szOutputData.AppendFormat("%20s:%10u\r\n",
Item::Attribute::Attributes[usAttrCount].GetTypeName(), usNewAttribute[usAttrCount]);
}
}
}
}
else
{
AfxMessageBox("Convert failed!");
}
UpdateData(false);
}