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,291 @@
#include "stdafx.h"
#include <Creature/CreatureManager.h>
#include <Creature/Character/Character.h>
#include <Creature/Character/ExpTable.h>
#include <Creature/Character/CharRespawnMgr.h>
#include <Map/FieldMap/VirtualArea/VirtualArea.h>
#include <Map/FieldMap/VirtualArea/VirtualAreaMgr.h>
#include <Network/Dispatch/ParseUtils.h>
#include <Network/Dispatch/Chat/ChatDispatch.h>
#include <Network/Packet/PacketStruct/ServerInfo.h>
#include <Network/Packet/PacketStruct/CharStatusPacket.h>
#include <Network/Packet/PacketStruct/CharItemPacket.h>
#include <Network/Packet/PacketStruct/CharItemPacketStruct.h>
#include <Network/Packet/PacketStruct/CharCommunityPacket.h>
#include <Network/Packet/PacketStruct/CharConfigPacket.h>
#include <Network/Packet/PacketStruct/RankingPacket.h>
#include <Network/Dispatch/GameClient/SendCharAttack.h>
#include <Utility/Setup/ServerSetup.h>
#include <Ranking/RankingMgr.h>
#include "GameClientDispatch.h"
#include "SendCharEtc.h"
#include "ParseCharEtc.h"
// ij<><C4B3><EFBFBD><EFBFBD> <20>ڻ<EFBFBD>
bool GameClientParsePacket::ParseCharSuicide(CGameClientDispatch& GameClientDispatch, PktBase* lpPktBase)
{
CHECK_FIXED_PACKETSIZE(lpPktBase, sizeof(PktSC), GameClientDispatch);
PktSC* lpPktSC = static_cast<PktSC*>(lpPktBase);
CCharacter* lpCharacter = GameClientDispatch.GetCharacter();
CHECK_CHARACTER_PTR(lpCharacter, GameClientDispatch, lpPktBase->GetCmd());
unsigned long dwCharID = lpPktSC->m_dwCharID;
Position Pos = Position::Position();
lpCharacter->Dead(NULL);
if (0 != lpCharacter->GetMapIndex())
{
VirtualArea::CVirtualArea* lpVirtualArea = VirtualArea::CVirtualAreaMgr::GetInstance().GetVirtualArea( lpCharacter->GetMapIndex() );
if (NULL != lpVirtualArea)
{
Pos = lpVirtualArea->GetRespawnPosition(lpCharacter->GetRace(), 0);
}
}
lpCharacter->Respawn(CCharRespawnMgr::RST_TOWN, Pos);
lpCharacter->SaveToDBData();
if (0 != lpCharacter->GetPID())
{
// <20><>Ƽ<EFBFBD><C6BC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>˸<EFBFBD><CBB8><EFBFBD>.
GameClientSendPacket::SendCharDeadToParty(lpCharacter, 0, PktDeadInfo::RESPAWN);
}
return true;
}
// ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>ε<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool GameClientParsePacket::ParseCharBindPosition(CGameClientDispatch& GameClientDispatch, PktBase* lpPktBase)
{
CHECK_FIXED_PACKETSIZE(lpPktBase, sizeof(PktBP), GameClientDispatch);
PktBP* lpPktBP = static_cast<PktBP*>(lpPktBase);
CCharacter* lpCharacter = GameClientDispatch.GetCharacter();
CHECK_CHARACTER_PTR(lpCharacter, GameClientDispatch, lpPktBase->GetCmd());
unsigned long dwNPCID = lpPktBP->m_dwNPCID;
unsigned char cCmd = lpPktBP->m_cCmd;
POS &Pos = lpPktBP->m_Pos;
char cZone = lpPktBP->m_cZone;
Position DestPos = Pos;
switch (cCmd)
{
case PktBP::BP_SAVE_POSITION: // <20><> <20><>ġ <20><><EFBFBD><EFBFBD>
lpCharacter->BindPositionToNPC(dwNPCID);
break;
case PktBP::BP_WARP: // <20><><EFBFBD><EFBFBD>
DETLOG5(g_Log, "CID:0x%08x <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD>ϴ<EFBFBD>. NewPos : %.1f, %.1f, %.1f, Zone : %d",
lpCharacter->GetCID(), Pos.fPointX, Pos.fPointY, Pos.fPointZ, cZone);
lpCharacter->MoveTo(DestPos, false);
break;
}
return GameClientSendPacket::SendCharBindPosition(*lpCharacter,
dwNPCID, cCmd, Pos, cZone, 0);
}
// ij<><C4B3><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20>̵<EFBFBD>
bool GameClientParsePacket::ParseCharQuickSlotMove(CGameClientDispatch& GameClientDispatch, PktBase* lpPktBase)
{
CHECK_FIXED_PACKETSIZE(lpPktBase, sizeof(PktQSM), GameClientDispatch);
PktQSM* lpPktQSM = static_cast<PktQSM*>(lpPktBase);
CCharacter* lpCharacter = GameClientDispatch.GetCharacter();
CHECK_CHARACTER_PTR(lpCharacter, GameClientDispatch, lpPktBase->GetCmd());
TakeType takeType = lpPktQSM->m_TakeType;
unsigned short usSkillID = lpPktQSM->m_usSkillID;
unsigned char cLockCount = lpPktQSM->m_cLockCount;
unsigned char cSkillLevel = lpPktQSM->m_cSkillLevel;
unsigned short usError = 0;
if (false == lpCharacter->MoveQuickSlot(takeType, usSkillID, cLockCount, cSkillLevel))
{
usError = PktQSM::FAIL_MOVE;
}
return GameClientSendPacket::SendCharQuickSlotMove(
GameClientDispatch.GetSendStream(), takeType, usSkillID, usError);
}
// ij<><C4B3><EFBFBD><EFBFBD> <20>ɼ<EFBFBD> <20><><EFBFBD><EFBFBD>
bool GameClientParsePacket::ParseCharControlOption(CGameClientDispatch& GameClientDispatch, PktBase* lpPktBase)
{
CHECK_FIXED_PACKETSIZE(lpPktBase, sizeof(PktCOp), GameClientDispatch);
PktCOp* lpPktCOp = static_cast<PktCOp*>(lpPktBase);
CCharacter* lpCharacter = GameClientDispatch.GetCharacter();
CHECK_CHARACTER_PTR(lpCharacter, GameClientDispatch, lpPktBase->GetCmd());
unsigned long dwCharID = lpPktCOp->m_dwCharID;
RejectOption Reject = lpPktCOp->m_RejectOption;
unsigned short usError = 0;
// <20>ź<EFBFBD> <20>ɼ<EFBFBD> <20><><EFBFBD><EFBFBD>
if (false == lpCharacter->ControlOption(Reject, false))
{
ERRLOG1(g_Log, "CID:0x%08x ij<><C4B3><EFBFBD><EFBFBD> <20>ź<EFBFBD> <20>ɼ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.", dwCharID);
return false;
}
return GameClientSendPacket::SendCharControlOption(GameClientDispatch.GetSendStream(), dwCharID, Reject);
}
// <20><><EFBFBD><EFBFBD> <20>dzڿ<C7B3> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
bool GameClientParsePacket::ParseCharAuthorizePanel(CGameClientDispatch& GameClientDispatch, PktBase* lpPktBase)
{
CHECK_FIXED_PACKETSIZE(lpPktBase, sizeof(PktAP), GameClientDispatch);
PktAP* lpPktAP = static_cast<PktAP *>(lpPktBase);
CCharacter* lpCharacter = GameClientDispatch.GetCharacter();
CHECK_CHARACTER_PTR(lpCharacter, GameClientDispatch, lpPktBase->GetCmd());
unsigned long dwAffectedID = lpPktAP->m_dwAffectedID;
unsigned long dwCasterID = lpPktAP->m_dwCasterID;
unsigned char cCmd = lpPktAP->m_cCmd;
switch (cCmd)
{
case PktAP::AP_RESURRECTION:
{
if (0 == lpCharacter->GetStatus().m_nNowHP)
{
if (SERVER_ID::ZONE3 == CServerSetup::GetInstance().GetServerZone())
{
CCreatureManager::GetInstance().PopRespawnQueue(lpCharacter);
}
if (false == lpCharacter->Respawn(CCharRespawnMgr::RST_RESURRECTION, lpCharacter->GetCurrentPos()))
{
ERRLOG1(g_Log, "CID:0x%08x ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD>) <20><><EFBFBD><EFBFBD>.", dwAffectedID);
}
if (0 != lpCharacter->GetPID())
{
// <20><>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>˸<EFBFBD><CBB8><EFBFBD>.
GameClientSendPacket::SendCharDeadToParty(lpCharacter,
CCreatureManager::GetInstance().GetCharacter(dwCasterID), PktDeadInfo::RESURRECT);
}
}
} break;
case PktAP::AP_RECALL:
{
CCharacter* lpCaster = CCreatureManager::GetInstance().GetCharacter(dwCasterID);
if (NULL == lpCaster)
{
ERRLOG1(g_Log, "CID:0x%08x <20><><EFBFBD>ݿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>.", dwCasterID);
break;
}
const Position& Pos = lpCaster->GetCastingPos();
lpCharacter->MoveTo(Pos, false);
// edith 2009.03.07 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
POS DestPos;
DestPos.fPointX = Pos.m_fPointX;
DestPos.fPointY = Pos.m_fPointY+0.3f;
DestPos.fPointZ = Pos.m_fPointZ;
return GameClientSendPacket::SendCharBindPosition(*lpCharacter,
dwCasterID, PktBP::BP_RECALL, DestPos, CServerSetup::GetInstance().GetServerZone(), 0);
} break;
}
return true;
}
// ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>(<28><><EFBFBD>嵵) <20><><EFBFBD><EFBFBD> <20><>û
bool GameClientParsePacket::ParseCharFameInfo(CGameClientDispatch& GameClientDispatch, PktBase* lpPktBase)
{
CHECK_FIXED_PACKETSIZE(lpPktBase, sizeof(PktFI), GameClientDispatch);
PktFI* lpPktFI = static_cast<PktFI *>(lpPktBase);
CCharacter* lpCharacter = GameClientDispatch.GetCharacter();
CHECK_CHARACTER_PTR(lpCharacter, GameClientDispatch, lpPktBase->GetCmd());
unsigned long dwCharID = lpPktFI->m_dwCharID;
return GameClientSendPacket::SendCharFameInfo(GameClientDispatch.GetSendStream(),
lpCharacter, "", "", 0, 0, PktFIAck::FAME_INFO, PktBase::NO_SERVER_ERR);
}
// <20><>ŷ <20><><EFBFBD><EFBFBD>
bool GameClientParsePacket::ParseCharRankingInfo(CGameClientDispatch& GameClientDispatch, PktBase* lpPktBase)
{
CHECK_FIXED_PACKETSIZE(lpPktBase, sizeof(PktRankingInfo), GameClientDispatch);
PktRankingInfo* lpRankingInfo = static_cast<PktRankingInfo *>(lpPktBase);
CCharacter* lpCharacter = GameClientDispatch.GetCharacter();
CHECK_CHARACTER_PTR(lpCharacter, GameClientDispatch, lpPktBase->GetCmd());
unsigned long dwCharID = lpRankingInfo->m_dwCharID;
unsigned char cClass = lpRankingInfo->m_cClass;
unsigned char cPage = lpRankingInfo->m_cPage;
return CRankingMgr::GetInstance().SendRankingInfo(dwCharID, cClass, cPage);
}
bool GameClientParsePacket::ParseCastObjectInfo(CGameClientDispatch& GameClientDispatch, PktBase* lpPktBase)
{
CHECK_FIXED_PACKETSIZE(lpPktBase, sizeof(PktCOInfo), GameClientDispatch);
PktCOInfo* lpPktCOInfo = static_cast<PktCOInfo*>(lpPktBase);
CCharacter*lpCharacter = GameClientDispatch.GetCharacter();
CHECK_CHARACTER_PTR(lpCharacter, GameClientDispatch, lpPktBase->GetCmd());
if(lpCharacter->GetCID() == lpPktCOInfo->m_dwSenderID)
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ID<49><44> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><ECBFA1> <20><><EFBFBD><EFBFBD>.
CCell* lpCell = lpCharacter->GetCellPos().m_lpCell;
if(0 != lpCell)
{
lpCell->SendCastObjectInfo(lpPktCOInfo->m_dwSenderID,
lpPktCOInfo->m_dwReceiverID, lpPktCOInfo->m_sCastObject);
}
}
else if (lpCharacter->IsRideArms() && lpCharacter->GetRideArmsCID() == lpPktCOInfo->m_dwSenderID)
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ID<49><44> <20><><EFBFBD><EFBFBD> Ÿ<><C5B8> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><ECBFA1> <20><><EFBFBD><EFBFBD>.
CCell* lpCell = lpCharacter->GetCellPos().m_lpCell;
if(0 != lpCell)
{
lpCell->SendCastObjectInfo(lpPktCOInfo->m_dwSenderID,
lpPktCOInfo->m_dwReceiverID, lpPktCOInfo->m_sCastObject);
}
}
return true;
}