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:
@@ -0,0 +1,345 @@
|
||||
#include "stdafx.h"
|
||||
#include "ParseMoveZone.h"
|
||||
|
||||
#include <Creature/CreatureManager.h>
|
||||
#include <Network/Dispatch/GameDispatch.h>
|
||||
#include <Network/SendPacket/SendMoveZone.h>
|
||||
|
||||
#include <Network/Packet/PacketStruct/ServerInfo.h>
|
||||
#include <Network/Packet/PacketStruct/ServerPacket.h>
|
||||
|
||||
#include <DataStorage/CharacterData.h>
|
||||
#include <DataStorage/SessionData.h>
|
||||
#include <DataStorage/SessionDataMgr.h>
|
||||
|
||||
#include <Log/ServerLog.h>
|
||||
#include <Utility/Setup/ServerSetup.h>
|
||||
|
||||
#include <GameTime/GameTimeDBMgr.h>
|
||||
|
||||
namespace DBAgent
|
||||
{
|
||||
namespace ParseMoveZone
|
||||
{
|
||||
|
||||
bool CharMoveZone(CSendStream& SendStream, PktSZMvD* lpPktSZMvD);
|
||||
bool ServerZone(CSendStream& SendStream, PktSA* lpPktSA);
|
||||
bool ServerZoneEnd(CSendStream& SendStream, PktDD* lpPktDD);
|
||||
|
||||
|
||||
bool Parse(CSendStream& SendStream, PktBase* lpPktBase)
|
||||
{
|
||||
bool bResult = false;
|
||||
|
||||
PktDD* lpPktDD = static_cast<PktDD*>(lpPktBase);
|
||||
|
||||
switch (lpPktDD->m_wCmd)
|
||||
{
|
||||
case PktDD::SCmdCharMoveZone:
|
||||
bResult = CharMoveZone(SendStream, static_cast<PktSZMvD*>(lpPktDD));
|
||||
break;
|
||||
|
||||
case PktDD::SCmdServerZone:
|
||||
bResult = ServerZone(SendStream, static_cast<PktSA*>(lpPktDD));
|
||||
break;
|
||||
|
||||
case PktDD::SCmdServerZoneEnd:
|
||||
bResult = ServerZoneEnd(SendStream, lpPktDD);
|
||||
break;
|
||||
|
||||
default:
|
||||
ERRLOG1(g_Log, "ZoneMove <20><>Ŷ ó<><C3B3> <20><><EFBFBD><EFBFBD> : <20><> <20><> <20><><EFBFBD><EFBFBD> <20><>Ŷ CMD:0x%02X<32><58> <20>ҽ<DEBE><D2BD>ϴ<EFBFBD>.",
|
||||
lpPktDD->m_wCmd);
|
||||
|
||||
bResult = true;
|
||||
break;
|
||||
}
|
||||
|
||||
return bResult;
|
||||
}
|
||||
|
||||
|
||||
class CFindGameServerDispatch
|
||||
{
|
||||
public:
|
||||
|
||||
CFindGameServerDispatch(CGameDispatch*& lpGameDispatch, SERVER_ID serverID)
|
||||
: m_lpGameDispatch(lpGameDispatch), m_serverID(serverID)
|
||||
{
|
||||
m_lpGameDispatch = 0;
|
||||
}
|
||||
|
||||
bool operator() (unsigned long dwServerID, CPacketDispatch& packetDispatch)
|
||||
{
|
||||
if(0 == m_lpGameDispatch)
|
||||
{
|
||||
SERVER_ID serverID;
|
||||
serverID.dwID = dwServerID;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> ID<49><44> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20>ٸ<EFBFBD><D9B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, ä<>θ<EFBFBD> -1<>̰<EFBFBD> <20>ٸ<EFBFBD><D9B8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
if ((serverID.dwID == m_serverID.dwID) ||
|
||||
|
||||
(-1 == m_serverID.GetChannel() &&
|
||||
serverID.GetZone() == m_serverID.GetZone() &&
|
||||
serverID.GetGroup() == m_serverID.GetGroup() &&
|
||||
serverID.GetType() == m_serverID.GetType()))
|
||||
{
|
||||
m_lpGameDispatch = &static_cast<CGameDispatch&>(packetDispatch);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
CGameDispatch*& m_lpGameDispatch;
|
||||
SERVER_ID m_serverID;
|
||||
};
|
||||
|
||||
|
||||
bool CharMoveZone(CSendStream& SendStream, PktSZMvD* lpPktSZMvD)
|
||||
{
|
||||
unsigned long dwRequestKey = lpPktSZMvD->m_dwRequestKey;
|
||||
unsigned long dwUID = lpPktSZMvD->m_dwUserID;
|
||||
|
||||
const POS& Pos = lpPktSZMvD->m_NewPos;
|
||||
char cZone = lpPktSZMvD->m_cZone;
|
||||
char cChannel = lpPktSZMvD->m_cChannel;
|
||||
|
||||
#ifdef ENABLE_PACKET_LOG
|
||||
DETLOG4(g_PacketLog, "ParseMoveZone::CharMoveZone : UID:%10u / CID:%10u / SessionID:%10u / ServerID:0x%08X / ",
|
||||
dwUID, 0, 0, 0);
|
||||
#endif
|
||||
|
||||
unsigned short usError = 0;
|
||||
|
||||
using namespace DataStorage;
|
||||
|
||||
CSessionData* lpSessionData = CSessionDataMgr::GetInstance().GetOpenSession(dwUID);
|
||||
CCharacterData* lpCharacterData = 0;
|
||||
|
||||
SERVER_ID serverID;
|
||||
serverID.sID.Type = CServerSetup::GameServer;
|
||||
serverID.sID.Group = CServerSetup::GetInstance().GetServerGroup();
|
||||
serverID.sID.Channel = cChannel;
|
||||
serverID.sID.ID = cZone;
|
||||
|
||||
CGameDispatch* lpGameDispatch = 0;
|
||||
|
||||
CGameDispatch::GetDispatchTable().Process(
|
||||
CFindGameServerDispatch(lpGameDispatch, serverID));
|
||||
|
||||
if (0 == lpSessionData)
|
||||
{
|
||||
ERRLOG1(g_Log, "UID:%10u / ij<><C4B3><EFBFBD><EFBFBD> <20>̵<EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.", dwUID);
|
||||
usError = PktSZMvDAck::FAIL_INVALID_CHAR;
|
||||
}
|
||||
else if (0 == (lpCharacterData = lpSessionData->GetCharacterData()))
|
||||
{
|
||||
ERRLOG1(g_Log, "UID:%10u / ij<><C4B3><EFBFBD><EFBFBD> <20>̵<EFBFBD> <20><><EFBFBD><EFBFBD> : ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͱ<EFBFBD> <20>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD> <20>ʾҽ<CABE><D2BD>ϴ<EFBFBD>.", dwUID);
|
||||
usError = PktSZMvDAck::FAIL_INVALID_CHAR;
|
||||
}
|
||||
else if (0 == lpGameDispatch)
|
||||
{
|
||||
ERRLOG2(g_Log, "UID:%10u / ServerID:0x%08X / ij<><C4B3><EFBFBD><EFBFBD> <20>̵<EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.",
|
||||
dwUID, serverID.dwID);
|
||||
|
||||
usError = PktSZMvDAck::FAIL_INVALID_ZONE;
|
||||
}
|
||||
else if (0 == lpSessionData->GetAdminLevel())
|
||||
{
|
||||
// edith 2009.06.13 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> üũ
|
||||
if(SERVER_ID::STONE_WAR1 <= cZone && cZone <= SERVER_ID::STONE_WAR3)
|
||||
{
|
||||
if (CServerSetup::GetInstance().GetBattleLimit() < lpGameDispatch->GetCharNum())
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʹ<EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
ERRLOG2(g_Log, "UID:%10u / ServerID:0x%08X / ij<><C4B3><EFBFBD><EFBFBD> <20>̵<EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʹ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.",
|
||||
dwUID, serverID.dwID);
|
||||
|
||||
usError = PktSZMvDAck::FAIL_PERSONNEL_OVER;
|
||||
}
|
||||
else
|
||||
{
|
||||
int maxDefaultUser = 10;
|
||||
float limitPer = (float)CServerSetup::GetInstance().GetBattleLimitPer()/100.f;
|
||||
if(limitPer < 1.0f)
|
||||
limitPer = 1.0f;
|
||||
|
||||
int akhanUser = lpGameDispatch->GetCharNum(CClass::AKHAN);
|
||||
int humanUser = lpGameDispatch->GetCharNum(CClass::HUMAN);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20>ΰ<EFBFBD><CEB0>̰<EFBFBD>, <20>ΰ<EFBFBD><CEB0><EFBFBD> <20><>ĭ<EFBFBD><C4AD><EFBFBD><EFBFBD> 1.5<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ȳ<EFBFBD≯<EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ұ<EFBFBD>.
|
||||
if (CClass::HUMAN == lpCharacterData->GetRace())
|
||||
{
|
||||
int overCount = (int)((float)akhanUser * limitPer) - akhanUser;
|
||||
if(overCount < maxDefaultUser)
|
||||
overCount = maxDefaultUser;
|
||||
|
||||
int overUser = akhanUser + overCount;
|
||||
|
||||
if(overUser < lpGameDispatch->GetCharNum(CClass::HUMAN))
|
||||
{
|
||||
ERRLOG2(g_Log, "UID:%10u / ServerID:0x%08X / ij<><C4B3><EFBFBD><EFBFBD> <20>̵<EFBFBD> <20><><EFBFBD><EFBFBD> : <20>ΰ<EFBFBD><CEB0><EFBFBD><EFBFBD><EFBFBD> <20>ұ<EFBFBD><D2B1><EFBFBD>.",
|
||||
dwUID, serverID.dwID);
|
||||
|
||||
usError = PktSZMvDAck::FAIL_PERSONNEL_OVER;
|
||||
}
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD> <20><>ĭ<EFBFBD>̰<EFBFBD>, <20><>ĭ<EFBFBD><C4AD> <20>ΰ<EFBFBD><CEB0><EFBFBD><EFBFBD><EFBFBD> 1.5<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ȳ<EFBFBD≯<EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ұ<EFBFBD>.
|
||||
else if (CClass::AKHAN == lpCharacterData->GetRace())
|
||||
{
|
||||
int overCount = (int)((float)humanUser * limitPer) - humanUser;
|
||||
if(overCount < maxDefaultUser)
|
||||
overCount = maxDefaultUser;
|
||||
|
||||
int overUser = humanUser + overCount;
|
||||
|
||||
if(overUser < lpGameDispatch->GetCharNum(CClass::AKHAN))
|
||||
{
|
||||
ERRLOG2(g_Log, "UID:%10u / ServerID:0x%08X / ij<><C4B3><EFBFBD><EFBFBD> <20>̵<EFBFBD> <20><><EFBFBD><EFBFBD> : <20><>ĭ<EFBFBD><C4AD><EFBFBD><EFBFBD> <20>ұ<EFBFBD><D2B1><EFBFBD>.",
|
||||
dwUID, serverID.dwID);
|
||||
|
||||
usError = PktSZMvDAck::FAIL_PERSONNEL_OVER;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (SERVER_ID::ZONE3 == cZone)
|
||||
{
|
||||
// <20><>Ʋ<EFBFBD><EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ο<EFBFBD> <20><><EFBFBD><EFBFBD> üũ
|
||||
// 2008.10.12 ZONE3<45><33> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
ERRLOG3(g_Log, "UID:%10u / 3<><33> <20><> <20><><EFBFBD><EFBFBD> <20>õ<EFBFBD> : Zone(%d,%d)", dwUID, cZone, cChannel);
|
||||
usError = PktSZMvDAck::FAIL_INVALID_CHAR;
|
||||
|
||||
/*
|
||||
SYSTEMTIME systemTime;
|
||||
GetSystemTime(&systemTime);
|
||||
|
||||
// <20><>Ʋ <20><EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD>.
|
||||
if ((systemTime.wMinute >= STATUE_REST_TIME_1ST_START && systemTime.wMinute <= STATUE_REST_TIME_1ST_END) ||
|
||||
(systemTime.wMinute >= STATUE_REST_TIME_2ND_START && systemTime.wMinute <= STATUE_REST_TIME_2ND_END))
|
||||
{
|
||||
cZone = lpDataSession->GetCharDataSession().GetCharStartZone(lpCharacterData->GetRace());
|
||||
}
|
||||
*/
|
||||
/* SERVER_ID serverID;
|
||||
serverID.sID.Type = CServerSetup::GameServer;
|
||||
serverID.sID.Group = CServerSetup::GetInstance().GetServerGroup();
|
||||
serverID.sID.Channel = cChannel;
|
||||
serverID.sID.ID = cZone;
|
||||
|
||||
CGameDispatch* lpGameDispatch = 0;
|
||||
|
||||
CGameDispatch::GetDispatchTable().Process(
|
||||
CFindGameServerDispatch(lpGameDispatch, serverID));
|
||||
|
||||
if (0 == lpGameDispatch)
|
||||
{
|
||||
ERRLOG2(g_Log, "UID:%10u / ServerID:0x%08X / ij<><C4B3><EFBFBD><EFBFBD> <20>̵<EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.",
|
||||
dwUID, serverID.dwID);
|
||||
|
||||
usError = PktSZMvDAck::FAIL_INVALID_ZONE;
|
||||
}
|
||||
else if (CServerSetup::GetInstance().GetBattleLimit() > lpGameDispatch->GetCharNum())
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD> <20>ΰ<EFBFBD><CEB0>̰<EFBFBD>, <20>ΰ<EFBFBD><CEB0><EFBFBD> <20><>ĭ<EFBFBD><C4AD><EFBFBD><EFBFBD> 1.5<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ȳ<EFBFBD≯<EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ұ<EFBFBD>.
|
||||
if (CClass::HUMAN == lpCharacterData->GetRace() &&
|
||||
lpGameDispatch->GetCharNum(CClass::AKHAN) * 1.5 < lpGameDispatch->GetCharNum(CClass::HUMAN))
|
||||
{
|
||||
usError = PktSZMvDAck::FAIL_PERSONNEL_OVER;
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD> <20><>ĭ<EFBFBD>̰<EFBFBD>, <20><>ĭ<EFBFBD><C4AD> <20>ΰ<EFBFBD><CEB0><EFBFBD><EFBFBD><EFBFBD> 1.5<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ȳ<EFBFBD≯<EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ұ<EFBFBD>.
|
||||
else if (CClass::AKHAN == lpCharacterData->GetRace() &&
|
||||
lpGameDispatch->GetCharNum(CClass::HUMAN ) * 1.5 < lpGameDispatch->GetCharNum(CClass::AKHAN))
|
||||
{
|
||||
usError = PktSZMvDAck::FAIL_PERSONNEL_OVER;
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
// if(SERVER_ID::STONE_WAR1 <= cZone && cZone <= SERVER_ID::STONE_WAR3)
|
||||
// usError = PktSZMvDAck::FAIL_PERSONNEL_OVER;
|
||||
|
||||
if(0 == usError && 0 != lpSessionData)
|
||||
{
|
||||
// <20≯<EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD>
|
||||
if (!lpSessionData->SetMoveZone(cZone, Pos))
|
||||
{
|
||||
/*
|
||||
if(SERVER_ID::ZONE5 == cZone && !CGameTimeDBMgr::GetInstance().IsEnterTime())
|
||||
{
|
||||
// <20><EFBFBD><D7BC><EFBFBD> <20>ű<EFBFBD><C5B1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD> <20>ɷ<EFBFBD><C9B7><EFBFBD>.
|
||||
DETLOG5(g_Log, "UID:%10u / Zone:%2u / X:%f / Y:%f / Z:%f / ij<><C4B3><EFBFBD><EFBFBD> <20>̵<EFBFBD> <20><><EFBFBD><EFBFBD> : <20>ű<EFBFBD><C5B1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.",
|
||||
dwUID, cZone, Pos.fPointX, Pos.fPointY, Pos.fPointZ);
|
||||
}
|
||||
else
|
||||
{
|
||||
ERRLOG5(g_Log, "UID:%10u / Zone:%2u / X:%f / Y:%f / Z:%f / ij<><C4B3><EFBFBD><EFBFBD> <20>̵<EFBFBD> <20><><EFBFBD><EFBFBD> : <20>߸<EFBFBD><DFB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD> <20>õ<EFBFBD>.",
|
||||
dwUID, cZone, Pos.fPointX, Pos.fPointY, Pos.fPointZ);
|
||||
}
|
||||
*/
|
||||
ERRLOG5(g_Log, "UID:%10u / Zone:%2u / X:%f / Y:%f / Z:%f / ij<><C4B3><EFBFBD><EFBFBD> <20>̵<EFBFBD> <20><><EFBFBD><EFBFBD> : <20>߸<EFBFBD><DFB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD> <20>õ<EFBFBD>.",
|
||||
dwUID, cZone, Pos.fPointX, Pos.fPointY, Pos.fPointZ);
|
||||
|
||||
usError = PktSZMvDAck::FAIL_INVALID_ZONE;
|
||||
}
|
||||
}
|
||||
|
||||
// edith 2009.06.28 <20><><EFBFBD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD>н<EFBFBD> <20><><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD> <20><><EFBFBD>ش<EFBFBD>.
|
||||
// gameserver<65><72><EFBFBD><EFBFBD> dbagnet<65><74> <20><>Ŷ <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
if(0 != usError)
|
||||
{
|
||||
if(SERVER_ID::STONE_WAR1 <= cZone && cZone <= SERVER_ID::STONE_WAR3)
|
||||
lpCharacterData->SetRealmWarFlag(Creature::WAR_OFF);
|
||||
else if(SERVER_ID::CAPITAL == cZone)
|
||||
lpCharacterData->SetGuildWarFlag(Creature::WAR_OFF);
|
||||
}
|
||||
|
||||
return (-1 == cChannel || 0 != usError) ?
|
||||
// ä<><C3A4><EFBFBD><EFBFBD> -1<>̰ų<CCB0>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><>Ŷ<EFBFBD><C5B6> <20><><EFBFBD><EFBFBD>.
|
||||
SendPacket::CharMoveZone(SendStream, dwRequestKey, cZone, usError)
|
||||
: SendPacket::ServerZone(SendStream, dwRequestKey, cZone, cChannel);
|
||||
}
|
||||
|
||||
|
||||
|
||||
bool ServerZone(CSendStream& SendStream, PktSA* lpPktSA)
|
||||
{
|
||||
unsigned long dwUID = lpPktSA->m_dwUserID;
|
||||
unsigned short usError = 0;
|
||||
|
||||
#ifdef ENABLE_PACKET_LOG
|
||||
DETLOG4(g_PacketLog, "ParseMoveZone::ServerZone : UID:%10u / CID:%10u / SessionID:%10u / ServerID:0x%08X / ",
|
||||
dwUID, 0, 0, 0);
|
||||
#endif
|
||||
|
||||
using namespace DataStorage;
|
||||
CSessionData* lpSessionData = CSessionDataMgr::GetInstance().GetOpenSession(dwUID);
|
||||
if (0 == lpSessionData)
|
||||
{
|
||||
ERRLOG1(g_Log, "UID:%10u / ServerZone <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.", dwUID);
|
||||
usError = PktSAAck::SERVER_ERROR;
|
||||
}
|
||||
|
||||
return SendPacket::ServerZone(SendStream,
|
||||
lpPktSA->m_dwRequestKey, lpPktSA->m_cZone, lpPktSA->m_cChannel, usError);
|
||||
}
|
||||
|
||||
|
||||
|
||||
bool ServerZoneEnd(CSendStream& SendStream, PktDD* lpPktDD)
|
||||
{
|
||||
#ifdef ENABLE_PACKET_LOG
|
||||
DETLOG4(g_PacketLog, "ParseMoveZone::ServerZoneEnd : UID:%10u / CID:%10u / SessionID:%10u / ServerID:0x%08X / ",
|
||||
0, 0, 0, 0);
|
||||
#endif
|
||||
|
||||
return SendPacket::ServerZoneEnd(SendStream, lpPktDD->m_dwRequestKey);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user