Files
Client/Server/RylServerProject/RylGameLibrary/Network/Dispatch/GameClient/ParseCharBGServer.cpp
LGram16 dd97ddec92 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>
2025-11-29 20:17:20 +09:00

119 lines
3.9 KiB
C++

#include "stdafx.h"
#include <Log/ItemLog.h>
#include <Utility/Setup/ServerSetup.h>
#include <Network/Dispatch/ParseUtils.h>
#include <Network/Dispatch/DBAgent/RegularAgentDispatch.h>
#include <Network/Packet/PacketCommand.h>
#include <Network/Packet/PacketStruct/BGServerPacket.h>
#include <Creature/CreatureManager.h>
#include <Map/FieldMap/VirtualArea/VirtualAreaMgr.h>
#include "ParseCharBGServer.h"
#include "GameClientDispatch.h"
// 배틀 그라운드 서버군 방 리스트 요청
bool GameClientParsePacket::ParseCharBGServerMapList(CGameClientDispatch& GameClientDispatch, PktBase* lpPktBase)
{
PktBGServerMapList* lpPktBGServerMapList = reinterpret_cast<PktBGServerMapList *>(lpPktBase);
CCharacter* lpCharacter = GameClientDispatch.GetCharacter();
CHECK_CHARACTER_PTR(lpCharacter, GameClientDispatch, lpPktBase->GetCmd());
VirtualArea::CVirtualAreaMgr::GetInstance().SendBGServerMapList(lpCharacter);
return true;
}
// 배틀 그라운드 서버군 방 결과 리스트
bool GameClientParsePacket::ParseCharBGServerResultList(CGameClientDispatch& GameClientDispatch, PktBase* lpPktBase)
{
PktBGServerResultList* lpPktBGServerResultList = reinterpret_cast<PktBGServerResultList *>(lpPktBase);
CCharacter* lpCharacter = GameClientDispatch.GetCharacter();
CHECK_CHARACTER_PTR(lpCharacter, GameClientDispatch, lpPktBase->GetCmd());
VirtualArea::CVirtualAreaMgr::GetInstance().SendBGServerResultList(lpCharacter);
return true;
}
// 배틀 그라운드 서버군 존 이동
bool GameClientParsePacket::ParseCharBGServerMoveZone(CGameClientDispatch& GameClientDispatch, PktBase* lpPktBase)
{
PktBGServerMoveZone* lpPktBGServerMoveZone = reinterpret_cast<PktBGServerMoveZone *>(lpPktBase);
CCharacter* lpCharacter = GameClientDispatch.GetCharacter();
CHECK_CHARACTER_PTR(lpCharacter, GameClientDispatch, lpPktBase->GetCmd());
if (0 == lpPktBGServerMoveZone->m_wMapNumber)
{
// 대기실로 이동
VirtualArea::CVirtualAreaMgr::GetInstance().LeaveVirtualArea(lpCharacter);
}
else
{
// 해당 맵(방) 번호에 해당하는 배틀 그라운드 맵으로 이동
unsigned short wMapIndex = lpPktBGServerMoveZone->m_wMapNumber | VirtualArea::BGSERVERMAP; // 이동하려는 MapIndex
unsigned char cMoveType = lpPktBGServerMoveZone->m_cMoveType;
VirtualArea::CVirtualAreaMgr::GetInstance().EnterVirtualArea(lpCharacter, wMapIndex, cMoveType);
}
return true;
}
// 배틀 그라운드 서버군 환전소 명령
bool GameClientParsePacket::ParseCharBGServerMileageChange(CGameClientDispatch& GameClientDispatch, PktBase* lpPktBase)
{
PktBGServerMileageChange* lpPktBGServerMileageChange = reinterpret_cast<PktBGServerMileageChange *>(lpPktBase);
CCharacter* lpCharacter = GameClientDispatch.GetCharacter();
CHECK_CHARACTER_PTR(lpCharacter, GameClientDispatch, lpPktBase->GetCmd());
unsigned long dwCID = lpPktBGServerMileageChange->m_dwCID;
unsigned char cGroup = lpPktBGServerMileageChange->m_cGroup;
unsigned char cCmd = lpPktBGServerMileageChange->m_cCmd;
unsigned long dwMileage = lpPktBGServerMileageChange->m_dwMileage;
switch (cCmd)
{
case PktBGServerMileageChange::MC_REQUEST:
break;
case PktBGServerMileageChange::MC_CHANGE:
RegularAgentPacketParse::SendSetCharData(dwCID, dwMileage, cGroup);
break;
default:
ERRLOG2(g_Log, "CID:0x%08x 잘못된 환전소 명령입니다. Cmd:%d", dwCID, cCmd);
break;
}
return true;
}
// 배틀 그라운드 서버 정섭 캐릭터 정보 요청
bool GameClientParsePacket::ParseCharBGServerCharSlot(CGameClientDispatch& GameClientDispatch, PktBase* lpPktBase)
{
PktBGServerCharSlot* lpPktBGServerCharSlot = reinterpret_cast<PktBGServerCharSlot *>(lpPktBase);
CCharacter* lpCharacter = GameClientDispatch.GetCharacter();
CHECK_CHARACTER_PTR(lpCharacter, GameClientDispatch, lpPktBase->GetCmd());
unsigned long dwCID = lpPktBGServerCharSlot->m_dwCID;
unsigned char cGroup = lpPktBGServerCharSlot->m_cGroup;
RegularAgentPacketParse::SendGetCharSlot(dwCID, cGroup);
return true;
}