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,244 @@
#include "stdafx.h"
#include "SendAdminTool.h"
#include <Network/Packet/PacketStruct/CharAdminPacket.h>
#include <Network/Packet/PacketStruct/GameEventPacket.h>
#include <Network/Packet/PacketStruct/CharLoginOutPacketStruct.h>
#include <Network/Dispatch/AdminToolDispatch.h>
#include <Network/Packet/WrapPacket.h>
#include <Network/Packet/PacketCommand.h>
#include <Utility/Setup/ServerSetup.h>
#include <DataStorage/StoreData.h>
#include <DataStorage/CharacterData.h>
#include <Log/ServerLog.h>
namespace DBAgent
{
namespace SendPacket
{
bool ItemQtyCheck(unsigned long dwItemTypeID, unsigned long dwItemQty,
unsigned long dwCurrentItemQty, time_t tStartTime, time_t tEndTime,
unsigned char cType, unsigned short usError)
{
PktItemQtyControl pktItemQtyControl;
memset(&pktItemQtyControl, 0, sizeof(PktItemQtyControl));
pktItemQtyControl.m_dwItemTypeID = dwItemTypeID;
pktItemQtyControl.m_dwItemQty = dwItemQty;
pktItemQtyControl.m_dwCurrentItemQty = dwCurrentItemQty;
pktItemQtyControl.m_tStartTime = tStartTime;
pktItemQtyControl.m_tEndTime = tEndTime;
pktItemQtyControl.m_cType = cType;
pktItemQtyControl.m_cGroup = CServerSetup::GetInstance().GetServerGroup();
if(PacketWrap::WrapHeader(reinterpret_cast<char*>(&pktItemQtyControl),
sizeof(PktItemQtyControl), CmdItemQtyCheck, 0, usError))
{
DBAgent::CAdminToolDispatch::GetDispatchTable().Process(
CSendPacketAllServer(reinterpret_cast<char*>(&pktItemQtyControl),
sizeof(PktItemQtyControl), CmdItemQtyCheck));
return true;
}
return false;
}
bool AdminToolGetDataAck(CSendStream& SendStream, PktAdminToolGetData::GetDataType dataType,
unsigned long dwRequestKey, unsigned long dwUID, unsigned long dwCID,
const char* lpData, unsigned long dwDataSize, unsigned short usError,
unsigned char cOldServerGroupID)
{
// <20>ִ<EFBFBD> <20><>Ŷ ũ<><EFBFBD><E2BAB8> ũ<><C5A9> <20><><EFBFBD><EFBFBD>
if(sizeof(PktAdminToolGetDataAck) + dwDataSize <= MAX_PACKET_LEN)
{
char szPacket[PktMaxLen];
PktAdminToolGetDataAck* lpPktAdminToolGetDataAck =
reinterpret_cast<PktAdminToolGetDataAck*>(szPacket);
lpPktAdminToolGetDataAck->m_dwRequestKey = dwRequestKey;
lpPktAdminToolGetDataAck->m_dwUID = dwUID;
lpPktAdminToolGetDataAck->m_dwCID = dwCID;
lpPktAdminToolGetDataAck->m_cType = dataType;
lpPktAdminToolGetDataAck->m_cOldServerGroupID = cOldServerGroupID; // Part2Selectable Ÿ<>Կ<EFBFBD><D4BF><EFBFBD> <20>ʿ<EFBFBD>.
if(0 != lpData && 0 < dwDataSize)
{
memcpy(lpPktAdminToolGetDataAck + 1, lpData, dwDataSize);
}
else
{
dwDataSize = 0;
}
return SendStream.WrapCompress(szPacket,
static_cast<unsigned short>(sizeof(PktAdminToolGetDataAck) + dwDataSize),
CmdAdminToolGetData, 0, usError);
}
ERRLOG4(g_Log, "UID:%10u / CID:%10u / dwSize:%u / DataType:%d "
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> + <20><><EFBFBD><EFBFBD> ũ<><20>ִ<EFBFBD> <20><>Ŷ ũ<><C5A9> <20>̻<EFBFBD><CCBB>Դϴ<D4B4>",
dwUID, dwCID, dwDataSize, dataType);
return false;
}
bool AdminToolSetDataAck(CSendStream& SendStream, unsigned long dwRequestKey,
unsigned long dwUID, unsigned long dwCID,
unsigned char cType, unsigned short eErrorCode)
{
PktNewAdminToolSetDataAck* lpSetDataAck = reinterpret_cast<PktNewAdminToolSetDataAck*>(
SendStream.GetBuffer(sizeof(PktNewAdminToolSetDataAck)));
if(0 != lpSetDataAck)
{
lpSetDataAck->m_dwRequestKey = dwRequestKey;
lpSetDataAck->m_dwUID = dwUID;
lpSetDataAck->m_dwCID = dwCID;
lpSetDataAck->m_cType = cType;
return SendStream.WrapHeader(sizeof(PktNewAdminToolSetDataAck),
CmdAdminToolSetData, 0, eErrorCode);
}
return false;
}
inline void CopyAndAdvanceDst(char*& lpWritePos, const void* lpData, unsigned long dwSize)
{
memcpy(lpWritePos, lpData, dwSize);
lpWritePos += dwSize;
}
// ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD> <20><EFBFBD><EEBFB5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
bool TotalDataToAdminTool(CSendStream& SendStream, unsigned long dwRequestKey, IN_ADDR peerAddr,
DataStorage::CStoreData& storeData, DataStorage::CCharacterData& characterData)
{
unsigned long dwUID = storeData.GetUID();
unsigned long dwCID = characterData.GetCID();
const unsigned long MAX_CHAR_DATA_SIZE = DBUpdateData::MAX_DBUPDATE_SIZE +
sizeof(unsigned short) * DBUpdateData::MAX_UPDATE_DB;
const unsigned long MAX_CHAR_EXTRA_DATA_SIZE = sizeof(CHAR_INFOEX) +
sizeof(QUEST) + sizeof(HISTORY) + sizeof(CONFIG) + sizeof(STORE_INFO);
const unsigned long MAX_FRIEND_BAN_DATA_SIZE =
std::max(CFriendList::MAX_FRIENDS_NUM * sizeof(FriendInfo),
CBanList::MAX_BAN_NUM * sizeof(BanInfo));
const unsigned long MAX_ADMIN_TOOL_DATA_SIZE = std::max(
std::max(MAX_CHAR_DATA_SIZE, MAX_CHAR_EXTRA_DATA_SIZE), MAX_FRIEND_BAN_DATA_SIZE);
char* szDataBuffer = new char[MAX_ADMIN_TOOL_DATA_SIZE];
if(0 == szDataBuffer)
{
return false;
}
const int MAX_ADDR_LEN = 32;
char szAdminToolAddr[MAX_ADDR_LEN];
_snprintf(szAdminToolAddr, MAX_ADDR_LEN - 1, "%s", inet_ntoa(peerAddr));
szAdminToolAddr[MAX_ADDR_LEN - 1] = 0;
// ------------------------------------------------------------------------------------------
// CHAR_BASIC_DATA <20><><EFBFBD><EFBFBD>
unsigned long dwCharDataWritten = MAX_ADMIN_TOOL_DATA_SIZE -
sizeof(unsigned short) * DBUpdateData::MAX_UPDATE_DB;
char* szCharData = szDataBuffer + sizeof(unsigned short) * DBUpdateData::MAX_UPDATE_DB;
unsigned short* usSizeArray = reinterpret_cast<unsigned short*>(szDataBuffer);
if(characterData.SerializeOut(szCharData, usSizeArray,
dwCharDataWritten, DBUpdateData::MAX_UPDATE_DB))
{
dwCharDataWritten += sizeof(unsigned short) * DBUpdateData::MAX_UPDATE_DB;
if(SendPacket::AdminToolGetDataAck(SendStream, PktAdminToolGetData::CHAR_BASIC_DATA,
dwRequestKey, dwUID, dwCID, szDataBuffer, dwCharDataWritten, 0))
{
INFLOG3(g_Log, "UID:%10u / CID:%10u / IP:%15s / <20><EFBFBD><EEBFB5><EFBFBD><EFBFBD> CHAR_BASIC_DATA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", dwUID, dwCID, szAdminToolAddr);
}
}
// ------------------------------------------------------------------------------------------
// CHAR_EXTRA_DATA <20><><EFBFBD><EFBFBD>
char* szExtraDataPos = szDataBuffer;
CopyAndAdvanceDst(szExtraDataPos, &characterData.GetInfoEx(), sizeof(CHAR_INFOEX));
CopyAndAdvanceDst(szExtraDataPos, &characterData.GetQuest(), sizeof(QUEST));
CopyAndAdvanceDst(szExtraDataPos, &characterData.GetHistory(), sizeof(HISTORY));
CopyAndAdvanceDst(szExtraDataPos, &characterData.GetConfig(), sizeof(CONFIG));
CopyAndAdvanceDst(szExtraDataPos, &storeData.GetStoreInfo(), sizeof(STORE_INFO));
if(SendPacket::AdminToolGetDataAck(SendStream,
PktAdminToolGetData::CHAR_EXTRA_DATA, dwRequestKey, dwUID, dwCID, szDataBuffer,
static_cast<unsigned long>(szExtraDataPos - szDataBuffer), 0))
{
INFLOG3(g_Log, "UID:%10u / CID:%10u / IP:%15s / <20><EFBFBD><EEBFB5><EFBFBD><EFBFBD> CHAR_EXTRA_DATA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", dwUID, dwCID, szAdminToolAddr);
}
// ---------------------------------------------------------------------------------------------
// CHAR_FRIEND_DATA
// CHAR_BAN_DATA
unsigned long dwFriendBanWritten = MAX_FRIEND_BAN_DATA_SIZE;
if(characterData.GetFriendList().SerializeOut(szDataBuffer, dwFriendBanWritten))
{
if(SendPacket::AdminToolGetDataAck(SendStream, PktAdminToolGetData::CHAR_FRIEND_DATA,
dwRequestKey, dwUID, dwCID, szDataBuffer, dwFriendBanWritten, 0))
{
INFLOG3(g_Log, "UID:%10u / CID:%10u / IP:%15s / <20><EFBFBD><EEBFB5><EFBFBD><EFBFBD> CHAR_FRIEND_DATA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", dwUID, dwCID, szAdminToolAddr);
}
}
dwFriendBanWritten = MAX_FRIEND_BAN_DATA_SIZE;
if(characterData.GetBanList().SerializeOut(szDataBuffer, dwFriendBanWritten))
{
if(SendPacket::AdminToolGetDataAck(SendStream, PktAdminToolGetData::CHAR_BAN_DATA,
dwRequestKey, dwUID, dwCID, szDataBuffer, dwFriendBanWritten, 0))
{
INFLOG3(g_Log, "UID:%10u / CID:%10u / IP:%15s / <20><EFBFBD><EEBFB5><EFBFBD><EFBFBD> CHAR_BAN_DATA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", dwUID, dwCID, szAdminToolAddr);
}
}
// ---------------------------------------------------------------------------------------------
// STORE_12_DATA
if(SendPacket::AdminToolGetDataAck(SendStream, PktAdminToolGetData::STORE_12_DATA,
dwRequestKey, dwUID, dwCID, reinterpret_cast<const char*>(&storeData.GetStore1()), sizeof(STORE), 0))
{
INFLOG3(g_Log, "UID:%10u / CID:%10u / IP:%15s / <20><EFBFBD><EEBFB5><EFBFBD><EFBFBD> STORE_12_DATA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", dwUID, dwCID, szAdminToolAddr);
}
// ---------------------------------------------------------------------------------------------
// STORE_34_DATA
if(SendPacket::AdminToolGetDataAck(SendStream, PktAdminToolGetData::STORE_34_DATA,
dwRequestKey, dwUID, dwCID, reinterpret_cast<const char*>(&storeData.GetStore2()), sizeof(STORE), 0))
{
INFLOG3(g_Log, "UID:%10u / CID:%10u / IP:%15s / <20><EFBFBD><EEBFB5><EFBFBD><EFBFBD> STORE_34_DATA <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", dwUID, dwCID, szAdminToolAddr);
}
delete [] szDataBuffer;
return true;
}
}
}