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,242 @@
// BillingTestModule.cpp : <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
//
#include "stdafx.h"
#include "BillingTestModule.h"
#include "BillingTestModuleDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
#include <mmsystem.h>
#include <algorithm>
// CBillingTestModuleApp
BEGIN_MESSAGE_MAP(CBillingTestModuleApp, CWinApp)
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()
CBillingTestModuleApp::Packet::Packet(CBillingAsyncSocket& billingAsyncSocket,
const HanUnitedBilling::GLTransStruct glTransStruct,
unsigned long dwDelayMSec)
: m_billingAsyncSocket(billingAsyncSocket),
m_glTransStruct(glTransStruct),
m_dwPendingTime(timeGetTime()),
m_dwDelayMSec(dwDelayMSec)
{
}
// CBillingTestModuleApp <20><><EFBFBD><EFBFBD>
CBillingTestModuleApp::CBillingTestModuleApp()
: m_lpBillingTestModule(0), m_lpListenAsyncSocket(0)
{
// TODO: <20><><EFBFBD><20><><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
// InitInstance<63><65> <20><><EFBFBD><EFBFBD> <20>߿<EFBFBD><DFBF><EFBFBD> <20>ʱ<EFBFBD>ȭ <20>۾<EFBFBD><DBBE><EFBFBD> <20><>ġ<EFBFBD>մϴ<D5B4>.
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CBillingTestModuleApp <20><>ü<EFBFBD>Դϴ<D4B4>.
CBillingTestModuleApp theApp;
// CBillingTestModuleApp <20>ʱ<EFBFBD>ȭ
BOOL CBillingTestModuleApp::InitInstance()
{
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1> <20>Ŵ<EFBFBD><C5B4>佺Ʈ<E4BDBA><C6AE> ComCtl32.dll <20><><EFBFBD><EFBFBD> 6 <20>̻<EFBFBD><CCBB><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD>־<EFBFBD> <20><>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>, Windows XP <20>󿡼<EFBFBD> <20>ݵ<EFBFBD><DDB5><EFBFBD> InitCommonControls()<29><> <20>ʿ<EFBFBD><CABF>մϴ<D5B4>.
// InitCommonControls()<29><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> â<><C3A2> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
InitCommonControls();
CWinApp::InitInstance();
if(!AfxSocketInit())
{
AfxMessageBox("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ <20><><EFBFBD><EFBFBD>!");
return FALSE;
}
m_lpListenAsyncSocket = CBillingAsyncSocket::CreateBillingSocket(SOCK_STREAM, LISTEN_PORT);
if(0 == m_lpListenAsyncSocket
|| !m_lpListenAsyncSocket->Listen())
{
AfxMessageBox("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>!");
return FALSE;
}
AfxEnableControlContainer();
// ǥ<><C7A5> <20>ʱ<EFBFBD>ȭ
// <20>̵<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʰ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ũ<><20><><EFBFBD>̷<EFBFBD><CCB7><EFBFBD>
// <20>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD> <20>ʿ<EFBFBD> <20><><EFBFBD><EFBFBD> Ư<><C6AF> <20>ʱ<EFBFBD>ȭ <20><>ƾ<EFBFBD><C6BE> <20><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD> <20>մϴ<D5B4>.
// <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> Ű<><C5B0> <20><><EFBFBD><EFBFBD><EFBFBD>Ͻʽÿ<CABD>.
// TODO: <20><> <20><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD> ȸ<><C8B8> <20>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD> <20>մϴ<D5B4>.
SetRegistryKey(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7BFA1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1>"));
CBillingTestModuleDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: <20><><EFBFBD><20><>ȭ <20><><EFBFBD>ڰ<EFBFBD> Ȯ<><C8AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD>
// <20>ڵ带 <20><>ġ<EFBFBD>մϴ<D5B4>.
}
else if (nResponse == IDCANCEL)
{
// TODO: <20><><EFBFBD><20><>ȭ <20><><EFBFBD>ڰ<EFBFBD> <20><><EFBFBD>Ҹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD>
// <20>ڵ带 <20><>ġ<EFBFBD>մϴ<D5B4>.
}
m_lpListenAsyncSocket->Close();
m_lpListenAsyncSocket->Release();
m_lpListenAsyncSocket = 0;
// <20><>ȭ <20><><EFBFBD>ڰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20>޽<EFBFBD><DEBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʰ<EFBFBD>
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD>α׷<CEB1><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20>ֵ<EFBFBD><D6B5><EFBFBD> FALSE<53><45> <20><>ȯ<EFBFBD>մϴ<D5B4>.
return FALSE;
}
void CBillingTestModuleApp::ProcessPacket()
{
const int MAX_PROCESS_COUNT = 100;
int nProcessCount = 0;
CBillingTestModuleDlg* lpDlg = GetMainDlg();
if(0 != lpDlg)
{
unsigned long dwCurrentTime = timeGetTime();
while(!m_RecvPacketList.empty() && nProcessCount < MAX_PROCESS_COUNT)
{
Packet& packet = m_RecvPacketList.front();
// <20>ð<EFBFBD><C3B0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><>Ŷ<EFBFBD><C5B6> ó<><C3B3>.
if(0 < static_cast<long>((packet.m_dwDelayMSec + packet.m_dwPendingTime) - dwCurrentTime))
{
break;
}
// <20>α<EFBFBD><CEB1><EFBFBD>, <20>α׾ƿ<D7BE><C6BF><EFBFBD> ó<><C3B3><EFBFBD>Ѵ<EFBFBD>.
packet.m_glTransStruct.HeaderMsg = ntohs(packet.m_glTransStruct.HeaderMsg);
packet.m_glTransStruct.DataSize = ntohs(packet.m_glTransStruct.DataSize);
packet.m_glTransStruct.SeqID = ntohl(packet.m_glTransStruct.SeqID);
const char* szIP = packet.m_glTransStruct.Data;
const char* szID = packet.m_glTransStruct.Data + HanUnitedBilling::MAX_IP_LEN;
switch(packet.m_glTransStruct.HeaderMsg)
{
case HanUnitedBilling::AUTH:
lpDlg->Login(packet.m_billingAsyncSocket, packet.m_glTransStruct.SeqID, szID, szIP);
break;
case HanUnitedBilling::LOGOUT:
lpDlg->Logout(packet.m_billingAsyncSocket, packet.m_glTransStruct.SeqID, szID, szIP);
break;
case HanUnitedBilling::BILL_AUTH:
lpDlg->BillAuth(packet.m_billingAsyncSocket, packet.m_glTransStruct.SeqID, szID, szIP);
break;
}
packet.m_billingAsyncSocket.Release();
m_RecvPacketList.pop_front();
}
}
}
void CBillingTestModuleApp::AddRecvPacket(CBillingAsyncSocket& billingAsyncSocket,
const char* szBuffer, unsigned short usDataLen)
{
CBillingTestModuleDlg* lpDlg = GetMainDlg();
HanUnitedBilling::GLTransStruct glTransStruct;
memset(&glTransStruct, 0, sizeof(HanUnitedBilling::GLTransStruct));
memcpy(&glTransStruct, szBuffer, min(usDataLen, sizeof(HanUnitedBilling::GLTransStruct)));
if(0 != lpDlg)
{
unsigned long dwDelayMSec = 0;
CBillingTestModuleDlg::Behavior behavior = CBillingTestModuleDlg::NORMAL_PROCESS;
switch(ntohs(glTransStruct.HeaderMsg))
{
case HanUnitedBilling::AUTH:
{
behavior = lpDlg->GetLoginAckType();
if(CBillingTestModuleDlg::DELAY_ALL_PROCESS == behavior)
{
dwDelayMSec = lpDlg->GetLoginAckDelay();
}
}
break;
case HanUnitedBilling::BILL_AUTH:
{
behavior = lpDlg->GetBillAuthAckType();
if(CBillingTestModuleDlg::DELAY_ALL_PROCESS == behavior)
{
dwDelayMSec = lpDlg->GetBillAuthAckDelay();
}
}
break;
}
if(CBillingTestModuleDlg::DROP_ALL_PROCESS != behavior)
{
billingAsyncSocket.AddRef();
m_RecvPacketList.push_back(Packet(
billingAsyncSocket, glTransStruct, dwDelayMSec));
}
else
{
lpDlg->AddLog(NORMAL_LOG, "SS:0x%p/UID_IP:%s/Cmd:%d/SeqID:%d/<2F><>Ŷ<EFBFBD><C5B6> Drop<6F>մϴ<D5B4>.",
&billingAsyncSocket, billingAsyncSocket.GetPeerAddrString(),
ntohs(glTransStruct.HeaderMsg), ntohl(glTransStruct.SeqID));
}
}
}
void CBillingTestModuleApp::RegisterSocket(CBillingAsyncSocket& billingAsyncSocket)
{
if(m_SocketList.end() == std::find(m_SocketList.begin(), m_SocketList.end(), &billingAsyncSocket))
{
m_SocketList.push_back(&billingAsyncSocket);
}
}
void CBillingTestModuleApp::RemoveSocket(CBillingAsyncSocket& billingAsyncSocket)
{
SocketList::iterator pos = std::find(m_SocketList.begin(), m_SocketList.end(), &billingAsyncSocket);
if(pos != m_SocketList.end())
{
m_SocketList.erase(pos);
}
}
void CBillingTestModuleApp::SendPendingAll(const HanUnitedBilling::GLTransStruct& glTransStruct)
{
SocketList::iterator pos = m_SocketList.begin();
SocketList::iterator end = m_SocketList.end();
for(; pos != end; ++pos)
{
(*pos)->SendPending(glTransStruct);
}
}