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,218 @@
|
||||
#ifndef _GAMA_CLIENT_SOCKET_CONSTANTS_H_
|
||||
#define _GAMA_CLIENT_SOCKET_CONSTANTS_H_
|
||||
|
||||
|
||||
const unsigned short NoError = 0x0000; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const unsigned short WrongParameter = 0x4001; // <20>߸<EFBFBD><DFB8><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
const unsigned short ExceptionError = 0x4002; // <20><><EFBFBD><EFBFBD> <20><> <20><EFBFBD>
|
||||
|
||||
|
||||
namespace ClientConstants
|
||||
{
|
||||
enum Hand
|
||||
{
|
||||
Hand_Weapon1 = 1,
|
||||
Hand_Weapon2 = 2
|
||||
};
|
||||
|
||||
enum FameInfo
|
||||
{
|
||||
FameInfo_Fame = 1,
|
||||
FameInfo_Mileage = 2
|
||||
};
|
||||
|
||||
enum Require
|
||||
{
|
||||
Require_HPInfo = 0,
|
||||
Require_UDPInfo = 1,
|
||||
Require_Shape = 2
|
||||
};
|
||||
|
||||
enum BindPos
|
||||
{
|
||||
Bind_SavePos = 0,
|
||||
Bind_Warp = 1,
|
||||
Bind_Recall = 2
|
||||
};
|
||||
|
||||
enum ChatType
|
||||
{
|
||||
ChatType_Normal = 0,
|
||||
ChatType_Party = 1,
|
||||
ChatType_Friend = 2,
|
||||
ChatType_Guild = 3,
|
||||
ChatType_ClientLog = 5,
|
||||
ChatType_Stall = 6,
|
||||
ChatType_Shout = 7,
|
||||
ChatType_FindParty = 14,
|
||||
ChatType_Dice = 16,
|
||||
ChatType_Notify = 255
|
||||
};
|
||||
|
||||
enum CellOper
|
||||
{
|
||||
CellOper_Move = 0,
|
||||
CellOper_Login = 1,
|
||||
CellOper_Logout = 1,
|
||||
CellOper_Respawn = 2
|
||||
};
|
||||
|
||||
enum PartyCmd
|
||||
{
|
||||
PartyCmd_Invite = 0,
|
||||
PartyCmd_Accept = 1,
|
||||
PartyCmd_Refuse = 2,
|
||||
PartyCmd_Banish = 3,
|
||||
PartyCmd_Secession = 4,
|
||||
PartyCmd_Transfer = 5,
|
||||
PartyCmd_Destroy = 6,
|
||||
PartyCmd_Login = 7,
|
||||
PartyCmd_Logout = 8,
|
||||
PartyCmd_Delete = 9,
|
||||
PartyCmd_ReLogin = 10,
|
||||
PartyCmd_FindParty = 11,
|
||||
PartyCmd_FindMember = 12,
|
||||
PartyCmd_AutoRoutingOn = 13,
|
||||
PartyCmd_AutoRoutingOff = 14
|
||||
};
|
||||
|
||||
enum StateType
|
||||
{
|
||||
StateType_STR = 1,
|
||||
StateType_DEX = 2,
|
||||
StateType_CON = 3,
|
||||
StateType_INT = 4,
|
||||
StateType_WIS = 5
|
||||
};
|
||||
|
||||
enum Judge
|
||||
{
|
||||
Judge_Front = 0, Judge_Side = 1, Judge_Back = 2,
|
||||
Judge_Guard = 3, Judge_Critical = 4, Judge_Heal = 5,
|
||||
Judge_ManaHeal = 6, Judge_Chant = 7, Judge_Enchant = 8,
|
||||
Judge_Disenchant = 9, Judge_Evade = 10, Judge_Resist = 11,
|
||||
Judge_ManaShell = 12, Judge_Poisoned = 13, Judge_NonShow = 14,
|
||||
Judge_Miss = 15, Judge_Counter = 16, Judge_FireCracker = 17,
|
||||
Judge_ChinaFireCracker = 18, Judge_SkillItem = 19, Judge_Fired = 20,
|
||||
Judge_Social = 21, Judge_Gather = 22
|
||||
};
|
||||
|
||||
enum ExchangeCmd
|
||||
{
|
||||
ExchangeCmd_Propose = 0, ExchangeCmd_Accept = 1, ExchangeCmd_Refuse = 2,
|
||||
ExchangeCmd_OK = 3, ExchangeCmd_Cancel = 4, ExchangeCmd_Exchange = 5,
|
||||
ExchangeCmd_Quit = 6, ExchangeCmd_Lock = 7, ExchangeCmd_UnLock = 8
|
||||
};
|
||||
|
||||
enum DuelCmd
|
||||
{
|
||||
DuelCmd_Propose = 0, DuelCmd_Ready = 1, DuelCmd_Refuse = 2,
|
||||
DuelCmd_Logout = 3, DuelCmd_Dead = 4, DuelCmd_PartyPropose = 5,
|
||||
DuelCmd_PartyReady = 6, DuelCmd_RequestPartyInfo = 7, DuelCmd_Cancel = 8
|
||||
};
|
||||
|
||||
enum AdminCmd
|
||||
{
|
||||
MoveZoneChar = 1,
|
||||
MoveZoneParty = 2,
|
||||
MoveChar = 3,
|
||||
MoveParty = 4,
|
||||
RespawnChar = 5,
|
||||
RespawnParty = 6,
|
||||
KillChar = 7,
|
||||
KillParty = 8,
|
||||
DuelInit = 9,
|
||||
CreateItem = 10,
|
||||
CreateMon = 11,
|
||||
InfoChar = 12,
|
||||
GetExp = 13,
|
||||
GetGold = 14,
|
||||
LevelUp = 15,
|
||||
PeaceMode = 16,
|
||||
WarMode = 17,
|
||||
GetFame = 18,
|
||||
GetMileage = 19,
|
||||
TraceChar = 20,
|
||||
HideChar = 21,
|
||||
ShowChar = 22,
|
||||
InvincibleChar = 23,
|
||||
NormalChar = 24,
|
||||
LogoutChar = 25,
|
||||
Apocalypse = 26,
|
||||
CreateEquip = 27,
|
||||
EliteBonus = 28,
|
||||
|
||||
StatueInit = 29, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ
|
||||
RespawnAllChar = 30, // <20><><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><>Ʋ <20><EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD>)
|
||||
ChangeClass = 31, // <20><><EFBFBD><EFBFBD> <20>ϱ<EFBFBD>
|
||||
LearnSkill = 32, // <20>ش<EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
EraseSkill = 33, // <20>ش<EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
LevelDown = 34, // <20><><EFBFBD><EFBFBD> <20>ٿ<EFBFBD>
|
||||
GetQuest = 35, // <20><><EFBFBD><EFBFBD>Ʈ <20>ޱ<EFBFBD>
|
||||
AddQuest = 36, // <20>Ϸ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20>߰<EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD>丮<EFBFBD><E4B8AE> <20>߰<EFBFBD>)
|
||||
DeleteQuest = 37, // <20><><EFBFBD><EFBFBD>/<2F>Ϸ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD>丮<EFBFBD><E4B8AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
|
||||
// BATTLEGROUND_SERVER <20><EFBFBD><EEBFB5> <20><><EFBFBD><EFBFBD>
|
||||
FinishGame = 38, // <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
DrawGame = 39, // <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD>º<EFBFBD>)
|
||||
IgnoreGame = 40, // <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
SetMax = 41, // <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20>ο<EFBFBD><CEBF><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
SetScore = 42, // <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ǥ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
SetLimitTime = 43, // <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
SetRestTime = 44, // <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
// = 45, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ӽ<EFBFBD> <20>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
AddSpell = 46, // <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ο<EFBFBD><CEBF>Ѵ<EFBFBD>.
|
||||
DeleteSpell = 47, // <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
|
||||
Stop = 48, // <20>ش<EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>.
|
||||
StopOff = 49, // <20><><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> Ǯ<><C7AE><EFBFBD>ش<EFBFBD>.
|
||||
|
||||
Relation = 55,
|
||||
|
||||
// = 100 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>뵵<EFBFBD><EBB5B5> <20><><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
enum AuthorizePanelCmd
|
||||
{
|
||||
APCmd_Resurrection = 1,
|
||||
APCmd_Recall = 2
|
||||
};
|
||||
|
||||
enum RespawnCmd
|
||||
{
|
||||
RespawnCmd_Normal = 0,
|
||||
RespawnCmd_Select = 1,
|
||||
RespawnCmd_FormerPlace = 2,
|
||||
RespawnCmd_Human1 = 3,
|
||||
RespawnCmd_Human2 = 4,
|
||||
RespawnCmd_Human3 = 5,
|
||||
RespawnCmd_Akhan1 = 6,
|
||||
RespawnCmd_Akhan2 = 7,
|
||||
RespawnCmd_Akhan3 = 8,
|
||||
//-- 2004. 2. 13. Zergra From.--//
|
||||
RespawnCmd_BGServer_Random = 9,
|
||||
//-- Zergra To. --//
|
||||
RespawnCmd_BG_Exit = 10
|
||||
};
|
||||
|
||||
enum AutoRoutingCmd
|
||||
{
|
||||
ARCmd_Order = 0,
|
||||
ARCmd_Possible = 1,
|
||||
ARCmd_Impossible = 2
|
||||
};
|
||||
|
||||
enum SummonCmd
|
||||
{
|
||||
SummonCmd_Attack = 0,
|
||||
SummonCmd_Return = 1,
|
||||
SummonCmd_Die = 2,
|
||||
SummonCmd_GuardOn = 3,
|
||||
SummonCmd_GuardOff = 4
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,697 @@
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// ClientSocket Class
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
#include "stdafx.h"
|
||||
#include "ClientSocket.h"
|
||||
|
||||
#include <mmsystem.h>
|
||||
#include <Network/ClientNetwork/SessionMgr.h>
|
||||
#include <Network/ClientNetwork/TCPSession.h>
|
||||
#include <Network/ClientNetwork/UDPSession.h>
|
||||
#include <Network/ClientNetwork/NullHandler.h>
|
||||
#include <Network/ClientNetwork/ClientEventHandler.h>
|
||||
|
||||
#include <ctime>
|
||||
#include "GMMemory.h"
|
||||
|
||||
// forward decl
|
||||
bool GetHostIP(IN_ADDR &Addr, bool AllowVirtual);
|
||||
bool IsWrongIP(IN_ADDR &Addr);
|
||||
bool GetNATAddress(SOCKET Socket_In, SOCKADDR_IN *Address_Out, bool AllowVirtual);
|
||||
|
||||
ClientSocket* ClientSocket::s_pInstance = 0;
|
||||
|
||||
ClientSocket* ClientSocket::CreateInstance()
|
||||
{
|
||||
if( s_pInstance )
|
||||
delete s_pInstance;
|
||||
|
||||
s_pInstance = new ClientSocket;
|
||||
return s_pInstance;
|
||||
};
|
||||
|
||||
ClientSocket::ClientSocket()
|
||||
: m_dwStatusFlag(0)
|
||||
{
|
||||
memset(m_Address, 0, sizeof(SOCKADDR_IN) * (MAX_ADDRESS + 1));
|
||||
memset(m_lpEventHandler, 0, sizeof(ClientNet::CClientEventHandler*) * MAX_HANDLER + 1);
|
||||
|
||||
m_bStatusFlag.reset();
|
||||
|
||||
m_lpNullEventHandler = &ClientNet::CNullClientEventHandler::GetInstance();
|
||||
#include "GMUndefNew.h"
|
||||
m_lpEventHandlerMgr = new (std::nothrow) ClientNet::CClientEventHandlerMgr;
|
||||
#include "GMRedefNew.h"
|
||||
|
||||
InitNSCheckList();
|
||||
}
|
||||
|
||||
|
||||
ClientSocket::~ClientSocket(void)
|
||||
{
|
||||
delete m_lpEventHandlerMgr;
|
||||
}
|
||||
|
||||
|
||||
bool ClientSocket::Open(const char* address, unsigned short usport,
|
||||
ClientNet::CClientEventHandler* lpEventHandler)
|
||||
{
|
||||
return (0 != lpEventHandler && 0 != m_lpEventHandlerMgr &&
|
||||
m_lpEventHandlerMgr->Connect(INET_Addr(address, usport), lpEventHandler));
|
||||
}
|
||||
|
||||
void ClientSocket::SetHandler(ClientNet::CClientEventHandler* lpHandler, HandlerType eHandlerType)
|
||||
{
|
||||
m_lpEventHandler[eHandlerType] = lpHandler;
|
||||
}
|
||||
|
||||
void ClientSocket::ResetHandler(ClientNet::CClientEventHandler* lpHandler, HandlerType eHandlerType)
|
||||
{
|
||||
if (lpHandler == m_lpEventHandler[eHandlerType])
|
||||
{
|
||||
m_lpEventHandler[eHandlerType] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
bool ClientSocket::IsConnected(HandlerType eHandlerType)
|
||||
{
|
||||
return (0 != m_lpEventHandler[eHandlerType]);
|
||||
}
|
||||
|
||||
void ClientSocket::Disconnect(HandlerType eHandlerType)
|
||||
{
|
||||
if (0 != m_lpEventHandlerMgr)
|
||||
{
|
||||
if (eHandlerType == MAX_HANDLER)
|
||||
{
|
||||
for(int idx = 0; idx < MAX_HANDLER; ++idx)
|
||||
{
|
||||
if(0 != m_lpEventHandler[idx])
|
||||
{
|
||||
m_lpEventHandlerMgr->Close(m_lpEventHandler[idx]);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(0 != m_lpEventHandler[eHandlerType])
|
||||
{
|
||||
m_lpEventHandlerMgr->Close(m_lpEventHandler[eHandlerType]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ClientSocket::SetAddress(AddressType eAddrType, const char* szAddress, unsigned port)
|
||||
{
|
||||
m_Address[eAddrType] = INET_Addr(szAddress, port).get_addr_in();
|
||||
}
|
||||
|
||||
void ClientSocket::HandleEvents(DWORD dwProcessPerCall)
|
||||
{
|
||||
if(0 != m_lpEventHandlerMgr)
|
||||
{
|
||||
m_lpEventHandlerMgr->HandleEvents(dwProcessPerCall);
|
||||
}
|
||||
}
|
||||
|
||||
bool GetHostIP(IN_ADDR &Addr, bool AllowVirtual)
|
||||
{
|
||||
char HostName[256];
|
||||
if(!gethostname(HostName, 255))
|
||||
{
|
||||
PHOSTENT pHost = gethostbyname(HostName);
|
||||
if(NULL == pHost)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
int Count = 0;
|
||||
for(;pHost->h_addr_list[Count]; ++Count)
|
||||
{
|
||||
memcpy(&(Addr.S_un.S_addr), pHost->h_addr_list[Count], sizeof(IN_ADDR));
|
||||
|
||||
if(!AllowVirtual)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ȯ<><C8AE>
|
||||
// 10.0.0.0 ~ 10.255.255.255
|
||||
// 172.16.0.0 ~ 172.31.255.255
|
||||
// 192.168.0.0 ~ 192.168.255.255
|
||||
if((unsigned char)10 == Addr.S_un.S_un_b.s_b1)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else if((unsigned char)172 == Addr.S_un.S_un_b.s_b1)
|
||||
{
|
||||
if(Addr.S_un.S_un_b.s_b2 >= (unsigned char)16 && Addr.S_un.S_un_b.s_b2 <= (unsigned char)31)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else if((unsigned char)192 == Addr.S_un.S_un_b.s_b1)
|
||||
{
|
||||
if((unsigned char)168 == Addr.S_un.S_un_b.s_b2)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// <20>߸<EFBFBD><DFB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// 169.X.X.X <20>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ҵ<EFBFBD> ( SyGate )
|
||||
// 0.X.X.X
|
||||
if((unsigned char)169 == Addr.S_un.S_un_b.s_b1)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else if((unsigned char)0 == Addr.S_un.S_un_b.s_b1)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
if(0 != Count)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
bool IsWrongIP(IN_ADDR &Addr)
|
||||
{
|
||||
if((unsigned char)169 == Addr.S_un.S_un_b.s_b1)
|
||||
{
|
||||
if((unsigned char)254 == Addr.S_un.S_un_b.s_b2)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if((unsigned char)0 == Addr.S_un.S_un_b.s_b1)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
bool GetNATAddress(SOCKET Socket_In, SOCKADDR_IN *Address_Out, bool AllowVirtual)
|
||||
{
|
||||
int AddressSize = sizeof(SOCKADDR_IN);
|
||||
if(getsockname(Socket_In, (struct sockaddr *)Address_Out, &AddressSize) != SOCKET_ERROR)
|
||||
{
|
||||
char HostName[256];
|
||||
if(!gethostname(HostName, 255))
|
||||
{
|
||||
PHOSTENT pHost = gethostbyname(HostName);
|
||||
if(NULL == pHost)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
IN_ADDR& Addr = Address_Out->sin_addr;
|
||||
int Count = 0;
|
||||
for(;pHost->h_addr_list[Count]; ++Count)
|
||||
{
|
||||
memcpy(&(Addr.S_un.S_addr), pHost->h_addr_list[Count], sizeof(IN_ADDR));
|
||||
|
||||
if(!AllowVirtual)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ȯ<><C8AE>
|
||||
// 10.0.0.0 ~ 10.255.255.255
|
||||
// 172.16.0.0 ~ 172.31.255.255
|
||||
// 192.168.0.0 ~ 192.168.255.255
|
||||
if((unsigned char)10 == Addr.S_un.S_un_b.s_b1)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else if((unsigned char)172 == Addr.S_un.S_un_b.s_b1)
|
||||
{
|
||||
if(Addr.S_un.S_un_b.s_b2 >= (unsigned char)16 && Addr.S_un.S_un_b.s_b2 <= (unsigned char)31)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else if((unsigned char)192 == Addr.S_un.S_un_b.s_b1)
|
||||
{
|
||||
if((unsigned char)168 == Addr.S_un.S_un_b.s_b2)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// <20>߸<EFBFBD><DFB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// 169.X.X.X <20>ڵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ҵ<EFBFBD> ( SyGate )
|
||||
// 0.X.X.X
|
||||
if((unsigned char)169 == Addr.S_un.S_un_b.s_b1)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else if((unsigned char)0 == Addr.S_un.S_un_b.s_b1)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
if(0 != Count)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
//by Hades Kang
|
||||
|
||||
void
|
||||
ClientSocket::SetStatusFlag(unsigned long dwStatusFlag)
|
||||
{
|
||||
m_dwStatusFlag = dwStatusFlag;
|
||||
}
|
||||
|
||||
unsigned long
|
||||
ClientSocket::GetStatusFlag()
|
||||
{
|
||||
return m_dwStatusFlag;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
bool
|
||||
//<2F>ش<EFBFBD> <20>÷<EFBFBD><C3B7>װ<EFBFBD> üũ<C3BC>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
ClientSocket::IsNSFlagChecked( unsigned char ucCmdFlag )
|
||||
{
|
||||
if( s_pInstance )
|
||||
return s_pInstance->m_bStatusFlag[ ucCmdFlag ];
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
//<2F>ش<EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD> ü<><C3BC><EFBFBD><EFBFBD> üũ<C3BC>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
ClientSocket::IsNSFlagChainChecked( unsigned char ucCmdFlag )
|
||||
{
|
||||
if( s_pInstance )
|
||||
{
|
||||
std::vector<unsigned char>* pCheckList;
|
||||
std::vector<unsigned char>::iterator iter;
|
||||
pCheckList = &(s_pInstance->m_SendCheckList[ucCmdFlag]);
|
||||
for( iter = pCheckList->begin() ; iter != pCheckList->end(); iter++ )
|
||||
{
|
||||
if( s_pInstance->m_bStatusFlag[ (*iter) ] ) //<2F>ش<EFBFBD> <20>÷<EFBFBD><C3B7>װ<EFBFBD> üũ <20>Ǿ<EFBFBD> <20>ִٸ<D6B4>...
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
//<2F>ش<EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD> Ȱ<><C8B0>ȭ <20><>Ŵ - Send <20>ÿ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
ClientSocket::SetNSFlagOn( unsigned char ucCmdFlag )
|
||||
{
|
||||
if( ucCmdFlag == CmdCharMove || //üũ<C3BC><C5A9> <20>ʿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>κе<CEBA>.
|
||||
ucCmdFlag == CmdCharUpdateAddress ||
|
||||
ucCmdFlag == CmdSysPing ||
|
||||
ucCmdFlag == CmdCharAdminCmd )
|
||||
return ;
|
||||
|
||||
|
||||
if( s_pInstance )
|
||||
s_pInstance->m_bStatusFlag[ ucCmdFlag ] = true;
|
||||
}
|
||||
|
||||
void
|
||||
//<2F>ش<EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD> <20><>Ȱ<EFBFBD><C8B0>ȭ <20><>Ŵ - Receive <20>ÿ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
ClientSocket::SetNSFlagOff( unsigned char ucCmdFlag )
|
||||
{
|
||||
if( s_pInstance )
|
||||
{
|
||||
std::vector<unsigned char>* pCheckList;
|
||||
std::vector<unsigned char>::iterator iter;
|
||||
pCheckList = &(s_pInstance->m_ReceiveCheckList[ucCmdFlag]);
|
||||
for( iter = pCheckList->begin() ; iter != pCheckList->end(); iter++ )
|
||||
{
|
||||
s_pInstance->m_bStatusFlag[ (*iter) ] = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
// Network Status <20><><EFBFBD><EFBFBD> Check List <20>ʱ<EFBFBD>ȭ ( Send, Receive )
|
||||
ClientSocket::InitNSCheckList()
|
||||
{
|
||||
InitSendCheckList();
|
||||
InitReceiveCheckList();
|
||||
}
|
||||
|
||||
void
|
||||
ClientSocket::InitSendCheckList()
|
||||
{
|
||||
/*
|
||||
m_SendCheckList[ CmdAuthAccount ].push_back( CmdAuthAccount ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
m_SendCheckList[ CmdServerGroup ].push_back( CmdServerGroup ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
m_SendCheckList[ CmdUserLogin ].push_back( CmdUserLogin ) ; // <20><><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD>
|
||||
m_SendCheckList[ CmdUserKill ].push_back( CmdUserKill ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
m_SendCheckList[ CmdCharSelect ].push_back( CmdCharSelect ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharCreate ].push_back( CmdCharCreate ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharDelete ].push_back( CmdCharDelete ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
m_SendCheckList[ CmdCharLogin ].push_back( CmdCharLogin ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD>
|
||||
m_SendCheckList[ CmdCharSuicide ].push_back( CmdCharSuicide ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20>ڻ<EFBFBD>
|
||||
m_SendCheckList[ CmdCharRespawn ].push_back( CmdCharRespawn ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><>Ȱ
|
||||
//m_SendCheckList[ CmdCharMove ].push_back( CmdCharMove ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20>̵<EFBFBD> (P2P)
|
||||
m_SendCheckList[ CmdCharMoveUpdate ].push_back( CmdCharMoveUpdate ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20>̵<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
|
||||
m_SendCheckList[ CmdCharChat ].push_back( CmdCharChat ) ; // ij<><C4B3><EFBFBD><EFBFBD> ä<><C3A4>
|
||||
m_SendCheckList[ CmdCharAttack ].push_back( CmdCharAttack ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharCastObject ].push_back( CmdCharCastObject ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharUseSkill ].push_back( CmdCharUseSkill ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD>
|
||||
*/
|
||||
m_SendCheckList[ CmdCharTakeItem ].push_back( CmdCharTakeItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharTakeItem ].push_back( CmdCharSwapItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharTakeItem ].push_back( CmdCharRepairItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharTakeItem ].push_back( CmdCharUseItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharTakeItem ].push_back( CmdCharTradeItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ŷ<EFBFBD>
|
||||
m_SendCheckList[ CmdCharTakeItem ].push_back( CmdCharItemOptionGraft ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ɼ<EFBFBD> <20>̽<EFBFBD>
|
||||
m_SendCheckList[ CmdCharTakeItem ].push_back( CmdCharItemCompensation ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ǹ<EFBFBD>
|
||||
m_SendCheckList[ CmdCharTakeItem ].push_back( CmdCharSplitItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>ø<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ΰ<EFBFBD><CEB0><EFBFBD> <20>ɰ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>)
|
||||
|
||||
m_SendCheckList[ CmdCharSwapItem ].push_back( CmdCharSwapItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharSwapItem ].push_back( CmdCharTakeItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharSwapItem ].push_back( CmdCharTradeItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ŷ<EFBFBD>
|
||||
m_SendCheckList[ CmdCharSwapItem ].push_back( CmdCharRepairItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharSwapItem ].push_back( CmdCharUseItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharSwapItem ].push_back( CmdCharItemOptionGraft ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ɼ<EFBFBD> <20>̽<EFBFBD>
|
||||
m_SendCheckList[ CmdCharSwapItem ].push_back( CmdCharItemCompensation ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ǹ<EFBFBD>
|
||||
m_SendCheckList[ CmdCharSwapItem ].push_back( CmdCharSplitItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>ø<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ΰ<EFBFBD><CEB0><EFBFBD> <20>ɰ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>)
|
||||
|
||||
m_SendCheckList[ CmdCharRepairItem ].push_back( CmdCharRepairItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharRepairItem ].push_back( CmdCharTradeItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ŷ<EFBFBD>
|
||||
m_SendCheckList[ CmdCharRepairItem ].push_back( CmdCharTakeItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharRepairItem ].push_back( CmdCharSwapItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharRepairItem ].push_back( CmdCharUseItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharRepairItem ].push_back( CmdCharItemOptionGraft ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ɼ<EFBFBD> <20>̽<EFBFBD>
|
||||
m_SendCheckList[ CmdCharRepairItem ].push_back( CmdCharItemCompensation ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ǹ<EFBFBD>
|
||||
m_SendCheckList[ CmdCharRepairItem ].push_back( CmdCharSplitItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>ø<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ΰ<EFBFBD><CEB0><EFBFBD> <20>ɰ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>)
|
||||
|
||||
m_SendCheckList[ CmdCharUseItem ].push_back( CmdCharUseItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharUseItem ].push_back( CmdCharTradeItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ŷ<EFBFBD>
|
||||
m_SendCheckList[ CmdCharUseItem ].push_back( CmdCharTakeItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharUseItem ].push_back( CmdCharSwapItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharUseItem ].push_back( CmdCharRepairItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharUseItem ].push_back( CmdCharItemOptionGraft ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ɼ<EFBFBD> <20>̽<EFBFBD>
|
||||
m_SendCheckList[ CmdCharUseItem ].push_back( CmdCharItemCompensation ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ǹ<EFBFBD>
|
||||
m_SendCheckList[ CmdCharUseItem ].push_back( CmdCharSplitItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>ø<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ΰ<EFBFBD><CEB0><EFBFBD> <20>ɰ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>)
|
||||
|
||||
|
||||
m_SendCheckList[ CmdCharTradeItem ].push_back( CmdCharTradeItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ŷ<EFBFBD>
|
||||
m_SendCheckList[ CmdCharTradeItem ].push_back( CmdCharTakeItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharTradeItem ].push_back( CmdCharSwapItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharTradeItem ].push_back( CmdCharRepairItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharTradeItem ].push_back( CmdCharUseItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharTradeItem ].push_back( CmdCharItemOptionGraft ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ɼ<EFBFBD> <20>̽<EFBFBD>
|
||||
m_SendCheckList[ CmdCharTradeItem ].push_back( CmdCharItemCompensation ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ǹ<EFBFBD>
|
||||
m_SendCheckList[ CmdCharTradeItem ].push_back( CmdCharSplitItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>ø<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ΰ<EFBFBD><CEB0><EFBFBD> <20>ɰ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>)
|
||||
|
||||
m_SendCheckList[ CmdCharStartQuest ].push_back( CmdCharStartQuest ) ; // <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
|
||||
|
||||
m_SendCheckList[ CmdCharEquipShopInfo ].push_back( CmdCharEquipShopInfo ) ; // NPC <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
m_SendCheckList[ CmdCharItemOptionGraft ].push_back( CmdCharItemOptionGraft ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ɼ<EFBFBD> <20>̽<EFBFBD>
|
||||
m_SendCheckList[ CmdCharItemOptionGraft ].push_back( CmdCharTradeItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ŷ<EFBFBD>
|
||||
m_SendCheckList[ CmdCharItemOptionGraft ].push_back( CmdCharTakeItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharItemOptionGraft ].push_back( CmdCharSwapItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharItemOptionGraft ].push_back( CmdCharRepairItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharItemOptionGraft ].push_back( CmdCharUseItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharItemOptionGraft ].push_back( CmdCharItemCompensation ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ǹ<EFBFBD>
|
||||
m_SendCheckList[ CmdCharItemOptionGraft ].push_back( CmdCharSplitItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>ø<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ΰ<EFBFBD><CEB0><EFBFBD> <20>ɰ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>)
|
||||
|
||||
m_SendCheckList[ CmdCharItemCompensation ].push_back( CmdCharItemCompensation ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ǹ<EFBFBD>
|
||||
m_SendCheckList[ CmdCharItemCompensation ].push_back( CmdCharTradeItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ŷ<EFBFBD>
|
||||
m_SendCheckList[ CmdCharItemCompensation ].push_back( CmdCharTakeItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharItemCompensation ].push_back( CmdCharSwapItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharItemCompensation ].push_back( CmdCharRepairItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharItemCompensation ].push_back( CmdCharUseItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharItemCompensation ].push_back( CmdCharItemOptionGraft ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ɼ<EFBFBD> <20>̽<EFBFBD>
|
||||
m_SendCheckList[ CmdCharItemCompensation ].push_back( CmdCharSplitItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>ø<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ΰ<EFBFBD><CEB0><EFBFBD> <20>ɰ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>)
|
||||
|
||||
m_SendCheckList[ CmdCharSplitItem ].push_back( CmdCharSplitItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>ø<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ΰ<EFBFBD><CEB0><EFBFBD> <20>ɰ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>)
|
||||
m_SendCheckList[ CmdCharSplitItem ].push_back( CmdCharTradeItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ŷ<EFBFBD>
|
||||
m_SendCheckList[ CmdCharSplitItem ].push_back( CmdCharTakeItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharSplitItem ].push_back( CmdCharSwapItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharSplitItem ].push_back( CmdCharRepairItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharSplitItem ].push_back( CmdCharUseItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharSplitItem ].push_back( CmdCharItemOptionGraft ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ɼ<EFBFBD> <20>̽<EFBFBD>
|
||||
m_SendCheckList[ CmdCharSplitItem ].push_back( CmdCharItemCompensation ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ǹ<EFBFBD>
|
||||
|
||||
m_SendCheckList[ CmdCharPullDown ].push_back( CmdCharPullDown ) ;
|
||||
m_SendCheckList[ CmdCharPullDown ].push_back( CmdCharPickUp ) ;
|
||||
m_SendCheckList[ CmdCharPullDown ].push_back( CmdCharSplitItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>ø<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ΰ<EFBFBD><CEB0><EFBFBD> <20>ɰ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>)
|
||||
m_SendCheckList[ CmdCharPullDown ].push_back( CmdCharTradeItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ŷ<EFBFBD>
|
||||
m_SendCheckList[ CmdCharPullDown ].push_back( CmdCharTakeItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharPullDown ].push_back( CmdCharSwapItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharPullDown ].push_back( CmdCharRepairItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharPullDown ].push_back( CmdCharUseItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharPullDown ].push_back( CmdCharItemOptionGraft ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ɼ<EFBFBD> <20>̽<EFBFBD>
|
||||
m_SendCheckList[ CmdCharPullDown ].push_back( CmdCharItemCompensation ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ǹ<EFBFBD>
|
||||
|
||||
|
||||
m_SendCheckList[ CmdCharPickUp ].push_back( CmdCharPickUp ) ;
|
||||
m_SendCheckList[ CmdCharPickUp ].push_back( CmdCharSplitItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>ø<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ΰ<EFBFBD><CEB0><EFBFBD> <20>ɰ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>)
|
||||
m_SendCheckList[ CmdCharPickUp ].push_back( CmdCharTradeItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ŷ<EFBFBD>
|
||||
m_SendCheckList[ CmdCharPickUp ].push_back( CmdCharTakeItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharPickUp ].push_back( CmdCharSwapItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharPickUp ].push_back( CmdCharRepairItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharPickUp ].push_back( CmdCharUseItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharPickUp ].push_back( CmdCharItemOptionGraft ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ɼ<EFBFBD> <20>̽<EFBFBD>
|
||||
m_SendCheckList[ CmdCharPickUp ].push_back( CmdCharItemCompensation ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ǹ<EFBFBD>
|
||||
|
||||
/*
|
||||
m_SendCheckList[ CmdCharSkillLock ].push_back( CmdCharSkillLock ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><>ų <20><>
|
||||
m_SendCheckList[ CmdCharSkillCreate ].push_back( CmdCharSkillCreate ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharSkillErase ].push_back( CmdCharSkillErase ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharClassUpgrade ].push_back( CmdCharClassUpgrade ) ; // ij<><C4B3><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><D7B7>̵<EFBFBD>
|
||||
m_SendCheckList[ CmdCharShapeInfo ].push_back( CmdCharShapeInfo ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (P2P)
|
||||
m_SendCheckList[ CmdCharIncreasePoint ].push_back( CmdCharIncreasePoint ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20>ɷ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharBindPosition ].push_back( CmdCharBindPosition ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>ε<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharRequireInfo ].push_back( CmdCharRequireInfo ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20>ش<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>û
|
||||
// m_SendCheckList[ CmdCharUpdateAddress ].push_back( CmdCharUpdateAddress ) ; // ij<><C4B3><EFBFBD><EFBFBD> UDP <20>ּ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
|
||||
m_SendCheckList[ CmdCharPartyCmd ].push_back( CmdCharPartyCmd ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><>Ƽ <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharPartyMemInfo ].push_back( CmdCharPartyMemInfo ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><>Ƽ <20>ɹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (P2P)
|
||||
m_SendCheckList[ CmdCharExchangeCmd ].push_back( CmdCharExchangeCmd ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdSysConnectAgent ].push_back( CmdSysConnectAgent ) ; // <20>ý<EFBFBD><C3BD><EFBFBD> <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD> (UDP <20>߰<EFBFBD>) # <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdSysPacketTransmit ].push_back( CmdSysPacketTransmit ) ; // <20>ý<EFBFBD><C3BD><EFBFBD> <20><>Ŷ <20><><EFBFBD><EFBFBD> (UDP <20>߰<EFBFBD>) # <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharLogout ].push_back( CmdCharLogout ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20>α<EFBFBD> <20>ƿ<EFBFBD>
|
||||
m_SendCheckList[ CmdDBGetData ].push_back( CmdDBGetData ) ; // DB <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdDBUpdateData ].push_back( CmdDBUpdateData ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ DB <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdAgentParty ].push_back( CmdAgentParty ) ; // DB <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><>Ƽ
|
||||
m_SendCheckList[ CmdSysServerLogin ].push_back( CmdSysServerLogin ) ; // <20>ý<EFBFBD><C3BD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD>
|
||||
|
||||
m_SendCheckList[ CmdServerZone ].push_back( CmdServerZone ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
m_SendCheckList[ CmdGameCellInfo ].push_back( CmdGameCellInfo ) ; // <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>)
|
||||
m_SendCheckList[ CmdCharInfo ].push_back( CmdCharInfo ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> # <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharAddressInfo ].push_back( CmdCharAddressInfo ) ; // ij<><C4B3><EFBFBD><EFBFBD> UDP <20>ּ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharCellLogin ].push_back( CmdCharCellLogin ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><> <20>α<EFBFBD><CEB1><EFBFBD>
|
||||
m_SendCheckList[ CmdCharCellLogout ].push_back( CmdCharCellLogout ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><> <20>αƿ<D7BE>
|
||||
m_SendCheckList[ CmdMonMove ].push_back( CmdMonMove ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD>
|
||||
m_SendCheckList[ CmdCharAttackInfo ].push_back( CmdCharAttackInfo ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (P2P)
|
||||
m_SendCheckList[ CmdCharAttacked ].push_back( CmdCharAttacked ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharAward ].push_back( CmdCharAward ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharItemInfo ].push_back( CmdCharItemInfo ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharPickUp ].push_back( CmdCharPickUp ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharPullDown ].push_back( CmdCharPullDown ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharPickUpInfo ].push_back( CmdCharPickUpInfo ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharPullDownInfo ].push_back( CmdCharPullDownInfo ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharCastObjectInfo ].push_back( CmdCharCastObjectInfo ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharInstallSocket ].push_back( CmdCharInstallSocket ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ġ
|
||||
m_SendCheckList[ CmdCharLevelUp ].push_back( CmdCharLevelUp ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>
|
||||
m_SendCheckList[ CmdCharPartyInfo ].push_back( CmdCharPartyInfo ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><>Ƽ <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharUpgradeItem ].push_back( CmdCharUpgradeItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><D7B7>̵<EFBFBD>
|
||||
m_SendCheckList[ CmdCharHPRegen ].push_back( CmdCharHPRegen ) ; // ij<><C4B3><EFBFBD><EFBFBD> HP <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharLevelUpInfo ].push_back( CmdCharLevelUpInfo ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharSplitItem ].push_back( CmdCharSplitItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>ø<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ΰ<EFBFBD><CEB0><EFBFBD> <20>ɰ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>)
|
||||
m_SendCheckList[ CmdUpdateUIDTable ].push_back( CmdUpdateUIDTable ) ; // UID <20><><EFBFBD>̺<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
|
||||
m_SendCheckList[ CmdCharQuickSlotMove ].push_back( CmdCharQuickSlotMove ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD>
|
||||
m_SendCheckList[ CmdCharSwitchEQ ].push_back( CmdCharSwitchHand ) ; // <20><> <20>ٲٱ<D9B2>
|
||||
m_SendCheckList[ CmdSysMngerRegistry ].push_back( CmdSysMngerRegistry ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdSysMngerRequest ].push_back( CmdSysMngerRequest ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>û
|
||||
m_SendCheckList[ CmdSysMngerResponse ].push_back( CmdSysMngerResponse ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharTakeItems ].push_back( CmdCharTakeItems ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD>)
|
||||
m_SendCheckList[ CmdCharTakeGold ].push_back( CmdCharTakeGold ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharExchangeItem ].push_back( CmdCharExchangeItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ
|
||||
m_SendCheckList[ CmdCellBroadCasting ].push_back( CmdCellBroadCasting ) ; // <20><> <20><><EFBFBD>ε<EFBFBD> ij<><C4B3><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdSysPatchAddress ].push_back( CmdSysPatchAddress ) ; // <20><>ġ <20>ּ<EFBFBD>
|
||||
m_SendCheckList[ CmdCharPartyCmdInfo ].push_back( CmdCharPartyCmdInfo ) ; // <20><>Ƽ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdServerLog ].push_back( CmdServerLog ) ; // <20>α<EFBFBD> <20><><EFBFBD><EFBFBD> (???)
|
||||
m_SendCheckList[ CmdCharWhisper ].push_back( CmdCharWhisper ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20>ӼӸ<D3BC>
|
||||
m_SendCheckList[ CmdSysServerVerUpdate ].push_back( CmdSysServerVerUpdate ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
|
||||
m_SendCheckList[ CmdSysMng ].push_back( CmdSysMng ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><>Ŷ (<28>ӽ<EFBFBD>) (???)
|
||||
m_SendCheckList[ CmdSysChannelUpdate ].push_back( CmdSysChannelUpdate ) ; // <20><><EFBFBD><EFBFBD> ä<><C3A4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
|
||||
m_SendCheckList[ CmdCharPartyFind ].push_back( CmdCharPartyFind ) ; // <20><>Ƽ ã<><C3A3>
|
||||
m_SendCheckList[ CmdCharPartyMemData ].push_back( CmdCharPartyMemData ) ; // <20><>Ƽ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharControlOption ].push_back( CmdCharControlOption ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20>ɼ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharDuelCmd ].push_back( CmdCharDuelCmd ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharFameInfo ].push_back( CmdCharFameInfo ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
m_SendCheckList[ CmdLoginServerList ].push_back( CmdLoginServerList ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ #!! <20><>ȣ <20><><EFBFBD><EFBFBD> <20>Ұ<EFBFBD> !!#
|
||||
|
||||
m_SendCheckList[ CmdCharSpellInfo ].push_back( CmdCharSpellInfo ) ; // ij<><C4B3><EFBFBD><EFBFBD> æƮ&<26><>æƮ <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharSkillUnLock ].push_back( CmdCharSkillUnLock ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><>ų <20><> <20><><EFBFBD><EFBFBD>
|
||||
// m_SendCheckList[ CmdSysPing ].push_back( CmdSysPing ) ; // <20><><EFBFBD><EFBFBD> <20><> <20><>Ŷ
|
||||
m_SendCheckList[ CmdCharMoveZone ].push_back( CmdCharMoveZone ) ; // <20><> <20>̵<EFBFBD>
|
||||
|
||||
m_SendCheckList[ CmdAgentZone ].push_back( CmdAgentZone ) ; // <20><> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
m_SendCheckList[ CmdDeposit ].push_back( CmdDeposit ) ; // â<><C3A2> ó<><C3B3> <20><>Ŷ (Client <--> GameServer)
|
||||
m_SendCheckList[ CmdDepositUpdate ].push_back( CmdDepositUpdate ) ; // â<><C3A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><>Ŷ (GameServer <--> DBAgent)
|
||||
|
||||
m_SendCheckList[ CmdCharStallOpen ].push_back( CmdCharStallOpen ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharStallRegisterItem ].push_back( CmdCharStallRegisterItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharStallEnter ].push_back( CmdCharStallEnter ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharStallItemInfo ].push_back( CmdCharStallItemInfo ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
//m_SendCheckList[ CmdCharAdminCmd ].push_back( CmdCharAdminCmd ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
m_SendCheckList[ CmdCharTeamBattleInfo ].push_back( CmdCharTeamBattleInfo ) ; // <20><><EFBFBD><EFBFBD>Ʋ <20><><EFBFBD><EFBFBD>
|
||||
|
||||
m_SendCheckList[ CmdFriendAddRequest ].push_back( CmdFriendAddRequest ) ; // ģ<><C4A3> <20>߰<EFBFBD>
|
||||
m_SendCheckList[ CmdFriendRemoveRequest ].push_back( CmdFriendRemoveRequest ) ; // ģ<><C4A3> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdFriendEtcRequest ].push_back( CmdFriendEtcRequest ) ; // ģ<><C4A3> <20><>Ÿ
|
||||
m_SendCheckList[ CmdFriendAck ].push_back( CmdFriendAck ) ; // ģ<><C4A3> Ack
|
||||
m_SendCheckList[ CmdFriendDB ].push_back( CmdFriendDB ) ; // ģ<><C4A3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><> ģ<><C4A3> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>)
|
||||
|
||||
m_SendCheckList[ CmdEliteBonus ].push_back( CmdEliteBonus ) ; // <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD>ʽ<EFBFBD>
|
||||
|
||||
m_SendCheckList[ CmdCharOperateTrigger ].push_back( CmdCharOperateTrigger ) ; // Ʈ<><C6AE><EFBFBD><EFBFBD> <20>ߵ<EFBFBD>
|
||||
m_SendCheckList[ CmdQuestDB ].push_back( CmdQuestDB ) ; // <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> (DB<44><42> <20><><EFBFBD>̺<EFBFBD>/<2F>ε<EFBFBD>, ij<><C4B3><EFBFBD><EFBFBD> <20>α<EFBFBD><CEB1><EFBFBD>)
|
||||
m_SendCheckList[ CmdCharEndQuest ].push_back( CmdCharEndQuest ) ; // <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
|
||||
|
||||
m_SendCheckList[ CmdCharDisappearItem ].push_back( CmdCharDisappearItem ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
m_SendCheckList[ CmdCharAuthorizePanel ].push_back( CmdCharAuthorizePanel ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>dz<EFBFBD>
|
||||
m_SendCheckList[ CmdCharPeaceMode ].push_back( CmdCharPeaceMode ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdConfigInfoDB ].push_back( CmdConfigInfoDB ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharAutoRouting ].push_back( CmdCharAutoRouting ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdRankingInfo ].push_back( CmdRankingInfo ) ; // <20><>ŷ <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharStateRedistribution ].push_back( CmdCharStateRedistribution ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>й<EFBFBD> (Ŭ<><C5AC><EFBFBD><EFBFBD> ó<><C3B3> <20><><EFBFBD>·<EFBFBD>)
|
||||
m_SendCheckList[ CmdBillingTimeoutNotify ].push_back( CmdBillingTimeoutNotify ) ; // <20><><EFBFBD><EFBFBD> Ÿ<>Ӿƿ<D3BE> Notify<66><79><EFBFBD><EFBFBD>
|
||||
|
||||
m_SendCheckList[ CmdAdminToolGetData ].push_back( CmdAdminToolGetData ) ; // <20><EFBFBD><EEBFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DBAgent<6E><74> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
m_SendCheckList[ CmdAdminToolSetData ].push_back( CmdAdminToolSetData ) ; // <20><EFBFBD><EEBFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DBAgent<6E><74> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
|
||||
m_SendCheckList[ CmdEventDropItem ].push_back( CmdEventDropItem ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̺<EFBFBD>Ʈ
|
||||
m_SendCheckList[ CmdCharCancelQuest ].push_back( CmdCharCancelQuest ) ; // <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdBillingTimeCheckNotify ].push_back( CmdBillingTimeCheckNotify ) ; // <20><><EFBFBD><EFBFBD> Ÿ<><C5B8> üũ
|
||||
m_SendCheckList[ CmdCharLotteryResult ].push_back( CmdCharLotteryResult ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharSummonCmd ].push_back( CmdCharSummonCmd ) ; // <20><>ȯ<EFBFBD><C8AF> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
m_SendCheckList[ CmdChatClientLogin ].push_back( CmdChatClientLogin ) ; // Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> ä<>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><>
|
||||
m_SendCheckList[ CmdChatLogin ].push_back( CmdChatLogin ) ; // <20>߰輭<DFB0><E8BCAD><EFBFBD><EFBFBD> ä<>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ <20>α<EFBFBD><CEB1><EFBFBD> <20><>.
|
||||
m_SendCheckList[ CmdChatLogout ].push_back( CmdChatLogout ) ; // <20>߰輭<DFB0><E8BCAD><EFBFBD><EFBFBD> ä<>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ <20>αƿ<D7BE> <20><>.
|
||||
m_SendCheckList[ CmdChatInfoChanged ].push_back( CmdChatInfoChanged ) ; // <20>߰輭<DFB0><E8BCAD><EFBFBD><EFBFBD> ä<>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>.
|
||||
|
||||
m_SendCheckList[ CmdCharSummon ].push_back( CmdCharSummon ) ; // <20><>ȯ
|
||||
|
||||
m_SendCheckList[ CmdJapanAuthAccount ].push_back( CmdJapanAuthAccount ) ; // <20>Ϻ<EFBFBD><CFBA><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (ID, Password<72><64><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڵ尡 <20>´<EFBFBD>.)
|
||||
|
||||
m_SendCheckList[ CmdCharBattleGroundRespawn ].push_back( CmdCharBattleGroundRespawn ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><>Ʋ<EFBFBD><EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
m_SendCheckList[ CmdCharRespawnWaitQueue ].push_back( CmdCharRespawnWaitQueue ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ť <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><>Ʋ<EFBFBD><EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
m_SendCheckList[ CmdStatueInfo ].push_back( CmdStatueInfo ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCameraScript ].push_back( CmdCameraScript ) ; // ī<><EFBFBD> <20><>ũ<EFBFBD><C5A9>Ʈ
|
||||
m_SendCheckList[ CmdCharEquipDurability ].push_back( CmdCharEquipDurability ) ; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
m_SendCheckList[ CmdCreateGuild ].push_back( CmdCreateGuild ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdGuildCmd ].push_back( CmdGuildCmd ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdGuildMark ].push_back( CmdGuildMark ) ; // <20><><EFBFBD><EFBFBD> <20><>ũ <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdGuildLevel ].push_back( CmdGuildLevel ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdGuildRelation ].push_back( CmdGuildRelation ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdGuildList ].push_back( CmdGuildList ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
|
||||
m_SendCheckList[ CmdGuildDB ].push_back( CmdGuildDB ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdGuildRight ].push_back( CmdGuildRight ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdGuildMemberList ].push_back( CmdGuildMemberList ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
|
||||
m_SendCheckList[ CmdMyGuildInfo ].push_back( CmdMyGuildInfo ) ; // <20>ڱ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdGuildSafe ].push_back( CmdGuildSafe ) ; // <20><><EFBFBD><EFBFBD> <20>ݰ<EFBFBD>
|
||||
m_SendCheckList[ CmdGuildMemberInfoUpdate ].push_back( CmdGuildMemberInfoUpdate ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
|
||||
|
||||
m_SendCheckList[ CmdCharStatusRetrain ].push_back( CmdCharStatusRetrain ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͽ<EFBFBD> <20><><EFBFBD>Ʒ<EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
m_SendCheckList[ CmdSysServerLogout ].push_back( CmdSysServerLogout ) ; // <20><><EFBFBD><EFBFBD> <20>αƿ<D7BE>
|
||||
|
||||
// m_SendCheckList[ CmdCharPartyAddress ].push_back( CmdCharPartyAddress ) ; // <20><>Ƽ<EFBFBD><C6BC> UDP <20>ּ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
// m_SendCheckList[ CmdCharPartyMemAddress ].push_back( CmdCharPartyMemAddress ) ; // <20><>Ƽ<EFBFBD><C6BC> UDP <20>ּ<EFBFBD> <20><><EFBFBD><EFBFBD> (P2P)
|
||||
|
||||
m_SendCheckList[ CmdBGServerMapList ].push_back( CmdBGServerMapList ) ; // <20><>Ʋ <20><EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>(<28><>) <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><>û
|
||||
m_SendCheckList[ CmdBGServerResultList ].push_back( CmdBGServerResultList ) ; // <20><>Ʋ <20><EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>(<28><>) <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><>û
|
||||
m_SendCheckList[ CmdBGServerMoveZone ].push_back( CmdBGServerMoveZone ) ; // <20><>Ʋ <20><EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>(<28><>) <20>̵<EFBFBD> (<28><> <20>̵<EFBFBD>)
|
||||
m_SendCheckList[ CmdBGServerMileageChange ].push_back( CmdBGServerMileageChange ) ; // <20><>Ʋ <20><EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ȯ<><C8AF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdBGServerCharSlot ].push_back( CmdBGServerCharSlot ) ; // <20><>Ʋ <20><EFBFBD><D7B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>û
|
||||
|
||||
m_SendCheckList[ CmdHanBTNWarning ].push_back( CmdHanBTNWarning ) ; // <20>Ѱ<EFBFBD><D1B0><EFBFBD> <20><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><DEBD><EFBFBD>
|
||||
m_SendCheckList[ CmdHanBTNUserKill ].push_back( CmdHanBTNUserKill ) ; // <20>Ѱ<EFBFBD><D1B0><EFBFBD> <20><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><DEBD><EFBFBD>
|
||||
|
||||
m_SendCheckList[ CmdCharRepairAllItem ].push_back( CmdCharRepairAllItem ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCSAuth ].push_back( CmdCSAuth ) ; // <20><><EFBFBD><EFBFBD> <20>ڵ<EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||||
m_SendCheckList[ CmdCharItemChemical ].push_back( CmdCharItemChemical ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ռ<EFBFBD>
|
||||
m_SendCheckList[ CmdItemQtyCheck ].push_back( CmdItemQtyCheck ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdGuildInclination ].push_back( CmdGuildInclination ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdGuildMemberFameUpdate ].push_back( CmdGuildMemberFameUpdate ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
|
||||
|
||||
m_SendCheckList[ CmdCastleInfo ].push_back( CmdCastleInfo ) ; // <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (DBAgentServer -> GameServer)
|
||||
m_SendCheckList[ CmdCampInfo ].push_back( CmdCampInfo ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (DBAgentServer -> GameServer)
|
||||
m_SendCheckList[ CmdCreateCastle ].push_back( CmdCreateCastle ) ; // <20><> <20><><EFBFBD><EFBFBD> (GameServer -> Client)
|
||||
m_SendCheckList[ CmdCreateCamp ].push_back( CmdCreateCamp ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (Client <- GameServer -> DBAgentServer)
|
||||
m_SendCheckList[ CmdCreateSiegeArms ].push_back( CmdCreateSiegeArms ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (Client <- GameServer -> DBAgentServer)
|
||||
m_SendCheckList[ CmdCastleCmd ].push_back( CmdCastleCmd ) ; // <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ (Client <-> GameServer <-> DBAgentServer)
|
||||
m_SendCheckList[ CmdCampCmd ].push_back( CmdCampCmd ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ (Client <-> GameServer <-> DBAgentServer)
|
||||
m_SendCheckList[ CmdSiegeArmsCmd ].push_back( CmdSiegeArmsCmd ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ (Client <-> GameServer <-> DBAgentServer)
|
||||
m_SendCheckList[ CmdCastleRight ].push_back( CmdCastleRight ) ; // <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ (Client <-> GameServer <-> DBAgentServer)
|
||||
m_SendCheckList[ CmdCampRight ].push_back( CmdCampRight ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ
|
||||
m_SendCheckList[ CmdSiegeBroadCast ].push_back( CmdSiegeBroadCast ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD>ε<EFBFBD> ij<><C4B3>Ʈ
|
||||
m_SendCheckList[ CmdSiegeTimeInfo ].push_back( CmdSiegeTimeInfo ) ; // <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdStealthInfo ].push_back( CmdStealthInfo ) ; // <20><><EFBFBD>ڽ<EFBFBD> <20><><EFBFBD>밡<EFBFBD><EBB0A1> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
m_SendCheckList[ CmdCellBroadCast2nd ].push_back( CmdCellBroadCast2nd ) ; // <20><> <20><><EFBFBD>ε<EFBFBD>ij<EFBFBD><C4B3>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ŷ
|
||||
|
||||
m_SendCheckList[ CmdCharRespawnInfo ].push_back( CmdCharRespawnInfo ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>)
|
||||
m_SendCheckList[ CmdCharRespawnAreaInfo ].push_back( CmdCharRespawnAreaInfo ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
m_SendCheckList[ CmdCharEquipShopInfo ].push_back( CmdCharEquipShopInfo ) ; // NPC <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdSiegeBroadCast2nd ].push_back( CmdSiegeBroadCast2nd ) ; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD>ε<EFBFBD> ij<><C4B3>Ʈ <20>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
m_SendCheckList[ CmdCharItemOptionGraft ].push_back( CmdCharItemOptionGraft ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ɼ<EFBFBD> <20>̽<EFBFBD>
|
||||
m_SendCheckList[ CmdCharItemCompensation ].push_back( CmdCharItemCompensation ) ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ǹ<EFBFBD>
|
||||
*/
|
||||
}
|
||||
|
||||
void
|
||||
ClientSocket::InitReceiveCheckList()
|
||||
{
|
||||
for (int nIndex = 0; nIndex < CmdFinalPacketNum; ++nIndex)
|
||||
{
|
||||
m_ReceiveCheckList[nIndex].push_back(nIndex);
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
ClientSocket::CheckFlag( int* arrFlag ) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
int res = 0;
|
||||
for( int i = 0; i < CmdFinalPacketNum ; i++ )
|
||||
{
|
||||
if( s_pInstance->m_bStatusFlag[i] )
|
||||
arrFlag[res++] = i;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
@@ -0,0 +1,130 @@
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// ClientSocket Class
|
||||
//
|
||||
// Last Update : 2003-01-10
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
#ifndef _GAMA_CLIENT_SOCKET_H_
|
||||
#define _GAMA_CLIENT_SOCKET_H_
|
||||
|
||||
#include <winsock2.h>
|
||||
#include <windows.h>
|
||||
|
||||
#include <Network/Packet/PacketCommand.h>
|
||||
#include <DB/DBDefine.h>
|
||||
#include <vector>
|
||||
#include <bitset>
|
||||
|
||||
namespace ClientNet
|
||||
{
|
||||
// forward decl.
|
||||
class CNetworkMsgBlock;
|
||||
class CClientEventHandler;
|
||||
class CClientEventHandlerMgr;
|
||||
};
|
||||
|
||||
|
||||
class ClientSocket
|
||||
{
|
||||
protected:
|
||||
|
||||
ClientSocket();
|
||||
virtual ~ClientSocket();
|
||||
static ClientSocket* s_pInstance;
|
||||
|
||||
public:
|
||||
|
||||
static ClientSocket* CreateInstance();
|
||||
|
||||
static void DestroyInstance() { if(s_pInstance) { delete s_pInstance; s_pInstance = 0; } };
|
||||
static ClientSocket* Instance() { return s_pInstance; };
|
||||
|
||||
enum Const
|
||||
{
|
||||
MAX_CHAT_SERVER_ADDR = 16,
|
||||
MAX_GAME_GUARD_CRYPT_HEADER_SIZE = 32
|
||||
};
|
||||
|
||||
enum ConnectPort
|
||||
{
|
||||
DEFAULT_AUTH_TCP_PORT = 10110,
|
||||
DEFAULT_CLIENT_UDP_PORT = 20002
|
||||
};
|
||||
|
||||
enum HandlerType
|
||||
{
|
||||
AuthEventHandler = 0,
|
||||
GameEventHandler = 1,
|
||||
MAX_HANDLER = 2
|
||||
};
|
||||
|
||||
enum AddressType
|
||||
{
|
||||
PublicAddr = 0,
|
||||
PrivateAddr = 1,
|
||||
MoveZoneAddr = 2,
|
||||
MAX_ADDRESS = 3
|
||||
};
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
// <20><>Ʈ<EFBFBD><C6AE>ũ <20><><EFBFBD><EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD>
|
||||
// by Hades Kang
|
||||
void SetStatusFlag(unsigned long dwStatusFlag);
|
||||
unsigned long GetStatusFlag();
|
||||
|
||||
static bool IsNSFlagChecked(unsigned char ucCmdFlag); //<2F>ش<EFBFBD> <20>÷<EFBFBD><C3B7>װ<EFBFBD> üũ<C3BC>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
static bool IsNSFlagChainChecked(unsigned char ucCmdFlag); //<2F>ش<EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD> ü<><C3BC><EFBFBD><EFBFBD> üũ<C3BC>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
static void SetNSFlagOn(unsigned char ucCmdFlag); //<2F>ش<EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD> Ȱ<><C8B0>ȭ <20><>Ŵ - Send <20>ÿ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
static void SetNSFlagOff(unsigned char ucCmdFlag); //<2F>ش<EFBFBD> <20>÷<EFBFBD><C3B7><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20>͵<EFBFBD><CDB5><EFBFBD> <20><>Ȱ<EFBFBD><C8B0>ȭ <20><>Ŵ - Receive <20>ÿ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
static int CheckFlag( int* arrFlag ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
// Management Address
|
||||
SOCKADDR_IN& GetAddress(AddressType eAddrType) { return m_Address[eAddrType]; }
|
||||
const char* GetAddressString(AddressType eAddrType) { return inet_ntoa(m_Address[eAddrType].sin_addr); }
|
||||
unsigned short GetAddressPort(AddressType eAddrType) { return ntohs(m_Address[eAddrType].sin_port); }
|
||||
|
||||
void SetAddress(AddressType eAddrType, SOCKADDR_IN& Address) { m_Address[eAddrType] = Address; }
|
||||
void SetAddress(AddressType eAddrType, const char* szAddress, unsigned port);
|
||||
void ClearAddress(AddressType eAddrType) { memset(m_Address + eAddrType, 0, sizeof(SOCKADDR_IN)); }
|
||||
|
||||
ClientNet::CClientEventHandler& GetHandler(HandlerType eHandlerType)
|
||||
{ return (0 == m_lpEventHandler[eHandlerType]) ? *m_lpNullEventHandler : *m_lpEventHandler[eHandlerType]; }
|
||||
|
||||
void SetHandler(ClientNet::CClientEventHandler* lpHandler, HandlerType eHandlerType);
|
||||
void ResetHandler(ClientNet::CClientEventHandler* lpHandler, HandlerType eHandlerType);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰų<CFB0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ּҿ<D6BC> <20><><EFBFBD>ε<EFBFBD><CEB5><EFBFBD> <20>Ѵ<EFBFBD>.
|
||||
bool Open(const char* address, unsigned short usport,
|
||||
ClientNet::CClientEventHandler* lpEventHandler);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><C7BE>ִ<EFBFBD><D6B4><EFBFBD> <20><><EFBFBD>θ<EFBFBD> <20><><EFBFBD>ɴ<EFBFBD>.
|
||||
bool IsConnected(HandlerType eHandlerType);
|
||||
|
||||
// MAX_SESSION<4F><4E> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>´<EFBFBD>.
|
||||
void Disconnect(HandlerType eHandlerType);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><> <20><>Ŷ<EFBFBD><C5B6> ó<><C3B3><EFBFBD>Ѵ<EFBFBD>.
|
||||
void HandleEvents(DWORD dwProcessPerCall);
|
||||
|
||||
private:
|
||||
|
||||
void InitNSCheckList(); // Network Status <20><><EFBFBD><EFBFBD> Check List <20>ʱ<EFBFBD>ȭ ( Send, Receive )
|
||||
void InitSendCheckList();
|
||||
void InitReceiveCheckList();
|
||||
|
||||
SOCKADDR_IN m_Address[MAX_ADDRESS + 1];
|
||||
ClientNet::CClientEventHandler* m_lpEventHandler[MAX_HANDLER + 1];
|
||||
ClientNet::CClientEventHandler* m_lpNullEventHandler;
|
||||
|
||||
ClientNet::CClientEventHandlerMgr* m_lpEventHandlerMgr;
|
||||
|
||||
unsigned long m_dwStatusFlag;
|
||||
std::vector<unsigned char> m_SendCheckList[CmdFinalPacketNum]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> üũ <20>ؾ<EFBFBD><D8BE>ϴ<EFBFBD> Ŀ<>ǵ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ ( <20>ϳ<EFBFBD><CFB3><EFBFBD><EFBFBD><EFBFBD> true <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ´<CAB4>! )
|
||||
std::vector<unsigned char> m_ReceiveCheckList[CmdFinalPacketNum]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> üũ <20>ؾ<EFBFBD><D8BE>ϴ<EFBFBD> Ŀ<>ǵ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ ( <20><><EFBFBD><EFBFBD> false<73><65> ó<><C3B3><EFBFBD>Ѵ<EFBFBD>. )
|
||||
std::bitset<CmdFinalPacketNum> m_bStatusFlag;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,139 @@
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// ClientSocket Class
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
#include "stdafx.h"
|
||||
#include "LoginSocket.h"
|
||||
|
||||
|
||||
#include <Network/Packet/PacketBase.h>
|
||||
#include <Network/Packet/PacketCommand.h>
|
||||
|
||||
#include <Network/Packet/PacketStruct/ServerInfo.h>
|
||||
#include <Network/Packet/PacketStruct/ServerPacket.h>
|
||||
#include <Network/Packet/PacketStruct/ClientToAuthServer.h>
|
||||
#include <Network/Packet/PacketStruct/ClientToLoginServer.h>
|
||||
|
||||
#include <Network/ClientNetwork/ClientEventHandler.h>
|
||||
|
||||
#include <mmsystem.h>
|
||||
#include "GMMemory.h"
|
||||
|
||||
LoginSocket::LoginSocket()
|
||||
: m_lpHandler(0), m_lpHandlerMgr(0)
|
||||
{
|
||||
m_lpHandlerMgr = new ClientNet::CClientEventHandlerMgr;
|
||||
}
|
||||
|
||||
LoginSocket::~LoginSocket(void)
|
||||
{
|
||||
Destroy();
|
||||
}
|
||||
|
||||
bool LoginSocket::ConnectToLoginServer(ClientNet::CClientEventHandler* lpEventHandler,
|
||||
const char* Address_In, unsigned short port)
|
||||
{
|
||||
CHECK_NULL_RETURN(lpEventHandler, false);
|
||||
CHECK_NULL_RETURN(m_lpHandlerMgr, false);
|
||||
|
||||
if(!m_lpHandlerMgr->Connect(INET_Addr(Address_In, port), lpEventHandler))
|
||||
{
|
||||
fprintf(stderr, "LoginSocket::ConnectToLoginServer - Connect to LoginServer failed\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void LoginSocket::Destroy()
|
||||
{
|
||||
delete m_lpHandlerMgr;
|
||||
}
|
||||
|
||||
void LoginSocket::HandleEvents(unsigned long dwProcessPerCall)
|
||||
{
|
||||
if (0 != m_lpHandlerMgr)
|
||||
{
|
||||
m_lpHandlerMgr->HandleEvents(dwProcessPerCall);
|
||||
}
|
||||
}
|
||||
|
||||
void LoginSocket::Disconnect(void)
|
||||
{
|
||||
if(0 != m_lpHandlerMgr && 0 != m_lpHandler)
|
||||
{
|
||||
m_lpHandlerMgr->Close(m_lpHandler);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool LoginSocket::IsConnected()
|
||||
{
|
||||
return (NULL != m_lpHandler);
|
||||
}
|
||||
|
||||
|
||||
//Interface/////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// GAS <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> [ public ]
|
||||
// - GAS <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
//
|
||||
// Parameter :
|
||||
// 1st : <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>[In]
|
||||
// 2st : <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>[In]
|
||||
//
|
||||
// Return :
|
||||
// <09><>Ŷ <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> true, <20><><EFBFBD>н<EFBFBD> false
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
bool LoginSocket::ServerList(DWORD ClientVersion_In)
|
||||
{
|
||||
CHECK_NULL_RETURN(m_lpHandler, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(
|
||||
sizeof(PktSvL), m_lpHandler->GetPeerAddress());
|
||||
|
||||
if(NULL != lpMsgBlock)
|
||||
{
|
||||
PktSvL* lpPktSvL = reinterpret_cast<PktSvL*>(lpMsgBlock->wr_ptr());
|
||||
lpPktSvL->m_dwClientVer= ClientVersion_In;
|
||||
|
||||
if(lpMsgBlock->WrapCryptOld(sizeof(PktSvL), CmdLoginServerList, 0, PatcherModel))
|
||||
{
|
||||
m_lpHandlerMgr->SendPacket(m_lpHandler, lpMsgBlock);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
//Interface/////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// <20><>Ŷ ó<><C3B3> [ public ]
|
||||
// - AUAckPt ó<><C3B3>
|
||||
//
|
||||
// Parameter :
|
||||
// 1st : <20><>Ŷ <20><><EFBFBD><EFBFBD>[In]
|
||||
// 2st : <20>α<EFBFBD><CEB1><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ü[Out]
|
||||
//
|
||||
// Return :
|
||||
// <09><><EFBFBD><EFBFBD> <20>ڵ<EFBFBD>
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
unsigned long LoginSocket::HandleServerList(PktBase* lpPktBase, DWORD* ClientVer_Out,
|
||||
char* PatchAddress_Out, SERVER_LIST* lpServerList_Out)
|
||||
{
|
||||
PktSvLAck* lpPktSvLAck = static_cast<PktSvLAck*>(lpPktBase);
|
||||
|
||||
*ClientVer_Out = lpPktSvLAck->m_dwClientVer;
|
||||
strncpy(PatchAddress_Out, lpPktSvLAck->m_PatchAddress, PktSvLAck::PATCH_ADDRESS_LENGTH);
|
||||
*lpServerList_Out = lpPktSvLAck->m_ServerList;
|
||||
|
||||
return lpPktSvLAck->GetError();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// LoginSocket Class
|
||||
//
|
||||
// Last Update : 2002. 8.28
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
#ifndef _GAMA_CLIENT_LOGIN_SOCKET_H_
|
||||
#define _GAMA_CLIENT_LOGIN_SOCKET_H_
|
||||
|
||||
#include <cstdio>
|
||||
|
||||
|
||||
#include <Network/ClientSocket/Send/SendPacket.h>
|
||||
|
||||
|
||||
// forward decl
|
||||
struct PktBase;
|
||||
struct SERVER_LIST;
|
||||
|
||||
namespace ClientNet
|
||||
{
|
||||
class CClientEventHandler;
|
||||
class CClientEventHandlerMgr;
|
||||
}
|
||||
|
||||
|
||||
const unsigned short PatcherModel = 1;
|
||||
|
||||
// class decl
|
||||
class LoginSocket
|
||||
{
|
||||
public:
|
||||
|
||||
enum AuthFlag
|
||||
{
|
||||
AuthFlag_RegDB = 0x8000,
|
||||
AuthFlag_Email = 0x4000
|
||||
};
|
||||
|
||||
enum ConnectPort
|
||||
{
|
||||
DEFAULT_LOGIN_PORT = 10101 // Client Login TCP Port
|
||||
};
|
||||
|
||||
LoginSocket();
|
||||
virtual ~LoginSocket();
|
||||
|
||||
// <20>α<EFBFBD><CEB1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
bool ConnectToLoginServer(ClientNet::CClientEventHandler* lpEventHandler,
|
||||
const char* Address_In, unsigned short port = DEFAULT_LOGIN_PORT);
|
||||
|
||||
// <20>̺<EFBFBD>Ʈ<EFBFBD><C6AE> ó<><C3B3><EFBFBD>Ѵ<EFBFBD>.
|
||||
void HandleEvents(unsigned long dwProcessPerCall = 30);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>´<EFBFBD>.
|
||||
void Disconnect();
|
||||
void Destroy();
|
||||
bool IsConnected();
|
||||
|
||||
bool ServerList(unsigned long ClientVersion_In); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> <20><>û
|
||||
|
||||
void SetHandler(ClientNet::CClientEventHandler* lpHandler) { m_lpHandler = lpHandler; }
|
||||
void ResetHandler(ClientNet::CClientEventHandler* lpHandler) { if(m_lpHandler == lpHandler) { m_lpHandler = 0; } }
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20>´<DEB4>.
|
||||
static unsigned long HandleServerList(PktBase* lpPktBase,
|
||||
unsigned long* ClientVer_Out, char* PatchAddress_Out,
|
||||
SERVER_LIST* lpServerList_Out);
|
||||
|
||||
private:
|
||||
|
||||
ClientNet::CClientEventHandlerMgr* m_lpHandlerMgr;
|
||||
ClientNet::CClientEventHandler* m_lpHandler;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,147 @@
|
||||
#include "stdafx.h"
|
||||
#include "ParseAuthServer.h"
|
||||
|
||||
#include <Network/Packet/PacketStruct/ClientToAuthServer.h>
|
||||
#include <Network/Packet/PacketStruct/UnifiedCharPacket.h>
|
||||
#include "GMMemory.h"
|
||||
|
||||
unsigned long ParsePacket::HandleAuthAccount(PktBase* lpPktBase, unsigned long& UserID_Out,
|
||||
unsigned char& cAgentServerType_Out, unsigned char& cFirstLogin_Out)
|
||||
{
|
||||
PktAUAck* lpPktAUAck = static_cast<PktAUAck*>(lpPktBase);
|
||||
|
||||
UserID_Out = lpPktAUAck->m_dwUserID;
|
||||
cAgentServerType_Out = lpPktAUAck->m_cAgentServerType;
|
||||
cFirstLogin_Out = lpPktAUAck->m_cFirstLogin;
|
||||
|
||||
return lpPktAUAck->GetError();
|
||||
}
|
||||
|
||||
// WORK_LIST 2.1 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD>
|
||||
unsigned long ParsePacket::HandleUserLogin(PktBase* lpPktBase, unsigned long *SessionID_Out, unsigned long *UserID_Out,
|
||||
CHAR_VIEW* CharRecode_Out, sGuildData* CharGuildRecode_Out, unsigned char *cAccountNation,
|
||||
time_t* currentTime, int* nPlayTime_Out, unsigned short* usAdminLevel_Out,
|
||||
unsigned char* cBillingType_Out, unsigned char* cBillingUser_Out, unsigned char* cLoginType_Out,
|
||||
unsigned long* dwTabFlag)
|
||||
{
|
||||
PktULiAck* lpPktULiAck = static_cast<PktULiAck*>(lpPktBase);
|
||||
|
||||
*SessionID_Out = lpPktULiAck->m_dwSessionID;
|
||||
*UserID_Out = lpPktULiAck->m_dwUserID;
|
||||
|
||||
*currentTime = lpPktULiAck->m_dwCurrentTime;
|
||||
*nPlayTime_Out = lpPktULiAck->m_nPlayTime;
|
||||
*usAdminLevel_Out = lpPktULiAck->m_usAdminLevel;
|
||||
*cBillingType_Out = lpPktULiAck->m_cBillingType;
|
||||
*cBillingUser_Out = lpPktULiAck->m_cBillingUser;
|
||||
|
||||
*cLoginType_Out = lpPktULiAck->m_cLoginType;
|
||||
|
||||
*dwTabFlag = lpPktULiAck->m_dwTabFlag;
|
||||
|
||||
// WORK_LIST 2.1 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD>
|
||||
*cAccountNation = lpPktULiAck->m_cAccountNation;
|
||||
|
||||
memcpy(CharRecode_Out, lpPktULiAck->m_CharView, sizeof(CHAR_VIEW) * PktULiAck::MAX_CHAR_VIEW);
|
||||
memcpy(CharGuildRecode_Out, lpPktULiAck->m_GuildData, sizeof(sGuildData) * PktULiAck::MAX_CHAR_VIEW);
|
||||
|
||||
return lpPktULiAck->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharCreate(PktBase* lpPktBase, unsigned long *CharID_Out,
|
||||
unsigned long *SlotNum_Out, CHAR_VIEW* lpCharView_Out)
|
||||
{
|
||||
PktCCAck* lpPktCCAck = static_cast<PktCCAck*>(lpPktBase);
|
||||
|
||||
*CharID_Out = lpPktCCAck->m_dwCharID;
|
||||
*SlotNum_Out = lpPktCCAck->m_dwSlotNum;
|
||||
memcpy(lpCharView_Out, &(lpPktCCAck->m_CharView), sizeof(CHAR_VIEW));
|
||||
|
||||
return lpPktCCAck->GetError();
|
||||
}
|
||||
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharSelect(PktBase* lpPktBase, unsigned char *Zone_Out,
|
||||
unsigned short *lpChannelNum_Out)
|
||||
{
|
||||
PktCSAck* lpPktCSAck = static_cast<PktCSAck*>(lpPktBase);
|
||||
|
||||
*Zone_Out = lpPktCSAck->m_cZone;
|
||||
memcpy(lpChannelNum_Out, lpPktCSAck->m_wChannelNum, sizeof(unsigned short) * PktCSAck::MAX_CHANNEL_NUM);
|
||||
|
||||
return lpPktCSAck->GetError();
|
||||
}
|
||||
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharDelete(PktBase* lpPktBase,
|
||||
unsigned long *UserID_Out, unsigned long *SlotNum_Out)
|
||||
{
|
||||
PktCDAck* lpPktCDAck = static_cast<PktCDAck*>(lpPktBase);
|
||||
|
||||
*UserID_Out = lpPktCDAck->m_dwUserID;
|
||||
*SlotNum_Out = lpPktCDAck->m_dwSlotNum;
|
||||
|
||||
return lpPktCDAck->GetError();
|
||||
}
|
||||
|
||||
// WORK_LIST 2.1 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD>
|
||||
unsigned long ParsePacket::HandleSelectAccountNation(PktBase* lpPktBase, unsigned long *UserID_Out,
|
||||
unsigned char *cType, unsigned char *cAccountNation_Out)
|
||||
{
|
||||
PktSelectAccountNation* lpPktSANAck = static_cast<PktSelectAccountNation*>(lpPktBase);
|
||||
|
||||
*UserID_Out = lpPktSANAck->m_dwUserID;
|
||||
*cType = lpPktSANAck->m_cType;
|
||||
*cAccountNation_Out = lpPktSANAck->m_cAccountNation;
|
||||
|
||||
return lpPktSANAck->GetError();
|
||||
}
|
||||
|
||||
// WORK_LIST 2.3 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned long ParsePacket::HandleNationChangeResult(PktBase* lpPktBase, unsigned long *UserID_Out,
|
||||
unsigned long* aryGID_Out, unsigned long* aryFame_Out)
|
||||
{
|
||||
PktNationChangeResult* lpPktNCAck = static_cast<PktNationChangeResult*>(lpPktBase);
|
||||
|
||||
*UserID_Out = lpPktNCAck->m_dwUserID;
|
||||
::memcpy(aryGID_Out, lpPktNCAck->m_dwGID, sizeof(unsigned long) * PktNationChangeResult::MAX_CHAR_VIEW);
|
||||
::memcpy(aryFame_Out, lpPktNCAck->m_dwFame, sizeof(unsigned long) * PktNationChangeResult::MAX_CHAR_VIEW);
|
||||
|
||||
return lpPktNCAck->GetError();
|
||||
}
|
||||
|
||||
|
||||
// ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned long ParsePacket::HandleUnifiedCharInfo(PktBase* lpPktBase,
|
||||
unsigned char& cRestrictedPart1ToPart2Level,
|
||||
unsigned char& cRemainCharTransferCount,
|
||||
USER_INFO& userInfo,
|
||||
UnifiedStoreInfo** lppUnifiedStoreInfo,
|
||||
unsigned long& dwStoreInfoNum_Out,
|
||||
UnifiedCharData** lppUnifiedCharData,
|
||||
unsigned long& dwCharDataNum_Out)
|
||||
{
|
||||
PktUnifiedCharInfo* lpPktUnifiedCharInfo =
|
||||
static_cast<PktUnifiedCharInfo*>(lpPktBase);
|
||||
|
||||
userInfo = lpPktUnifiedCharInfo->userInfo;
|
||||
|
||||
cRestrictedPart1ToPart2Level = lpPktUnifiedCharInfo->cRestrictedPart1ToPart2Level;
|
||||
cRemainCharTransferCount = lpPktUnifiedCharInfo->cRemainCharTransferCount;
|
||||
|
||||
*lppUnifiedStoreInfo = lpPktUnifiedCharInfo->unifiedStoreInfo;
|
||||
dwStoreInfoNum_Out = lpPktUnifiedCharInfo->cStoreInfoNum;
|
||||
|
||||
*lppUnifiedCharData = lpPktUnifiedCharInfo->unifiedCharData;
|
||||
dwCharDataNum_Out = lpPktUnifiedCharInfo->cCharDataNum;
|
||||
|
||||
return lpPktBase->GetError();
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> / <20><><EFBFBD><EFBFBD> <20>ڵ尪<DAB5><E5B0AA> <20>´<DEB4>.
|
||||
unsigned long ParsePacket::HandleUnifiedCharSelectAck(PktBase* lpPktBase)
|
||||
{
|
||||
return lpPktBase->GetError();
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
#ifndef _PARSE_AUTH_SERVER_PACKET_H_
|
||||
#define _PARSE_AUTH_SERVER_PACKET_H_
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
struct PktBase;
|
||||
|
||||
#include <ctime>
|
||||
#include <DB/DBDefine.h>
|
||||
|
||||
namespace ParsePacket
|
||||
{
|
||||
// AuthServer
|
||||
unsigned long HandleAuthAccount(PktBase* lpPktBase, unsigned long& UserID_Out,
|
||||
unsigned char& cAgentServerType_Out, unsigned char& cFirstLogin_Out);
|
||||
|
||||
// WORK_LIST 2.1 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD>
|
||||
unsigned long HandleUserLogin(PktBase* lpPktBase, unsigned long *SessionID_Out, unsigned long *UserID_Out, CHAR_VIEW* CharRecode_Out,
|
||||
sGuildData* CharGuildRecode_Out, unsigned char* cAccountNation, time_t* currentTime, int* nPlayTime_Out,
|
||||
unsigned short* usAdminLevel_Out, unsigned char* cBillingType_Out, unsigned char* cBillingUser_Out, unsigned char* cLoginType_Out,
|
||||
unsigned long* dwTabFlag);
|
||||
|
||||
unsigned long HandleCharSelect(PktBase* lpPktBase, unsigned char *Zone_Out, unsigned short *lpChannelNum_Out);
|
||||
unsigned long HandleCharCreate(PktBase* lpPktBase, unsigned long *CharID_Out, unsigned long *SlotNum_Out, CHAR_VIEW* lpCharView_Out);
|
||||
unsigned long HandleCharDelete(PktBase* lpPktBase, unsigned long *UserID_Out, unsigned long *SlotNum_Out);
|
||||
|
||||
// WORK_LIST 2.1 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD>
|
||||
unsigned long HandleSelectAccountNation(PktBase* lpPktBase, unsigned long *UserID_Out, unsigned char *cType, unsigned char *cAccountNation_Out);
|
||||
|
||||
// WORK_LIST 2.3 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned long HandleNationChangeResult(PktBase* lpPktBase, unsigned long *UserID_Out, unsigned long* aryGID_Out, unsigned long* aryFame_Out);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned long HandleUnifiedCharInfo(PktBase* lpPktBase,
|
||||
unsigned char& cRestrictedPart1ToPart2Level, unsigned char& cRemainCharTransferCount,
|
||||
USER_INFO& userInfo,
|
||||
UnifiedStoreInfo** lppUnifiedStoreInfo, unsigned long& dwStoreInfoNum_Out,
|
||||
UnifiedCharData** lppUnifiedCharData, unsigned long& dwCharDataNum_Out);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ack - <20><><EFBFBD><EFBFBD> / <20><><EFBFBD><EFBFBD> <20>ڵ尪<DAB5><E5B0AA> <20>´<DEB4>.
|
||||
unsigned long HandleUnifiedCharSelectAck(PktBase* lpPktBase);
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,63 @@
|
||||
#include "stdafx.h"
|
||||
#include "ParseBGServer.h"
|
||||
|
||||
#include <windows.h>
|
||||
#include <Network/Packet/PacketStruct/BGServerPacket.h>
|
||||
#include "GMMemory.h"
|
||||
|
||||
// <20><> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>, Ȥ<><C8A4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
unsigned long ParsePacket::HandleCharBGServerMapList(PktBase* lpPktBase, bool* bAll, unsigned char* cMapInfoNodeNum,
|
||||
BGServerMapInfoNode* lpMapInfo)
|
||||
{
|
||||
LPPktBGServerMapList lpPktBGServerMapList = (LPPktBGServerMapList)lpPktBase;
|
||||
|
||||
*bAll = lpPktBGServerMapList->m_bAll;
|
||||
*cMapInfoNodeNum = lpPktBGServerMapList->m_cMapInfoNodeNum;
|
||||
|
||||
BGServerMapInfoNode* lpMapInfoNode = reinterpret_cast<BGServerMapInfoNode*>(lpPktBGServerMapList + 1);
|
||||
CopyMemory(lpMapInfo, lpMapInfoNode, sizeof(BGServerMapInfoNode) * lpPktBGServerMapList->m_cMapInfoNodeNum);
|
||||
|
||||
return lpPktBGServerMapList->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharBGServerResultList(PktBase* lpPktBase, bool* bAll, unsigned char* cResultInfoNodeNum,
|
||||
BGServerResultInfoNode* lpResultInfo)
|
||||
{
|
||||
LPPktBGServerResultList lpPktBGServerResultList = (LPPktBGServerResultList)lpPktBase;
|
||||
|
||||
*bAll = lpPktBGServerResultList->m_bAll;
|
||||
*cResultInfoNodeNum = lpPktBGServerResultList->m_cResultInfoNodeNum;
|
||||
|
||||
BGServerResultInfoNode* lpResultInfoNode = reinterpret_cast<BGServerResultInfoNode*>(lpPktBGServerResultList + 1);
|
||||
CopyMemory(lpResultInfo, lpResultInfoNode, sizeof(BGServerResultInfoNode) * lpPktBGServerResultList->m_cResultInfoNodeNum);
|
||||
|
||||
return lpPktBGServerResultList->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharBGServerMoveZone(PktBase* lpPktBase, unsigned char* cZone, unsigned char* cMoveType)
|
||||
{
|
||||
LPPktBGServerMoveZone lpPktBGServerMoveZone = (LPPktBGServerMoveZone)lpPktBase;
|
||||
|
||||
*cZone = lpPktBGServerMoveZone->m_cZone;
|
||||
*cMoveType = lpPktBGServerMoveZone->m_cMoveType;
|
||||
|
||||
return lpPktBGServerMoveZone->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharBGServerMileageChange(PktBase* lpPktBase, unsigned long* dwCID,
|
||||
unsigned char* cGroup, unsigned char* cCmd,
|
||||
unsigned long* dwGold, unsigned long* dwMileage)
|
||||
{
|
||||
PktBGServerMileageChange* lpPktBGServerMileageChange = static_cast<PktBGServerMileageChange *>(lpPktBase);
|
||||
|
||||
*dwCID = lpPktBGServerMileageChange->m_dwCID;
|
||||
*cGroup = lpPktBGServerMileageChange->m_cGroup;
|
||||
*cCmd = lpPktBGServerMileageChange->m_cCmd;
|
||||
*dwGold = lpPktBGServerMileageChange->m_dwGold;
|
||||
*dwMileage = lpPktBGServerMileageChange->m_dwMileage;
|
||||
|
||||
return lpPktBGServerMileageChange->GetError();
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
#ifndef _GAMA_CLIENT_PARSE_BATTLEGROUND_SERVER_PACKET_H_
|
||||
#define _GAMA_CLIENT_PARSE_BATTLEGROUND_SERVER_PACKET_H_
|
||||
|
||||
#include <DB/DBDefine.h>
|
||||
#include <Network/Packet/PacketStruct/BGServerPacket.h>
|
||||
|
||||
// forward decl.
|
||||
struct PktBase;
|
||||
|
||||
namespace ParsePacket
|
||||
{
|
||||
// BATTLEGROUND SERVER
|
||||
unsigned long HandleCharBGServerMapList(PktBase* lpPktBase, bool* bAll, unsigned char* cMapInfoNodeNum, BGServerMapInfoNode* lpMapInfo);
|
||||
unsigned long HandleCharBGServerResultList(PktBase* lpPktBase, bool* bAll, unsigned char* cResultInfoNodeNum, BGServerResultInfoNode* lpResultInfo);
|
||||
unsigned long HandleCharBGServerMoveZone(PktBase* lpPktBase, unsigned char* cZone, unsigned char* cMoveType);
|
||||
unsigned long HandleCharBGServerMileageChange(PktBase* lpPktBase, unsigned long* dwCID, unsigned char* cGroup, unsigned char* cCmd, unsigned long* dwGold, unsigned long* dwMileage);
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,433 @@
|
||||
#include "stdafx.h"
|
||||
#include "ParseCastle.h"
|
||||
|
||||
#include <Network/Packet/PacketStruct/CastlePacket.h>
|
||||
#include "GMMemory.h"
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharCreateCastle(PktBase* lpPktBase, unsigned long* dwCastleID, unsigned char* cNation, unsigned char* cZone,
|
||||
unsigned char* cNameID, unsigned char* cUpgradeStep, unsigned char* cInvincibleCount,
|
||||
unsigned short* wTotalSiegeCount, unsigned long* dwTotalTaxMoney, float* fPosX,
|
||||
float* fPosY, float* fPosZ, unsigned short* wItemID, unsigned char* cItemNum,
|
||||
CastleRight* castleRight, CastleTaxInfo* castleTaxInfo)
|
||||
{
|
||||
LPPktCreateCastle lpPktCreateCastle = (LPPktCreateCastle)lpPktBase;
|
||||
|
||||
*dwCastleID = lpPktCreateCastle->m_dwCastleID;
|
||||
*cNation = lpPktCreateCastle->m_cNation;
|
||||
*cZone = lpPktCreateCastle->m_cZone;
|
||||
*cNameID = lpPktCreateCastle->m_cNameID;
|
||||
*cUpgradeStep = lpPktCreateCastle->m_cUpgradeStep;
|
||||
*cInvincibleCount = lpPktCreateCastle->m_cInvincibleCount;
|
||||
*wTotalSiegeCount = lpPktCreateCastle->m_wTotalSiegeCount;
|
||||
*dwTotalTaxMoney = lpPktCreateCastle->m_dwTotalTaxMoney;
|
||||
*fPosX = lpPktCreateCastle->m_fPosX;
|
||||
*fPosY = lpPktCreateCastle->m_fPosY;
|
||||
*fPosZ = lpPktCreateCastle->m_fPosZ;
|
||||
*wItemID = lpPktCreateCastle->m_wItemID;
|
||||
*castleRight = lpPktCreateCastle->m_CastleRight;
|
||||
|
||||
for (int i=0; i<Castle::EMBLEM_UPGRADE_JEWEL_POS_NUM; ++i)
|
||||
{
|
||||
cItemNum[ i ] = lpPktCreateCastle->m_cItemNum[ i ] ;
|
||||
}
|
||||
|
||||
for (int i=0; i<Castle::MAX_TAX_TYPE; ++i)
|
||||
{
|
||||
castleTaxInfo[ i ] = lpPktCreateCastle->m_CastleTax[ i ];
|
||||
}
|
||||
|
||||
return lpPktCreateCastle->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharCreateCamp(PktBase* lpPktBase, unsigned long* dwActorCID, unsigned long* dwCID, unsigned long* dwCampID,
|
||||
unsigned long* dwGID, unsigned long* dwHP, unsigned short* wObjectType, unsigned char* cState,
|
||||
unsigned char* cSubState, unsigned char* cUpgradeStep, unsigned char* cNation, CampRight* campRight,
|
||||
float* fPointX, float* fPointY, float* fPointZ, unsigned char* cMaterial)
|
||||
{
|
||||
LPPktCreateCamp lpPktCreateCamp = (LPPktCreateCamp)lpPktBase;
|
||||
|
||||
*dwActorCID = lpPktCreateCamp->m_dwActorCID;
|
||||
*dwCID = lpPktCreateCamp->m_dwCID;
|
||||
*dwCampID = lpPktCreateCamp->m_dwCampID;
|
||||
*dwGID = lpPktCreateCamp->m_dwGID;
|
||||
*dwHP = lpPktCreateCamp->m_dwHP;
|
||||
*wObjectType = lpPktCreateCamp->m_wObjectType;
|
||||
*cState = lpPktCreateCamp->m_cState;
|
||||
*cSubState = lpPktCreateCamp->m_cSubState;
|
||||
*cUpgradeStep = lpPktCreateCamp->m_cUpgradeStep;
|
||||
*cNation = lpPktCreateCamp->m_cNation;
|
||||
*campRight = lpPktCreateCamp->m_CampRight;
|
||||
*fPointX = lpPktCreateCamp->m_Pos.fPointX;
|
||||
*fPointY = lpPktCreateCamp->m_Pos.fPointY;
|
||||
*fPointZ = lpPktCreateCamp->m_Pos.fPointZ;
|
||||
*cMaterial = lpPktCreateCamp->m_cMaterial;
|
||||
|
||||
return lpPktCreateCamp->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharCreateSiegeArms(PktBase* lpPktBase, unsigned long* dwCID, unsigned long* dwOwnerID, unsigned char* cNation,
|
||||
unsigned long* dwHP, unsigned short* wObjectType, unsigned char* cState, unsigned char* cUpgradeStep,
|
||||
float* fPointX, float* fPointY, float* fPointZ)
|
||||
{
|
||||
LPPktCreateSiegeArms lpPktCreateSiegeArms = (LPPktCreateSiegeArms)lpPktBase;
|
||||
|
||||
*dwCID = lpPktCreateSiegeArms->m_dwCID;
|
||||
*dwOwnerID = lpPktCreateSiegeArms->m_dwOwnerID;
|
||||
*cNation = lpPktCreateSiegeArms->m_cNation;
|
||||
*dwHP = lpPktCreateSiegeArms->m_dwHP;
|
||||
*wObjectType = lpPktCreateSiegeArms->m_wObjectType;
|
||||
*cState = lpPktCreateSiegeArms->m_cState;
|
||||
*cUpgradeStep = lpPktCreateSiegeArms->m_cUpgradeStep;
|
||||
*fPointX = lpPktCreateSiegeArms->m_Pos.fPointX;
|
||||
*fPointY = lpPktCreateSiegeArms->m_Pos.fPointY;
|
||||
*fPointZ = lpPktCreateSiegeArms->m_Pos.fPointZ;
|
||||
|
||||
return lpPktCreateSiegeArms->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharCastleCmd(PktBase* lpPktBase, unsigned long* dwCastleID, unsigned long* dwCastleObjectID, unsigned long* dwValue1,
|
||||
unsigned long* dwValue2, unsigned char* cState, unsigned char* cSubCmd)
|
||||
{
|
||||
LPPktCastleCmd lpPktCastleCmd = (LPPktCastleCmd)lpPktBase;
|
||||
|
||||
*dwCastleID = lpPktCastleCmd->m_dwCastleID;
|
||||
*dwCastleObjectID = lpPktCastleCmd->m_dwCastleObjectID;
|
||||
*dwValue1 = lpPktCastleCmd->m_dwValue1;
|
||||
*dwValue2 = lpPktCastleCmd->m_dwValue2;
|
||||
*cState = lpPktCastleCmd->m_cState;
|
||||
*cSubCmd = lpPktCastleCmd->m_cSubCmd;
|
||||
|
||||
return lpPktCastleCmd->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharCampCmd(PktBase* lpPktBase, unsigned long* dwCID, unsigned long* dwCampID,
|
||||
unsigned char* cState, unsigned long* dwValue1, unsigned long* dwValue2,
|
||||
unsigned char* cSubCmd)
|
||||
{
|
||||
LPPktCampCmd lpPktCampCmd = (LPPktCampCmd)lpPktBase;
|
||||
|
||||
*dwCID = lpPktCampCmd->m_dwCID;
|
||||
*dwCampID = lpPktCampCmd->m_dwCampID;
|
||||
*cState = lpPktCampCmd->m_cState;
|
||||
*dwValue1 = lpPktCampCmd->m_dwValue1;
|
||||
*dwValue2 = lpPktCampCmd->m_dwValue2;
|
||||
*cSubCmd = lpPktCampCmd->m_cSubCmd;
|
||||
|
||||
return lpPktCampCmd->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharSiegeArmsCmd(PktBase* lpPktBase, unsigned long* dwCID, unsigned long* dwArmsID,
|
||||
unsigned long* dwValue, unsigned char* cState, unsigned char* cSubCmd)
|
||||
{
|
||||
LPPktSiegeArmsCmd lpPktSACmd = (LPPktSiegeArmsCmd)lpPktBase;
|
||||
|
||||
*dwCID = lpPktSACmd->m_dwCID;
|
||||
*dwArmsID = lpPktSACmd->m_dwArmsID;
|
||||
*dwValue = lpPktSACmd->m_dwValue;
|
||||
*cState = lpPktSACmd->m_cState;
|
||||
*cSubCmd = lpPktSACmd->m_cSubCmd;
|
||||
|
||||
return lpPktSACmd->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharCastleRight(PktBase* lpPktBase, unsigned long* dwCastleID, CastleRight* castleRight)
|
||||
{
|
||||
LPPktCastleRight lpPktCR = (LPPktCastleRight)lpPktBase;
|
||||
|
||||
*dwCastleID = lpPktCR->m_dwCastleID;
|
||||
::memcpy(castleRight, &lpPktCR->m_CastleRight, sizeof(CastleRight));
|
||||
|
||||
return lpPktCR->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharCampRight(PktBase* lpPktBase, unsigned long* dwCID, unsigned long* dwCampID, CampRight* campRight)
|
||||
{
|
||||
LPPktCampRight lpPktCR = (LPPktCampRight)lpPktBase;
|
||||
|
||||
*dwCampID = lpPktCR->m_dwCampID;
|
||||
*dwCID = lpPktCR->m_dwCID ;
|
||||
::memcpy(campRight, &lpPktCR->m_CampRight, sizeof(CampRight));
|
||||
|
||||
return lpPktCR->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharSiegeBroadCast(PktBase* lpPktBase, unsigned long* dwCID, unsigned long* dwOwnerID,
|
||||
unsigned long* dwGID, unsigned short* wObjectType, unsigned long* dwNowHP,
|
||||
unsigned long* dwMaxHP, unsigned char* cState, unsigned char* cSubState,
|
||||
unsigned char* cUpgradeStep, unsigned char* cUpgradeType, float* fDefaultDir,
|
||||
unsigned long* ppdwRidersID, CNetworkPos* netPos)
|
||||
{
|
||||
// CASTLE_TODO : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD>ε<EFBFBD> ij<><C4B3>Ʈ <20><>Ŷ <20>ڵ鷯 <20>Լ<EFBFBD>
|
||||
|
||||
LPPktSiegeBroadCast lpPktSBC = (LPPktSiegeBroadCast)lpPktBase;
|
||||
|
||||
*dwCID = lpPktSBC->m_dwCID;
|
||||
*dwOwnerID = lpPktSBC->m_dwOwnerID;
|
||||
*dwGID = lpPktSBC->m_dwGID;
|
||||
*wObjectType = lpPktSBC->m_wObjectType;
|
||||
*dwNowHP = lpPktSBC->m_dwNowHP;
|
||||
*dwMaxHP = lpPktSBC->m_dwMaxHP;
|
||||
*cState = lpPktSBC->m_cState;
|
||||
*cSubState = lpPktSBC->m_cSubState;
|
||||
*cUpgradeStep = lpPktSBC->m_cUpgradeStep;
|
||||
*cUpgradeType = lpPktSBC->m_cUpgradeType;
|
||||
*fDefaultDir = lpPktSBC->m_fDefaultDir;
|
||||
|
||||
for (int i=0; i<Siege::AIRSHIP_RIDER_NUM; ++i)
|
||||
{
|
||||
ppdwRidersID[i] = lpPktSBC->m_dwRiderID[i];
|
||||
}
|
||||
|
||||
*netPos = lpPktSBC->m_NetworkPos;
|
||||
|
||||
return lpPktSBC->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharSiegeBroadCast2nd(PktBase* lpPktBase, unsigned long* dwObjectCount,
|
||||
PktSiegeBroadCast* siegeObjectArray)
|
||||
{
|
||||
// CASTLE_TODO : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD>ε<EFBFBD> ij<><C4B3>Ʈ <20><>Ŷ <20>ڵ鷯 <20>Լ<EFBFBD>
|
||||
|
||||
LPPktSiegeBroadCast2nd lpPktSBC = (LPPktSiegeBroadCast2nd)lpPktBase;
|
||||
int nDataLen = lpPktSBC->GetLen() - sizeof(PktSiegeBroadCast2nd);
|
||||
int nParseLen = 0;
|
||||
int nIndex = 0;
|
||||
|
||||
if(0 < nDataLen)
|
||||
{
|
||||
PktSiegeBroadCast* szData = reinterpret_cast<PktSiegeBroadCast*>(lpPktSBC + 1);
|
||||
while (nParseLen < nDataLen)
|
||||
{
|
||||
siegeObjectArray[nIndex] = *szData;
|
||||
|
||||
nParseLen += sizeof(PktSiegeBroadCast);
|
||||
++szData;
|
||||
++nIndex;
|
||||
}
|
||||
}
|
||||
|
||||
*dwObjectCount = static_cast<unsigned long>(nIndex);
|
||||
|
||||
return lpPktSBC->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharNewSiegeBroadCast(PktBase* lpPktBase, unsigned long* dwCID, unsigned char* cBroadCastType)
|
||||
{
|
||||
LPPktNewSiegeBroadCast lpPktNSBC = (LPPktNewSiegeBroadCast)lpPktBase;
|
||||
|
||||
*dwCID = lpPktNSBC->m_dwCID;
|
||||
*cBroadCastType = lpPktNSBC->m_cType;
|
||||
|
||||
return lpPktNSBC->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharGameTimeInfo(PktBase* lpPktBase, GuildTimeInfo* lpGuildTimeInfo, RealmTimeInfo* lpRealmTimeInfo,
|
||||
SiegeTimeInfo* lpSiegeTimeInfo, EnterTimeInfo* lpEnterTimeInfo, unsigned char* cType, unsigned char* cCastleNum,
|
||||
CastleSiegeInfo* lpCastleSiegeInfo)
|
||||
{
|
||||
LPPktGameTimeInfo lpPktGTI = (LPPktGameTimeInfo)lpPktBase;
|
||||
CastleSiegeInfo* lpCastleInfo = (CastleSiegeInfo*)(lpPktGTI + 1);
|
||||
|
||||
::memcpy(lpGuildTimeInfo, &lpPktGTI->m_GuildTimeInfo, sizeof(GuildTimeInfo));
|
||||
::memcpy(lpRealmTimeInfo, &lpPktGTI->m_RealmTimeInfo, sizeof(GuildTimeInfo));
|
||||
::memcpy(lpSiegeTimeInfo, &lpPktGTI->m_SiegeTimeInfo, sizeof(GuildTimeInfo));
|
||||
::memcpy(lpEnterTimeInfo, &lpPktGTI->m_EnterTimeInfo, sizeof(GuildTimeInfo));
|
||||
|
||||
*cType = lpPktGTI->m_cType;
|
||||
*cCastleNum = lpPktGTI->m_cCastleNum;
|
||||
|
||||
for (int i=0; i<lpPktGTI->m_cCastleNum; ++i)
|
||||
{
|
||||
::memcpy(&lpCastleSiegeInfo[i], lpCastleInfo, sizeof(CastleSiegeInfo));
|
||||
++lpCastleInfo;
|
||||
}
|
||||
|
||||
return lpPktGTI->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharStealthInfo(PktBase* lpPktBase, bool* bUseStealth)
|
||||
{
|
||||
LPPktStealthInfo lpPktSI = (LPPktStealthInfo)lpPktBase;
|
||||
|
||||
*bUseStealth = lpPktSI->m_bUseStealth;
|
||||
|
||||
return lpPktSI->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharCastleSiegeCount(PktBase* lpPktBase, unsigned long* dwCastleID, unsigned char* cSiegeCount,
|
||||
unsigned char* cInvincibleCount, unsigned short* wTotalSiegeCount)
|
||||
{
|
||||
LPPktCastleSiegeCount lpPktCSC = (LPPktCastleSiegeCount)lpPktBase;
|
||||
|
||||
*dwCastleID = lpPktCSC->m_dwCastleID;
|
||||
*cSiegeCount = lpPktCSC->m_cSiegeCount;
|
||||
*cInvincibleCount = lpPktCSC->m_cInvincibleCount;
|
||||
*wTotalSiegeCount = lpPktCSC->m_wTotalSiegeCount;
|
||||
|
||||
return lpPktCSC->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharCastleTaxMove(PktBase* lpPktBase, unsigned long* dwCastleID,
|
||||
unsigned long* dwMoveTempMoney, unsigned long* dwResultTaxMoney)
|
||||
{
|
||||
LPPktCastleTaxMove lpPktCTM = (LPPktCastleTaxMove)lpPktBase;
|
||||
|
||||
*dwCastleID = lpPktCTM->m_dwCastleID;
|
||||
|
||||
for (int i=0; i<Castle::MAX_TAX_TYPE; ++i)
|
||||
{
|
||||
dwMoveTempMoney[ i ] = lpPktCTM->m_dwMoveTempMoney[ i ];
|
||||
dwResultTaxMoney[ i ] = lpPktCTM->m_dwResultTaxMoney[ i ];
|
||||
}
|
||||
|
||||
return lpPktCTM->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharCampMessage(PktBase* lpPktBase, char* szGuildName, char* szMasterName, char* szPCName, unsigned char* cMsgCmd,
|
||||
unsigned long* dwCampID, unsigned char* cZone, unsigned char* cRemainTime, unsigned char* cNation,
|
||||
PktCampMessage::sRight* Right, bool* bNotify, int* nValue1, int* nValue2, unsigned char* cTimeChk)
|
||||
{
|
||||
LPPktCampMessage lpPktCM = (LPPktCampMessage)lpPktBase;
|
||||
|
||||
::strcpy(szGuildName, lpPktCM->m_szGuildName);
|
||||
::strcpy(szMasterName, lpPktCM->m_szMasterName);
|
||||
::strcpy(szPCName, lpPktCM->m_szPCName);
|
||||
*cMsgCmd = lpPktCM->m_cMsgCmd;
|
||||
*dwCampID = lpPktCM->m_dwCampID;
|
||||
*cZone = lpPktCM->m_cZone;
|
||||
*cRemainTime = lpPktCM->m_cRemainTime;
|
||||
*cNation = lpPktCM->m_cNation;
|
||||
*Right = lpPktCM->m_Right;
|
||||
*bNotify = lpPktCM->m_bNotify;
|
||||
*nValue1 = lpPktCM->m_nValue1;
|
||||
*nValue2 = lpPktCM->m_nValue2;
|
||||
*cTimeChk = lpPktCM->m_cTimeChk;
|
||||
|
||||
return lpPktCM->GetError();
|
||||
}
|
||||
|
||||
// ä<><C3A4><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><>û <20><><EFBFBD><EFBFBD> <20><>Ŷ
|
||||
unsigned long ParsePacket::HandleCharMiningCampMineralInfo(PktBase* lpPktBase, unsigned long* dwCampID, unsigned char* cState, unsigned long* dwRemainTime,
|
||||
unsigned char* cMineralType, unsigned char* cNum, CampMineralInfo* lpMineralList)
|
||||
{
|
||||
LPPktMiningCampMineralInfo lpPktMI = (LPPktMiningCampMineralInfo)lpPktBase;
|
||||
CampMineralInfo* lpInfo = reinterpret_cast<CampMineralInfo*>(lpPktMI + 1);
|
||||
|
||||
*dwCampID = lpPktMI->m_dwCampID;
|
||||
*cState = lpPktMI->m_cState;
|
||||
*dwRemainTime = lpPktMI->m_dwRemainTime;
|
||||
*cMineralType = lpPktMI->m_cMineralType;
|
||||
*cNum = lpPktMI->m_cNum;
|
||||
|
||||
if ( lpMineralList )
|
||||
{
|
||||
for (int i=0; i<*cNum; ++i, ++lpMineralList, ++lpInfo)
|
||||
{
|
||||
lpMineralList->m_wMineralID = lpInfo->m_wMineralID;
|
||||
lpMineralList->m_wAmount = lpInfo->m_wAmount;
|
||||
}
|
||||
}
|
||||
|
||||
return lpPktMI->GetError();
|
||||
}
|
||||
|
||||
|
||||
// <20><> <20><>¡<EFBFBD><C2A1> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֱ<EFBFBD>/<2F><><EFBFBD><EFBFBD>
|
||||
unsigned long ParsePacket::HandleCharTakeCastleJewel(PktBase* lpPktBase, unsigned long* dwCID, unsigned long* dwCastleID, unsigned char* cSubCmd,
|
||||
unsigned short* wItemID, unsigned char* cIndex, unsigned char* cNum, Item::ItemPos* pos)
|
||||
{
|
||||
LPPktTakeCastleJewel lpPktTCJ = (LPPktTakeCastleJewel)lpPktBase;
|
||||
|
||||
*dwCID = lpPktTCJ->m_dwCID;
|
||||
*dwCastleID = lpPktTCJ->m_dwCastleID;
|
||||
*cSubCmd = lpPktTCJ->m_cSubCmd;
|
||||
*wItemID = lpPktTCJ->m_wItemID;
|
||||
*cIndex = lpPktTCJ->m_cIndex;
|
||||
*cNum = lpPktTCJ->m_cNum;
|
||||
*pos = lpPktTCJ->m_Pos;
|
||||
|
||||
return lpPktTCJ->GetError();
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ֱ<EFBFBD>/<2F><><EFBFBD><EFBFBD>
|
||||
unsigned long ParsePacket::HandleCharTakeMaterial(PktBase* lpPktBase, unsigned long* dwCID, unsigned long* dwCampID, unsigned char* cSubCmd,
|
||||
unsigned char* cNum, Item::ItemPos* pos)
|
||||
{
|
||||
LPPktTakeMaterial lpPktTM = (LPPktTakeMaterial)lpPktBase;
|
||||
|
||||
*dwCID = lpPktTM->m_dwCID;
|
||||
*dwCampID = lpPktTM->m_dwCampID;
|
||||
*cSubCmd = lpPktTM->m_cSubCmd;
|
||||
*cNum = lpPktTM->m_cNum;
|
||||
*pos = lpPktTM->m_Pos;
|
||||
|
||||
return lpPktTM->GetError();
|
||||
}
|
||||
|
||||
// <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><>û <20><><EFBFBD><EFBFBD> <20><>Ŷ
|
||||
unsigned long ParsePacket::HandleCharCastleMineralInfo(PktBase* lpPktBase, unsigned long* dwCastleID, unsigned char* cNum, CastleMineral* lpMineralList)
|
||||
{
|
||||
LPPktCastleMineralInfo lpPktCMI = (LPPktCastleMineralInfo)lpPktBase;
|
||||
CastleMineral* lpInfo = reinterpret_cast<CastleMineral*>(lpPktCMI + 1);
|
||||
|
||||
*dwCastleID = lpPktCMI->m_dwCastleID;
|
||||
*cNum = lpPktCMI->m_cNum;
|
||||
|
||||
if ( lpMineralList )
|
||||
{
|
||||
for (int i=0; i<*cNum; ++i, ++lpMineralList, ++lpInfo)
|
||||
{
|
||||
lpMineralList->m_wMineralID = lpInfo->m_wMineralID;
|
||||
lpMineralList->m_wAmount = lpInfo->m_wAmount;
|
||||
}
|
||||
}
|
||||
|
||||
return lpPktCMI->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharWarOnOff(PktBase* lpPktBase, unsigned long* dwCID, unsigned char* cFlag, unsigned char* cType)
|
||||
{
|
||||
|
||||
PktWarOnOff* lpPktWarOnOff = (PktWarOnOff*)(lpPktBase);
|
||||
|
||||
*dwCID = lpPktWarOnOff->m_dwCID;
|
||||
*cFlag = lpPktWarOnOff->m_cFlag;
|
||||
*cType = lpPktWarOnOff->m_cType;
|
||||
|
||||
return lpPktWarOnOff->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharRealmPoint(PktBase* lpPktBase, unsigned long* dwCID, unsigned char* cRealmPoint, unsigned char* cType)
|
||||
{
|
||||
PktRealmPoint* lpPktRealmPoint = (PktRealmPoint*)(lpPktBase);
|
||||
|
||||
*dwCID = lpPktRealmPoint->m_dwCID;
|
||||
*cRealmPoint = lpPktRealmPoint->m_cRealmPoint;
|
||||
*cType = lpPktRealmPoint->m_cType;
|
||||
|
||||
return lpPktRealmPoint->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharRealmStatueDisplayInfo(PktBase* lpPktBase, unsigned short* wSubCmd, unsigned long* dwRealmStatueNum,
|
||||
StatueDisplayInfo* lpDisplayInfo)
|
||||
{
|
||||
LPPktStatueCmd lpPktStatueCmd = (LPPktStatueCmd)lpPktBase;
|
||||
StatueDisplayInfo* lpInfo = reinterpret_cast<StatueDisplayInfo*>(lpPktStatueCmd + 1);
|
||||
|
||||
*wSubCmd = lpPktStatueCmd->m_wSubCmd;
|
||||
*dwRealmStatueNum = lpPktStatueCmd->m_dwValue;
|
||||
|
||||
if ( lpDisplayInfo )
|
||||
{
|
||||
for (unsigned long i=0; i<*dwRealmStatueNum; ++i, ++lpDisplayInfo, ++lpInfo)
|
||||
{
|
||||
*lpDisplayInfo = *lpInfo;
|
||||
}
|
||||
}
|
||||
|
||||
return lpPktStatueCmd->GetError();
|
||||
}
|
||||
@@ -0,0 +1,104 @@
|
||||
#ifndef _GAMA_CLIENT_PARSE_CASTLE_PACKET_H_
|
||||
#define _GAMA_CLIENT_PARSE_CASTLE_PACKET_H_
|
||||
|
||||
#include <Network/Packet/PacketStruct/CastlePacket.h>
|
||||
#include <Network/Packet/PacketStruct/CharMovePacket.h>
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
struct PktBase;
|
||||
|
||||
namespace ParsePacket
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> <20><>Ŷ
|
||||
unsigned long HandleCharCreateCastle(PktBase* lpPktBase, unsigned long* dwCastleID, unsigned char* cNation, unsigned char* cZone,
|
||||
unsigned char* cNameID, unsigned char* cUpgradeStep, unsigned char* cInvincibleCount,
|
||||
unsigned short* wTotalSiegeCount, unsigned long* dwTotalTaxMoney, float* fPosX,
|
||||
float* fPosY, float* fPosZ, unsigned short* wItemID, unsigned char* cItemNum,
|
||||
CastleRight* castleRight, CastleTaxInfo* castleTaxInfo);
|
||||
|
||||
unsigned long HandleCharCreateCamp(PktBase* lpPktBase, unsigned long* dwActorCID, unsigned long* dwCID, unsigned long* dwCampID,
|
||||
unsigned long* dwGID, unsigned long* dwHP, unsigned short* wObjectType, unsigned char* cState,
|
||||
unsigned char* cSubState, unsigned char* cUpgradeStep, unsigned char* cNation, CampRight* campRight,
|
||||
float* fPointX, float* fPointY, float* fPointZ, unsigned char* cMaterial);
|
||||
|
||||
unsigned long HandleCharCreateSiegeArms(PktBase* lpPktBase, unsigned long* dwCID, unsigned long* dwOwnerID, unsigned char* cNation,
|
||||
unsigned long* dwHP, unsigned short* wObjectType, unsigned char* cState, unsigned char* cUpgradeStep,
|
||||
float* fPointX, float* fPointY, float* fPointZ);
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ
|
||||
unsigned long HandleCharCastleCmd(PktBase* lpPktBase, unsigned long* dwCastleID, unsigned long* dwCastleObjectID, unsigned long* dwValue1,
|
||||
unsigned long* dwValue2, unsigned char* cState, unsigned char* cSubCmd);
|
||||
|
||||
unsigned long HandleCharCampCmd(PktBase* lpPktBase, unsigned long* dwCID, unsigned long* dwCampID, unsigned char* cState,
|
||||
unsigned long* dwValue1, unsigned long* dwValue2, unsigned char* cSubCmd);
|
||||
|
||||
unsigned long HandleCharSiegeArmsCmd(PktBase* lpPktBase, unsigned long* dwCID, unsigned long* dwArmsID,
|
||||
unsigned long* dwValue, unsigned char* cState, unsigned char* cSubCmd);
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ
|
||||
unsigned long HandleCharCastleRight(PktBase* lpPktBase, unsigned long* dwCastleID, CastleRight* castleRight);
|
||||
|
||||
unsigned long HandleCharCampRight(PktBase* lpPktBase, unsigned long* dwCID, unsigned long* dwCampID, CampRight* campRight);
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ε<EFBFBD> ij<><C4B3>Ʈ <20><>Ŷ
|
||||
unsigned long HandleCharSiegeBroadCast(PktBase* lpPktBase, unsigned long* dwCID, unsigned long* dwOwnerID, unsigned long* dwGID,
|
||||
unsigned short* wObjectType, unsigned long* dwNowHP, unsigned long* dwMaxHP,
|
||||
unsigned char* cState, unsigned char* cSubState, unsigned char* cUpgradeStep,
|
||||
unsigned char* cUpgradeType, float* fDefaultDir, unsigned long* ppdwRidersID, CNetworkPos* netPos);
|
||||
|
||||
unsigned long HandleCharSiegeBroadCast2nd(PktBase* lpPktBase, unsigned long* dwObjectCount, PktSiegeBroadCast* siegeObjectArray);
|
||||
|
||||
unsigned long HandleCharNewSiegeBroadCast(PktBase* lpPktBase, unsigned long* dwCID, unsigned char* cBroadCastType);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD> <20><>Ŷ
|
||||
unsigned long HandleCharGameTimeInfo(PktBase* lpPktBase, GuildTimeInfo* lpGuildTimeInfo, RealmTimeInfo* lpRealmTimeInfo, SiegeTimeInfo* lpSiegeTimeInfo, EnterTimeInfo* lpEnterTimeInfo,
|
||||
unsigned char* cType, unsigned char* cCastleNum, CastleSiegeInfo* lpCastleSiegeInfo);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ڽ<EFBFBD> <20><><EFBFBD>밡<EFBFBD><EBB0A1> <20><><EFBFBD><EFBFBD> <20><>Ŷ
|
||||
unsigned long HandleCharStealthInfo(PktBase* lpPktBase, bool* bUseStealth);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ƚ<><C8BD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
|
||||
unsigned long HandleCharCastleSiegeCount(PktBase* lpPktBase, unsigned long* dwCastleID, unsigned char* cSiegeCount,
|
||||
unsigned char* cInvincibleCount, unsigned short* wTotalSiegeCount);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD> <20>ӽ<EFBFBD> <20><><EFBFBD><EFBFBD> -> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>̵<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned long HandleCharCastleTaxMove(PktBase* lpPktBase, unsigned long* dwCastleID, unsigned long* dwMoveTempMoney, unsigned long* dwResultTaxMoney);
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><DEBC><EFBFBD> <20><>Ŷ
|
||||
unsigned long HandleCharCampMessage(PktBase* lpPktBase, char* szGuildName, char* szMasterName, char* szPCName, unsigned char* cMsgCmd,
|
||||
unsigned long* dwCampID, unsigned char* cZone, unsigned char* cRemainTime, unsigned char* cNation,
|
||||
PktCampMessage::sRight* Right, bool* bNotify, int* nValue1, int* nValue2, unsigned char* cTimeChk);
|
||||
|
||||
// ä<><C3A4><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><>û <20><><EFBFBD><EFBFBD> <20><>Ŷ
|
||||
unsigned long HandleCharMiningCampMineralInfo(PktBase* lpPktBase, unsigned long* dwCampID, unsigned char* cState, unsigned long* dwRemainTime,
|
||||
unsigned char* cMineralType, unsigned char* cNum, CampMineralInfo* lpMineralList);
|
||||
|
||||
|
||||
// <20><> <20><>¡<EFBFBD><C2A1> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֱ<EFBFBD>/<2F><><EFBFBD><EFBFBD>
|
||||
unsigned long HandleCharTakeCastleJewel(PktBase* lpPktBase, unsigned long* dwCID, unsigned long* dwCastleID, unsigned char* cSubCmd,
|
||||
unsigned short* wItemID, unsigned char* cIndex, unsigned char* cNum, Item::ItemPos* pos);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ֱ<EFBFBD>/<2F><><EFBFBD><EFBFBD>
|
||||
unsigned long HandleCharTakeMaterial(PktBase* lpPktBase, unsigned long* dwCID, unsigned long* dwCampID, unsigned char* cSubCmd,
|
||||
unsigned char* cNum, Item::ItemPos* pos);
|
||||
|
||||
// <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><>û <20><><EFBFBD><EFBFBD> <20><>Ŷ
|
||||
unsigned long HandleCharCastleMineralInfo(PktBase* lpPktBase, unsigned long* dwCastleID, unsigned char* cNum, CastleMineral* lpMineralList);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, Ż<><C5BB>.
|
||||
unsigned long HandleCharWarOnOff(PktBase* lpPktBase, unsigned long* dwCID, unsigned char* cFlag, unsigned char* cType);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ.
|
||||
unsigned long HandleCharRealmPoint(PktBase* lpPktBase, unsigned long* dwCID, unsigned char* cRealmPoint, unsigned char* cType);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ǥ<><C7A5> <20><><EFBFBD><EFBFBD>
|
||||
unsigned long HandleCharRealmStatueDisplayInfo(PktBase* lpPktBase, unsigned short* wSubCmd, unsigned long* dwRealmStatueNum,
|
||||
StatueDisplayInfo* lpDisplayInfo);
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,104 @@
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
#include <Network/Packet/PacketStruct/CharStatusPacket.h>
|
||||
#include <Network/Packet/PacketStruct/CharItemPacket.h>
|
||||
|
||||
#include "ParseCharInfo.h"
|
||||
#include "GMMemory.h"
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharLevelUp(PktBase* lpPktBase, unsigned long *CharID,
|
||||
unsigned char *Level, ChState* lpChState)
|
||||
{
|
||||
PktLU* lpLUPt = static_cast<PktLU *>(lpPktBase);
|
||||
|
||||
*CharID = lpLUPt->m_dwCharID;
|
||||
*Level = lpLUPt->m_cLevel;
|
||||
*lpChState = lpLUPt->m_State;
|
||||
|
||||
return lpLUPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharLevelUpInfo(PktBase* lpPktBase, unsigned long *CharID, unsigned char *Level)
|
||||
{
|
||||
PktLUInfo* lpLUInfoPt = static_cast<PktLUInfo *>(lpPktBase);
|
||||
|
||||
*CharID = lpLUInfoPt->m_dwCharID;
|
||||
*Level = lpLUInfoPt->m_cLevel;
|
||||
|
||||
return lpLUInfoPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharIncreasePoint(PktBase* lpPktBase, unsigned long *CharID, ChState* lpChState)
|
||||
{
|
||||
PktIPAck* lpIPAckPt = static_cast<PktIPAck *>(lpPktBase);
|
||||
|
||||
*CharID = lpIPAckPt->m_dwCharID;
|
||||
*lpChState = lpIPAckPt->m_State;
|
||||
|
||||
return lpIPAckPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharClassUpgrade(PktBase* lpPktBase, unsigned long *dwCharID,
|
||||
unsigned char *cClassID, unsigned char *cLevel,
|
||||
ChState* lpState, unsigned long *dwFame)
|
||||
{
|
||||
PktCUAck* lpCUAckPt = static_cast<PktCUAck *>(lpPktBase);
|
||||
|
||||
*dwCharID = lpCUAckPt->m_dwCharID;
|
||||
*cClassID = lpCUAckPt->m_cClass;
|
||||
*cLevel = lpCUAckPt->m_cLevel;
|
||||
*lpState = lpCUAckPt->m_State;
|
||||
*dwFame = lpCUAckPt->m_dwFame;
|
||||
|
||||
return lpCUAckPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharHPRegen(PktBase* lpPktBase, unsigned long *CharID,
|
||||
unsigned short *HP, unsigned short *MP)
|
||||
{
|
||||
PktHP* lpHPPt = static_cast<PktHP *>(lpPktBase);
|
||||
|
||||
*CharID = lpHPPt->m_dwCharID;
|
||||
*HP = lpHPPt->m_sHP;
|
||||
*MP = lpHPPt->m_sMP;
|
||||
|
||||
return lpHPPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharQuickSlotMove(PktBase* lpPktBase, TakeType* lpTakeType)
|
||||
{
|
||||
PktQSM* lpQSMPt = static_cast<PktQSM *>(lpPktBase);
|
||||
|
||||
*lpTakeType = lpQSMPt->m_TakeType;
|
||||
|
||||
return lpQSMPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharSwitchEQ(PktBase* lpPktBase, unsigned char *Type, unsigned char *Select)
|
||||
{
|
||||
PktSwEQ* lpSwHPt = static_cast<PktSwEQ *>(lpPktBase);
|
||||
|
||||
*Type = lpSwHPt->m_cType;
|
||||
*Select = lpSwHPt->m_cSelect;
|
||||
|
||||
return lpSwHPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharEliteBonus(PktBase* lpPktBase, char *cEliteBonus)
|
||||
{
|
||||
PktEB* lpEBPt = static_cast<PktEB *>(lpPktBase);
|
||||
|
||||
*cEliteBonus = lpEBPt->m_cEliteBonus;
|
||||
|
||||
return lpEBPt->GetError();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
#ifndef _GAMA_CLIENT_PARSE_CHAR_INFO_H_
|
||||
#define _GAMA_CLIENT_PARSE_CHAR_INFO_H_
|
||||
|
||||
#include <Network/Packet/PacketStruct/CharStatusPacketStruct.h>
|
||||
#include <Network/Packet/PacketStruct/CharItemPacketStruct.h>
|
||||
|
||||
// forward decl.
|
||||
struct PktBase;
|
||||
|
||||
namespace ParsePacket
|
||||
{
|
||||
//ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned long HandleCharLevelUp(PktBase* lpPktBase, unsigned long *CharID, unsigned char *Level, LPChState lpChState);
|
||||
unsigned long HandleCharIncreasePoint(PktBase* lpPktBase, unsigned long *CharID, ChState* lpChState);
|
||||
unsigned long HandleCharClassUpgrade(PktBase* lpPktBase, unsigned long *dwCharID, unsigned char *cClassID, unsigned char *cLevel, ChState* lpState, unsigned long *dwFame);
|
||||
unsigned long HandleCharHPRegen(PktBase* lpPktBase, unsigned long *CharID, unsigned short *HP, unsigned short *MP);
|
||||
unsigned long HandleCharQuickSlotMove(PktBase* lpPktBase, TakeType* lpTakeType);
|
||||
unsigned long HandleCharSwitchEQ(PktBase* lpPktBase, unsigned char *Type, unsigned char *Select);
|
||||
unsigned long HandleCharEliteBonus(PktBase* lpPktBase, char *cEliteBonus);
|
||||
|
||||
// TODO : REMOVE UDP Packets
|
||||
unsigned long HandleCharLevelUpInfo(PktBase* lpPktBase, unsigned long *CharID, unsigned char *Level);
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,520 @@
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
#include <Network/Packet/PacketStruct/CharCommunityPacket.h>
|
||||
#include <Network/Packet/PacketStruct/FriendPacket.h>
|
||||
#include <Network/Packet/PacketStruct/GuildPacket.h>
|
||||
#include <Network/Packet/PacketStruct/PartyPacket.h>
|
||||
|
||||
#include "ParseCommunity.h"
|
||||
#include "GMMemory.h"
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD>
|
||||
|
||||
unsigned long ParsePacket::HandleCharCreateGuild(PktBase* lpPktBase, unsigned long *dwCID, unsigned long *dwGID,
|
||||
unsigned char *cInclination, char* szGuildName)
|
||||
{
|
||||
PktCreateGuild* lpCGPt = static_cast<PktCreateGuild *>(lpPktBase);
|
||||
|
||||
*dwCID = lpCGPt->m_dwCID;
|
||||
*dwGID = lpCGPt->m_dwGID;
|
||||
*cInclination = lpCGPt->m_cInclination;
|
||||
strncpy(szGuildName, lpCGPt->m_szGuildName, Guild::MAX_GUILD_NAME_LEN);
|
||||
|
||||
return lpCGPt->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharGuildCmd(PktBase* lpPktBase, unsigned long *dwGID, unsigned long *dwSenderID, unsigned long *dwReferenceID,
|
||||
char* szGuildName, char* szSenderName, unsigned short *wCmd)
|
||||
{
|
||||
PktGuildCmd* lpGCPt = static_cast<PktGuildCmd *>(lpPktBase);
|
||||
|
||||
*dwGID = lpGCPt->m_dwGID;
|
||||
|
||||
*dwSenderID = lpGCPt->m_dwSenderID;
|
||||
*dwReferenceID = lpGCPt->m_dwReferenceID;
|
||||
|
||||
strncpy(szGuildName, lpGCPt->m_szGuildName, Guild::MAX_GUILD_NAME_LEN);
|
||||
strncpy(szSenderName, lpGCPt->m_szSenderName, Guild::MAX_MEMBER_NAME_LEN);
|
||||
|
||||
*wCmd = lpGCPt->m_wCmd;
|
||||
|
||||
return lpGCPt->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharGuildMark(PktBase* lpPktBase, unsigned long* dwCID, unsigned long* dwGID,
|
||||
char* szMark, unsigned long *dwGold)
|
||||
{
|
||||
PktGuildMark* lpGMPt = static_cast<PktGuildMark *>(lpPktBase);
|
||||
|
||||
*dwCID = lpGMPt->m_dwCID;
|
||||
*dwGID = lpGMPt->m_dwGID;
|
||||
|
||||
::memcpy(szMark, lpGMPt->m_szMark, Guild::MAX_MARK_SIZE);
|
||||
*dwGold = lpGMPt->m_dwGold;
|
||||
|
||||
return lpGMPt->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharGuildLevel(PktBase* lpPktBase, unsigned long *dwGID, unsigned char *cLevel, unsigned long *dwGold)
|
||||
{
|
||||
PktGuildLevel* lpGLPt = static_cast<PktGuildLevel *>(lpPktBase);
|
||||
|
||||
*dwGID = lpGLPt->m_dwUID;
|
||||
*cLevel = lpGLPt->m_cLevel;
|
||||
*dwGold = lpGLPt->m_dwGold;
|
||||
|
||||
return lpGLPt->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharGuildRelation(PktBase* lpPktBase, unsigned long *dwCID, unsigned long *dwGID,
|
||||
unsigned long *dwTargetGID, unsigned long *dwValue, unsigned char *cSubCmd,
|
||||
char* szGuildName, char* szTempGuildName)
|
||||
{
|
||||
PktGuildRelation* lpGRPt = static_cast<PktGuildRelation *>(lpPktBase);
|
||||
|
||||
*dwCID = lpGRPt->m_dwCID;
|
||||
*dwGID = lpGRPt->m_dwGID;
|
||||
*dwTargetGID = lpGRPt->m_dwTargetGID;
|
||||
*dwValue = lpGRPt->m_dwValue;
|
||||
*cSubCmd = lpGRPt->m_cSubCmd;
|
||||
|
||||
strncpy(szGuildName, lpGRPt->m_szGuildName, Guild::MAX_GUILD_NAME_LEN);
|
||||
strncpy(szTempGuildName, lpGRPt->m_szTempGuildName, Guild::MAX_GUILD_NAME_LEN);
|
||||
|
||||
return lpGRPt->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharGuildInclination(PktBase* lpPktBase, unsigned long *dwGID, unsigned char *cInclination)
|
||||
{
|
||||
PktGuildInclination* lpGIPt = static_cast<PktGuildInclination *>(lpPktBase);
|
||||
|
||||
*dwGID = lpGIPt->m_dwUID;
|
||||
*cInclination = lpGIPt->m_cInclination;
|
||||
|
||||
return lpGIPt->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharGuildList(PktBase* lpPktBase, unsigned long *dwCID,
|
||||
unsigned char *cSortCmd, unsigned char *cPage,
|
||||
unsigned char *cSmallNodeNum, GuildSmallInfoNode* lpSmallNode,
|
||||
unsigned char *cLargeNodeNum, GuildLargeInfoNode* lpLargeNode)
|
||||
{
|
||||
PktGuildList* lpGLPt = static_cast<PktGuildList *>(lpPktBase);
|
||||
|
||||
*dwCID = lpGLPt->m_dwCID;
|
||||
*cSortCmd = lpGLPt->m_cSortCmd;
|
||||
*cPage = lpGLPt->m_cPage;
|
||||
*cSmallNodeNum = lpGLPt->m_cSmallNodeNum;
|
||||
*cLargeNodeNum = lpGLPt->m_cLargeNodeNum;
|
||||
|
||||
GuildSmallInfoNode* lpRecvSmallNode = reinterpret_cast<GuildSmallInfoNode *>(lpGLPt + 1);
|
||||
GuildLargeInfoNode* lpRecvLargeNode = reinterpret_cast<GuildLargeInfoNode *>(lpRecvSmallNode + lpGLPt->m_cSmallNodeNum);
|
||||
|
||||
CopyMemory(lpSmallNode, lpRecvSmallNode, sizeof(GuildSmallInfoNode) * lpGLPt->m_cSmallNodeNum);
|
||||
CopyMemory(lpLargeNode, lpRecvLargeNode, sizeof(GuildLargeInfoNode) * lpGLPt->m_cLargeNodeNum);
|
||||
|
||||
return lpGLPt->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharGuildRight(PktBase* lpPktBase, unsigned long *dwGID, GuildRight *guildRight)
|
||||
{
|
||||
PktGuildRight* lpGRPt = static_cast<PktGuildRight *>(lpPktBase);
|
||||
|
||||
*dwGID = lpGRPt->m_dwUID;
|
||||
*guildRight = lpGRPt->m_GuildRight;
|
||||
|
||||
return lpGRPt->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharGuildMemberList(PktBase* lpPktBase, unsigned long *dwCID, unsigned char* cMemberType,
|
||||
unsigned char *cSortCmd, unsigned char *cPage, unsigned char *cTotalMemberNum,
|
||||
unsigned char *cNodeNum, GuildMemberInfoNode* lpMemberNode)
|
||||
{
|
||||
PktGuildMemberList* lpGMLPt = static_cast<PktGuildMemberList *>(lpPktBase);
|
||||
|
||||
*dwCID = lpGMLPt->m_dwCID;
|
||||
|
||||
*cMemberType = lpGMLPt->m_cMemberType;
|
||||
*cSortCmd = lpGMLPt->m_cSortCmd;
|
||||
*cPage = lpGMLPt->m_cPage;
|
||||
|
||||
*cTotalMemberNum = lpGMLPt->m_cTotalMemberNum;
|
||||
*cNodeNum = lpGMLPt->m_cNodeNum;
|
||||
|
||||
GuildMemberInfoNode* lpRecvNode = reinterpret_cast<GuildMemberInfoNode *>(lpGMLPt + 1);
|
||||
CopyMemory(lpMemberNode, lpRecvNode, sizeof(GuildMemberInfoNode) * lpGMLPt->m_cNodeNum);
|
||||
|
||||
return lpGMLPt->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharMyGuildInfo(PktBase* lpPktBase, unsigned long *dwGold,
|
||||
GuildRight *guildRight, unsigned char *cTitle)
|
||||
{
|
||||
PktMyGuildInfo* lpMGIPt = static_cast<PktMyGuildInfo *>(lpPktBase);
|
||||
|
||||
*dwGold = lpMGIPt->m_dwGold;
|
||||
*guildRight = lpMGIPt->m_GuildRight;
|
||||
*cTitle = lpMGIPt->m_cTitle;
|
||||
|
||||
return lpMGIPt->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharGuildSafe(PktBase* lpPktBase, unsigned long *dwCID, char* szCharName,
|
||||
unsigned long *dwSafeGold, unsigned long *dwCharGold, unsigned char *cCmd)
|
||||
{
|
||||
PktGuildSafeAck* lpGSAckPt = static_cast<PktGuildSafeAck *>(lpPktBase);
|
||||
|
||||
*dwCID = lpGSAckPt->m_dwCID;
|
||||
*dwSafeGold = lpGSAckPt->m_dwSafeGold;
|
||||
*dwCharGold = lpGSAckPt->m_dwCharGold;
|
||||
*cCmd = lpGSAckPt->m_cCmd;
|
||||
|
||||
strncpy(szCharName, lpGSAckPt->m_szCharName, Guild::MAX_MEMBER_NAME_LEN);
|
||||
|
||||
return lpGSAckPt->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharGuildHostilityList(PktBase* lpPktBase, unsigned long *dwCID, unsigned char *cCurrentPage,
|
||||
unsigned char *cPageState, unsigned char* cNodeNum, unsigned short* wTotalItemNum,
|
||||
char* szHostility, char* szAlert, GuildHostilityInfoNode* lpHostilityNode)
|
||||
{
|
||||
PktGuildHostilityList* lpGHLPt = static_cast<PktGuildHostilityList *>(lpPktBase);
|
||||
|
||||
*dwCID = lpGHLPt->m_dwCID;
|
||||
*cCurrentPage = lpGHLPt->m_cCurrentPage;
|
||||
*cPageState = lpGHLPt->m_cPageState;
|
||||
*cNodeNum = lpGHLPt->m_cNodeNum;
|
||||
*wTotalItemNum = lpGHLPt->m_wTotalItemNum;
|
||||
|
||||
strncpy(szHostility, lpGHLPt->m_szHostility, Guild::MAX_GUILD_NAME_LEN);
|
||||
strncpy(szAlert, lpGHLPt->m_szAlert, Guild::MAX_GUILD_NAME_LEN);
|
||||
|
||||
GuildHostilityInfoNode* lpRecvNode = reinterpret_cast<GuildHostilityInfoNode *>(lpGHLPt + 1);
|
||||
CopyMemory(lpHostilityNode, lpRecvNode, sizeof(GuildHostilityInfoNode) * lpGHLPt->m_cNodeNum);
|
||||
|
||||
return lpGHLPt->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharGuildRelationInfo(PktBase* lpPktBase, unsigned long *dwCID,
|
||||
unsigned long *dwGID, unsigned short *wNodeNum,
|
||||
GuildRelationInfoNode* lpRelationNode )
|
||||
{
|
||||
PktGuildRelationInfo* lpGRIPt = static_cast<PktGuildRelationInfo *>(lpPktBase);
|
||||
|
||||
*dwCID = lpGRIPt->m_dwCID;
|
||||
*dwGID = lpGRIPt->m_dwGID;
|
||||
*wNodeNum = lpGRIPt->m_wNodeNum;
|
||||
|
||||
GuildRelationInfoNode* lpRecvNode = reinterpret_cast<GuildRelationInfoNode* >( lpGRIPt + 1 );
|
||||
CopyMemory(lpRelationNode, lpRecvNode, sizeof(GuildRelationInfoNode) * lpGRIPt->m_wNodeNum);
|
||||
|
||||
return lpGRIPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------
|
||||
// <20><>Ƽ
|
||||
|
||||
unsigned long ParsePacket::HandleCharPartyInfo(PktBase* lpPktBase, PARTY_EX* lpParty)
|
||||
{
|
||||
PktPI* lpPIPt = static_cast<PktPI *>(lpPktBase);
|
||||
*lpParty = lpPIPt->m_Party;
|
||||
|
||||
return lpPIPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharPartyCmd(PktBase* lpPktBase, AddressInfo* SenderAddress,
|
||||
char *SenderName, unsigned long *dwSenderID, unsigned long *dwReferenceID,
|
||||
unsigned long *dwPartyID, unsigned short *Cmd)
|
||||
{
|
||||
PktPCAck* lpPCAckPt = static_cast<PktPCAck *>(lpPktBase);
|
||||
|
||||
strncpy(SenderName, lpPCAckPt->m_strSenderName, 16);
|
||||
|
||||
*SenderAddress = lpPCAckPt->m_SenderAddressInfo;
|
||||
*dwSenderID = lpPCAckPt->m_dwSenderID;
|
||||
*dwReferenceID = lpPCAckPt->m_dwReferenceID;
|
||||
*dwPartyID = lpPCAckPt->m_dwPartyID;
|
||||
*Cmd = lpPCAckPt->m_cCmd;
|
||||
|
||||
return lpPCAckPt->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharPartyCmdInfo(PktBase* lpPktBase, unsigned long *dwMemberID,
|
||||
unsigned long *dwPartyID, unsigned short *Cmd)
|
||||
{
|
||||
PktPCInfo* lpPCInfoPt = static_cast<PktPCInfo *>(lpPktBase);
|
||||
|
||||
*dwMemberID = lpPCInfoPt->m_dwMemberID;
|
||||
*dwPartyID = lpPCInfoPt->m_dwPartyID;
|
||||
*Cmd = lpPCInfoPt->m_cCmd;
|
||||
|
||||
return lpPCInfoPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharPartyMemData(PktBase* lpPktBase, unsigned long& dwPartyID, unsigned long& dwSenderID, unsigned long& dwGID,
|
||||
unsigned long& dwServerID, unsigned short& wClass, char& cLevel,
|
||||
const char*& szSenderName, unsigned short& wCmd)
|
||||
{
|
||||
if (sizeof(PktPMD) != lpPktBase->GetLen())
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
PktPMD* lpPktPMD = reinterpret_cast<PktPMD*>(lpPktBase);
|
||||
|
||||
dwPartyID = lpPktPMD->m_dwPartyID;
|
||||
dwSenderID = lpPktPMD->m_dwSenderID;
|
||||
dwGID = lpPktPMD->m_dwGID;
|
||||
cLevel = lpPktPMD->m_cLevel;
|
||||
wClass = lpPktPMD->m_wClass;
|
||||
dwServerID = lpPktPMD->m_dwServerID;
|
||||
szSenderName = lpPktPMD->m_strSenderName;
|
||||
wCmd = lpPktPMD->m_wCmd;
|
||||
|
||||
return lpPktBase->GetError();
|
||||
}
|
||||
|
||||
|
||||
inline void COPY_AND_ADVANCE_SRC(void* dst, const char*& src, size_t size)
|
||||
{
|
||||
memcpy(dst, src, size); src += size;
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharPartyMemInfo(PktBase* lpPktBase, PartyMemberData* lpPartyMemberData,
|
||||
unsigned int& nMemberDataNum)
|
||||
{
|
||||
memset(lpPartyMemberData, 0, sizeof(PartyMemberData) * nMemberDataNum);
|
||||
|
||||
const char* szDataPos = reinterpret_cast<char*>(lpPktBase + 1);
|
||||
const char* szDataEnd = szDataPos + ((sizeof(PktBase) < lpPktBase->GetLen()) ? lpPktBase->GetLen() - sizeof(PktBase) : 0);
|
||||
|
||||
PartyMemberData* lpPMDPos = lpPartyMemberData;
|
||||
PartyMemberData* lpPMDEnd = lpPartyMemberData + nMemberDataNum;
|
||||
|
||||
for(nMemberDataNum = 0 ;
|
||||
szDataPos + sizeof(unsigned long) + sizeof(unsigned short) < szDataEnd && lpPMDPos < lpPMDEnd;
|
||||
++lpPMDPos)
|
||||
{
|
||||
COPY_AND_ADVANCE_SRC(&lpPMDPos->m_dwCID, szDataPos, sizeof(unsigned long));
|
||||
COPY_AND_ADVANCE_SRC(&lpPMDPos->m_usDataChanged, szDataPos, sizeof(unsigned short));
|
||||
|
||||
unsigned short usDataChanged = lpPMDPos->m_usDataChanged;
|
||||
|
||||
// ------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٲ<EFBFBD><D9B2><EFBFBD> ġ<><C4A1><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
|
||||
|
||||
if (usDataChanged & PartyMemberData::CHANGED_XPOS) { COPY_AND_ADVANCE_SRC(&lpPMDPos->m_fXPos, szDataPos, sizeof(float)); }
|
||||
if (usDataChanged & PartyMemberData::CHANGED_YPOS) { COPY_AND_ADVANCE_SRC(&lpPMDPos->m_fYPos, szDataPos, sizeof(float)); }
|
||||
if (usDataChanged & PartyMemberData::CHANGED_ZPOS) { COPY_AND_ADVANCE_SRC(&lpPMDPos->m_fZPos, szDataPos, sizeof(float)); }
|
||||
if (usDataChanged & PartyMemberData::CHANGED_MAX_HP) { COPY_AND_ADVANCE_SRC(&lpPMDPos->m_usMaxHP, szDataPos, sizeof(unsigned short)); }
|
||||
if (usDataChanged & PartyMemberData::CHANGED_MAX_MP) { COPY_AND_ADVANCE_SRC(&lpPMDPos->m_usMaxMP, szDataPos, sizeof(unsigned short)); }
|
||||
if (usDataChanged & PartyMemberData::CHANGED_CUR_HP) { COPY_AND_ADVANCE_SRC(&lpPMDPos->m_usCurHP, szDataPos, sizeof(unsigned short)); }
|
||||
if (usDataChanged & PartyMemberData::CHANGED_CUR_MP) { COPY_AND_ADVANCE_SRC(&lpPMDPos->m_usCurMP, szDataPos, sizeof(unsigned short)); }
|
||||
if (usDataChanged & PartyMemberData::CHANGED_LEVEL) { COPY_AND_ADVANCE_SRC(&lpPMDPos->m_cLevel, szDataPos, sizeof(unsigned char)); }
|
||||
if (usDataChanged & PartyMemberData::CHANGED_CLASS) { COPY_AND_ADVANCE_SRC(&lpPMDPos->m_cClass, szDataPos, sizeof(unsigned char)); }
|
||||
if (usDataChanged & PartyMemberData::CHANGED_ENCHANT_INFO_0) { COPY_AND_ADVANCE_SRC(&lpPMDPos->m_dwEnchantInfo[0], szDataPos, sizeof(unsigned long)); }
|
||||
if (usDataChanged & PartyMemberData::CHANGED_ENCHANT_INFO_1) { COPY_AND_ADVANCE_SRC(&lpPMDPos->m_dwEnchantInfo[1], szDataPos, sizeof(unsigned long)); }
|
||||
if (usDataChanged & PartyMemberData::CHANGED_ENCHANT_INFO_2) { COPY_AND_ADVANCE_SRC(&lpPMDPos->m_dwEnchantInfo[2], szDataPos, sizeof(unsigned long)); }
|
||||
if (usDataChanged & PartyMemberData::CHANGED_ENCHANT_INFO_3) { COPY_AND_ADVANCE_SRC(&lpPMDPos->m_dwEnchantInfo[3], szDataPos, sizeof(unsigned long)); }
|
||||
|
||||
// ------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
}
|
||||
|
||||
nMemberDataNum = static_cast<unsigned int>(lpPMDPos - lpPartyMemberData);
|
||||
return lpPktBase->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharPartyFind(PktBase* lpPktBase, unsigned long *dwCharID,
|
||||
unsigned char *MemberFindPartyNum,
|
||||
unsigned char *PartyFindMemberNum,
|
||||
MemberFindParty **lppMemberFindParty,
|
||||
PartyFindMember **lppPartyFindMember)
|
||||
{
|
||||
PktPFAck* lpPFAckPt = static_cast<PktPFAck *>(lpPktBase);
|
||||
|
||||
*dwCharID = lpPFAckPt->m_dwCharID;
|
||||
*MemberFindPartyNum = lpPFAckPt->m_cMemberFindPartyNum;
|
||||
*PartyFindMemberNum = lpPFAckPt->m_cPartyFindMemberNum;
|
||||
|
||||
*lppMemberFindParty = (MemberFindParty*)(reinterpret_cast<char*>(lpPFAckPt + 1));
|
||||
*lppPartyFindMember = (PartyFindMember*)(reinterpret_cast<char*>(lpPFAckPt + 1) +
|
||||
(*MemberFindPartyNum * sizeof(MemberFindParty)));
|
||||
|
||||
return lpPFAckPt->GetError();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------
|
||||
// ģ<><C4A3>
|
||||
|
||||
unsigned long ParsePacket::HandleCharFriendDB(PktBase* lpPktBase, unsigned char* cDataType,
|
||||
char **ppFriendListData, unsigned long *dwDataSize)
|
||||
{
|
||||
PktFriendDB* lpPktFriendDB = static_cast<PktFriendDB *>(lpPktBase);
|
||||
|
||||
switch(lpPktFriendDB->m_cCmd)
|
||||
{
|
||||
case PktFriendDB::FRIEND_LIST:
|
||||
case PktFriendDB::BAN_LIST:
|
||||
|
||||
*cDataType = lpPktFriendDB->m_cCmd;
|
||||
*dwDataSize = lpPktFriendDB->m_dwData;
|
||||
*ppFriendListData = reinterpret_cast<char*>(lpPktFriendDB + 1);
|
||||
break;
|
||||
|
||||
default:
|
||||
return 1;
|
||||
}
|
||||
|
||||
return lpPktFriendDB->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharFriendAck(PktBase* lpPktBase, unsigned char* cCmd, unsigned long *dwCID, char **ppszName,
|
||||
unsigned long* dwGID, unsigned short* wClass, char* cLevel, unsigned long* dwServerID)
|
||||
{
|
||||
PktFriendAck* lpPktFriendAck = static_cast<PktFriendAck *>(lpPktBase);
|
||||
|
||||
*cCmd = lpPktFriendAck->m_cCmd;
|
||||
*dwCID = lpPktFriendAck->m_dwCID;
|
||||
*dwGID = lpPktFriendAck->m_dwGID;
|
||||
*wClass = lpPktFriendAck->m_wClass;
|
||||
*cLevel = lpPktFriendAck->m_cLevel;
|
||||
*ppszName = lpPktFriendAck->m_szName;
|
||||
*dwServerID = lpPktFriendAck->m_dwServerID;
|
||||
|
||||
return lpPktFriendAck->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharFriendRegistered(PktBase* lpPktBase, unsigned long* dwCID, char* szName)
|
||||
{
|
||||
PktFriendAddReq* lpPktFriendAddRequest = static_cast<PktFriendAddReq *>(lpPktBase);
|
||||
|
||||
memcpy(szName, lpPktFriendAddRequest->m_szName, PktFriendAddReq::MAX_NAME);
|
||||
*dwCID = lpPktFriendAddRequest->m_dwCID;
|
||||
|
||||
return lpPktFriendAddRequest->GetError();
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------
|
||||
// <20><>Ÿ
|
||||
|
||||
unsigned long ParsePacket::HandleCharChat(PktBase* lpPktBase, unsigned long& dwSenderCID, unsigned short *Cmd, unsigned short *Lang, char *Message)
|
||||
{
|
||||
PktChat* lpPktChat = static_cast<PktChat*>(lpPktBase);
|
||||
|
||||
int nLen = lpPktChat->GetLen();
|
||||
*Cmd = lpPktChat->m_cCmd;
|
||||
*Lang = lpPktChat->m_usLang;
|
||||
dwSenderCID = lpPktChat->m_dwSenderCID;
|
||||
|
||||
char* szMessagePos = reinterpret_cast<char*>(lpPktChat + 1);
|
||||
char* szMessageEnd = reinterpret_cast<char*>(lpPktChat) + nLen;
|
||||
|
||||
if (0 != lpPktChat->m_cNum)
|
||||
{
|
||||
if (szMessagePos + sizeof(char) * CHAR_INFOST::MAX_NAME_LEN * lpPktChat->m_cNum < szMessageEnd)
|
||||
{
|
||||
szMessagePos += sizeof(char) * CHAR_INFOST::MAX_NAME_LEN * lpPktChat->m_cNum;
|
||||
}
|
||||
}
|
||||
|
||||
std::copy(szMessagePos, szMessageEnd, Message);
|
||||
Message[szMessageEnd - szMessagePos - 1] = 0;
|
||||
|
||||
return lpPktChat->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharWhisper(PktBase* lpPktBase, char *SenderName,
|
||||
char *RecverName, char *Message)
|
||||
{
|
||||
PktWh* lpWhPt = static_cast<PktWh *>(lpPktBase);
|
||||
|
||||
strncpy(SenderName, lpWhPt->m_SenderName, 16);
|
||||
strncpy(RecverName, lpWhPt->m_RecverName, 16);
|
||||
|
||||
int nLen = lpWhPt->GetLen();
|
||||
if (sizeof(PktWh) < nLen && nLen <= PktWh::PktWhMaxSize + sizeof(PktWh))
|
||||
{
|
||||
memcpy(Message, reinterpret_cast<char*>(lpWhPt + 1), nLen - sizeof(PktWh));
|
||||
Message[nLen - sizeof(PktWh) - 1] = NULL;
|
||||
}
|
||||
|
||||
return lpWhPt->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharChatBan(PktBase* lpPktBase, bool& bChatBan)
|
||||
{
|
||||
PktChatBan* lpCBPtAck = static_cast<PktChatBan *>(lpPktBase);
|
||||
|
||||
bChatBan = (0 == lpCBPtAck->m_dwMinutes) ? false : true;
|
||||
|
||||
return lpCBPtAck->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharAuthorizePanel(PktBase* lpPktBase, unsigned long *dwCasterID,
|
||||
char *szCasterName, unsigned char *cCmd)
|
||||
{
|
||||
PktAPAck* lpAPPtAck = static_cast<PktAPAck *>(lpPktBase);
|
||||
|
||||
*dwCasterID = lpAPPtAck->m_dwCasterID;
|
||||
*cCmd = lpAPPtAck->m_cCmd;
|
||||
|
||||
strncpy(szCasterName, lpAPPtAck->m_szCasterName, CHAR_INFOST::MAX_NAME_LEN);
|
||||
|
||||
return lpAPPtAck->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharFameInfo(PktBase* lpPktBase, unsigned long *dwCharID,
|
||||
unsigned char *cOtherNation, unsigned char *cOtherClass,
|
||||
unsigned long *dwFame, unsigned long *dwMileage,
|
||||
unsigned char *RankingByRace, unsigned char *RankingByClass,
|
||||
unsigned char *cCmd, char *szWinCharName, char *szLoseCharName)
|
||||
{
|
||||
PktFIAck* lpFIAckPt = static_cast<PktFIAck *>(lpPktBase);
|
||||
|
||||
*dwCharID = lpFIAckPt->m_dwCharID;
|
||||
|
||||
*cOtherNation = (unsigned char)lpFIAckPt->m_cOtherNation;
|
||||
*cOtherClass = lpFIAckPt->m_cOtherClass;
|
||||
|
||||
*dwFame = lpFIAckPt->m_dwFame;
|
||||
*dwMileage = lpFIAckPt->m_dwMileage;
|
||||
|
||||
*RankingByRace = lpFIAckPt->m_cRankingByRace;
|
||||
*RankingByClass = lpFIAckPt->m_cRankingByClass;
|
||||
|
||||
*cCmd = lpFIAckPt->m_cCmd;
|
||||
|
||||
strncpy(szWinCharName, lpFIAckPt->m_szWinCharName, PktFIAck::MAX_NAME_LEN);
|
||||
strncpy(szLoseCharName, lpFIAckPt->m_szLoseCharName, PktFIAck::MAX_NAME_LEN);
|
||||
|
||||
return lpFIAckPt->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharRankingInfo(PktBase* lpPktBase, unsigned long *dwCharID,
|
||||
unsigned char *cClass, unsigned char *cPage,
|
||||
unsigned short *wNum, RankingNode **lppRankingNode)
|
||||
{
|
||||
PktRankingInfo* lpRankingInfo = static_cast<PktRankingInfo *>(lpPktBase);
|
||||
|
||||
*dwCharID = lpRankingInfo->m_dwCharID;
|
||||
*cClass = lpRankingInfo->m_cClass;
|
||||
*cPage = lpRankingInfo->m_cPage;
|
||||
*wNum = lpRankingInfo->m_wNum;
|
||||
|
||||
*lppRankingNode = reinterpret_cast<RankingNode *>(lpRankingInfo + 1);
|
||||
|
||||
return lpRankingInfo->GetError();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
#ifndef _GAMA_CLIENT_PARSE_COMMUNITY_PACKET_H_
|
||||
#define _GAMA_CLIENT_PARSE_COMMUNITY_PACKET_H_
|
||||
|
||||
#include <winsock2.h>
|
||||
#include <windows.h>
|
||||
|
||||
#include <DB/DBDefine.h>
|
||||
#include <Network/Packet/PacketStruct/AddressPacket.h>
|
||||
#include <Network/Packet/PacketStruct/CharCommunityPacketStruct.h>
|
||||
#include <Network/Packet/PacketStruct/RankingPacket.h>
|
||||
|
||||
struct GuildSmallInfoNode;
|
||||
struct GuildLargeInfoNode;
|
||||
struct GuildRight;
|
||||
struct GuildMemberInfoNode;
|
||||
struct PartyMemberData;
|
||||
struct GuildHostilityInfoNode;
|
||||
struct GuildRelationInfoNode;
|
||||
|
||||
namespace ParsePacket
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>
|
||||
unsigned long HandleCharCreateGuild(PktBase* lpPktBase, unsigned long *dwCID, unsigned long *dwGID, unsigned char *cInclination, char* szGuildName);
|
||||
unsigned long HandleCharGuildCmd(PktBase* lpPktBase, unsigned long *dwGID, unsigned long *dwSenderID, unsigned long *dwReferenceID, char* szGuildName, char* szSenderName, unsigned short *wCmd);
|
||||
unsigned long HandleCharGuildMark(PktBase* lpPktBase, unsigned long* dwCID, unsigned long* dwGID, char* szMark, unsigned long* dwGold);
|
||||
unsigned long HandleCharGuildLevel(PktBase* lpPktBase, unsigned long *dwGID, unsigned char *cLevel, unsigned long *dwGold);
|
||||
unsigned long HandleCharGuildRelation(PktBase* lpPktBase, unsigned long *dwCID, unsigned long *dwGID, unsigned long *dwTargetGID, unsigned long *dwValue, unsigned char *cSubCmd, char* szGuildName, char* szTempGuildName);
|
||||
unsigned long HandleCharGuildInclination(PktBase* lpPktBase, unsigned long *dwGID, unsigned char *cInclination);
|
||||
unsigned long HandleCharGuildList(PktBase* lpPktBase, unsigned long *dwCID, unsigned char *cSortCmd, unsigned char *cPage, unsigned char *cSmallNodeNum, GuildSmallInfoNode* lpSmallNode, unsigned char *cLargeNodeNum, GuildLargeInfoNode* lpLargeNode);
|
||||
unsigned long HandleCharGuildRight(PktBase* lpPktBase, unsigned long *dwGID, GuildRight *guildRight);
|
||||
unsigned long HandleCharGuildMemberList(PktBase* lpPktBase, unsigned long *dwCID, unsigned char* cMemberType, unsigned char *cSortCmd, unsigned char *cPage, unsigned char *cTotalMemberNum, unsigned char *cNodeNum, GuildMemberInfoNode* lpMemberNode);
|
||||
unsigned long HandleCharMyGuildInfo(PktBase* lpPktBase, unsigned long *dwGold, GuildRight *guildRight, unsigned char *cTitle);
|
||||
unsigned long HandleCharGuildSafe(PktBase* lpPktBase, unsigned long *dwCID, char* szCharName, unsigned long *dwSafeGold, unsigned long *dwCharGold, unsigned char *cCmd);
|
||||
unsigned long HandleCharGuildHostilityList(PktBase* lpPktBase, unsigned long *dwCID, unsigned char *cCurrentPage, unsigned char *cPageState, unsigned char* cNodeNum, unsigned short* wTotalItemNum, char* szHostility, char* szAlert, GuildHostilityInfoNode* lpHostilityNode);
|
||||
unsigned long HandleCharGuildRelationInfo(PktBase* lpPktBase, unsigned long *dwCID, unsigned long *dwGID, unsigned short *wNodeNum, GuildRelationInfoNode* lpRelationNode ) ;
|
||||
|
||||
// <20><>Ƽ
|
||||
unsigned long HandleCharPartyInfo(PktBase* lpPktBase, PARTY_EX* lpParty);
|
||||
unsigned long HandleCharPartyCmd(PktBase* lpPktBase, AddressInfo* SenderAddress, char *SenderName, unsigned long *dwSenderID, unsigned long *dwReferenceID, unsigned long *dwPartyID, unsigned short *Cmd);
|
||||
unsigned long HandleCharPartyCmdInfo(PktBase* lpPktBase, unsigned long *dwMemberID, unsigned long *dwPartyID, unsigned short *Cmd);
|
||||
unsigned long HandleCharPartyFind(PktBase* lpPktBase, unsigned long *dwCharID, unsigned char *MemberFindPartyNum, unsigned char *PartyFindMemberNum, MemberFindParty** lppMemberFindParty, PartyFindMember** lppPartyFindMember);
|
||||
|
||||
unsigned long HandleCharPartyMemData(PktBase* lpPktBase, unsigned long& dwPartyID, unsigned long& dwSenderID, unsigned long& dwGID, unsigned long& dwServerID, unsigned short& wClass, char& cLevel, const char*& szSenderName, unsigned short& wCmd);
|
||||
|
||||
unsigned long HandleCharPartyMemInfo(PktBase* lpPktBase, PartyMemberData* lpPartyMemberData, unsigned int& nMemberDataNum);
|
||||
|
||||
// ģ<><C4A3>
|
||||
unsigned long HandleCharFriendDB(PktBase* lpPktBase, unsigned char* cDataType, char **ppFriendListData, unsigned long *dwDataSize);
|
||||
|
||||
unsigned long HandleCharFriendRegistered(PktBase* lpPktBase, unsigned long* dwCID, char* szName);
|
||||
|
||||
unsigned long HandleCharFriendAck(PktBase* lpPktBase, unsigned char* cCmd, unsigned long *dwCID, char **ppszName, unsigned long* dwGID,
|
||||
unsigned short* wClass, char* cLevel, unsigned long* dwServerID);
|
||||
// ä<><C3A4>
|
||||
unsigned long HandleCharChat(PktBase* lpPktBase, unsigned long& dwSenderCID, unsigned short *Cmd, unsigned short *Lang, char *Message);
|
||||
unsigned long HandleCharWhisper(PktBase* lpPktBase, char *SenderName, char *RecverName, char *Message);
|
||||
unsigned long HandleCharChatBan(PktBase* lpPktBase, bool& bChatBan);
|
||||
|
||||
// <20><>Ÿ Ŀ<>´<EFBFBD>Ƽ
|
||||
unsigned long HandleCharAuthorizePanel(PktBase* lpPktBase, unsigned long *dwCasterID, char *szCasterName, unsigned char *cCmd);
|
||||
unsigned long HandleCharFameInfo(PktBase* lpPktBase, unsigned long *dwCharID, unsigned char *cOtherNation, unsigned char *cOtherClass, unsigned long *dwFame, unsigned long *dwMileage, unsigned char *RankingByRace, unsigned char *RankingByClass, unsigned char *cCmd, char *szWinCharName, char *szLoseCharName);
|
||||
unsigned long HandleCharRankingInfo(PktBase* lpPktBase, unsigned long *dwCharID, unsigned char *cClass, unsigned char *cPage, unsigned short *wNum, RankingNode **lppRankingNode);
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,115 @@
|
||||
#include "stdafx.h"
|
||||
#include "ParseEtc.h"
|
||||
|
||||
#include <Network/Packet/PacketStruct/ServerPacket.h>
|
||||
#include <Network/Packet/PacketStruct/CharStatusPacket.h>
|
||||
#include <Network/Packet/PacketStruct/CharConfigPacket.h>
|
||||
#include <Network/Packet/PacketStruct/CharItemPacket.h>
|
||||
#include <Network/Packet/PacketStruct/CharAdminPacket.h>
|
||||
#include "GMMemory.h"
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned long ParsePacket::HandleCharBillingTimeoutInfo(PktBase* lpPktBase, unsigned long *dwCharID,
|
||||
unsigned char* cRemainMinute, unsigned char* cBillingType)
|
||||
{
|
||||
PktBTN* lpPktBTN = reinterpret_cast<PktBTN *>(lpPktBase);
|
||||
|
||||
*dwCharID = lpPktBTN->m_dwCharID;
|
||||
*cRemainMinute = lpPktBTN->m_cRemainMinute;
|
||||
*cBillingType = lpPktBTN->m_cBillingType;
|
||||
|
||||
return lpPktBTN->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharBillingTimeCheckNotify(PktBase* lpPktBase, unsigned long *dwCharID,
|
||||
unsigned char* cRemainMinute, unsigned char* cBillingType)
|
||||
{
|
||||
PktBTN* lpPktBTN = reinterpret_cast<PktBTN *>(lpPktBase);
|
||||
|
||||
*dwCharID = lpPktBTN->m_dwCharID;
|
||||
*cRemainMinute = lpPktBTN->m_cRemainMinute;
|
||||
*cBillingType = lpPktBTN->m_cBillingType;
|
||||
|
||||
return lpPktBTN->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharBindPos(PktBase* lpPktBase, unsigned long *NPCID_Out,
|
||||
unsigned char *Cmd_Out, POS* lpPos_Out, char *Zone_Out)
|
||||
{
|
||||
PktBP* lpBPPt = reinterpret_cast<PktBP *>(lpPktBase);
|
||||
|
||||
*lpPos_Out = lpBPPt->m_Pos;
|
||||
*NPCID_Out = lpBPPt->m_dwNPCID;
|
||||
*Cmd_Out = lpBPPt->m_cCmd;
|
||||
*Zone_Out = lpBPPt->m_cZone;
|
||||
|
||||
return lpBPPt->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleControlOption(PktBase* lpPktBase, unsigned long *CharID_Out, RejectOption* Reject_Out)
|
||||
{
|
||||
PktCOp* lpCOpPt = reinterpret_cast<PktCOp *>(lpPktBase);
|
||||
|
||||
*CharID_Out = lpCOpPt->m_dwCharID;
|
||||
*Reject_Out = lpCOpPt->m_RejectOption;
|
||||
|
||||
return lpCOpPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharStateRedistribution(PktBase* lpPktBase, ChState* lpChState_Out, SKILL* lpSkill_Out)
|
||||
{
|
||||
PktSRAck* lpSRPtAck = reinterpret_cast<PktSRAck *>(lpPktBase);
|
||||
|
||||
*lpChState_Out = lpSRPtAck->m_State;
|
||||
*lpSkill_Out = lpSRPtAck->m_Skill;
|
||||
|
||||
return lpSRPtAck->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharStatusRetrain(PktBase* lpPktBase, ChState* lpChState_Out, SKILL* lpSkill_Out,
|
||||
Item::ItemPos* lpIndex_Out, unsigned long *Gold_Out)
|
||||
{
|
||||
PktSRTAck* lpSRTPtAck = reinterpret_cast<PktSRTAck *>(lpPktBase);
|
||||
|
||||
*lpChState_Out = lpSRTPtAck->m_State;
|
||||
*lpSkill_Out = lpSRTPtAck->m_Skill;
|
||||
*lpIndex_Out = lpSRTPtAck->m_ItemPos;
|
||||
*Gold_Out = lpSRTPtAck->m_dwGold;
|
||||
|
||||
return lpSRTPtAck->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharLotteryResult(PktBase* lpPktBase, unsigned long *CharID_Out,
|
||||
Item::ItemPos* lpIndex_Out, unsigned long *dwSize_Out,
|
||||
char **lppBuffer_Out)
|
||||
{
|
||||
PktLotteryResult* lpPktLR = reinterpret_cast<PktLotteryResult *>(lpPktBase);
|
||||
|
||||
*CharID_Out = lpPktLR->m_dwCharID;
|
||||
*lpIndex_Out = lpPktLR->m_itemPos;
|
||||
|
||||
*dwSize_Out = lpPktLR->m_dwSize;
|
||||
*lppBuffer_Out = reinterpret_cast<char*>(lpPktLR + 1);
|
||||
|
||||
return lpPktLR->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharAdmin(PktBase* lpPktBase)
|
||||
{
|
||||
PktAdmin* lpPktAdmin = reinterpret_cast<PktAdmin *>(lpPktBase);
|
||||
|
||||
return lpPktAdmin->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharNameChange(PktBase* lpPktBase, char*& szChangedName,
|
||||
unsigned char* cNameChangeCount)
|
||||
{
|
||||
PktCharNameChange* lpCharNameChange =
|
||||
reinterpret_cast<PktCharNameChange*>(lpPktBase);
|
||||
|
||||
*cNameChangeCount = lpCharNameChange->m_cNameChangeCount;
|
||||
szChangedName = lpCharNameChange->m_szCharName;
|
||||
|
||||
return lpPktBase->GetError();
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
#ifndef _GAMA_CLIENT_PARSE_ETC_PACKET_H_
|
||||
#define _GAMA_CLIENT_PARSE_ETC_PACKET_H_
|
||||
|
||||
#include <DB/DBDefine.h>
|
||||
#include <Item/ItemStructure.h>
|
||||
#include <Network/Packet/PacketStruct/CharStatusPacketStruct.h>
|
||||
#include <Network/Packet/PacketStruct/CharConfigPacketStruct.h>
|
||||
|
||||
// forward decl.
|
||||
struct PktBase;
|
||||
|
||||
namespace ParsePacket
|
||||
{
|
||||
// ETC
|
||||
unsigned long HandleCharBillingTimeoutInfo(PktBase* lpPktBase, unsigned long *dwCharID, unsigned char* cRemainMinute, unsigned char* cBillingType);
|
||||
unsigned long HandleCharBillingTimeCheckNotify(PktBase* lpPktBase, unsigned long *dwCharID, unsigned char* cRemainMinute, unsigned char* cBillingType);
|
||||
unsigned long HandleCharStateRedistribution(PktBase* lpPktBase, ChState* lpChState_Out, SKILL* lpSkill_Out);
|
||||
unsigned long HandleCharStatusRetrain(PktBase* lpPktBase, ChState* lpChState_Out, SKILL* lpSkill_Out, Item::ItemPos* lpIndex_Out, unsigned long *Gold_Out);
|
||||
unsigned long HandleControlOption(PktBase* lpPktBase, unsigned long *CharID_Out, RejectOption* Reject_Out);
|
||||
unsigned long HandleCharBindPos(PktBase* lpPktBase, unsigned long *NPCID_Out, unsigned char *Cmd_Out, POS* lpPos_Out, char *Zone_Out);
|
||||
unsigned long HandleCharLotteryResult(PktBase* lpPktBase, unsigned long *CharID_Out, Item::ItemPos* lpIndex_Out, unsigned long *dwSize_Out, char **lppBuffer_Out);
|
||||
unsigned long HandleCharAdmin(PktBase* lpPktBase);
|
||||
|
||||
unsigned long HandleCharNameChange(PktBase* lpPktBase, char*& szChangedName, unsigned char* cNameChangeCount);
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,254 @@
|
||||
#include "stdafx.h"
|
||||
#include "ParseFight.h"
|
||||
#include "GMMemory.h"
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharAttack(PktBase* lpPktBase, unsigned long *CharID_Out, AtType* lpAtType_Out, unsigned short *HP_Out, unsigned short *MP_Out,
|
||||
unsigned short* MPHeal_Out, char *Judge_Out, unsigned char *DefenserNum_Out, DefenserNode** lppNode_Out)
|
||||
{
|
||||
PktAtAck* lpAtAckPt = static_cast<PktAtAck*>(lpPktBase);
|
||||
|
||||
*CharID_Out = lpAtAckPt->m_dwCharID;
|
||||
*lpAtType_Out = lpAtAckPt->m_AtType;
|
||||
*HP_Out = lpAtAckPt->m_wHP;
|
||||
*MP_Out = lpAtAckPt->m_wMP;
|
||||
*MPHeal_Out = lpAtAckPt->m_wMPHeal;
|
||||
*Judge_Out = lpAtAckPt->m_cJudge;
|
||||
*DefenserNum_Out = lpAtAckPt->m_cDefenserNum;
|
||||
|
||||
*lppNode_Out = reinterpret_cast<DefenserNode*>(lpAtAckPt + 1);
|
||||
|
||||
return lpAtAckPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharAttacked(PktBase* lpPktBase, unsigned long *AtCharID_Out, unsigned long *MyID_Out,
|
||||
AtType *AtType_Out, POS* lpAtPos_Out, float *AtDir_Out, unsigned short *Judge_Out,
|
||||
unsigned short *MyHP_Out, unsigned short *MyMP_Out, unsigned short* MyMPHeal_Out)
|
||||
{
|
||||
PktAted* lpAtedPt = static_cast<PktAted*>(lpPktBase);
|
||||
|
||||
*AtCharID_Out = lpAtedPt->m_dwCharID;
|
||||
*MyID_Out = lpAtedPt->m_dwMyID;
|
||||
|
||||
*AtType_Out = lpAtedPt->m_AtType;
|
||||
*lpAtPos_Out = lpAtedPt->m_Postion;
|
||||
*AtDir_Out = lpAtedPt->m_fDir;
|
||||
|
||||
*Judge_Out = lpAtedPt->m_cJudge;
|
||||
|
||||
*MyHP_Out = lpAtedPt->m_wMyHP;
|
||||
*MyMP_Out = lpAtedPt->m_wMyMP;
|
||||
*MyMPHeal_Out = lpAtedPt->m_wMyMPHeal;
|
||||
|
||||
return lpAtedPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharAttackInfo(PktBase* lpPktBase, unsigned long *CharID_Out,
|
||||
AtType* lpAtType_Out, unsigned char *DefenserNum_Out,
|
||||
DefenserNode **lppNode_Out)
|
||||
{
|
||||
PktAtInfo* lpPktAtInfo = static_cast<PktAtInfo*>(lpPktBase);
|
||||
|
||||
*CharID_Out = lpPktAtInfo->m_dwCharID;
|
||||
*lpAtType_Out = lpPktAtInfo->m_AtType;
|
||||
*DefenserNum_Out = lpPktAtInfo->m_cDefenserNum;
|
||||
*lppNode_Out = reinterpret_cast<DefenserNode*>(lpPktAtInfo + 1);
|
||||
|
||||
return lpPktAtInfo->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharEquipDurability(PktBase* lpPktBase, unsigned long *dwCharID,
|
||||
unsigned char *cIndex, unsigned char *cValue)
|
||||
{
|
||||
PktEquipDurability* lpEDPt = static_cast<PktEquipDurability*>(lpPktBase);
|
||||
|
||||
*dwCharID = lpEDPt->m_dwCharID;
|
||||
*cIndex = lpEDPt->m_cIndex;
|
||||
*cValue = lpEDPt->m_cValue;
|
||||
|
||||
return lpEDPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharRespawn(PktBase* lpPktBase, unsigned long *CharID_Out,
|
||||
unsigned short *HP_Out, unsigned short *MP_Out,
|
||||
POS* lpPos_Out, __int64 *Exp_Out,
|
||||
unsigned long *dwGold_Out)
|
||||
{
|
||||
PktRsAck* lpPktRsAck = static_cast<PktRsAck*>(lpPktBase);
|
||||
|
||||
*CharID_Out = lpPktRsAck->m_dwCharID;
|
||||
*HP_Out = lpPktRsAck->m_wHP;
|
||||
*MP_Out = lpPktRsAck->m_wMP;
|
||||
*lpPos_Out = lpPktRsAck->m_Position;
|
||||
*Exp_Out = lpPktRsAck->m_dlExp;
|
||||
*dwGold_Out = lpPktRsAck->m_dwGold;
|
||||
|
||||
return lpPktRsAck->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharRespawnInfo(PktBase* lpPktBase, unsigned long* CharID_Out, unsigned char* cRsAreaNum, unsigned short* wSize, RespawnArea* pRespawnArea)
|
||||
{
|
||||
PktRsInfoAck* lpPktRsInfoAck = static_cast<PktRsInfoAck*>(lpPktBase);
|
||||
|
||||
*CharID_Out = lpPktRsInfoAck->m_dwCharID;
|
||||
*cRsAreaNum = lpPktRsInfoAck->m_cRsAreaNum;
|
||||
*wSize = lpPktRsInfoAck->m_wSize;
|
||||
|
||||
RespawnArea* lpRespawnAreaNode = reinterpret_cast<RespawnArea *>(lpPktRsInfoAck + 1);
|
||||
|
||||
for (int i=0; i<lpPktRsInfoAck->m_cRsAreaNum; ++i)
|
||||
{
|
||||
CopyMemory(&pRespawnArea[i], lpRespawnAreaNode, sizeof(RespawnArea));
|
||||
++lpRespawnAreaNode;
|
||||
}
|
||||
|
||||
return lpPktRsInfoAck->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharRespawnAreaInfo(PktBase* lpPktBase, unsigned long* CharID_Out, unsigned long* dwTownID,
|
||||
unsigned short* wWaitOrder, unsigned char* cHour, unsigned char* cMin,
|
||||
unsigned char* cSec, bool* bCount)
|
||||
{
|
||||
PktRsAreaInfoAck* lpPktRsAreaInfoAck = static_cast<PktRsAreaInfoAck*>(lpPktBase);
|
||||
|
||||
*CharID_Out = lpPktRsAreaInfoAck->m_dwCharID;
|
||||
*dwTownID = lpPktRsAreaInfoAck->m_dwTownID;
|
||||
*wWaitOrder = lpPktRsAreaInfoAck->m_nWaitOrder; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*cHour = lpPktRsAreaInfoAck->m_cRemainHour; // <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD> (<28><>)
|
||||
*cMin = lpPktRsAreaInfoAck->m_cRemainMin; // <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD> (<28><>)
|
||||
*cSec = lpPktRsAreaInfoAck->m_cRemainSec; // <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD> (<28><>)
|
||||
*bCount = lpPktRsAreaInfoAck->m_bCount; // <20>ð<EFBFBD> ī<><C4AB><EFBFBD><EFBFBD> <20><><EFBFBD>ۿ<EFBFBD><DBBF><EFBFBD>
|
||||
|
||||
return lpPktRsAreaInfoAck->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharBattleGroundRespawn(PktBase* lpPktBase, unsigned long *CharID_Out,
|
||||
unsigned short *wTurn_Out, unsigned short *wWaitNum_Out,
|
||||
unsigned short *wLeftTime_Out, unsigned short *wHumanNum_Out,
|
||||
unsigned short *wAkhanNum_Out)
|
||||
{
|
||||
PktBGRsAck* lpPktBGRAck = static_cast<PktBGRsAck*>(lpPktBase);
|
||||
|
||||
*CharID_Out = lpPktBGRAck->m_dwCharID;
|
||||
*wTurn_Out = lpPktBGRAck->m_wTurn;
|
||||
*wWaitNum_Out = lpPktBGRAck->m_wWaitNum;
|
||||
*wLeftTime_Out = lpPktBGRAck->m_wLeftTime;
|
||||
*wHumanNum_Out = lpPktBGRAck->m_wHumanNum;
|
||||
*wAkhanNum_Out = lpPktBGRAck->m_wAkhanNum;
|
||||
|
||||
return lpPktBGRAck->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharRespawnWaitQueue(PktBase* lpPktBase, unsigned long *CharID_Out,
|
||||
unsigned short *wWaitNum_Out)
|
||||
{
|
||||
PktRsWaitQueueAck* lpRsWQAckPt = static_cast<PktRsWaitQueueAck*>(lpPktBase);
|
||||
|
||||
*CharID_Out = lpRsWQAckPt->m_dwCharID;
|
||||
::memcpy(wWaitNum_Out, lpRsWQAckPt->m_wWaitNum,
|
||||
PktRsWaitQueueAck::MAX_POINT_NUM_PER_RACE);
|
||||
|
||||
return lpRsWQAckPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharDuelCmd(PktBase* lpPktBase, unsigned long *SenderID_Out,
|
||||
unsigned long *RecverID_Out, unsigned char *Cmd_Out)
|
||||
{
|
||||
PktDuC* lpDuCPt = static_cast<PktDuC*>(lpPktBase);
|
||||
|
||||
*SenderID_Out = lpDuCPt->m_dwSenderID;
|
||||
*RecverID_Out = lpDuCPt->m_dwRecverID;
|
||||
*Cmd_Out = lpDuCPt->m_cCmd;
|
||||
|
||||
return lpDuCPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharTeamBattleInfo(PktBase* lpPktBase, unsigned long *CharID_Out,
|
||||
char *ChallengerName_Out, unsigned char *Cmd_Out,
|
||||
unsigned char *MemberNum_Out, unsigned long *MemberID_Out,
|
||||
unsigned char *MemberLevel_Out)
|
||||
{
|
||||
PktTBInfo* lpPktTBInfo = static_cast<PktTBInfo*>(lpPktBase);
|
||||
|
||||
*CharID_Out = lpPktTBInfo->m_dwCharID;
|
||||
*Cmd_Out = lpPktTBInfo->m_cCmd;
|
||||
*MemberNum_Out = lpPktTBInfo->m_cMemberNum;
|
||||
|
||||
::strncpy(ChallengerName_Out, lpPktTBInfo->m_strChallengerName, CHAR_INFOST::MAX_NAME_LEN);
|
||||
|
||||
for (int nIndex = 0; nIndex < *MemberNum_Out; nIndex++)
|
||||
{
|
||||
MemberID_Out[nIndex] = *(reinterpret_cast<unsigned long *>(
|
||||
reinterpret_cast<char*>(lpPktTBInfo + 1) +
|
||||
nIndex * (sizeof(unsigned long) + sizeof(unsigned char))));
|
||||
|
||||
MemberLevel_Out[nIndex] = *(reinterpret_cast<unsigned char *>(
|
||||
reinterpret_cast<char*>(lpPktTBInfo + 1) +
|
||||
nIndex * (sizeof(unsigned long) + sizeof(unsigned char)) + sizeof(unsigned long)));
|
||||
}
|
||||
|
||||
return lpPktTBInfo->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharPeaceMode(PktBase* lpPktBase, unsigned long *dwCharID_Out,
|
||||
unsigned char *cLeftTime_Out, bool *bPeace_Out)
|
||||
{
|
||||
PktPeace* lpPeacePtAck = static_cast<PktPeace*>(lpPktBase);
|
||||
|
||||
*dwCharID_Out = lpPeacePtAck->m_dwCharID;
|
||||
*cLeftTime_Out = lpPeacePtAck->m_cLeftTime;
|
||||
*bPeace_Out = lpPeacePtAck->m_bPeace;
|
||||
|
||||
return lpPeacePtAck->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharAward(PktBase* lpPktBase, unsigned long *CharID_Out, unsigned long *Exp_Out)
|
||||
{
|
||||
PktAw* lpAwPt = static_cast<PktAw*>(lpPktBase);
|
||||
|
||||
*CharID_Out = lpAwPt->m_dwCharID;
|
||||
*Exp_Out = lpAwPt->m_dwExp;
|
||||
|
||||
return lpAwPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleStatueInfo(PktBase* lpPktBase, unsigned char *cIndex, unsigned short *wKID, unsigned char *cState, unsigned short *wNowHP,
|
||||
unsigned long *dwMileage, unsigned short *wHumanNum, unsigned short *wAkhanNum)
|
||||
{
|
||||
PktStatueInfo* lpPktSI = static_cast<PktStatueInfo*>(lpPktBase);
|
||||
|
||||
*dwMileage = lpPktSI->m_dwMileage;
|
||||
|
||||
*wHumanNum = lpPktSI->m_wHumanNum;
|
||||
*wAkhanNum = lpPktSI->m_wAkhanNum;
|
||||
|
||||
*wNowHP = lpPktSI->m_wNowHP;
|
||||
*wKID = lpPktSI->m_wKID;
|
||||
*cState = lpPktSI->m_cState;
|
||||
*cIndex = lpPktSI->m_cIndex;
|
||||
|
||||
return lpPktSI->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCameraScript(PktBase* lpPktBase, unsigned long *dwDeleteObject, unsigned long *dwNewObject, POS* NewPos)
|
||||
{
|
||||
PktCameraScript* lpPktCS = static_cast<PktCameraScript*>(lpPktBase);
|
||||
|
||||
*dwDeleteObject = lpPktCS->m_dwDeleteObject;
|
||||
*dwNewObject = lpPktCS->m_dwNewObject;
|
||||
*NewPos = lpPktCS->m_NewPos;
|
||||
|
||||
return lpPktCS->GetError();
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
#ifndef _GAMA_CLIENT_PARSE_FIGHT_PACKET_H_
|
||||
#define _GAMA_CLIENT_PARSE_FIGHT_PACKET_H_
|
||||
|
||||
#include <winsock2.h>
|
||||
#include <windows.h>
|
||||
|
||||
#include <Network/Packet/PacketStruct/CharAttackPacket.h>
|
||||
|
||||
namespace ParsePacket
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>
|
||||
unsigned long HandleCharAttack(PktBase* lpPktBase, unsigned long *CharID_Out, AtType* lpAtType_Out, unsigned short *HP_Out, unsigned short *MP_Out, unsigned short* MPHeal_Out, char *Judge_Out, unsigned char *DefenserNum_Out, DefenserNode** lppNode_Out);
|
||||
unsigned long HandleCharAttacked(PktBase* lpPktBase, unsigned long *AtCharID_Out, unsigned long *MyID_Out, AtType *AtType_Out, POS* lpAtPos_Out, float *AtDir_Out, unsigned short *Judge_Out, unsigned short *MyHP_Out, unsigned short *MyMP_Out, unsigned short* MyMPHeal_Out);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><F1B3BBB1><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned long HandleCharEquipDurability(PktBase* lpPktBase, unsigned long *dwCharID, unsigned char *cIndex, unsigned char *cValue);
|
||||
|
||||
unsigned long HandleCharRespawn(PktBase* lpPktBase, unsigned long *CharID_Out, unsigned short *HP_Out, unsigned short *MP_Out, POS* Pos_Out, __int64 *Exp_Out, unsigned long *dwGold_Out);
|
||||
unsigned long HandleCharRespawnInfo(PktBase* lpPktBase, unsigned long* CharID_Out, unsigned char* cReAreaNum, unsigned short* wSize, RespawnArea* pRespawnArea);
|
||||
unsigned long HandleCharRespawnAreaInfo(PktBase* lpPktBase, unsigned long* CharID_Out, unsigned long* dwTownID, unsigned short* wWaitOrder, unsigned char* cHour, unsigned char* cMin, unsigned char* cSec, bool* bCount);
|
||||
unsigned long HandleCharBattleGroundRespawn(PktBase* lpPktBase, unsigned long *CharID_Out, unsigned short *wTurn_Out, unsigned short *wWaitNum_Out, unsigned short *wLeftTime_Out, unsigned short *wHumanNum_Out, unsigned short *wAkhanNum_Out);
|
||||
unsigned long HandleCharRespawnWaitQueue(PktBase* lpPktBase, unsigned long *CharID_Out, unsigned short *wWaitNum_Out);
|
||||
unsigned long HandleCharDuelCmd(PktBase* lpPktBase, unsigned long *SenderID_Out, unsigned long *RecverID_Out, unsigned char *Cmd_Out);
|
||||
unsigned long HandleCharTeamBattleInfo(PktBase* lpPktBase, unsigned long *CharID_Out, char *ChallengerName_Out, unsigned char *Cmd_Out, unsigned char *MemberNum_Out, unsigned long *MemberID_Out, unsigned char *MemberLevel_Out);
|
||||
unsigned long HandleCharPeaceMode(PktBase* lpPktBase, unsigned long *dwCharID_Out, unsigned char *cLeftTime_Out, bool *bPeace_Out);
|
||||
unsigned long HandleCharAward(PktBase* lpPktBase, unsigned long *CharID_Out, unsigned long *Exp_Out);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned long HandleStatueInfo(PktBase* lpPktBase, unsigned char *cIndex, unsigned short *wKID, unsigned char *cState, unsigned short *wNowHP, unsigned long *dwMileage, unsigned short *wHumanNum, unsigned short *wAkhanNum);
|
||||
unsigned long HandleCameraScript(PktBase* lpPktBase, unsigned long *dwDeleteObject, unsigned long *dwNewObject, POS* NewPos);
|
||||
|
||||
// TODO : REMOVE UDP Packets
|
||||
unsigned long HandleCharAttackInfo(PktBase* lpPktBase, unsigned long *CharID_Out, AtType* lpAtType_Out, unsigned char *DefenserNum_Out, DefenserNode **lppNode_Out);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,524 @@
|
||||
#include "stdafx.h"
|
||||
#include "ParseItem.h"
|
||||
|
||||
#include <Network/Packet/PacketStruct/CharCommunityPacket.h>
|
||||
#include "GMMemory.h"
|
||||
|
||||
// <20>Ű<EFBFBD><C5B0><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ŷ <20>ּ<EFBFBD><D6BC><EFBFBD> <20><><EFBFBD>ÿ<EFBFBD>.
|
||||
|
||||
unsigned long ParsePacket::HandleCharPickUp(PktBase* lpPktBase, unsigned long *dwCharID, unsigned __int64 *nObjectID,
|
||||
Item::ItemPos* lpIndex, unsigned long *dwGold, unsigned long *dwSize,
|
||||
unsigned char* cNum, char **lppBuffer)
|
||||
{
|
||||
PktPUAck* lpPktPUAck = static_cast<PktPUAck *>(lpPktBase);
|
||||
|
||||
*dwCharID = lpPktPUAck->m_dwCharID;
|
||||
*nObjectID = lpPktPUAck->m_nObjectID;
|
||||
|
||||
*lpIndex = lpPktPUAck->m_itemPos;
|
||||
*cNum = lpPktPUAck->m_cNum;
|
||||
|
||||
switch (lpPktPUAck->m_cType)
|
||||
{
|
||||
case PktPUAck::Item:
|
||||
*dwGold = 0;
|
||||
*dwSize = lpPktPUAck->m_dwSize;
|
||||
*lppBuffer = reinterpret_cast<char *>(lpPktPUAck + 1);
|
||||
break;
|
||||
|
||||
case PktPUAck::Gold:
|
||||
*dwGold = lpPktPUAck->m_dwSize;
|
||||
*dwSize = 0;
|
||||
*lppBuffer = NULL;
|
||||
break;
|
||||
}
|
||||
|
||||
return lpPktPUAck->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharPickUpInfo(PktBase* lpPktBase, unsigned long *dwCharID,
|
||||
unsigned __int64 *nObjectID)
|
||||
{
|
||||
PktPUInfo* lpPktPUInfo = static_cast<PktPUInfo *>(lpPktBase);
|
||||
|
||||
*dwCharID = lpPktPUInfo->m_dwCharID;
|
||||
*nObjectID = lpPktPUInfo->m_nObjectID;
|
||||
|
||||
return lpPktPUInfo->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharPullDown(PktBase* lpPktBase, unsigned long *dwCharID,
|
||||
Item::ItemPos* lpIndex, FieldObject* lpFieldObject)
|
||||
{
|
||||
PktPDAck* lpPktPDAck = static_cast<PktPDAck *>(lpPktBase);
|
||||
|
||||
*dwCharID = lpPktPDAck->m_dwCharID;
|
||||
*lpFieldObject = lpPktPDAck->m_FieldObject;
|
||||
*lpIndex = lpPktPDAck->m_itemPos;
|
||||
|
||||
return lpPktPDAck->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharPullDownInfo(PktBase* lpPktBase, unsigned long *dwCharID,
|
||||
FieldObject* lpFieldObject)
|
||||
{
|
||||
PktPDInfo* lpPktPDInfo = static_cast<PktPDInfo *>(lpPktBase);
|
||||
|
||||
*dwCharID = lpPktPDInfo->m_dwCharID;
|
||||
*lpFieldObject = lpPktPDInfo->m_FieldObject;
|
||||
|
||||
return lpPktPDInfo->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharTakeItem(PktBase* lpPktBase,
|
||||
unsigned long *dwCharID, TakeType* lpTakeType)
|
||||
{
|
||||
PktTI* lpPktTI = static_cast<PktTI *>(lpPktBase);
|
||||
|
||||
*dwCharID = lpPktTI->m_dwCharID;
|
||||
*lpTakeType = lpPktTI->m_TakeType;
|
||||
|
||||
return lpPktTI->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharSwapItem(PktBase* lpPktBase, unsigned long *dwCharID,
|
||||
TakeType* lpSrcType, TakeType* lpDstType)
|
||||
{
|
||||
PktSwI* lpPktSwI = static_cast<PktSwI *>(lpPktBase);
|
||||
|
||||
*dwCharID = lpPktSwI->m_dwCharID;
|
||||
*lpSrcType = lpPktSwI->m_SwapSrc;
|
||||
*lpDstType = lpPktSwI->m_SwapDst;
|
||||
|
||||
return lpPktSwI->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharTradeItem(PktBase* lpPktBase, unsigned long *dwCharID, unsigned long *dwNPCID,
|
||||
unsigned long *dwGold, unsigned long *dwMileage, Item::ItemPos* CouponPos,
|
||||
Item::ItemPos* lpIndex, unsigned char *Num,
|
||||
unsigned short *Size, char **lppBuffer)
|
||||
{
|
||||
PktTrAck* lpPktTrAck = static_cast<PktTrAck *>(lpPktBase);
|
||||
|
||||
*dwCharID = lpPktTrAck->m_dwCharID;
|
||||
*dwNPCID = lpPktTrAck->m_dwNPCID;
|
||||
|
||||
*dwGold = lpPktTrAck->m_dwGold;
|
||||
*dwMileage = lpPktTrAck->m_dwMileage;
|
||||
*CouponPos = lpPktTrAck->m_CouponPos;
|
||||
|
||||
*lpIndex = lpPktTrAck->m_itemPos;
|
||||
*Num = lpPktTrAck->m_cNum;
|
||||
|
||||
if (0 == lpPktTrAck->m_wSize)
|
||||
{
|
||||
*Size = 0;
|
||||
*lppBuffer = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
*Size = lpPktTrAck->m_wSize;
|
||||
*lppBuffer = reinterpret_cast<char *>(lpPktTrAck + 1);
|
||||
}
|
||||
|
||||
return lpPktTrAck->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharEquipShopInfo(PktBase* lpPktBase, unsigned long *dwCharID, unsigned long *dwNPCID,
|
||||
unsigned long *dwTime, unsigned char *cRace, unsigned char *cTabPage,
|
||||
unsigned char *cNum, unsigned short *aryItemID, unsigned char *aryItemGrade)
|
||||
{
|
||||
PktEquipShopInfo* lpESIAck = static_cast<PktEquipShopInfo *>(lpPktBase);
|
||||
|
||||
*dwCharID = lpESIAck->m_dwCharID;
|
||||
*dwNPCID = lpESIAck->m_dwNPCID;
|
||||
|
||||
*dwTime = lpESIAck->m_dwTime;
|
||||
|
||||
*cRace = lpESIAck->m_cRace;
|
||||
*cTabPage = lpESIAck->m_cTabPage;
|
||||
|
||||
*cNum = lpESIAck->m_cNum;
|
||||
|
||||
unsigned short* lpItemID = reinterpret_cast<unsigned short *>(lpESIAck + 1);
|
||||
for (unsigned char cIDIndex = 0; cIDIndex < *cNum; ++cIDIndex)
|
||||
{
|
||||
aryItemID[cIDIndex] = *lpItemID;
|
||||
++lpItemID;
|
||||
}
|
||||
|
||||
unsigned char* lpItemGrade = reinterpret_cast<unsigned char *>(lpItemID);
|
||||
for (unsigned char cGradeIndex = 0; cGradeIndex < *cNum; ++cGradeIndex)
|
||||
{
|
||||
aryItemGrade[cGradeIndex] = *lpItemGrade;
|
||||
++lpItemGrade;
|
||||
}
|
||||
|
||||
return lpESIAck->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharRepairItem(PktBase* lpPktBase, unsigned long *dwCharID,
|
||||
Item::ItemPos* lpIndex, unsigned long *dwGold)
|
||||
{
|
||||
PktRpI* lpPktRpI = static_cast<PktRpI *>(lpPktBase);
|
||||
|
||||
*dwCharID = lpPktRpI->m_dwCharID;
|
||||
*dwGold = lpPktRpI->m_dwGold;
|
||||
*lpIndex = lpPktRpI->m_itemPos;
|
||||
|
||||
return lpPktRpI->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharRepairAllItem(PktBase* lpPktBase, unsigned long *dwCharID, unsigned long *dwGold)
|
||||
{
|
||||
PktRpAI* lpPktRpAI = static_cast<PktRpAI *>(lpPktBase);
|
||||
|
||||
*dwCharID = lpPktRpAI->m_dwCharID;
|
||||
*dwGold = lpPktRpAI->m_dwGold;
|
||||
|
||||
return lpPktRpAI->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharUseItem(PktBase* lpPktBase,
|
||||
unsigned long& dwSenderID,
|
||||
unsigned long& dwRecver, Item::ItemPos& index,
|
||||
unsigned char& cRemainItemNum)
|
||||
{
|
||||
PktUI* lpPktUI = static_cast<PktUI *>(lpPktBase);
|
||||
|
||||
dwSenderID = lpPktUI->m_dwSender;
|
||||
dwRecver = lpPktUI->m_dwRecver;
|
||||
index = lpPktUI->m_itemPos;
|
||||
cRemainItemNum = lpPktUI->m_cRemainItemNum;
|
||||
|
||||
return lpPktUI->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharCastObject(PktBase* lpPktBase, unsigned long *dwSenderID,
|
||||
unsigned long *dwRecverID, CastObject* lpCastObject)
|
||||
{
|
||||
PktCO* lpPktCO = static_cast<PktCO *>(lpPktBase);
|
||||
|
||||
*dwSenderID = lpPktCO->m_dwSenderID;
|
||||
*dwRecverID = lpPktCO->m_dwReceiverID;
|
||||
*lpCastObject = lpPktCO->m_sCastObject;
|
||||
|
||||
return lpPktCO->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharCastObjectInfo(PktBase* lpPktBase, unsigned long *dwSenderID,
|
||||
unsigned long *dwRecverID, CastObject* lpCastObject)
|
||||
{
|
||||
PktCOInfo* lpPktCOInfo = static_cast<PktCOInfo *>(lpPktBase);
|
||||
|
||||
*dwSenderID = lpPktCOInfo->m_dwSenderID;
|
||||
*dwRecverID = lpPktCOInfo->m_dwReceiverID;
|
||||
*lpCastObject = lpPktCOInfo->m_sCastObject;
|
||||
|
||||
return lpPktCOInfo->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharInstallSocket(PktBase* lpPktBase, unsigned long *dwCharID,
|
||||
Item::ItemPos* lpEquipIndex,
|
||||
Item::ItemPos* lpSocket,
|
||||
unsigned char *Size, char **lppBuffer)
|
||||
{
|
||||
PktISAck* lpPktISAck = static_cast<PktISAck *>(lpPktBase);
|
||||
|
||||
*dwCharID = lpPktISAck->m_dwCharID;
|
||||
*lpEquipIndex = lpPktISAck->m_equipPos;
|
||||
*lpSocket = lpPktISAck->m_gemPos;
|
||||
|
||||
*Size = lpPktISAck->m_cSize;
|
||||
*lppBuffer = (lpPktISAck->m_cSize > 0) ? reinterpret_cast<char *>(lpPktISAck + 1) : 0;
|
||||
|
||||
return lpPktISAck->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharInstallRune(PktBase* lpPktBase, unsigned long *dwCharID,
|
||||
Item::ItemPos* lpEquipIndex,
|
||||
Item::ItemPos* lpSocket, unsigned char* runePos, unsigned char* type,
|
||||
unsigned char *Size, char **lppBuffer)
|
||||
{
|
||||
PktIRSAck* lpPktIRSAck = static_cast<PktIRSAck *>(lpPktBase);
|
||||
|
||||
*dwCharID = lpPktIRSAck->m_dwCharID;
|
||||
*lpEquipIndex = lpPktIRSAck->m_equipPos;
|
||||
*lpSocket = lpPktIRSAck->m_runePos;
|
||||
|
||||
*Size = lpPktIRSAck->m_cSize;
|
||||
//*runePos = lpPktIRSAck->m_cRuneSocketPos;
|
||||
*type = lpPktIRSAck->m_cType;
|
||||
*lppBuffer = (lpPktIRSAck->m_cSize > 0) ? reinterpret_cast<char *>(lpPktIRSAck + 1) : 0;
|
||||
|
||||
return lpPktIRSAck->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharItemChemical(PktBase* lpPktBase, unsigned long *dwCharID,
|
||||
Item::ItemPos* lpPickkingPos, Item::ItemPos* lpTargetPos,
|
||||
unsigned short *wPickkingID, unsigned char *cPickkingNum,
|
||||
unsigned char *cSize, char **lppBuffer)
|
||||
{
|
||||
PktItemChemicalAck* lpPktICAck = static_cast<PktItemChemicalAck *>(lpPktBase);
|
||||
|
||||
*dwCharID = lpPktICAck->m_dwCharID;
|
||||
|
||||
*lpPickkingPos = lpPktICAck->m_pickkingPos;
|
||||
*lpTargetPos = lpPktICAck->m_targetPos;
|
||||
|
||||
*wPickkingID = lpPktICAck->m_wPickkingID;
|
||||
*cPickkingNum = lpPktICAck->m_cPickkingNum;
|
||||
|
||||
*cSize = lpPktICAck->m_cResultSize;
|
||||
*lppBuffer = (lpPktICAck->m_cResultSize > 0) ? reinterpret_cast<char *>(lpPktICAck + 1) : 0;
|
||||
|
||||
return lpPktICAck->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharSplitItem(PktBase* lpPktBase, unsigned long *dwCharID,
|
||||
TakeType* lpTakeType, unsigned char *Size, char **lppBuffer)
|
||||
{
|
||||
PktSpItAck* lpPktSpltAck = static_cast<PktSpItAck *>(lpPktBase);
|
||||
|
||||
*dwCharID = lpPktSpltAck->m_dwCharID;
|
||||
*lpTakeType = lpPktSpltAck->m_TakeType;
|
||||
*Size = lpPktSpltAck->m_cSize;
|
||||
*lppBuffer = (lpPktSpltAck->m_cSize > 0) ? reinterpret_cast<char *>(lpPktSpltAck + 1) : 0;
|
||||
|
||||
return lpPktSpltAck->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleDeposit(PktBase* lpPktBase, unsigned char *Cmd,
|
||||
unsigned long *dwGold, char *PassSave)
|
||||
{
|
||||
PktDeposit* lpPktDeposit = static_cast<PktDeposit *>(lpPktBase);
|
||||
|
||||
*Cmd = lpPktDeposit->m_cCmd;
|
||||
memcpy(dwGold, &lpPktDeposit->m_szData[0], sizeof(unsigned long));
|
||||
*PassSave = lpPktDeposit->m_szData[4];
|
||||
|
||||
return lpPktDeposit->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleDepositUpdate(PktBase* lpPktBase, unsigned long *dwFlag,
|
||||
unsigned char *TabNum, bool *Complete,
|
||||
unsigned short *StoreSize, char **lppStoreBuff)
|
||||
{
|
||||
PktDepositUpdateDB* lpDepositUpdateDB = static_cast<PktDepositUpdateDB *>(lpPktBase);
|
||||
|
||||
*dwFlag = lpDepositUpdateDB->m_dwTabFlag;
|
||||
*TabNum = lpDepositUpdateDB->m_cTabNum;
|
||||
*Complete = lpDepositUpdateDB->m_bUpdateComplete;
|
||||
|
||||
*StoreSize = lpDepositUpdateDB->m_usDataSize;
|
||||
*lppStoreBuff = reinterpret_cast<char *>(lpDepositUpdateDB + 1);
|
||||
|
||||
return lpDepositUpdateDB->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharUpgradeItem(PktBase* lpPktBase, unsigned long *dwCharID,
|
||||
unsigned long *dwCurrentGold, unsigned char *cCurrentMineralNum,
|
||||
unsigned char *Size, char **lppBuffer)
|
||||
{
|
||||
PktUgIAck* lpPktUgIAck = static_cast<PktUgIAck *>(lpPktBase);
|
||||
|
||||
*dwCharID = lpPktUgIAck->m_dwCharID;
|
||||
*dwCurrentGold = lpPktUgIAck->m_dwCurrentGold;
|
||||
*cCurrentMineralNum = lpPktUgIAck->m_cCurrentMineralNum;
|
||||
*Size = lpPktUgIAck->m_cSize;
|
||||
*lppBuffer = (lpPktUgIAck->m_cSize > 0) ? reinterpret_cast<char *>(lpPktUgIAck + 1) : 0;
|
||||
|
||||
return lpPktUgIAck->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharItemOptionGraft(PktBase* lpPktBase, unsigned long *dwCharID,
|
||||
unsigned long *dwCurrentGold, unsigned char *cItemSize, char **lppItemBuffer)
|
||||
{
|
||||
PktItemOptionGraftAck* lpPktIOGAck = static_cast<PktItemOptionGraftAck *>(lpPktBase);
|
||||
|
||||
*dwCharID = lpPktIOGAck->m_dwCharID;
|
||||
*dwCurrentGold = lpPktIOGAck->m_dwGold;
|
||||
*cItemSize = lpPktIOGAck->m_cSize;
|
||||
*lppItemBuffer = (lpPktIOGAck->m_cSize > 0) ? reinterpret_cast<char *>(lpPktIOGAck + 1) : 0;
|
||||
|
||||
return lpPktIOGAck->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharItemCompensation(PktBase* lpPktBase, unsigned long *dwCharID)
|
||||
{
|
||||
PktItemCompensation* lpPktICAck = static_cast<PktItemCompensation *>(lpPktBase);
|
||||
|
||||
*dwCharID = lpPktICAck->m_dwCharID;
|
||||
|
||||
return lpPktICAck->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharAutoRouting(PktBase* lpPktBase, unsigned long *dwCharID,
|
||||
unsigned __int64 *nObjectID, unsigned short *wItemID,
|
||||
unsigned char *cNum, unsigned char *cCmd)
|
||||
{
|
||||
PktAutoRouting* lpPktAutoRouting = static_cast<PktAutoRouting *>(lpPktBase);
|
||||
|
||||
*dwCharID = lpPktAutoRouting->m_dwCharID;
|
||||
*nObjectID = lpPktAutoRouting->m_nObjectID;
|
||||
|
||||
*wItemID = lpPktAutoRouting->m_wItemID;
|
||||
*cNum = lpPktAutoRouting->m_cNum;
|
||||
|
||||
*cCmd = lpPktAutoRouting->m_cCmd;
|
||||
|
||||
return lpPktAutoRouting->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharDisappearItem(PktBase* lpPktBase, unsigned long* dwCharID,
|
||||
Item::ItemPos* lpIndex, unsigned char* cNum, unsigned char* cCmd)
|
||||
{
|
||||
PktDisappearItem* lpPktDisappearItem = static_cast<PktDisappearItem *>(lpPktBase);
|
||||
|
||||
*dwCharID = lpPktDisappearItem->m_dwCharID;
|
||||
*lpIndex = lpPktDisappearItem->m_itemPos;
|
||||
*cNum = lpPktDisappearItem->m_cNum;
|
||||
*cCmd = lpPktDisappearItem->m_cCmd;
|
||||
|
||||
return lpPktDisappearItem->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharExchangeCmd(PktBase* lpPktBase, unsigned long *dwSenderID,
|
||||
unsigned long *dwRecverID, unsigned char *Cmd)
|
||||
{
|
||||
PktExC* lpExCPt = static_cast<PktExC *>(lpPktBase);
|
||||
|
||||
*dwSenderID = lpExCPt->m_dwSenderID;
|
||||
*dwRecverID = lpExCPt->m_dwRecverID;
|
||||
*Cmd = lpExCPt->m_cCmd;
|
||||
|
||||
return lpExCPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharExchangeItem(PktBase* lpPktBase, unsigned long *dwCharID,
|
||||
unsigned long *dwSize, Item::ItemPos* lpIndex,
|
||||
unsigned char *Type, unsigned char *Num, char **lppBuffer)
|
||||
{
|
||||
PktExI* lpExIPt = static_cast<PktExI *>(lpPktBase);
|
||||
|
||||
*dwCharID = lpExIPt->m_dwCharID;
|
||||
*dwSize = lpExIPt->m_dwSize;
|
||||
*lpIndex = lpExIPt->m_itemPos;
|
||||
*Type = lpExIPt->m_cType;
|
||||
*Num = lpExIPt->m_cNum;
|
||||
|
||||
*lppBuffer = (0 < lpExIPt->m_dwSize) ? reinterpret_cast<char *>(lpExIPt + 1) : 0;
|
||||
|
||||
return lpExIPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharStallOpen(PktBase* lpPktBase, unsigned long *dwCharID, char* StallName)
|
||||
{
|
||||
PktStO* lpStOPt = static_cast<PktStO *>(lpPktBase);
|
||||
|
||||
*dwCharID = lpStOPt->m_dwCharID;
|
||||
strncpy(StallName, lpStOPt->m_StallName, PktStO::MAX_STALL_NAME_LEN);
|
||||
|
||||
return lpStOPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharStallRegisterItem(PktBase* lpPktBase, unsigned long *dwCharID, unsigned long *dwShopID,
|
||||
TakeType *TakeType, unsigned long *dwPrice, unsigned char *Cmd)
|
||||
{
|
||||
PktStRI* lpStRIPt = static_cast<PktStRI *>(lpPktBase);
|
||||
|
||||
*dwCharID = lpStRIPt->m_dwCharID;
|
||||
*dwShopID = lpStRIPt->m_dwShopID;
|
||||
*TakeType = lpStRIPt->m_TakeType;
|
||||
*dwPrice = lpStRIPt->m_dwPrice;
|
||||
*Cmd = lpStRIPt->m_cCmd;
|
||||
|
||||
return lpStRIPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharStallEnter(PktBase* lpPktBase, unsigned long *dwCustomerID, unsigned long *dwOwner)
|
||||
{
|
||||
PktStE* lpStEPt = static_cast<PktStE *>(lpPktBase);
|
||||
|
||||
*dwCustomerID = lpStEPt->m_dwCustomerID;
|
||||
*dwOwner = lpStEPt->m_dwOwnerID;
|
||||
|
||||
return lpStEPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharStallItemInfo(PktBase* lpPktBase,
|
||||
unsigned long *dwOwnerID, unsigned long *dwCustomerID,
|
||||
unsigned char *cTax, unsigned long *dwStallSize, char **lppStallBuff,
|
||||
unsigned char *ItemNum, unsigned long **dwStallPrice)
|
||||
{
|
||||
PktStIInfo* lpPktStIInfo = static_cast<PktStIInfo *>(lpPktBase);
|
||||
|
||||
::memcpy(dwCustomerID, lpPktStIInfo->m_dwCustomerID, sizeof(unsigned long) * PktStIInfo::MAX_CUSTOMER_NUM);
|
||||
|
||||
*dwOwnerID = lpPktStIInfo->m_dwOwnerID;
|
||||
*cTax = lpPktStIInfo->m_cTax;
|
||||
|
||||
*dwStallSize = lpPktStIInfo->m_dwItemSize;
|
||||
*lppStallBuff = reinterpret_cast<char *>(lpPktStIInfo + 1);
|
||||
|
||||
*ItemNum = lpPktStIInfo->m_cItemNum;
|
||||
*dwStallPrice = reinterpret_cast<unsigned long *>(*lppStallBuff + lpPktStIInfo->m_dwItemSize);
|
||||
|
||||
return lpPktStIInfo->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharTakeItems(PktBase* lpPktBase, unsigned long *dwCharID,
|
||||
unsigned char *TakeNum, TakeType** lppTakeTypes)
|
||||
{
|
||||
PktTIs* lpTIsPt = static_cast<PktTIs *>(lpPktBase);
|
||||
|
||||
*dwCharID = lpTIsPt->m_dwCharID;
|
||||
*TakeNum = lpTIsPt->m_TakeNum;
|
||||
*lppTakeTypes = reinterpret_cast<TakeType *>(lpTIsPt + 1);
|
||||
|
||||
return lpTIsPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharTakeGold(PktBase* lpPktBase, unsigned long *dwCharID,
|
||||
unsigned char *SrcPos, unsigned char *DstPos,
|
||||
unsigned long *dwGold)
|
||||
{
|
||||
PktTG* lpTGPt = static_cast<PktTG *>(lpPktBase);
|
||||
|
||||
*dwCharID = lpTGPt->m_dwCharID;
|
||||
*SrcPos = lpTGPt->m_cSrcPos;
|
||||
*DstPos = lpTGPt->m_cDstPos;
|
||||
*dwGold = lpTGPt->m_dwGold;
|
||||
|
||||
return lpTGPt->GetError();
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
#ifndef _PARSE_ITEM_PACKET_H_
|
||||
#define _PARSE_ITEM_PACKET_H_
|
||||
|
||||
#include <Network/Packet/PacketStruct/CharItemPacket.h>
|
||||
|
||||
namespace ParsePacket
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>
|
||||
unsigned long HandleCharPickUp(PktBase* lpPktBase, unsigned long* dwCharID, unsigned __int64* nObjectID, Item::ItemPos* lpIndex, unsigned long* dwGold, unsigned long* dwSize, unsigned char* cNum, char* *lppBuffer);
|
||||
unsigned long HandleCharPickUpInfo(PktBase* lpPktBase, unsigned long* dwCharID, unsigned __int64* nObjectID);
|
||||
unsigned long HandleCharAutoRouting(PktBase* lpPktBase, unsigned long* dwCharID, unsigned __int64* nObjectID, unsigned short* wItemID, unsigned char* cNum, unsigned char* cCmd);
|
||||
unsigned long HandleCharDisappearItem(PktBase* lpPktBase, unsigned long* dwCharID, Item::ItemPos* lpIndex, unsigned char* cNum, unsigned char* cCmd);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
unsigned long HandleCharPullDown(PktBase* lpPktBase, unsigned long* dwCharID, Item::ItemPos* lpIndex, FieldObject* lpFieldObject);
|
||||
unsigned long HandleCharPullDownInfo(PktBase* lpPktBase, unsigned long* dwCharID, FieldObject* lpFieldObject);
|
||||
|
||||
// <20>̵<EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
unsigned long HandleCharTakeItem(PktBase* lpPktBase, unsigned long* dwCharID, TakeType* lpTakeType);
|
||||
unsigned long HandleCharSwapItem(PktBase* lpPktBase, unsigned long* dwCharID, TakeType* lpSrcType, TakeType* lpDstType);
|
||||
unsigned long HandleCharSplitItem(PktBase* lpPktBase, unsigned long* dwCharID, TakeType* lpTakeType, unsigned char* Size, char* *lppBuffer);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>/<2F>ȱ<EFBFBD>/<2F><><EFBFBD><EFBFBD>
|
||||
unsigned long HandleCharTradeItem(PktBase* lpPktBase, unsigned long* dwCharID, unsigned long* dwNPCID, unsigned long* dwGold, unsigned long* dwMileage, Item::ItemPos* CouponPos, Item::ItemPos* lpIndex, unsigned char* Num, unsigned short* Size, char* *lppBuffer);
|
||||
unsigned long HandleCharEquipShopInfo(PktBase* lpPktBase, unsigned long* dwCharID, unsigned long* dwNPCID, unsigned long* dwTime, unsigned char* cRace, unsigned char* cTabPage, unsigned char* cNum, unsigned short* aryItemID, unsigned char* aryItemGrade);
|
||||
unsigned long HandleCharRepairItem(PktBase* lpPktBase, unsigned long* dwCharID, Item::ItemPos* lpIndex, unsigned long* dwGold);
|
||||
unsigned long HandleCharRepairAllItem(PktBase* lpPktBase, unsigned long* dwCharID, unsigned long* dwGold);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
unsigned long HandleCharCastObject(PktBase* lpPktBase, unsigned long* dwSenderID, unsigned long* dwRecverID, CastObject* lpCastObject);
|
||||
unsigned long HandleCharCastObjectInfo(PktBase* lpPktBase, unsigned long* dwSenderID, unsigned long* dwRecverID, CastObject* lpCastObject);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><D7B7>̵<EFBFBD>
|
||||
unsigned long HandleCharUseItem(PktBase* lpPktBase, unsigned long& dwSenderID, unsigned long& dwRecver, Item::ItemPos& index, unsigned char& cRemainItemNum);
|
||||
unsigned long HandleCharInstallSocket(PktBase* lpPktBase, unsigned long* dwCharID, Item::ItemPos* lpEquipIndex, Item::ItemPos* lpSocket, unsigned char* Size, char* *lppBuffer);
|
||||
unsigned long HandleCharInstallRune(PktBase* lpPktBase, unsigned long* dwCharID, Item::ItemPos* lpEquipIndex, Item::ItemPos* lpSocket, unsigned char* runePos, unsigned char* type, unsigned char* Size, char* *lppBuffer);
|
||||
|
||||
unsigned long HandleCharItemChemical(PktBase* lpPktBase, unsigned long* dwCharID, Item::ItemPos* lpPickkingPos, Item::ItemPos* lpTargetPos, unsigned short* wPickkingID, unsigned char* cPickkingNum, unsigned char* cSize, char* *lppBuffer);
|
||||
unsigned long HandleCharUpgradeItem(PktBase* lpPktBase, unsigned long* dwCharID, unsigned long* dwCurrentGold, unsigned char* cCurrentMineralNum, unsigned char* Size, char* *lppBuffer);
|
||||
unsigned long HandleCharItemOptionGraft(PktBase* lpPktBase, unsigned long* dwCharID, unsigned long* dwCurrentGold, unsigned char* cItemSize, char* *lppItemBuffer);
|
||||
unsigned long HandleCharItemCompensation(PktBase* lpPktBase, unsigned long* dwCharID);
|
||||
|
||||
// â<><C3A2>
|
||||
unsigned long HandleDeposit(PktBase* lpPktBase, unsigned char* Cmd, unsigned long* dwGold, char* PassSave);
|
||||
unsigned long HandleDepositUpdate(PktBase* lpPktBase, unsigned long* dwFlag, unsigned char* TabNum, bool* Complete, unsigned short* StoreSize, char* *lppStoreBuff);
|
||||
|
||||
// <20><>ȯ
|
||||
unsigned long HandleCharExchangeCmd(PktBase* lpPktBase, unsigned long* dwSenderID, unsigned long* dwRecverID, unsigned char* Cmd);
|
||||
unsigned long HandleCharExchangeItem(PktBase* lpPktBase, unsigned long* dwCharID, unsigned long* dwSize, Item::ItemPos* lpIndex, unsigned char* Type, unsigned char* Num, char* *lppBuffer);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
unsigned long HandleCharStallOpen(PktBase* lpPktBase, unsigned long* dwCharID, char* StallName);
|
||||
unsigned long HandleCharStallRegisterItem(PktBase* lpPktBase, unsigned long* dwCharID, unsigned long* dwShopID, TakeType* TakeType, unsigned long* dwPrice, unsigned char* Cmd);
|
||||
unsigned long HandleCharStallEnter(PktBase* lpPktBase, unsigned long* dwCustomerID, unsigned long* dwOwner);
|
||||
unsigned long HandleCharStallItemInfo(PktBase* lpPktBase, unsigned long* dwOwnerID, unsigned long* dwCustomerID, unsigned char* cTax, unsigned long* dwStallSize, char **lppStallBuff, unsigned char* ItemNum, unsigned long **dwStallPrice);
|
||||
|
||||
// <20><>Ÿ
|
||||
unsigned long HandleCharTakeItems(PktBase* lpPktBase, unsigned long* dwCharID, unsigned char* TakeNum, TakeType** lppTakeTypes);
|
||||
unsigned long HandleCharTakeGold(PktBase* lpPktBase, unsigned long* dwCharID, unsigned char* SrcPos, unsigned char* DstPos, unsigned long* dwGold);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,139 @@
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
#include <Network/Address/INET_Addr.h>
|
||||
#include <Network/ClientSocket/ClientSocket.h>
|
||||
#include <Network/Packet/PacketStruct/ServerPacket.h>
|
||||
#include <Network/Packet/PacketStruct/CharCommunityPacket.h>
|
||||
#include <Network/Packet/PacketStruct/CharLoginOutPacket.h>
|
||||
#include <Network/Packet/PacketStruct/CharLoginOutPacketStruct.h>
|
||||
|
||||
#include <Network/Packet/PacketStruct/GuildPacket.h>
|
||||
|
||||
#include "ParseLoginout.h"
|
||||
#include "GMMemory.h"
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharLogin(PktBase* lpPktBase, ClientSocket& clientSocket,
|
||||
bool *bPeace_Out, bool *bCheckRelation,
|
||||
unsigned char *cNameChangeCount, unsigned char *cAdminFlag,
|
||||
unsigned char *cGuildWarFlag, unsigned char *cRealmWarFlag,
|
||||
unsigned char *cRealmPoint, unsigned char *cTacticsFlag,
|
||||
CHAR_INFOST* lpCharInfo_Out, SKILL* lpSkill_Out, QUICK* lpQuick_Out, SPELL* lpSpell_Out,
|
||||
CHAR_POS* lpPos_Out,
|
||||
unsigned long *ServerTime_Out, unsigned long *dwServerID,
|
||||
unsigned short *EquipSize_Out, char **lppEquipBuff_Out,
|
||||
unsigned short *InvenSize_Out, char **lppInvenBuff_Out,
|
||||
unsigned short *ExtraSize_Out, char **lppExtraBuff_Out,
|
||||
unsigned short *ExchangeSize_Out, char **lppExchangeBuff_Out,
|
||||
unsigned short *TempInvenSize_Out, char **lppTempInvenBuff_Out)
|
||||
{
|
||||
PktCLiAck* lpCLiAckPt = static_cast<PktCLiAck*>(lpPktBase);
|
||||
|
||||
*ServerTime_Out = lpCLiAckPt->m_dwServerTime;
|
||||
*dwServerID = lpCLiAckPt->m_dwServerID;
|
||||
*bPeace_Out = lpCLiAckPt->m_bPeaceMode;
|
||||
*bCheckRelation = lpCLiAckPt->m_bCheckRelation;
|
||||
*cNameChangeCount = lpCLiAckPt->m_cNameChangeCount;
|
||||
*cAdminFlag = lpCLiAckPt->m_cAdminFlag;
|
||||
*cGuildWarFlag = lpCLiAckPt->m_cGuildWarFlag;
|
||||
*cRealmWarFlag = lpCLiAckPt->m_cRealmWarFlag;
|
||||
*cRealmPoint = lpCLiAckPt->m_cRealmPoint;
|
||||
*cTacticsFlag = lpCLiAckPt->m_cTacticsFlag;
|
||||
|
||||
unsigned short *usUpdateLen = lpCLiAckPt->m_usUpdate;
|
||||
|
||||
*lppEquipBuff_Out = NULL;
|
||||
*lppInvenBuff_Out = NULL;
|
||||
*lppExtraBuff_Out = NULL;
|
||||
*lppExchangeBuff_Out = NULL;
|
||||
*lppTempInvenBuff_Out = NULL;
|
||||
|
||||
*EquipSize_Out = 0;
|
||||
*InvenSize_Out = 0;
|
||||
*ExtraSize_Out = 0;
|
||||
*ExchangeSize_Out = 0;
|
||||
*TempInvenSize_Out = 0;
|
||||
|
||||
char* OffSet = reinterpret_cast<char*>(lpCLiAckPt + 1);
|
||||
for (int nCount = 0; nCount < DBUpdateData::MAX_UPDATE_DB; ++nCount)
|
||||
{
|
||||
if (0 != usUpdateLen[nCount])
|
||||
{
|
||||
switch (nCount)
|
||||
{
|
||||
case DBUpdateData::STATUS_UPDATE: *lpCharInfo_Out = *reinterpret_cast<CHAR_INFOST *>(OffSet); break;
|
||||
case DBUpdateData::POSITION_UPDATE: *lpPos_Out = *reinterpret_cast<CHAR_POS *>(OffSet); break;
|
||||
case DBUpdateData::SKILL_UPDATE: *lpSkill_Out = *reinterpret_cast<SKILL *>(OffSet); break;
|
||||
case DBUpdateData::QUICKSLOT_UPDATE: *lpQuick_Out = *reinterpret_cast<QUICK *>(OffSet); break;
|
||||
case DBUpdateData::SPELL_UPDATE: *lpSpell_Out = *reinterpret_cast<SPELL *>(OffSet); break;
|
||||
case DBUpdateData::ITEM_EQUIP_UPDATE: *lppEquipBuff_Out = OffSet; *EquipSize_Out = usUpdateLen[nCount]; break;
|
||||
case DBUpdateData::ITEM_INVEN_UPDATE: *lppInvenBuff_Out = OffSet; *InvenSize_Out = usUpdateLen[nCount]; break;
|
||||
case DBUpdateData::ITEM_EXTRA_UPDATE: *lppExtraBuff_Out = OffSet; *ExtraSize_Out = usUpdateLen[nCount]; break;
|
||||
case DBUpdateData::ITEM_EXCHANGE_UPDATE: *lppExchangeBuff_Out = OffSet; *ExchangeSize_Out = usUpdateLen[nCount]; break;
|
||||
case DBUpdateData::ITEM_TEMPINVEN_UPDATE: *lppTempInvenBuff_Out = OffSet; *TempInvenSize_Out = usUpdateLen[nCount]; break;
|
||||
}
|
||||
|
||||
OffSet += usUpdateLen[nCount];
|
||||
}
|
||||
}
|
||||
|
||||
return lpCLiAckPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharLogout(PktBase* lpPktBase, unsigned long *CharID_Out)
|
||||
{
|
||||
PktCLoAck* lpCLoAckPt = static_cast<PktCLoAck*>(lpPktBase);
|
||||
|
||||
*CharID_Out = lpCLoAckPt->m_dwCharID;
|
||||
|
||||
return lpCLoAckPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharMoveZone(PktBase* lpPktBase, unsigned char *Zone_Out, unsigned short *lpChannelNum_Out)
|
||||
{
|
||||
PktSZMvAck* lpSZMvAckPt = static_cast<PktSZMvAck*>(lpPktBase);
|
||||
|
||||
*Zone_Out = lpSZMvAckPt->m_cZone;
|
||||
memcpy(lpChannelNum_Out, lpSZMvAckPt->m_wChannelNum, sizeof(unsigned short) * PktSZMvAck::MAX_CHANNEL_NUM);
|
||||
|
||||
return lpSZMvAckPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleServerZone(PktBase* lpPktBase, ClientSocket& clientSocket,
|
||||
unsigned long *ServerID_Out)
|
||||
{
|
||||
PktSZAck* lpSZAckPt = static_cast<PktSZAck*>(lpPktBase);
|
||||
|
||||
*ServerID_Out = lpSZAckPt->m_dwServerID;
|
||||
clientSocket.SetAddress(ClientSocket::MoveZoneAddr, lpSZAckPt->m_GameServerTCPAddr);
|
||||
|
||||
return lpSZAckPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCSAuth(PktBase* lpPktBase, unsigned long* dwCID,
|
||||
unsigned long* dwAuthCode, GG_AUTH_DATA* lpAuthCode2)
|
||||
{
|
||||
PktCSAuth* lpCSAuthPt = static_cast<PktCSAuth *>(lpPktBase);
|
||||
|
||||
*dwCID = lpCSAuthPt->m_dwCharID;
|
||||
*dwAuthCode = lpCSAuthPt->m_dwAuthCode;
|
||||
*lpAuthCode2 = lpCSAuthPt->m_AuthCode2;
|
||||
|
||||
return lpCSAuthPt->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleKeyInfo(PktBase* lpPktBase, unsigned long* dwCID, unsigned long* pKeyInfo)
|
||||
{
|
||||
PktKeyInfo* lpKeyInfo = static_cast<PktKeyInfo*>(lpPktBase);
|
||||
|
||||
*dwCID = lpKeyInfo->m_dwCID;
|
||||
memcpy(pKeyInfo, lpKeyInfo->m_dwKeyInfo, sizeof(unsigned long)*PktKeyInfo::MAX_KEY_INFO);
|
||||
|
||||
return lpKeyInfo->GetError();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
#ifndef _GAMA_CLIENT_PARSE_LOGIN_OUT_H_
|
||||
#define _GAMA_CLIENT_PARSE_LOGIN_OUT_H_
|
||||
|
||||
#include <winsock2.h>
|
||||
#include <windows.h>
|
||||
#include <DB/DBDefine.h>
|
||||
|
||||
class ClientSocket;
|
||||
struct PktBase;
|
||||
struct _GG_AUTH_DATA;
|
||||
|
||||
namespace ParsePacket
|
||||
{
|
||||
// <20>α<EFBFBD><CEB1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>. ClientSocket<65><74> <20><><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD> UDP<44>ּҿ<D6BC> ä<>ü<EFBFBD><C3BC><EFBFBD> <20>ּҸ<D6BC> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
unsigned long HandleCharLogin(PktBase* lpPktBase, ClientSocket& clientSocket,
|
||||
bool *bPeace_Out, bool *bCheckRelation, unsigned char *cNameChangeCount, unsigned char *cAdminFlag,
|
||||
unsigned char *cGuildWarFlag, unsigned char *cRealmWarFlag, unsigned char *cRealmPoint, unsigned char *cTacticsFlag,
|
||||
CHAR_INFOST* lpCharInfo_Out, SKILL* lpSkill_Out, QUICK* lpQuick_Out, SPELL* lpSpell_Out,
|
||||
CHAR_POS* lpPos_Out,
|
||||
unsigned long *ServerTime_Out, unsigned long *dwServerID,
|
||||
unsigned short *EquipSize_Out, char **lppEquipBuff_Out,
|
||||
unsigned short *InvenSize_Out, char **lppInvenBuff_Out,
|
||||
unsigned short *ExtraSize_Out, char **lppExtraBuff_Out,
|
||||
unsigned short *ExchangeSize_Out, char **lppExchangeBuff_Out,
|
||||
unsigned short *TempInvenSize_Out, char **lppTempInvenBuff_Out);
|
||||
|
||||
unsigned long HandleCharLogout(PktBase* lpPktBase, unsigned long *CharID_Out);
|
||||
unsigned long HandleCharMoveZone(PktBase* lpPktBase, unsigned char *Zone_Out, unsigned short *lpChannelNum_Out);
|
||||
|
||||
// <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD> MoveZone<6E>ּҸ<D6BC> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
unsigned long HandleServerZone(PktBase* lpPktBase, ClientSocket& clientSocket, unsigned long *ServerID_Out);
|
||||
|
||||
unsigned long HandleCSAuth(PktBase* lpPktBase, unsigned long* dwCID, unsigned long* dwAuthCode, _GG_AUTH_DATA* lpAuthCode2);
|
||||
|
||||
unsigned long HandleKeyInfo(PktBase* lpPktBase, unsigned long* dwCID, unsigned long* pKeyInfo);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,76 @@
|
||||
#include "stdafx.h"
|
||||
#include "ParseMove.h"
|
||||
|
||||
#include <Network/ClientSocket/ClientSocket.h>
|
||||
#include <Network/Packet/PacketStruct/CharStatusPacket.h>
|
||||
#include <Network/Packet/PacketStruct/CharBroadcastPacket.h>
|
||||
|
||||
#include <mmsystem.h>
|
||||
#include "GMMemory.h"
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharUpdateAddress(PktBase* lpPktBase, ClientSocket& clientSocket)
|
||||
{
|
||||
PktUAAck* lpUAAckPt = static_cast<PktUAAck*>(lpPktBase);
|
||||
|
||||
clientSocket.SetAddress(ClientSocket::PrivateAddr, lpUAAckPt->m_PrivateAddress);
|
||||
clientSocket.SetAddress(ClientSocket::PublicAddr, lpUAAckPt->m_PublicAddress);
|
||||
|
||||
return lpUAAckPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharAddressInfo(PktBase* lpPktBase, unsigned long *CharID_Out,
|
||||
SOCKADDR_IN* PubAddress_Out, SOCKADDR_IN* PriAddress_Out)
|
||||
{
|
||||
PktAI* lpAIPt = static_cast<PktAI*>(lpPktBase);
|
||||
|
||||
*CharID_Out = lpAIPt->m_AddressInfo.m_dwCharID;
|
||||
*PubAddress_Out = lpAIPt->m_AddressInfo.m_PublicAddress;
|
||||
*PriAddress_Out = lpAIPt->m_AddressInfo.m_PrivateAddress;
|
||||
|
||||
return lpAIPt->GetError();
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleCharMoveEx(PktBase* lpPktBase, unsigned long *CharID_Out, POS* Pos_Out,
|
||||
float *Dir_Out, unsigned char *UAct_Out, unsigned char *LAct_Out)
|
||||
{
|
||||
PktMVEx* lpPktMVEx = static_cast<PktMVEx*>(lpPktBase);
|
||||
|
||||
CNetworkPos& netPos = lpPktMVEx->m_NetworkPos;
|
||||
|
||||
Pos_Out->fPointX = netPos.GetXPos();
|
||||
Pos_Out->fPointY = netPos.GetYPos();
|
||||
Pos_Out->fPointZ = netPos.GetZPos();
|
||||
|
||||
*Dir_Out = netPos.GetDirection();
|
||||
|
||||
*CharID_Out = lpPktMVEx->GetServerInfo();
|
||||
*UAct_Out = lpPktMVEx->m_cUAct;
|
||||
*LAct_Out = lpPktMVEx->m_cLAct;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned long ParsePacket::HandleMonMove(PktBase* lpPktBase, unsigned long *MonID_Out, POS* lpPos_Out,
|
||||
float *Dir_Out, float *Vec_Out,
|
||||
unsigned short *Act_Out, unsigned short *AniNum_Out)
|
||||
{
|
||||
PktMM* lpMMPt = static_cast<PktMM*>(lpPktBase);
|
||||
|
||||
*MonID_Out = lpMMPt->m_dwMonID;
|
||||
CNetworkPos& netPos = lpMMPt->m_NetworkPos;
|
||||
|
||||
lpPos_Out->fPointX = netPos.GetXPos();
|
||||
lpPos_Out->fPointY = netPos.GetYPos();
|
||||
lpPos_Out->fPointZ = netPos.GetZPos();
|
||||
|
||||
*Dir_Out = netPos.GetDirection();
|
||||
*Vec_Out = netPos.GetVelocity();
|
||||
|
||||
*Act_Out = lpMMPt->m_cAct;
|
||||
*AniNum_Out = lpMMPt->m_cAniNum;
|
||||
|
||||
return lpMMPt->GetError();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
#ifndef _GAMA_CLIENT_PARSE_MOVE_BROADCAST_H_
|
||||
#define _GAMA_CLIENT_PARSE_MOVE_BROADCAST_H_
|
||||
|
||||
#include <winsock2.h>
|
||||
#include <windows.h>
|
||||
|
||||
#include <DB/DBDefine.h>
|
||||
#include <Network/Packet/PacketStruct/AddressPacket.h>
|
||||
#include <Network/Packet/PacketStruct/CharItemPacket.h>
|
||||
#include <Network/Packet/PacketStruct/CharItemPacketStruct.h>
|
||||
|
||||
// forward decl
|
||||
class ClientSocket;
|
||||
struct PktBase;
|
||||
|
||||
namespace BroadcastInfo
|
||||
{
|
||||
class CObjectInfoMgr;
|
||||
};
|
||||
|
||||
|
||||
namespace ParsePacket
|
||||
{
|
||||
unsigned long HandleMonMove(PktBase* lpPktBase, unsigned long *MonID_Out, POS* lpPos_Out, float *Dir_Out, float *Vec_Out, unsigned short *Act_Out, unsigned short *AniNum_Out);
|
||||
|
||||
unsigned long HandleCharMoveEx(PktBase* lpPktBase, unsigned long *CharID_Out,
|
||||
POS* Pos_Out, float *Dir_Out, unsigned char *UAct_Out, unsigned char *LAct_Out);
|
||||
|
||||
// TODO : REMOVE UDP Packets
|
||||
// ClientSocket<65><74> UDP public, private <20>ּҸ<D6BC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD>Ѵ<EFBFBD>.
|
||||
unsigned long HandleCharUpdateAddress(PktBase* lpPktBase, ClientSocket& clientSocket);
|
||||
unsigned long HandleCharAddressInfo(PktBase* lpPktBase, unsigned long *CharID_Out, SOCKADDR_IN* PubAddress_Out, SOCKADDR_IN* PriAddress_Out);
|
||||
unsigned long HandleCharMove(PktBase* lpPktBase, unsigned long *CharID_Out, POS* Pos_Out, float *Dir_Out, unsigned short *UAct_Out, unsigned short *LAct_Out, char *Level_Out, unsigned long *ChantEf_Out, unsigned long *EnchantEf_Out, unsigned long *PtCount_Out);
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,77 @@
|
||||
#include "stdafx.h"
|
||||
#include "ParseQuest.h"
|
||||
#include "GMMemory.h"
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharStartQuest(PktBase* lpPktBase, unsigned long *dwCharID_Out,
|
||||
unsigned long *dwNPCID_Out, unsigned short *wQuestID_Out)
|
||||
{
|
||||
PktStartQuest* lpPktStartQuest = static_cast<PktStartQuest*>(lpPktBase);
|
||||
|
||||
*dwCharID_Out = lpPktStartQuest->m_dwCharID;
|
||||
*dwNPCID_Out = lpPktStartQuest->m_dwNPCID;
|
||||
*wQuestID_Out = lpPktStartQuest->m_wQuestID;
|
||||
|
||||
return lpPktStartQuest->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharCancelQuest(PktBase* lpPktBase, unsigned long *dwCharID_Out,
|
||||
unsigned short *wQuestID_Out)
|
||||
{
|
||||
PktCancelQuest* lpPktCancelQuest = static_cast<PktCancelQuest*>(lpPktBase);
|
||||
|
||||
*dwCharID_Out = lpPktCancelQuest->m_dwCharID;
|
||||
*wQuestID_Out = lpPktCancelQuest->m_wQuestID;
|
||||
|
||||
return lpPktCancelQuest->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharOperateTrigger(PktBase* lpPktBase, unsigned long *dwCharID_Out,
|
||||
unsigned short *wQuestID_Out, unsigned char *cPhase_Out,
|
||||
unsigned char *cTrigger_Out,unsigned char *cCount_Out)
|
||||
{
|
||||
PktOperateTrigger* lpPktOT = static_cast<PktOperateTrigger*>(lpPktBase);
|
||||
|
||||
*dwCharID_Out = lpPktOT->m_dwCharID;
|
||||
*wQuestID_Out = lpPktOT->m_wQuestID;
|
||||
*cPhase_Out = lpPktOT->m_cPhase;
|
||||
*cTrigger_Out = lpPktOT->m_cTrigger;
|
||||
*cCount_Out = lpPktOT->m_cCount;
|
||||
|
||||
return lpPktOT->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharQuestInfo(PktBase* lpPktBase, unsigned long *dwCharID_Out,
|
||||
unsigned short *wExecutingQuestNum_Out,
|
||||
PktQuestDB::ExecutingQuest **lppExecutingQuest_Out,
|
||||
unsigned short *wHistoryQuestNum_Out,
|
||||
unsigned short **lppHistoryQuest_Out)
|
||||
{
|
||||
PktQuestDB* lpPktQuestDB = static_cast<PktQuestDB*>(lpPktBase);
|
||||
|
||||
*dwCharID_Out = lpPktQuestDB->m_dwCID;
|
||||
*wExecutingQuestNum_Out = lpPktQuestDB->m_wExecuteQuestSize / sizeof(PktQuestDB::ExecutingQuest);
|
||||
*wHistoryQuestNum_Out = lpPktQuestDB->m_wHistoryQuestSize / sizeof(unsigned short);
|
||||
|
||||
*lppExecutingQuest_Out = reinterpret_cast<PktQuestDB::ExecutingQuest *>(lpPktQuestDB + 1);
|
||||
*lppHistoryQuest_Out = reinterpret_cast<unsigned short*>(
|
||||
reinterpret_cast<char*>(lpPktQuestDB + 1) + lpPktQuestDB->m_wExecuteQuestSize);
|
||||
|
||||
return lpPktQuestDB->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharEndQuest(PktBase* lpPktBase, unsigned long *dwCharID_Out,
|
||||
unsigned short *wQuestID_Out, bool *bSave_Out)
|
||||
{
|
||||
PktEndQuest* lpPktEQ = static_cast<PktEndQuest*>(lpPktBase);
|
||||
|
||||
*dwCharID_Out = lpPktEQ->m_dwCharID;
|
||||
*wQuestID_Out = lpPktEQ->m_wQuestID;
|
||||
*bSave_Out = lpPktEQ->m_bSave;
|
||||
|
||||
return lpPktEQ->GetError();
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
#ifndef _GAMA_CLIENT_PARSE_CHAR_QUEST_
|
||||
#define _GAMA_CLIENT_PARSE_CHAR_QUEST_
|
||||
|
||||
#include <Network/Packet/PacketStruct/CharQuestPacket.h>
|
||||
|
||||
namespace ParsePacket
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
|
||||
unsigned long HandleCharStartQuest(PktBase* lpPktBase, unsigned long *dwCharID_Out, unsigned long *dwNPCID_Out, unsigned short *wQuestID_Out);
|
||||
unsigned long HandleCharCancelQuest(PktBase* lpPktBase, unsigned long *dwCharID_Out, unsigned short *wQuestID_Out);
|
||||
unsigned long HandleCharOperateTrigger(PktBase* lpPktBase, unsigned long *dwCharID_Out, unsigned short *wQuestID_Out, unsigned char *cPhase_Out, unsigned char *cTrigger_Out, unsigned char *cCount_Out);
|
||||
unsigned long HandleCharQuestInfo(PktBase* lpPktBase, unsigned long *dwCharID_Out, unsigned short *wExecutingQuestNum_Out, PktQuestDB::ExecutingQuest **lppExecutingQuest_Out, unsigned short *wHistoryQuestNum_Out, unsigned short **lppHistoryQuest_Out);
|
||||
unsigned long HandleCharEndQuest(PktBase* lpPktBase, unsigned long *dwCharID_Out, unsigned short *wQuestID_Out, bool *bSave_Out);
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,113 @@
|
||||
#include "stdafx.h"
|
||||
#include "ParseSkill.h"
|
||||
|
||||
#include <Network/Packet/PacketStruct/CharMovePacket.h>
|
||||
#include <Network/Packet/PacketStruct/CharStatusPacket.h>
|
||||
#include <Network/Packet/PacketStruct/CharAttackPacket.h>
|
||||
#include "GMMemory.h"
|
||||
|
||||
unsigned long ParsePacket::HandleCharSkillLock(PktBase* lpPktBase, unsigned long *CharID_Out,
|
||||
unsigned short *SkillID_Out, unsigned char *Index_Out)
|
||||
{
|
||||
LPPktSk lpSkPt = (LPPktSk)lpPktBase;
|
||||
|
||||
*CharID_Out = lpSkPt->m_dwCharID;
|
||||
*SkillID_Out = lpSkPt->m_wSkill;
|
||||
*Index_Out = lpSkPt->m_cIndex;
|
||||
|
||||
return lpSkPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharSkillUnLock(PktBase* lpPktBase, unsigned long *CharID_Out,
|
||||
unsigned short *SkillID_Out, unsigned char *Index_Out, unsigned char *cSkillLevel, Item::ItemPos* itemPos_Out)
|
||||
{
|
||||
LPPktSkULAck lpSkULAckPt = (LPPktSkULAck)lpPktBase;
|
||||
|
||||
*CharID_Out = lpSkULAckPt->m_dwCharID;
|
||||
*SkillID_Out = lpSkULAckPt->m_wSkill;
|
||||
*Index_Out = lpSkULAckPt->m_cIndex;
|
||||
*cSkillLevel = lpSkULAckPt->m_cSkillLevel;
|
||||
*itemPos_Out = lpSkULAckPt->m_ItemPos;
|
||||
|
||||
return lpSkULAckPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharSkillCreate(PktBase* lpPktBase, unsigned long *CharID_Out,
|
||||
unsigned short *SkillID_Out, unsigned char *Index_Out)
|
||||
{
|
||||
LPPktSk lpSkPt = (LPPktSk)lpPktBase;
|
||||
|
||||
*CharID_Out = lpSkPt->m_dwCharID;
|
||||
*SkillID_Out = lpSkPt->m_wSkill;
|
||||
*Index_Out = lpSkPt->m_cIndex;
|
||||
|
||||
return lpSkPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharSkillErase(PktBase* lpPktBase, unsigned long *CharID_Out,
|
||||
unsigned short *SkillID_Out, unsigned char *Index_Out, Item::ItemPos* itemPos_Out)
|
||||
{
|
||||
LPPktSk lpSkPt = (LPPktSk)lpPktBase;
|
||||
|
||||
*CharID_Out = lpSkPt->m_dwCharID;
|
||||
*SkillID_Out = lpSkPt->m_wSkill;
|
||||
*Index_Out = lpSkPt->m_cIndex;
|
||||
*itemPos_Out = lpSkPt->m_ItemPos;
|
||||
|
||||
return lpSkPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharSummonCmd(PktBase* lpPktBase, unsigned long *CharID_Out,
|
||||
unsigned char *Cmd_Out, unsigned long *TargetID_Out)
|
||||
{
|
||||
LPPktSummonCmd lpSuCPtAck = (LPPktSummonCmd)lpPktBase;
|
||||
|
||||
*CharID_Out = lpSuCPtAck->m_dwCharID;
|
||||
*Cmd_Out = lpSuCPtAck->m_cCmd;
|
||||
*TargetID_Out = lpSuCPtAck->m_dwTargetID;
|
||||
|
||||
return lpSuCPtAck->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharSummon(PktBase* lpPktBase, unsigned long *CharID_Out,
|
||||
unsigned long *TargetID_Out, POS* lpPos_Out)
|
||||
{
|
||||
LPPktSummon lpSummonPt = (LPPktSummon)lpPktBase;
|
||||
|
||||
*CharID_Out = lpSummonPt->m_dwCharID;
|
||||
*TargetID_Out = lpSummonPt->m_dwTargetID;
|
||||
|
||||
CNetworkPos& netPos = lpSummonPt->m_NetworkPos;
|
||||
|
||||
lpPos_Out->fPointX = netPos.GetXPos();
|
||||
lpPos_Out->fPointY = netPos.GetYPos();
|
||||
lpPos_Out->fPointZ = netPos.GetZPos();
|
||||
|
||||
return lpSummonPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
unsigned long ParsePacket::HandleCharSpellInfo(PktBase* lpPktBase, unsigned long *CharID_Out,
|
||||
unsigned char *SpellType_Out, unsigned short *EnchantLevel_Out, unsigned long *EnchantTime_Out,
|
||||
bool *OnOff_Out)
|
||||
{
|
||||
LPPktSpInfo lpSpInfoPt = (LPPktSpInfo)lpPktBase;
|
||||
|
||||
*CharID_Out = lpSpInfoPt->m_dwCharID;
|
||||
*SpellType_Out = lpSpInfoPt->m_cSpellType;
|
||||
*EnchantLevel_Out = lpSpInfoPt->m_nEnchantLevel;
|
||||
*EnchantTime_Out = lpSpInfoPt->m_dwEnchantTime;
|
||||
*OnOff_Out = lpSpInfoPt->m_bOnOff;
|
||||
|
||||
return lpSpInfoPt->GetError();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
#ifndef _GAMA_CLIENT_PARSE_SKILL_PACKET_H_
|
||||
#define _GAMA_CLIENT_PARSE_SKILL_PACKET_H_
|
||||
|
||||
#include <Item/ItemStructure.h>
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
struct PktBase;
|
||||
|
||||
namespace ParsePacket
|
||||
{
|
||||
// <20><>ų
|
||||
unsigned long HandleCharSkillLock(PktBase* lpPktBase, unsigned long *CharID_Out, unsigned short *SkillID_Out, unsigned char *Index_Out);
|
||||
unsigned long HandleCharSkillUnLock(PktBase* lpPktBase, unsigned long *CharID_Out, unsigned short *SkillID_Out, unsigned char *Index_Out, unsigned char *SkillLevel_Out, Item::ItemPos* itemPos_Out);
|
||||
unsigned long HandleCharSkillCreate(PktBase* lpPktBase, unsigned long *CharID_Out, unsigned short *SkillID_Out, unsigned char *Index_Out);
|
||||
unsigned long HandleCharSkillErase(PktBase* lpPktBase, unsigned long *CharID_Out, unsigned short *SkillID_Out, unsigned char *Index_Out, Item::ItemPos* itemPos_Out);
|
||||
unsigned long HandleCharSummonCmd(PktBase* lpPktBase, unsigned long *CharID_Out, unsigned char *Cmd_Out, unsigned long *TargetID_Out);
|
||||
unsigned long HandleCharSummon(PktBase* lpPktBase, unsigned long *CharID_Out, unsigned long *TargetID_Out, POS* lpPos_Out);
|
||||
unsigned long HandleCharSpellInfo(PktBase* lpPktBase, unsigned long *CharID_Out, unsigned char *SpellType_Out, unsigned short *EnchantLevel_Out, unsigned long *EnchantTime_Out, bool *OnOff_Out);
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,164 @@
|
||||
#include "stdafx.h"
|
||||
|
||||
#include "SendAttack.h"
|
||||
#include "SendPacket.h"
|
||||
|
||||
#include <Network/ClientSocket/ClientSocket.h>
|
||||
#include <Network/Packet/PacketCommand.h>
|
||||
#include <Network/Packet/PacketStruct/CharAttackPacket.h>
|
||||
#include <Network/Packet/PacketStruct/CharItemPacket.h>
|
||||
#include <Network/Packet/PacketStruct/CharStatusPacket.h>
|
||||
#include <Network/ClientNetwork/NetworkMsgBlock.h>
|
||||
#include <Network/ClientNetwork/ClientEventHandler.h>
|
||||
|
||||
#include <GameGuardLib/NPGameLib.h>
|
||||
|
||||
#include <mmsystem.h>
|
||||
#include "GMMemory.h"
|
||||
|
||||
bool SendPacket::CharAttack(ClientNet::CClientEventHandler* lpHandler, unsigned long CharID_In,
|
||||
POS* lpPos_In, float Dir_In, AtType &AtType_In, AtNode &AtNode_In)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == CharID_In, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(
|
||||
sizeof(PktAt) + ClientSocket::MAX_GAME_GUARD_CRYPT_HEADER_SIZE, lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktAt* lpAtPt = reinterpret_cast<PktAt *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpAtPt->m_dwCharID = CharID_In;
|
||||
lpAtPt->m_Postion = *lpPos_In;
|
||||
lpAtPt->m_fDir = Dir_In;
|
||||
lpAtPt->m_AtType = AtType_In;
|
||||
lpAtPt->m_AtNode = AtNode_In;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD>忡 <20><><EFBFBD><EFBFBD> <20><>Ŷ <20><>ȣȭ
|
||||
unsigned short wPacketSize = static_cast<unsigned short>(
|
||||
EncryptPacket(lpMsgBlock->wr_ptr() + sizeof(PktBase), sizeof(PktAt) - sizeof(PktBase)));
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktBase) + wPacketSize, CmdCharAttack, timeGetTime());
|
||||
}
|
||||
|
||||
bool SendPacket::CharRespawn(ClientNet::CClientEventHandler* lpHandler, unsigned long CharID_In,
|
||||
unsigned char cCmd_In, POS& Pos_In, unsigned long dwTownID_In)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == CharID_In, true);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(
|
||||
sizeof(PktRs), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktRs* lpRsPt = reinterpret_cast<PktRs *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpRsPt->m_dwCharID = CharID_In;
|
||||
lpRsPt->m_cCmd = cCmd_In;
|
||||
lpRsPt->m_Position = Pos_In;
|
||||
lpRsPt->m_dwTownID = dwTownID_In;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktRs), CmdCharRespawn, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::CharRespawnInfo(ClientNet::CClientEventHandler* lpHandler, unsigned long CharID_In)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == CharID_In, true);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(
|
||||
sizeof(PktRs), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktRsInfo* lpPktRsInfo = reinterpret_cast<PktRsInfo*>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpPktRsInfo->m_dwCharID = CharID_In;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktRsInfo), CmdCharRespawnInfo, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::CharRespawnAreaInfo(ClientNet::CClientEventHandler* lpHandler, unsigned long CharID_In, unsigned long TownID_In)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == CharID_In, true);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(
|
||||
sizeof(PktRs), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktRsAreaInfo* lpPktRsAreaInfo = reinterpret_cast<PktRsAreaInfo*>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpPktRsAreaInfo->m_dwCharID = CharID_In;
|
||||
lpPktRsAreaInfo->m_dwTownID = TownID_In;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktRsAreaInfo), CmdCharRespawnAreaInfo, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::CharRespawnWaitQueue(ClientNet::CClientEventHandler* lpHandler, unsigned long CharID_In)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == CharID_In, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(
|
||||
sizeof(PktRsWaitQueue), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktRsWaitQueue* lpRsWQPt = reinterpret_cast<PktRsWaitQueue *>(lpMsgBlock->wr_ptr());
|
||||
lpRsWQPt->m_dwCharID = CharID_In;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktRsWaitQueue), CmdCharRespawnWaitQueue, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::CharSwitchHand(ClientNet::CClientEventHandler* lpHandler, unsigned char SelectHand_In)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(
|
||||
sizeof(PktSwEQ), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktSwEQ* lpSwHPt = reinterpret_cast<PktSwEQ *>(lpMsgBlock->wr_ptr());
|
||||
lpSwHPt->m_cType = 0;
|
||||
lpSwHPt->m_cSelect = SelectHand_In;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktSwEQ), CmdCharSwitchEQ, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::CharPeaceMode(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID_In, bool bPeace_In)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == dwCharID_In, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktPeace), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktPeace* lpPeacePt = reinterpret_cast<PktPeace *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpPeacePt->m_dwCharID = dwCharID_In;
|
||||
lpPeacePt->m_bPeace = bPeace_In;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktPeace), CmdCharPeaceMode, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::CharDuelCmd(ClientNet::CClientEventHandler* lpHandler, unsigned long SenderID_In,
|
||||
unsigned long RecverID_In, unsigned char Cmd_In)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktDuC), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktDuC* lpDuCPt = reinterpret_cast<PktDuC *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpDuCPt->m_dwSenderID = SenderID_In;
|
||||
lpDuCPt->m_dwRecverID = RecverID_In;
|
||||
lpDuCPt->m_cCmd = Cmd_In;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktDuC), CmdCharDuelCmd, 0, 0);
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
#ifndef _GAMA_CLIENT_SEND_ATTACK_PACKET_H_
|
||||
#define _GAMA_CLIENT_SEND_ATTACK_PACKET_H_
|
||||
|
||||
#include <DB/DBdefine.h>
|
||||
#include <Network/Packet/PacketStruct/CharAttackPacketStruct.h>
|
||||
|
||||
// forward decl.
|
||||
struct CHAR_CREATE;
|
||||
class ClientSocket;
|
||||
|
||||
namespace ClientNet
|
||||
{
|
||||
// forward decl.
|
||||
class CClientEventHandler;
|
||||
}
|
||||
|
||||
namespace SendPacket
|
||||
{
|
||||
bool CharAttack(ClientNet::CClientEventHandler* lpHandler, unsigned long CharID_In, POS* lpPos_In, float Dir_In, AtType &AtType_In, AtNode &AtNode_In);
|
||||
bool CharRespawn(ClientNet::CClientEventHandler* lpHandler, unsigned long CharID_In, unsigned char cCmd_In, POS& Pos_In, unsigned long dwTownID_In);
|
||||
bool CharRespawnInfo(ClientNet::CClientEventHandler* lpHandler, unsigned long CharID_In);
|
||||
bool CharRespawnAreaInfo(ClientNet::CClientEventHandler* lpHandler, unsigned long CharID_In, unsigned long TownID_In);
|
||||
bool CharRespawnWaitQueue(ClientNet::CClientEventHandler* lpHandler, unsigned long CharID_In);
|
||||
bool CharPeaceMode(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID_In, bool bPeace_In);
|
||||
bool CharSwitchHand(ClientNet::CClientEventHandler* lpHandler, unsigned char SelectHand_In);
|
||||
bool CharDuelCmd(ClientNet::CClientEventHandler* lpHandler, unsigned long SenderID_In, unsigned long RecverID_In, unsigned char Cmd_In);
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,211 @@
|
||||
#include "stdafx.h"
|
||||
#include <winsock2.h>
|
||||
#include <windows.h>
|
||||
|
||||
#include "SendPacket.h"
|
||||
#include "SendAuthServer.h"
|
||||
|
||||
#include <DB/DBDefine.h>
|
||||
|
||||
#include <Network/ClientSocket/ClientSocket.h>
|
||||
#include <Network/Packet/PacketCommand.h>
|
||||
#include <Network/Packet/PacketStruct/ClientToAuthServer.h>
|
||||
#include <Network/Packet/PacketStruct/UnifiedCharPacket.h>
|
||||
|
||||
#include <Network/ClientNetwork/NetworkMsgBlock.h>
|
||||
#include <Network/ClientNetwork/ClientEventHandler.h>
|
||||
#include "GMMemory.h"
|
||||
|
||||
unsigned long GetDiskSerial(char Drv_In)
|
||||
{
|
||||
unsigned long VolumeSerial = 0;
|
||||
|
||||
char Root[10] = "";
|
||||
sprintf(Root, "%c:\\", Drv_In);
|
||||
if(!GetVolumeInformation(Root, 0, 0, &VolumeSerial, 0, 0, 0, 0))
|
||||
return 0;
|
||||
|
||||
return VolumeSerial;
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::AuthAccount(ClientSocket& clientSocket, char* UserID_In, char* UserPW_In,
|
||||
unsigned long ClientVer_In, unsigned long CheckSum_In, unsigned short Flag_In)
|
||||
{
|
||||
clientSocket.ClearAddress(ClientSocket::MoveZoneAddr);
|
||||
|
||||
ClientNet::CClientEventHandler* lpHandler = &clientSocket.GetHandler(ClientSocket::AuthEventHandler);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(
|
||||
sizeof(PktAU), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktAU* lpAUPt = reinterpret_cast<PktAU *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
strncpy(lpAUPt->m_UserAccount, UserID_In, PktAU::ID_LEN);
|
||||
strncpy(lpAUPt->m_UserPassword, UserPW_In, PktAU::PASS_LEN);
|
||||
|
||||
lpAUPt->m_dwSessionID = GetDiskSerial('C');
|
||||
lpAUPt->m_dwClientVer = ClientVer_In;
|
||||
lpAUPt->m_dwCheckSum = CheckSum_In;
|
||||
|
||||
lpAUPt->m_usFlag = Flag_In;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktAU), CmdAuthAccount, 0, PktBase::NO_SERVER_ERR);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::JapanAuthAccount(ClientSocket& clientSocket, char* UserID_In,
|
||||
unsigned long dwUID, unsigned long ClientVer_In,
|
||||
unsigned long CheckSum_In, unsigned short Flag_In)
|
||||
{
|
||||
clientSocket.ClearAddress(ClientSocket::MoveZoneAddr);
|
||||
|
||||
ClientNet::CClientEventHandler* lpHandler =
|
||||
&clientSocket.GetHandler(ClientSocket::AuthEventHandler);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(
|
||||
sizeof(PktJPAU), lpHandler->GetPeerAddress());
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktJPAU* lpJPAUPt = reinterpret_cast<PktJPAU *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
strncpy(lpJPAUPt->m_szUserAccount, UserID_In, 16);
|
||||
|
||||
lpJPAUPt->m_dwUserID = dwUID;
|
||||
lpJPAUPt->m_dwSessionID = GetDiskSerial('C');
|
||||
lpJPAUPt->m_dwClientVer = ClientVer_In;
|
||||
lpJPAUPt->m_dwCheckSum = CheckSum_In;
|
||||
|
||||
lpJPAUPt->m_usFlag = Flag_In;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktJPAU), CmdJapanAuthAccount, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
bool SendPacket::UserLogin(ClientNet::CClientEventHandler* lpHandler, unsigned long UserID_In, unsigned char cLoginType_In)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(
|
||||
sizeof(PktULi), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktULi* lpULiPt = reinterpret_cast<PktULi *>(lpMsgBlock->wr_ptr());
|
||||
lpULiPt->m_dwUserID = UserID_In;
|
||||
lpULiPt->m_cLoginType = cLoginType_In;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktULi), CmdUserLogin, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharCreate(ClientNet::CClientEventHandler* lpHandler, unsigned long UserID_In,
|
||||
unsigned long SlotNum_In, CHAR_CREATE &Create_In)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(
|
||||
sizeof(PktCC), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktCC* lpCCPt = reinterpret_cast<PktCC *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpCCPt->m_dwUserID = UserID_In;
|
||||
lpCCPt->m_dwSlotNum = SlotNum_In;
|
||||
lpCCPt->m_CreateChar = Create_In;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktCC), CmdCharCreate, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharSelect(ClientNet::CClientEventHandler* lpHandler, unsigned long UserID_In,unsigned long CharID_In)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(
|
||||
sizeof(PktCS), lpHandler->GetPeerAddress());
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktCS* lpCSPt = reinterpret_cast<PktCS *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpCSPt->m_dwUserID = UserID_In;
|
||||
lpCSPt->m_dwCharID = CharID_In;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktCS), CmdCharSelect, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
bool SendPacket::CharDelete(ClientNet::CClientEventHandler* lpHandler, unsigned long UserID_In,
|
||||
unsigned long CharID_In, unsigned long SlotNum_In, char* szPassword)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(
|
||||
sizeof(PktCD), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktCD* lpCDPt = reinterpret_cast<PktCD *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpCDPt->m_dwUserID = UserID_In;
|
||||
lpCDPt->m_dwCharID = CharID_In;
|
||||
lpCDPt->m_dwSlotNum = SlotNum_In;
|
||||
|
||||
memset(lpCDPt->m_szPassword, 0, STORE_INFO::MAX_PASS_LEN);
|
||||
memcpy(lpCDPt->m_szPassword, szPassword, STORE_INFO::MAX_PASS_LEN);
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktCD), CmdCharDelete, 0, 0);
|
||||
}
|
||||
|
||||
// WORK_LIST 2.1 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD>
|
||||
bool SendPacket::SelectAccountNation(ClientNet::CClientEventHandler* lpHandler, unsigned long UserID_In,
|
||||
unsigned char cType, unsigned char cAccountNation_In)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(
|
||||
sizeof(PktSelectAccountNation), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktSelectAccountNation* lpSANPt = reinterpret_cast<PktSelectAccountNation*>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpSANPt->m_dwUserID = UserID_In;
|
||||
lpSANPt->m_cType = cType;
|
||||
lpSANPt->m_cAccountNation = cAccountNation_In;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktSelectAccountNation), CmdSelectAccountNation, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::UnifiedCharSelect(ClientNet::CClientEventHandler* lpHandler, const char* szPassword,
|
||||
unsigned long* lpdwCID, unsigned long dwCIDNum,
|
||||
unsigned char cSelectedStoreServerGroup,
|
||||
unsigned char cSelectedNation)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(
|
||||
sizeof(PktUnifiedCharSelectReq), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
memset(lpMsgBlock->wr_ptr(), 0, sizeof(PktUnifiedCharSelectReq));
|
||||
|
||||
PktUnifiedCharSelectReq* lpPktUnifiedCharSelectReq =
|
||||
reinterpret_cast<PktUnifiedCharSelectReq*>(lpMsgBlock->wr_ptr());
|
||||
|
||||
strncpy(lpPktUnifiedCharSelectReq->szPassword,
|
||||
szPassword, PktUnifiedCharSelectReq::MAX_PASSWORD_LEN);
|
||||
|
||||
lpPktUnifiedCharSelectReq->szPassword[PktUnifiedCharSelectReq::MAX_PASSWORD_LEN - 1] = 0;
|
||||
|
||||
memcpy(lpPktUnifiedCharSelectReq->dwCID, lpdwCID,
|
||||
sizeof(unsigned long) * min(USER_INFO::MAX_CHAR_NUM, dwCIDNum));
|
||||
|
||||
lpPktUnifiedCharSelectReq->cSelectedServerGroupID = cSelectedStoreServerGroup;
|
||||
lpPktUnifiedCharSelectReq->cSelectedNation = cSelectedNation;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktUnifiedCharSelectReq), CmdUnifiedCharSelect, 0, 0);
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
#ifndef _GAMA_CLIENT_SEND_PACKET_H_
|
||||
#define _GAMA_CLIENT_SEND_PACKET_H_
|
||||
|
||||
// forward decl.
|
||||
class ClientSocket;
|
||||
struct CHAR_CREATE;
|
||||
|
||||
namespace ClientNet
|
||||
{
|
||||
// forward decl.
|
||||
class CClientEventHandler;
|
||||
}
|
||||
|
||||
namespace SendPacket
|
||||
{
|
||||
bool AuthAccount(ClientSocket& clientSocket, char* UserID_In, char* UserPW_In, unsigned long ClientVer_In, unsigned long CheckSum_In, unsigned short Flag_In = 0);
|
||||
bool JapanAuthAccount(ClientSocket& clientSocket, char* UserID_In, unsigned long dwUID, unsigned long ClientVer_In, unsigned long CheckSum_In, unsigned short Flag_In = 0);
|
||||
|
||||
bool UserLogin(ClientNet::CClientEventHandler* lpHandler, unsigned long UserID_In, unsigned char cLoginType_In);
|
||||
bool CharSelect(ClientNet::CClientEventHandler* lpHandler, unsigned long UserID_In, unsigned long CharID_In);
|
||||
bool CharCreate(ClientNet::CClientEventHandler* lpHandler, unsigned long UserID_In, unsigned long SlotNum_In, CHAR_CREATE &Create_In);
|
||||
bool CharDelete(ClientNet::CClientEventHandler* lpHandler, unsigned long UserID_In, unsigned long CharID_In, unsigned long SlotNum_In, char* szPassword);
|
||||
|
||||
// WORK_LIST 2.1 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD>
|
||||
bool SelectAccountNation(ClientNet::CClientEventHandler* lpHandler, unsigned long UserID_In, unsigned char cType, unsigned char cAccountNation_In);
|
||||
|
||||
// <20><><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
bool UnifiedCharSelect(ClientNet::CClientEventHandler* lpHandler, const char* szPassword,
|
||||
unsigned long* lpdwCID, unsigned long dwCIDNum,
|
||||
unsigned char cSelectedStoreServerGroup, unsigned char cSelectedNation);
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,103 @@
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
#include <Network/ClientNetwork/ClientEventHandler.h>
|
||||
#include <Network/ClientSocket/ClientSocket.h>
|
||||
|
||||
#include <Network/Packet/PacketCommand.h>
|
||||
#include <Network/Packet/PacketStruct/BGServerPacket.h>
|
||||
|
||||
#include "SendPacket.h"
|
||||
#include "SendBGServer.h"
|
||||
#include "GMMemory.h"
|
||||
|
||||
|
||||
bool SendPacket::CharBGServerMapList(ClientNet::CClientEventHandler* lpHandler)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(
|
||||
sizeof(PktBGServerMapList), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktBGServerMapList* lpBGSMLPt = reinterpret_cast<PktBGServerMapList *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpBGSMLPt->m_bAll = true;
|
||||
lpBGSMLPt->m_cMapInfoNodeNum = PktBGServerMapList::MAX_MAP_NUM;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktBGServerMapList), CmdBGServerMapList, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharBGServerResultList(ClientNet::CClientEventHandler* lpHandler)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(
|
||||
sizeof(PktBGServerResultList), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktBGServerResultList* lpBGSRLPt = reinterpret_cast<PktBGServerResultList *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpBGSRLPt->m_bAll = true;
|
||||
lpBGSRLPt->m_cResultInfoNodeNum = PktBGServerResultList::MAX_MAP_NUM;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktBGServerResultList), CmdBGServerResultList, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharBGServerMoveZone(ClientNet::CClientEventHandler* lpHandler, unsigned short wMapNumber, unsigned char cMoveType)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(
|
||||
sizeof(PktBGServerMoveZone), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktBGServerMoveZone* lpBGSMZPt = reinterpret_cast<PktBGServerMoveZone *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpBGSMZPt->m_wMapNumber = wMapNumber;
|
||||
lpBGSMZPt->m_cMoveType = cMoveType;
|
||||
lpBGSMZPt->m_cZone = 0;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktBGServerMoveZone), CmdBGServerMoveZone, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharBGServerCharSlot(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned char cGroup)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(
|
||||
sizeof(PktBGServerCharSlot), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktBGServerCharSlot* lpBGSCSPt = reinterpret_cast<PktBGServerCharSlot *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpBGSCSPt->m_dwCID = dwCID;
|
||||
lpBGSCSPt->m_dwUID = 0;
|
||||
lpBGSCSPt->m_cGroup = cGroup;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktBGServerCharSlot), CmdBGServerCharSlot, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharBGServerMileageChange(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned char cGroup, unsigned char cCmd,
|
||||
unsigned long dwMileage)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(
|
||||
sizeof(PktBGServerMileageChange), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktBGServerMileageChange* lpBGSMCPt = reinterpret_cast<PktBGServerMileageChange *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpBGSMCPt->m_dwCID = dwCID;
|
||||
lpBGSMCPt->m_cGroup = cGroup;
|
||||
lpBGSMCPt->m_cCmd = cCmd;
|
||||
lpBGSMCPt->m_dwGold = 0;
|
||||
lpBGSMCPt->m_dwMileage = dwMileage;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktBGServerMileageChange), CmdBGServerMileageChange, 0, 0);
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
#ifndef _GAMA_CLIENT_SEND_BATTLEGROUND_SERVER_H_
|
||||
#define _GAMA_CLIENT_SEND_BATTLEGROUND_SERVER_H_
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
class ClientSocket;
|
||||
|
||||
namespace ClientNet
|
||||
{
|
||||
class CClientEventHandler;
|
||||
}
|
||||
|
||||
namespace SendPacket
|
||||
{
|
||||
bool CharBGServerMapList(ClientNet::CClientEventHandler* lpHandler);
|
||||
bool CharBGServerResultList(ClientNet::CClientEventHandler* lpHandler);
|
||||
bool CharBGServerMoveZone(ClientNet::CClientEventHandler* lpHandler, unsigned short wMapNumber, unsigned char cMoveType);
|
||||
bool CharBGServerCharSlot(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned char cGroup);
|
||||
bool CharBGServerMileageChange(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned char cGroup, unsigned char cCmd, unsigned long dwMileage);
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,169 @@
|
||||
#include "stdafx.h"
|
||||
#include "SendPacket.h"
|
||||
#include "SendCastle.h"
|
||||
|
||||
#include <Network/ClientNetwork/ClientEventHandler.h>
|
||||
#include <Network/Packet/PacketCommand.h>
|
||||
#include <Network/Packet/PacketStruct/CastlePacket.h>
|
||||
#include "GMMemory.h"
|
||||
|
||||
|
||||
bool SendPacket::CharCastleCmd(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned long dwCastleID,
|
||||
unsigned long dwCastleObjectID, unsigned long dwValue1, unsigned long dwValue2, unsigned char cSubCmd)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == dwCID, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(
|
||||
sizeof(PktCastleCmd), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
LPPktCastleCmd lpCCPt = reinterpret_cast<LPPktCastleCmd>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpCCPt->m_dwCID = dwCID;
|
||||
lpCCPt->m_dwCastleID = dwCastleID;
|
||||
lpCCPt->m_dwCastleObjectID = dwCastleObjectID;
|
||||
lpCCPt->m_dwValue1 = dwValue1;
|
||||
lpCCPt->m_dwValue2 = dwValue2;
|
||||
lpCCPt->m_cSubCmd = cSubCmd;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktCastleCmd), CmdCastleCmd, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::CharCampCmd(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned long dwCampID,
|
||||
unsigned long dwValue, unsigned long dwValue2, unsigned char cSubCmd)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == dwCID, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(
|
||||
sizeof(PktCampCmd), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
LPPktCampCmd lpCCPt = reinterpret_cast<LPPktCampCmd>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpCCPt->m_dwCID = dwCID;
|
||||
lpCCPt->m_dwCampID = dwCampID;
|
||||
lpCCPt->m_cState = 0;
|
||||
lpCCPt->m_dwValue1 = dwValue;
|
||||
lpCCPt->m_dwValue2 = dwValue2;
|
||||
lpCCPt->m_cSubCmd = cSubCmd;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktCampCmd), CmdCampCmd, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::CharSiegeArmsCmd(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned long dwArmsID, unsigned char cSubCmd)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == dwCID, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(
|
||||
sizeof(PktCampCmd), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
LPPktSiegeArmsCmd lpSACPt = reinterpret_cast<LPPktSiegeArmsCmd>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpSACPt->m_dwCID = dwCID;
|
||||
lpSACPt->m_dwArmsID = dwArmsID;
|
||||
lpSACPt->m_cSubCmd = cSubCmd;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktSiegeArmsCmd), CmdSiegeArmsCmd, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::CharCastleRight(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned long dwCastleID, CastleRight castleRight)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(
|
||||
sizeof(PktCastleRight), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktCastleRight* lpCRPt = reinterpret_cast<PktCastleRight *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpCRPt->m_dwCID = dwCID;
|
||||
lpCRPt->m_dwCastleID = dwCastleID;
|
||||
lpCRPt->m_CastleRight = castleRight;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktCastleRight), CmdCastleRight, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::CharCampRight(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned long dwCampID, CampRight campRight)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(
|
||||
sizeof(PktCampRight), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktCampRight* lpCRPt = reinterpret_cast<PktCampRight *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpCRPt->m_dwCID = dwCID;
|
||||
lpCRPt->m_dwCampID = dwCampID;
|
||||
lpCRPt->m_CampRight = campRight;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktCampRight), CmdCampRight, 0, 0);
|
||||
}
|
||||
|
||||
// <20><> <20><>¡<EFBFBD><C2A1> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֱ<EFBFBD>/<2F><><EFBFBD><EFBFBD>
|
||||
bool SendPacket::CharTakeCastleJewel(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned long dwCastleID, unsigned char cSubCmd,
|
||||
unsigned short wItemID, unsigned char cIndex, unsigned char cNum, Item::ItemPos pos)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(
|
||||
sizeof(PktTakeCastleJewel), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktTakeCastleJewel* lpPktTCJ = reinterpret_cast<PktTakeCastleJewel *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpPktTCJ->m_dwCID = dwCID;
|
||||
lpPktTCJ->m_dwCastleID = dwCastleID;
|
||||
lpPktTCJ->m_cSubCmd = cSubCmd;
|
||||
lpPktTCJ->m_wItemID = wItemID;
|
||||
lpPktTCJ->m_cIndex = cIndex;
|
||||
lpPktTCJ->m_cNum = cNum;
|
||||
lpPktTCJ->m_Pos = pos;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktTakeCastleJewel), CmdTakeCastleJewel, 0, 0);
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ֱ<EFBFBD>/<2F><><EFBFBD><EFBFBD>
|
||||
bool SendPacket::CharTakeMaterial(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned long dwCampID, unsigned char cSubCmd,
|
||||
unsigned char cNum, Item::ItemPos pos)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(
|
||||
sizeof(PktTakeMaterial), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktTakeMaterial* lpPktTM = reinterpret_cast<PktTakeMaterial *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpPktTM->m_dwCID = dwCID;
|
||||
lpPktTM->m_dwCampID = dwCampID;
|
||||
lpPktTM->m_cSubCmd = cSubCmd;
|
||||
lpPktTM->m_cNum = cNum;
|
||||
lpPktTM->m_Pos = pos;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktTakeMaterial), CmdTakeMaterial, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::WarOnOff(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned char cFlag, unsigned char cType)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktWarOnOff), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktWarOnOff* lpPktWarOnOff = reinterpret_cast<PktWarOnOff*>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpPktWarOnOff->m_dwCID = dwCID;
|
||||
lpPktWarOnOff->m_cType = cType;
|
||||
lpPktWarOnOff->m_cFlag = cFlag;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktWarOnOff), CmdWarOnOff, 0, 0);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
#ifndef _GAMA_CLIENT_SEND_CASTLE_PACKET_H_
|
||||
#define _GAMA_CLIENT_SEND_CASTLE_PACKET_H_
|
||||
|
||||
#include <Network/Packet/PacketStruct/CastlePacket.h>
|
||||
|
||||
namespace ClientNet
|
||||
{
|
||||
// forward decl.
|
||||
class CClientEventHandler;
|
||||
}
|
||||
|
||||
|
||||
namespace SendPacket
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ
|
||||
bool CharCastleCmd(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned long dwCastleID,
|
||||
unsigned long dwCastleObjectID, unsigned long dwValue1, unsigned long dwValue2, unsigned char cSubCmd);
|
||||
|
||||
bool CharCampCmd(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned long dwCampID,
|
||||
unsigned long dwValue, unsigned long dwValue2, unsigned char cSubCmd);
|
||||
|
||||
bool CharSiegeArmsCmd(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned long dwArmsID, unsigned char cSubCmd);
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ŷ
|
||||
bool CharCastleRight(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned long dwCastleID, CastleRight castleRight);
|
||||
|
||||
bool CharCampRight(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned long dwCampID, CampRight campRight);
|
||||
|
||||
|
||||
|
||||
// <20><> <20><>¡<EFBFBD><C2A1> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ֱ<EFBFBD>/<2F><><EFBFBD><EFBFBD>
|
||||
bool CharTakeCastleJewel(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned long dwCastleID, unsigned char cSubCmd,
|
||||
unsigned short wItemID, unsigned char cIndex, unsigned char cNum, Item::ItemPos pos);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ֱ<EFBFBD>/<2F><><EFBFBD><EFBFBD>
|
||||
bool CharTakeMaterial(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned long dwCampID, unsigned char cSubCmd,
|
||||
unsigned char cNum, Item::ItemPos pos);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
bool WarOnOff(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned char cFlag, unsigned char cType);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,623 @@
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
#include <Utility/CheckSum/Crc32Static.h>
|
||||
|
||||
#include <Network/ClientNetwork/ClientEventHandler.h>
|
||||
#include <Network/ClientSocket/ClientSocket.h>
|
||||
#include <Network/Packet/PacketCommand.h>
|
||||
#include <Network/Packet/PacketStruct/CharCommunityPacket.h>
|
||||
#include <Network/Packet/PacketStruct/PartyPacket.h>
|
||||
#include <Network/Packet/PacketStruct/GuildPacket.h>
|
||||
|
||||
#include "SendPacket.h"
|
||||
#include "SendCommunity.h"
|
||||
#include "GMMemory.h"
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD>
|
||||
|
||||
bool SendPacket::CharCreateGuild(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, char* szGuildName)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(
|
||||
sizeof(PktCreateGuild), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktCreateGuild* lpCGPt = reinterpret_cast<PktCreateGuild *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpCGPt->m_dwCID = dwCID;
|
||||
lpCGPt->m_dwGID = 0; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD><CCB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>´<DEB4>.
|
||||
lpCGPt->m_cInclination = 0; // <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD>Ѵ<EFBFBD>.
|
||||
|
||||
strncpy(lpCGPt->m_szGuildName, szGuildName, Guild::MAX_GUILD_NAME_LEN);
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktCreateGuild), CmdCreateGuild, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::CharGuildCmd(ClientNet::CClientEventHandler* lpHandler, unsigned long dwGID,
|
||||
unsigned long dwSenderID, unsigned long dwReferenceID, unsigned short wCmd)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(
|
||||
sizeof(PktGuildCmd), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktGuildCmd* lpGCPt = reinterpret_cast<PktGuildCmd *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpGCPt->m_dwGID = dwGID & ~Guild::MEMBER_WAIT_BIT;
|
||||
|
||||
lpGCPt->m_dwSenderID = dwSenderID;
|
||||
lpGCPt->m_dwReferenceID = dwReferenceID;
|
||||
|
||||
lpGCPt->m_wCmd = wCmd;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktGuildCmd), CmdGuildCmd, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::CharGuildMark(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned long dwGID, char* szMark)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktGuildMark), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktGuildMark* lpGMPt= reinterpret_cast<PktGuildMark *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpGMPt->m_dwCID = dwCID;
|
||||
lpGMPt->m_dwGID = dwGID;
|
||||
|
||||
::memcpy(lpGMPt->m_szMark, szMark, Guild::MAX_MARK_SIZE);
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktGuildMark), CmdGuildMark, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::CharGuildLevel(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned char cLevel)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktGuildLevel), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktGuildLevel* lpGLPt = reinterpret_cast<PktGuildLevel *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpGLPt->m_dwUID = dwCID;
|
||||
lpGLPt->m_cLevel = cLevel;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktGuildLevel), CmdGuildLevel, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::CharGuildRelation(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID,
|
||||
unsigned long dwGID, unsigned long dwTargetGID, unsigned long dwValue, unsigned char cSubCmd)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktGuildRelation), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktGuildRelation* lpGRPt = reinterpret_cast<PktGuildRelation *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpGRPt->m_dwCID = dwCID;
|
||||
lpGRPt->m_dwGID = dwGID;
|
||||
lpGRPt->m_dwTargetGID = dwTargetGID;
|
||||
lpGRPt->m_dwValue = dwValue;
|
||||
lpGRPt->m_cSubCmd = cSubCmd;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktGuildRelation), CmdGuildRelation, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharGuildInclination(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned char cInclination)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktGuildInclination), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktGuildInclination* lpGIPt = reinterpret_cast<PktGuildInclination *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpGIPt->m_dwUID = dwCID;
|
||||
lpGIPt->m_cInclination = cInclination;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktGuildInclination), CmdGuildInclination, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::CharGuildList(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID,
|
||||
unsigned char cSortCmd, unsigned char cPage, unsigned char cNodeNum, GuildSmallInfoNode* lpNode)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
unsigned short usPacketSize = sizeof(PktGuildList) + sizeof(GuildCheckSumNode) * cNodeNum;
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(usPacketSize, lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktGuildList* lpGLPt = reinterpret_cast<PktGuildList *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpGLPt->m_dwCID = dwCID;
|
||||
lpGLPt->m_cSortCmd = cSortCmd;
|
||||
lpGLPt->m_cPage = cPage;
|
||||
lpGLPt->m_cSmallNodeNum = cNodeNum;
|
||||
|
||||
unsigned short wBufferSize = sizeof(PktGuildList);
|
||||
for (int nIndex = 0; nIndex < cNodeNum; ++nIndex, ++lpNode)
|
||||
{
|
||||
// üũ<C3BC><C5A9><EFBFBD><EFBFBD> <20>̾Ƴ<CCBE><C6B3><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
GuildCheckSumNode tempNode;
|
||||
tempNode.m_dwGID = lpNode->m_dwGID & ~Guild::MEMBER_WAIT_BIT;
|
||||
CCrc32Static::BufferCrc32(reinterpret_cast<const char *>(lpNode), sizeof(GuildSmallInfoNode),
|
||||
tempNode.m_dwCheckSum);
|
||||
|
||||
CopyMemory(lpMsgBlock->wr_ptr() + wBufferSize, &tempNode, sizeof(GuildCheckSumNode));
|
||||
wBufferSize += sizeof(GuildCheckSumNode);
|
||||
}
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, usPacketSize, CmdGuildList, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::CharGuildRight(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, GuildRight guildRight)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktGuildRight), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktGuildRight* lpGRPt = reinterpret_cast<PktGuildRight *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpGRPt->m_dwUID = dwCID;
|
||||
lpGRPt->m_GuildRight = guildRight;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktGuildRight), CmdGuildRight, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::CharGuildMemberList(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID,
|
||||
unsigned char cMemberType, unsigned char cSortCmd, unsigned char cPage)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktGuildMemberList), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktGuildMemberList* lpGMLPt = reinterpret_cast<PktGuildMemberList *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpGMLPt->m_dwCID = dwCID;
|
||||
|
||||
lpGMLPt->m_cMemberType = cMemberType;
|
||||
lpGMLPt->m_cSortCmd = cSortCmd;
|
||||
lpGMLPt->m_cPage = cPage;
|
||||
|
||||
lpGMLPt->m_cTotalMemberNum = 0;
|
||||
lpGMLPt->m_cNodeNum = 0;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktGuildMemberList), CmdGuildMemberList, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::CharGuildSafe(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned long dwGold, unsigned char cCmd)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktGuildSafe), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktGuildSafe* lpGSPt = reinterpret_cast<PktGuildSafe *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpGSPt->m_dwCID = dwCID;
|
||||
lpGSPt->m_dwGold = dwGold;
|
||||
lpGSPt->m_cCmd = cCmd;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktGuildSafe), CmdGuildSafe, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::CharGuildHostilityList(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID,
|
||||
unsigned char cCurrentPage, unsigned char cPageState)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktGuildHostilityList), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktGuildHostilityList* lpGHLPt = reinterpret_cast<PktGuildHostilityList *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpGHLPt->m_dwCID = dwCID;
|
||||
|
||||
lpGHLPt->m_cCurrentPage = cCurrentPage;
|
||||
lpGHLPt->m_cPageState = cPageState;
|
||||
lpGHLPt->m_cNodeNum = 0;
|
||||
lpGHLPt->m_wTotalItemNum = 0;
|
||||
|
||||
::memset(lpGHLPt->m_szHostility, 0, Guild::MAX_GUILD_NAME_LEN);
|
||||
::memset(lpGHLPt->m_szAlert, 0, Guild::MAX_GUILD_NAME_LEN);
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktGuildHostilityList), CmdGuildHostilityList, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::CharGuildRelationInfo(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned long dwGID)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktGuildRelationInfo), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktGuildRelationInfo* lpGRIPt = reinterpret_cast<PktGuildRelationInfo *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpGRIPt->m_dwCID = dwCID;
|
||||
lpGRIPt->m_dwGID = dwGID;
|
||||
lpGRIPt->m_wNodeNum = 0;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktGuildRelationInfo), CmdGuildRelationInfo, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------
|
||||
// <20><>Ƽ
|
||||
|
||||
bool SendPacket::CharPartyCmd(ClientNet::CClientEventHandler* lpHandler, unsigned long SenderID,
|
||||
unsigned long ReferenceID, unsigned long PartyID, unsigned short Cmd)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktPC), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktPC* lpPCPt = reinterpret_cast<PktPC *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpPCPt->m_wCmd = Cmd;
|
||||
lpPCPt->m_dwPartyID = PartyID;
|
||||
lpPCPt->m_dwSenderID = SenderID;
|
||||
lpPCPt->m_dwReferenceID = ReferenceID;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktPC), CmdCharPartyCmd, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::CharPartyFind(ClientNet::CClientEventHandler* lpHandler, unsigned long CharID)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktPF), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktPF* lpPFPt = reinterpret_cast<PktPF *>(lpMsgBlock->wr_ptr());
|
||||
lpPFPt->m_dwCharID = CharID;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktPF), CmdCharPartyFind, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
|
||||
bool SendPacket::CharPartyMemInfo(ClientSocket& clientSocket, unsigned long CharID,
|
||||
unsigned long PartyID, unsigned char Class,
|
||||
char Level, POS Pos,
|
||||
unsigned short MaxHP, short CurHP,
|
||||
unsigned short MaxMP, short CurMP,
|
||||
unsigned long Chant, unsigned long Enchant)
|
||||
{
|
||||
ClientNet::CSession& Session = clientSocket.GetSession(ClientSocket::UDPSession);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktPM), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktPM* lpPMPt = reinterpret_cast<PktPM *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpPMPt->m_dwCharID = CharID;
|
||||
lpPMPt->m_dwPartyID = PartyID;
|
||||
|
||||
lpPMPt->m_cClass = Class;
|
||||
lpPMPt->m_cLevel = Level;
|
||||
lpPMPt->m_Position = Pos;
|
||||
|
||||
lpPMPt->m_wMaxHP = MaxHP;
|
||||
lpPMPt->m_sCurrHP = CurHP;
|
||||
lpPMPt->m_wMaxMP = MaxMP;
|
||||
lpPMPt->m_sCurrMP = CurMP;
|
||||
|
||||
lpPMPt->m_dwChant = Chant;
|
||||
lpPMPt->m_dwEnchant = Enchant;
|
||||
|
||||
lpPMPt->m_PublicAddress = clientSocket.GetAddress(ClientSocket::PublicAddr);
|
||||
lpPMPt->m_PrivateAddress = clientSocket.GetAddress(ClientSocket::PrivateAddr);
|
||||
|
||||
SendUDPList(Session, clientSocket.GetUDPList(ClientSocket::ListType_Party),
|
||||
clientSocket.IsRealIP(), lpMsgBlock, sizeof(PktPM), CmdCharPartyMemInfo, 0, 0);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool SendPacket::CharPartyMemAddress(ClientSocket& clientSocket, unsigned long CharID,
|
||||
unsigned long PartyID, const SOCKADDR_IN& PublicAddress,
|
||||
const SOCKADDR_IN& PrivateAddress)
|
||||
{
|
||||
ClientNet::CSession& Session = clientSocket.GetSession(ClientSocket::UDPSession);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktPMA), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktPMA* lpPMAPt = reinterpret_cast<PktPMA *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpPMAPt->m_dwCharID = CharID;
|
||||
lpPMAPt->m_dwPartyID = PartyID;
|
||||
lpPMAPt->m_PublicAddress = PublicAddress;
|
||||
lpPMAPt->m_PrivateAddress = PrivateAddress;
|
||||
|
||||
SendUDPList(Session, clientSocket.GetUDPList(ClientSocket::ListType_Party),
|
||||
clientSocket.IsRealIP(), lpMsgBlock, sizeof(PktPMA), CmdCharPartyMemAddress, 0, 0);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------
|
||||
// ģ<><C4A3>
|
||||
|
||||
bool SendPacket::CharFriendAddRequest(ClientNet::CClientEventHandler* lpHandler, char* szName, PktFriendAddReq::CMD addType)
|
||||
{
|
||||
CHECK_NULL_RETURN(szName, false);
|
||||
|
||||
// ģ<><C4A3> <20>Ǵ<EFBFBD> <20>ź<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20>߰<EFBFBD><DFB0>Ѵ<EFBFBD>.
|
||||
switch(addType)
|
||||
{
|
||||
case PktFriendAddReq::ADD_FRIEND_REQ:
|
||||
case PktFriendAddReq::BAN_FRIEND_REQ:
|
||||
break;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktFriendAddReq), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktFriendAddReq* lpPktFriendAddRequest = reinterpret_cast<PktFriendAddReq*>(lpMsgBlock->wr_ptr());
|
||||
|
||||
memset(lpPktFriendAddRequest->m_szName, 0, PktFriendAddReq::MAX_NAME);
|
||||
memcpy(lpPktFriendAddRequest->m_szName, szName, PktFriendAddReq::MAX_NAME);
|
||||
lpPktFriendAddRequest->m_dwCID = 0;
|
||||
lpPktFriendAddRequest->m_cCmd = addType;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktFriendAddReq), CmdFriendAddRequest, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharFriendRemoveRequest(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID,
|
||||
PktFriendRemoveReq::CMD removeType)
|
||||
{
|
||||
// ģ<><C4A3> <20>Ǵ<EFBFBD> <20>ź<EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>.
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktFriendRemoveReq), lpHandler->GetPeerAddress());
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktFriendRemoveReq* lpPktFriendRemoveRequest = reinterpret_cast<PktFriendRemoveReq*>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpPktFriendRemoveRequest->m_cCmd = removeType;
|
||||
lpPktFriendRemoveRequest->m_dwCID = dwCID;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktFriendRemoveReq), CmdFriendRemoveRequest, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharFriendEtcRequest(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID,
|
||||
unsigned long dwData, PktFriendEtc::CMD etcType)
|
||||
{
|
||||
switch(etcType)
|
||||
{
|
||||
case PktFriendEtc::SETGROUP:
|
||||
break;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktFriendEtc), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktFriendEtc* lpPktFriendEtc = reinterpret_cast<PktFriendEtc*>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpPktFriendEtc->m_dwCID = dwCID;
|
||||
lpPktFriendEtc->m_dwData = dwData;
|
||||
lpPktFriendEtc->m_cCmd = etcType;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktFriendEtc), CmdFriendEtcRequest, 0);
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------------------
|
||||
// <20><>Ÿ
|
||||
|
||||
bool SendPacket::CharFameInfo(ClientNet::CClientEventHandler* lpHandler, unsigned long CharID)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktFI), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktFI* lpFIPt = reinterpret_cast<PktFI *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpFIPt->m_dwCharID = CharID;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktFI), CmdCharFameInfo, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::CharRankingInfo(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID, unsigned char cClass, unsigned char cPage)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktRankingInfo), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktRankingInfo* lpRankingInfo = reinterpret_cast<PktRankingInfo* >(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpRankingInfo->m_dwCharID = dwCharID;
|
||||
lpRankingInfo->m_cClass = cClass;
|
||||
lpRankingInfo->m_cPage = cPage;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktRankingInfo), CmdRankingInfo, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::CharAuthorizePanel(ClientNet::CClientEventHandler* lpHandler, unsigned long dwAffectedID,
|
||||
unsigned long dwCasterID, unsigned char cCmd)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktAP), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktAP* lpAPPt = reinterpret_cast<PktAP *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpAPPt->m_dwAffectedID = dwAffectedID;
|
||||
lpAPPt->m_dwCasterID = dwCasterID;
|
||||
lpAPPt->m_cCmd = cCmd;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktAP), CmdCharAuthorizePanel, 0, 0);
|
||||
}
|
||||
|
||||
// NewChat - ä<>ü<EFBFBD><C3BC><EFBFBD>
|
||||
bool SendPacket::CharChat(ClientNet::CClientEventHandler* lpHandler, unsigned char Cmd, char* Message, int MessageSize)
|
||||
{
|
||||
unsigned short usPacketLen = static_cast<unsigned short>(sizeof(PktChat) + MessageSize + 1);
|
||||
|
||||
CHECK_TRUE_RETURN(NULL == Message || MessageSize <= 0 || PktMaxLen <= usPacketLen, false);
|
||||
|
||||
switch (Cmd)
|
||||
{
|
||||
case PktChat::NORMAL: // <20><><EFBFBD><EFBFBD>
|
||||
case PktChat::PARTY: // <20><>Ƽ
|
||||
case PktChat::DICE: // <20>ֻ<EFBFBD><D6BB><EFBFBD>
|
||||
case PktChat::GUILD: // <20><><EFBFBD><EFBFBD>
|
||||
case PktChat::CLIENT_LOG: // <20>α<EFBFBD>
|
||||
case PktChat::TRADE : // <20>ŷ<EFBFBD>
|
||||
case PktChat::SHOUT: // <20><>ġ<EFBFBD><C4A1>
|
||||
case PktChat::ADMIN_NORMAL_CHAT: // <20><EFBFBD><EEBFB5> <20><><EFBFBD><EFBFBD> <20><>
|
||||
case PktChat::ADMIN_SHOUT: // <20><EFBFBD><EEBFB5> <20><>ġ<EFBFBD><C4A1>
|
||||
case PktChat::FIND_PARTY: // <20><>Ƽ ã<><C3A3>
|
||||
break;
|
||||
|
||||
case PktChat::NOTICE: // <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
default:
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(usPacketLen, lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktChat* lpPktChat = reinterpret_cast<PktChat *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpPktChat->m_dwSenderCID = 0;
|
||||
lpPktChat->m_usLang = 0;
|
||||
lpPktChat->m_cCmd = Cmd;
|
||||
lpPktChat->m_cNum = 0;
|
||||
|
||||
*(Message + MessageSize) = NULL;
|
||||
strncpy(lpMsgBlock->wr_ptr() + sizeof(PktChat), Message, MessageSize + 1);
|
||||
*(lpMsgBlock->wr_ptr() + sizeof(PktChat) + MessageSize) = NULL;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, usPacketLen, CmdCharChat, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::CharTargetedChat(ClientNet::CClientEventHandler* lpHandler, unsigned char Cmd,
|
||||
char* TargetNames, int nTargetNamesNum,
|
||||
char* Message, int MessageSize)
|
||||
{
|
||||
const int NAME_LENGTH = 16;
|
||||
unsigned short usPacketLen = static_cast<unsigned short>(sizeof(PktChat) +
|
||||
nTargetNamesNum * NAME_LENGTH + MessageSize + 1);
|
||||
|
||||
CHECK_TRUE_RETURN(NULL == TargetNames || nTargetNamesNum <= 0 || 100 < nTargetNamesNum ||
|
||||
NULL == Message || MessageSize <= 0 || PktMaxLen <= usPacketLen, false);
|
||||
|
||||
switch (Cmd)
|
||||
{
|
||||
case PktChat::FRIEND: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
case PktChat::STALL: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȭ<EFBFBD><C8AD>
|
||||
case PktChat::CAMP_SHOP: // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ȭ<EFBFBD><C8AD>
|
||||
break;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(usPacketLen, lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktChat* lpPktChat = reinterpret_cast<PktChat *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpPktChat->m_usLang = 0;
|
||||
lpPktChat->m_cCmd = Cmd;
|
||||
lpPktChat->m_cNum = nTargetNamesNum;
|
||||
|
||||
*(Message + MessageSize) = NULL;
|
||||
|
||||
memcpy(lpMsgBlock->wr_ptr() + sizeof(PktChat), TargetNames, nTargetNamesNum * NAME_LENGTH);
|
||||
strncpy(lpMsgBlock->wr_ptr() + sizeof(PktChat) + nTargetNamesNum * NAME_LENGTH, Message, MessageSize + 1);
|
||||
*(lpMsgBlock->wr_ptr() + sizeof(PktChat) + nTargetNamesNum * NAME_LENGTH + MessageSize) = NULL;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, usPacketLen, CmdCharChat, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::CharWhisper(ClientNet::CClientEventHandler* lpHandler, char* SenderName,
|
||||
char *RecverName, char* Message, int MessageSize)
|
||||
{
|
||||
unsigned short usPacketLen = static_cast<unsigned short>(sizeof(PktWh) + MessageSize + 1);
|
||||
|
||||
CHECK_TRUE_RETURN(SenderName == NULL || RecverName == NULL ||
|
||||
Message == NULL || MessageSize <= 0 || usPacketLen <= MessageSize, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(usPacketLen, lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktWh* lpWhPt = reinterpret_cast<PktWh *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
strncpy(lpWhPt->m_SenderName, SenderName, 16);
|
||||
strncpy(lpWhPt->m_RecverName, RecverName, 16);
|
||||
|
||||
*(Message + MessageSize) = NULL;
|
||||
CopyMemory(lpMsgBlock->wr_ptr() + sizeof(PktWh), Message, MessageSize);
|
||||
*(lpMsgBlock->wr_ptr() + sizeof(PktWh) + MessageSize) = NULL;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, usPacketLen, CmdCharWhisper, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
/* NOT USE
|
||||
bool SendPacket::CharPartyData(ClientSocket& clientSocket, unsigned long CharID,
|
||||
unsigned short Cmd, unsigned short Len, void *Data)
|
||||
{
|
||||
ClientNet::CSession& Session = clientSocket.GetSession(ClientSocket::UDPSession);
|
||||
CHECK_TRUE_RETURN(0 == CharID, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktPMD) + Len, lpHandler->GetPeerAddress());
|
||||
|
||||
PktMD* lpMDPt = reinterpret_cast<PktMD *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpMDPt->m_dwCharID = CharID;
|
||||
lpMDPt->m_wCmd = Cmd;
|
||||
lpMDPt->m_wLen = Len;
|
||||
|
||||
CopyMemory(lpMsgBlock->wr_ptr() + sizeof(PktMD), Data, Len);
|
||||
|
||||
SendUDPList(Session, clientSocket.GetUDPList(ClientSocket::ListType_Party),
|
||||
clientSocket.IsRealIP(), lpMsgBlock, sizeof(PktPMD) + Len, CmdCharPartyMemData, 0, 0);
|
||||
|
||||
return true;
|
||||
}
|
||||
*/
|
||||
@@ -0,0 +1,72 @@
|
||||
#ifndef _GAMA_CLIENT_COMMUNITY_SEND_H_
|
||||
#define _GAMA_CLIENT_COMMUNITY_SEND_H_
|
||||
|
||||
#include <Network/Packet/PacketStruct/FriendPacket.h>
|
||||
#include <Network/Packet/PacketStruct/RankingPacket.h>
|
||||
|
||||
// forward decl.
|
||||
class ClientSocket;
|
||||
struct GuildSmallInfoNode;
|
||||
struct GuildRight;
|
||||
struct POS;
|
||||
|
||||
namespace ClientNet
|
||||
{
|
||||
// forward decl.
|
||||
class CClientEventHandler;
|
||||
}
|
||||
|
||||
namespace SendPacket
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>
|
||||
bool CharCreateGuild(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, char* szGuildName);
|
||||
bool CharGuildCmd(ClientNet::CClientEventHandler* lpHandler, unsigned long dwGID, unsigned long dwSenderID, unsigned long dwReferenceID, unsigned short wCmd);
|
||||
bool CharGuildMark(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned long dwGID, char* szMark);
|
||||
bool CharGuildLevel(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned char cLevel);
|
||||
bool CharGuildRelation(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned long dwGID, unsigned long dwTargetGID, unsigned long dwValue, unsigned char cSubCmd);
|
||||
bool CharGuildInclination(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned char cInclination);
|
||||
bool CharGuildList(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned char cSortCmd, unsigned char cPage, unsigned char cNodeNum, GuildSmallInfoNode* lpNode);
|
||||
bool CharGuildRight(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, GuildRight guildRight);
|
||||
bool CharGuildMemberList(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned char cMemberType, unsigned char cSortCmd, unsigned char cPage);
|
||||
bool CharGuildSafe(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned long dwGold, unsigned char cCmd);
|
||||
bool CharGuildHostilityList(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned char cCurrentPage, unsigned char cPageState);
|
||||
bool CharGuildRelationInfo(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned long dwGID);
|
||||
|
||||
// <20><>Ƽ
|
||||
bool CharPartyCmd(ClientNet::CClientEventHandler* lpHandler, unsigned long SenderID, unsigned long ReferenceID, unsigned long PartyID, unsigned short Cmd);
|
||||
bool CharPartyFind(ClientNet::CClientEventHandler* lpHandler, unsigned long CharID);
|
||||
|
||||
// ģ<><C4A3>
|
||||
bool CharFriendAddRequest(ClientNet::CClientEventHandler* lpHandler, char* szName, PktFriendAddReq::CMD addType);
|
||||
bool CharFriendRemoveRequest(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, PktFriendRemoveReq::CMD removeType);
|
||||
bool CharFriendEtcRequest(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned long dwData, PktFriendEtc::CMD etcType);
|
||||
|
||||
// <20><>Ÿ Ŀ<>´<EFBFBD>Ƽ
|
||||
bool CharFameInfo(ClientNet::CClientEventHandler* lpHandler, unsigned long CharID);
|
||||
bool CharRankingInfo(ClientNet::CClientEventHandler* lpHandler, unsigned long CharID, unsigned char cClass, unsigned char cPage);
|
||||
bool CharAuthorizePanel(ClientNet::CClientEventHandler* lpHandler, unsigned long dwAffectedID, unsigned long dwCasterID, unsigned char cCmd);
|
||||
bool CharChat(ClientNet::CClientEventHandler* lpHandler, unsigned char Cmd, char* Message, int MessageSize);
|
||||
bool CharTargetedChat(ClientNet::CClientEventHandler* lpHandler, unsigned char Cmd, char* TargetNames, int nTargetNamesNum, char* Message, int MessageSize);
|
||||
bool CharWhisper(ClientNet::CClientEventHandler* lpHandler, char* SenderName, char *RecverName, char* Message, int MessageSize);
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
// UDP Packets
|
||||
|
||||
/* NOT USE
|
||||
// TODO : REMOVE UDP Packets
|
||||
bool CharPartyMemInfo(ClientSocket& clientSocket, unsigned long CharID,
|
||||
unsigned long PartyID, unsigned char Class, char Level, POS Pos,
|
||||
unsigned short MaxHP, short CurHP, unsigned short MaxMP, short CurMP,
|
||||
unsigned long Chant, unsigned long Enchant);
|
||||
|
||||
bool CharPartyMemAddress(ClientSocket& clientSocket, unsigned long CharID,
|
||||
unsigned long PartyID, const SOCKADDR_IN& PublicAddress,
|
||||
const SOCKADDR_IN& PrivateAddress);
|
||||
|
||||
|
||||
bool CharPartyData(ClientSocket& clientSocket, unsigned long CharID,
|
||||
unsigned short Cmd, unsigned short Len, void *Data);
|
||||
*/
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,207 @@
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
#include <Network/ClientNetwork/ClientEventHandler.h>
|
||||
#include <Network/ClientSocket/ClientSocket.h>
|
||||
|
||||
#include <Network/Packet/PacketCommand.h>
|
||||
#include <Network/Packet/PacketStruct/ServerPacket.h>
|
||||
#include <Network/Packet/PacketStruct/CharStatusPacket.h>
|
||||
#include <Network/Packet/PacketStruct/CharConfigPacket.h>
|
||||
#include <Network/Packet/PacketStruct/CharAdminPacket.h>
|
||||
|
||||
#include "SendPacket.h"
|
||||
#include "SendEtc.h"
|
||||
|
||||
// <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ö<C3B6> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
#include <mmsystem.h>
|
||||
#include "GMMemory.h"
|
||||
|
||||
|
||||
bool SendPacket::SendSysPing(ClientNet::CClientEventHandler* lpHandler)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktSyP), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktSyP* lpSyPAckPt = reinterpret_cast<PktSyP *>(lpMsgBlock->wr_ptr());
|
||||
lpSyPAckPt->m_dwTickTime = timeGetTime();
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktSyP), CmdSysPing, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharSuicide(ClientNet::CClientEventHandler* lpHandler, unsigned long CharID_In)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == CharID_In, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktSC), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktSC* lpSCPt = reinterpret_cast<PktSC *>(lpMsgBlock->wr_ptr());
|
||||
lpSCPt->m_dwCharID = CharID_In;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktSC), CmdCharSuicide, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharBindPos(ClientNet::CClientEventHandler* lpHandler, unsigned long NPCID_In,
|
||||
unsigned char Cmd_In, POS* lpPos_In, char Zone_In)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == NPCID_In, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktBP), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktBP* lpBPPt = reinterpret_cast<PktBP *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpBPPt->m_Pos = *lpPos_In;
|
||||
lpBPPt->m_dwNPCID = NPCID_In;
|
||||
lpBPPt->m_cCmd = Cmd_In;
|
||||
lpBPPt->m_cZone = Zone_In;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktBP), CmdCharBindPosition, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharIncreasePoint(ClientNet::CClientEventHandler* lpHandler,
|
||||
unsigned long CharID_In, unsigned char StateType_In)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == CharID_In, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktIP), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktIP* lpIPPt = reinterpret_cast<PktIP *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpIPPt->m_dwCharID = CharID_In;
|
||||
lpIPPt->m_cStateType = StateType_In;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktIP), CmdCharIncreasePoint, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharClassUpgrade(ClientNet::CClientEventHandler* lpHandler, unsigned long CharID_In, unsigned char ClassID_In)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == CharID_In, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktCU), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktCU* lpCUPt = reinterpret_cast<PktCU *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpCUPt->m_dwCharID = CharID_In;
|
||||
lpCUPt->m_cClass = ClassID_In;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktCU), CmdCharClassUpgrade, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharControlOption(ClientNet::CClientEventHandler* lpHandler, unsigned long CharID_In, RejectOption &Reject_In)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == CharID_In, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktCOp), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktCOp* lpCOpPt = reinterpret_cast<PktCOp *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpCOpPt->m_dwCharID = CharID_In;
|
||||
lpCOpPt->m_RejectOption = Reject_In;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktCOp), CmdCharControlOption, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharAdmin(ClientNet::CClientEventHandler* lpHandler, unsigned short Cmd_In,
|
||||
char* Name_In, char Zone_In, char Channel_In,
|
||||
unsigned short ProtoTypeID, POS& Pos_In, unsigned long dwAmount,unsigned long dwAmount2, unsigned long dwAmount3)
|
||||
{
|
||||
CHECK_TRUE_RETURN(NULL == Name_In, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktAdmin), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktAdmin* lpAdmin = reinterpret_cast<PktAdmin*>(lpMsgBlock->wr_ptr());
|
||||
lpAdmin->m_usCmd = Cmd_In;
|
||||
|
||||
memcpy(lpAdmin->m_stName, Name_In, PktAdmin::MAX_NAME_LEN);
|
||||
|
||||
if (0 != ProtoTypeID)
|
||||
{
|
||||
lpAdmin->m_usProtoTypeID = ProtoTypeID;
|
||||
}
|
||||
else
|
||||
{
|
||||
lpAdmin->m_ZoneInfo.m_cZone = Zone_In;
|
||||
lpAdmin->m_ZoneInfo.m_cChannel = Channel_In;
|
||||
}
|
||||
|
||||
lpAdmin->m_Position = Pos_In;
|
||||
lpAdmin->m_dwAmount = dwAmount;
|
||||
lpAdmin->m_dwAmount2 = dwAmount2;
|
||||
lpAdmin->m_dwAmount3 = dwAmount3;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktAdmin), CmdCharAdminCmd, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharStateRedistribution(ClientNet::CClientEventHandler* lpHandler, ChState* lpState_In)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktSR), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktSR* lpSRPt = reinterpret_cast<PktSR *>(lpMsgBlock->wr_ptr());
|
||||
lpSRPt->m_State = *lpState_In;
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktSR), CmdCharStateRedistribution, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharStatusRetrain(ClientNet::CClientEventHandler* lpHandler, ChState* lpState_In, Item::ItemPos* lpIndex_In)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktSRT), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktSRT* lpSRTPt = reinterpret_cast<PktSRT *>(lpMsgBlock->wr_ptr());
|
||||
lpSRTPt->m_State = *lpState_In;
|
||||
lpSRTPt->m_ItemPos = *lpIndex_In;
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktSRT), CmdCharStatusRetrain, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::CharNameChange(ClientNet::CClientEventHandler* lpHandler, unsigned long dwUID,
|
||||
unsigned long dwCID, const char* szChangeName)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktCharNameChange), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktCharNameChange* lpCharNameChange =
|
||||
reinterpret_cast<PktCharNameChange*>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpCharNameChange->m_dwUID = dwUID;
|
||||
lpCharNameChange->m_dwCID = dwCID;
|
||||
lpCharNameChange->m_cNameChangeCount = 0;
|
||||
|
||||
strncpy(lpCharNameChange->m_szCharName, szChangeName, CHAR_INFOST::MAX_NAME_LEN);
|
||||
lpCharNameChange->m_szCharName[CHAR_INFOST::MAX_NAME_LEN - 1] = 0;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktCharNameChange), CmdCharNameChange, 0, 0);
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
#ifndef _GAMA_CLIENT_ETC_SEND_PACKET_H_
|
||||
#define _GAMA_CLIENT_ETC_SEND_PACKET_H_
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
struct ChState;
|
||||
struct POS;
|
||||
struct RejectOption;
|
||||
|
||||
class ClientSocket;
|
||||
|
||||
namespace ClientNet
|
||||
{
|
||||
class CClientEventHandler;
|
||||
}
|
||||
|
||||
namespace Item
|
||||
{
|
||||
struct ItemPos;
|
||||
}
|
||||
|
||||
namespace SendPacket
|
||||
{
|
||||
bool SendSysPing(ClientNet::CClientEventHandler* lpHandler);
|
||||
bool CharAdmin(ClientNet::CClientEventHandler* lpHandler, unsigned short Cmd_In, char* Name_In, char Zone_In, char Channel_In, unsigned short ProtoTypeID, POS& Pos_In, unsigned long dwAmount, unsigned long dwAmount2 = 0, unsigned long dwAmount3 = 0);
|
||||
bool CharSuicide(ClientNet::CClientEventHandler* lpHandler, unsigned long CharID_In);
|
||||
bool CharBindPos(ClientNet::CClientEventHandler* lpHandler, unsigned long NPCID_In, unsigned char Cmd_In, POS* lpPos_In, char Zone_In);
|
||||
bool CharStateRedistribution(ClientNet::CClientEventHandler* lpHandler, ChState* lpState_In);
|
||||
bool CharControlOption(ClientNet::CClientEventHandler* lpHandler, unsigned long CharID_In, RejectOption &Reject_In);
|
||||
bool CharIncreasePoint(ClientNet::CClientEventHandler* lpHandler, unsigned long CharID_In, unsigned char StateType_In);
|
||||
bool CharClassUpgrade(ClientNet::CClientEventHandler* lpHandler, unsigned long CharID_In, unsigned char ClassID_In);
|
||||
|
||||
bool CharStatusRetrain(ClientNet::CClientEventHandler* lpHandler, ChState* lpState_In, Item::ItemPos* lpIndex_In);
|
||||
|
||||
bool CharNameChange(ClientNet::CClientEventHandler* lpHandler, unsigned long dwUID,
|
||||
unsigned long dwCID, const char* szChangeName);
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,637 @@
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
#include <Network/ClientNetwork/ClientEventHandler.h>
|
||||
#include <Network/ClientSocket/ClientSocket.h>
|
||||
|
||||
#include <Network/Packet/PacketCommand.h>
|
||||
#include <Network/Packet/PacketStruct/CharItemPacket.h>
|
||||
#include <Network/Packet/PacketStruct/CharCommunityPacket.h>
|
||||
|
||||
#include <Item/Item.h>
|
||||
|
||||
#include "SendPacket.h"
|
||||
#include "SendItem.h"
|
||||
#include "GMMemory.h"
|
||||
|
||||
|
||||
bool SendPacket::CharPickUp(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID,
|
||||
unsigned __int64 nObjectID, Item::ItemPos Index)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == dwCharID, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktPU), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktPU* lpPUPt = reinterpret_cast<PktPU *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpPUPt->m_dwCharID = dwCharID;
|
||||
lpPUPt->m_nObjectID = nObjectID;
|
||||
lpPUPt->m_itemPos = Index;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktPU), CmdCharPickUp, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharPullDown(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID,
|
||||
Item::ItemPos Index, unsigned char cNum)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == dwCharID, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktPD), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktPD* lpPDPt = reinterpret_cast<PktPD *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpPDPt->m_dwCharID = dwCharID;
|
||||
lpPDPt->m_itemPos = Index;
|
||||
lpPDPt->m_cNum = cNum;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktPD), CmdCharPullDown, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharTakeItem(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID, TakeType TakeType)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == dwCharID, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktTI), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktTI* lpTIPt = reinterpret_cast<PktTI *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpTIPt->m_dwCharID = dwCharID;
|
||||
lpTIPt->m_TakeType = TakeType;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktTI), CmdCharTakeItem, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharSwapItem(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID,
|
||||
TakeType SrcType, TakeType DstType)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == dwCharID, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktSwI), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktSwI* lpSwIPt = reinterpret_cast<PktSwI *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpSwIPt->m_dwCharID = dwCharID;
|
||||
lpSwIPt->m_SwapSrc = SrcType;
|
||||
lpSwIPt->m_SwapDst = DstType;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktSwI), CmdCharSwapItem, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharTradeItem(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID,
|
||||
unsigned long dwNPCID, unsigned char cCmd,
|
||||
unsigned short wItemID, TakeType TakeType, Item::ItemPos CouponPos,
|
||||
Item::CItem* lpItem)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == dwCharID, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktTr) + Item::MAX_ITEM_SIZE, lpHandler->GetPeerAddress());
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktTr* lpTrPt = reinterpret_cast<PktTr *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpTrPt->m_dwCustomerID = dwCharID;
|
||||
lpTrPt->m_dwOwnerID = dwNPCID;
|
||||
lpTrPt->m_cCmd = cCmd;
|
||||
lpTrPt->m_wBuyItemID = wItemID;
|
||||
lpTrPt->m_TakeType = TakeType;
|
||||
lpTrPt->m_CouponPos = CouponPos;
|
||||
|
||||
size_t nItemSize = 0;
|
||||
if (NULL != lpItem)
|
||||
{
|
||||
nItemSize = Item::MAX_ITEM_SIZE;
|
||||
if (false == lpItem->SerializeOut(lpMsgBlock->wr_ptr() + sizeof(PktTr), nItemSize))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
lpTrPt->m_wSize = static_cast<unsigned short>(nItemSize);
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, static_cast<unsigned short>(sizeof(PktTr) + nItemSize),
|
||||
CmdCharTradeItem, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharEquipShopInfo(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID, unsigned long dwNPCID,
|
||||
unsigned char cRace, unsigned char cTabPage)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == dwCharID, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktEquipShopInfo), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktEquipShopInfo* lpESIPt = reinterpret_cast<PktEquipShopInfo *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpESIPt->m_dwCharID = dwCharID;
|
||||
lpESIPt->m_dwNPCID = dwNPCID;
|
||||
|
||||
lpESIPt->m_cRace = cRace;
|
||||
lpESIPt->m_cTabPage = cTabPage;
|
||||
|
||||
lpESIPt->m_cNum = 0;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktEquipShopInfo), CmdCharEquipShopInfo, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharRepairItem(ClientNet::CClientEventHandler* lpHandler, unsigned long dwNPCID, Item::ItemPos* lpIndex)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == dwNPCID, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktRpI), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktRpI* lpRpIPt = reinterpret_cast<PktRpI *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpRpIPt->m_dwCharID = dwNPCID;
|
||||
lpRpIPt->m_itemPos = *lpIndex;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktRpI), CmdCharRepairItem, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::CharRepairAllItem(ClientNet::CClientEventHandler* lpHandler, unsigned long dwNPCID)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == dwNPCID, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktRpAI), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktRpAI* lpRpAIPt = reinterpret_cast<PktRpAI *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpRpAIPt->m_dwCharID = dwNPCID;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktRpAI), CmdCharRepairAllItem, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::CharUseItem(ClientNet::CClientEventHandler* lpHandler, unsigned long dwSenderID,
|
||||
unsigned long dwRecverID, Item::ItemPos* lpIndex)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == dwSenderID || 0 == dwRecverID, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktUI), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktUI* lpUIPt = reinterpret_cast<PktUI *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpUIPt->m_dwSender = dwSenderID;
|
||||
lpUIPt->m_dwRecver = dwRecverID;
|
||||
lpUIPt->m_itemPos = *lpIndex;
|
||||
lpUIPt->m_cRemainItemNum = 0; // <20>ǹ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktUI), CmdCharUseItem, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharCastObject(ClientNet::CClientEventHandler* lpHandler, unsigned long dwSenderID,
|
||||
unsigned long dwRecverID, CastObject &CastObject)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == dwSenderID || 0 == dwRecverID, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktCO), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktCO* lpCOPt = reinterpret_cast<PktCO *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpCOPt->m_dwSenderID = dwSenderID;
|
||||
lpCOPt->m_dwReceiverID = dwRecverID;
|
||||
lpCOPt->m_sCastObject = CastObject;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktCO), CmdCharCastObject, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharInstallSocket(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID,
|
||||
Item::ItemPos* lpEquipIndex, Item::ItemPos* lpSocket)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == dwCharID || NULL == lpEquipIndex || NULL == lpSocket, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktIS), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktIS* lpISPt = reinterpret_cast<PktIS *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpISPt->m_dwCharID = dwCharID;
|
||||
lpISPt->m_equipPos = *lpEquipIndex;
|
||||
lpISPt->m_gemPos = *lpSocket;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktIS), CmdCharInstallSocket, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::CharRuneInstallSocket(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID, unsigned char ucRunePos,
|
||||
Item::ItemPos* lpEquipIndex, Item::ItemPos* lpSocket)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == dwCharID || NULL == lpEquipIndex || NULL == lpSocket, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktIRS), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktIRS* lpIRSPt = reinterpret_cast<PktIRS *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
/*char pos = PktIRS::RUNE_POS_RUNE1;
|
||||
if( ucRunePos == 1 )
|
||||
pos = PktIRS::RUNE_POS_RUNE2;*/
|
||||
|
||||
lpIRSPt->m_dwCharID = dwCharID;
|
||||
lpIRSPt->m_equipPos = *lpEquipIndex;
|
||||
lpIRSPt->m_runePos = *lpSocket;
|
||||
//lpIRSPt->m_cRuneSocketPos = pos ;
|
||||
lpIRSPt->m_cType = PktIRS::RUNE_INSTALL ;
|
||||
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktIRS), CmdCharInstallRuneSocket, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::CharRuneRemoveSocket(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID, unsigned char ucRunePos,
|
||||
Item::ItemPos* lpEquipIndex, Item::ItemPos* lpSocket)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == dwCharID || NULL == lpEquipIndex || NULL == lpSocket, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktIRS), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktIRS* lpIRSPt = reinterpret_cast<PktIRS *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
/*char pos = PktIRS::RUNE_POS_RUNE1;
|
||||
if( ucRunePos == 1 )
|
||||
pos = PktIRS::RUNE_POS_RUNE2;*/
|
||||
|
||||
lpIRSPt->m_dwCharID = dwCharID;
|
||||
lpIRSPt->m_equipPos = *lpEquipIndex;
|
||||
lpIRSPt->m_runePos = *lpSocket;
|
||||
//lpIRSPt->m_cRuneSocketPos = pos ;
|
||||
lpIRSPt->m_cType = PktIRS::RUNE_UNINSTALL ;
|
||||
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktIRS), CmdCharInstallRuneSocket, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharItemChemical(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID,
|
||||
Item::ItemPos* lpPickkingPos, Item::ItemPos* lpTargetPos, unsigned char cPickkingNum)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == dwCharID || NULL == lpPickkingPos || NULL == lpTargetPos, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktItemChemical), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktItemChemical* lpICPt = reinterpret_cast<PktItemChemical *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpICPt->m_dwCharID = dwCharID;
|
||||
lpICPt->m_pickkingPos = *lpPickkingPos;
|
||||
lpICPt->m_targetPos = *lpTargetPos;
|
||||
lpICPt->m_cPickkingNum = cPickkingNum;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktItemChemical), CmdCharItemChemical, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharUpgradeItem(ClientNet::CClientEventHandler* lpHandler, unsigned long dwNPCID)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == dwNPCID, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktUgI), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktUgI* lpUgIPt = reinterpret_cast<PktUgI *>(lpMsgBlock->wr_ptr());
|
||||
lpUgIPt->m_dwNPCID = dwNPCID;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktUgI), CmdCharUpgradeItem, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharItemOptionGraft(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID, unsigned char cAttributeType)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == dwCharID, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktItemOptionGraft), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktItemOptionGraft* lpIOGPt = reinterpret_cast<PktItemOptionGraft *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpIOGPt->m_dwCharID = dwCharID;
|
||||
lpIOGPt->m_cAttributeType = cAttributeType;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktItemOptionGraft), CmdCharItemOptionGraft, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharItemCompensation(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == dwCharID, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktItemCompensation), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktItemCompensation* lpICPt = reinterpret_cast<PktItemCompensation *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpICPt->m_dwCharID = dwCharID;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktItemCompensation), CmdCharItemCompensation, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharSplitItem(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID, TakeType &TakeType)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == dwCharID, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktSplt), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktSplt* lpSpltPt = reinterpret_cast<PktSplt *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpSpltPt->m_dwCharID = dwCharID;
|
||||
lpSpltPt->m_TakeType = TakeType;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktSplt), CmdCharSplitItem, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
bool SendPacket::CharAutoRouting(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID,
|
||||
unsigned __int64 nObjectID, unsigned short wItemID, Item::ItemPos Index)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == dwCharID, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktAutoRouting), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktAutoRouting* lpARPt = reinterpret_cast<PktAutoRouting *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpARPt->m_dwCharID = dwCharID;
|
||||
lpARPt->m_nObjectID = nObjectID;
|
||||
lpARPt->m_wItemID = wItemID;
|
||||
lpARPt->m_itemPos = Index;
|
||||
|
||||
lpARPt->m_cCmd = (TakeType::TS_INVEN == Index.m_cPos) ?
|
||||
PktAutoRouting::ARC_POSSIBLE : PktAutoRouting::ARC_IMPOSSIBLE;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktAutoRouting), CmdCharAutoRouting, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
bool SendPacket::StoreLogin(ClientNet::CClientEventHandler* lpHandler, char *Password, char PassSave)
|
||||
{
|
||||
CHECK_TRUE_RETURN(NULL == Password, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktDeposit), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktDeposit* lpDeposit = reinterpret_cast<PktDeposit*>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpDeposit->m_cCmd = PktDeposit::LOGIN;
|
||||
memcpy(&lpDeposit->m_szData[0], Password, Deposit::PASSWORD_LENGTH);
|
||||
lpDeposit->m_szData[4] = PassSave;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktDeposit), CmdDeposit, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::StoreLogout(ClientNet::CClientEventHandler* lpHandler)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktDeposit), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktDeposit* lpDeposit = reinterpret_cast<PktDeposit*>(lpMsgBlock->wr_ptr());
|
||||
lpDeposit->m_cCmd = PktDeposit::LOGOUT;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktDeposit), CmdDeposit, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::StoreBuyTab(ClientNet::CClientEventHandler* lpHandler, char TabNum)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktDeposit), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktDeposit* lpDeposit = reinterpret_cast<PktDeposit*>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpDeposit->m_cCmd = PktDeposit::BUY_TAB;
|
||||
lpDeposit->m_szData[0] = TabNum;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktDeposit), CmdDeposit, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::StoreChangePass(ClientNet::CClientEventHandler* lpHandler, char *Password, char *NewPassword)
|
||||
{
|
||||
CHECK_TRUE_RETURN(NULL == Password || NULL == NewPassword, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktDeposit), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktDeposit* lpDeposit = reinterpret_cast<PktDeposit*>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpDeposit->m_cCmd = PktDeposit::CHANGE_PASS;
|
||||
memcpy(&lpDeposit->m_szData[0], Password, Deposit::PASSWORD_LENGTH);
|
||||
memcpy(&lpDeposit->m_szData[4], NewPassword, Deposit::PASSWORD_LENGTH);
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktDeposit), CmdDeposit, 0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
bool SendPacket::CharStallOpen(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID, char* StallName)
|
||||
{
|
||||
CHECK_TRUE_RETURN(NULL == StallName || 0 == dwCharID, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktStO), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktStO* lpStOPt = reinterpret_cast<PktStO *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpStOPt->m_dwCharID = dwCharID;
|
||||
strncpy(lpStOPt->m_StallName, StallName, PktStO::MAX_STALL_NAME_LEN);
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktStO), CmdCharStallOpen, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharStallRegisterItem(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID, unsigned long dwShopID,
|
||||
TakeType TakeType, unsigned long dwPrice, unsigned char cCmd)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == dwCharID, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktStRI), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktStRI* lpStRIPt = reinterpret_cast<PktStRI *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpStRIPt->m_dwCharID = dwCharID;
|
||||
lpStRIPt->m_dwShopID = dwShopID;
|
||||
lpStRIPt->m_TakeType = TakeType;
|
||||
lpStRIPt->m_dwPrice = dwPrice;
|
||||
lpStRIPt->m_cCmd = cCmd;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktStRI), CmdCharStallRegisterItem, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharStallEnter(ClientNet::CClientEventHandler* lpHandler,
|
||||
unsigned long dwCustomerID, unsigned long dwOwner)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == dwCustomerID, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktStE), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktStE* lpStEPt = reinterpret_cast<PktStE *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpStEPt->m_dwCustomerID = dwCustomerID;
|
||||
lpStEPt->m_dwOwnerID = dwOwner;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktStE), CmdCharStallEnter, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharTakeItems(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID,
|
||||
unsigned char cTakeNum, TakeType* lpTakeTypes)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktTIs) + sizeof(TakeType) * cTakeNum, lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktTIs* lpTIsPt = reinterpret_cast<PktTIs *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpTIsPt->m_dwCharID = dwCharID;
|
||||
lpTIsPt->m_TakeNum = cTakeNum;
|
||||
CopyMemory(lpMsgBlock->wr_ptr() + sizeof(PktTIs), lpTakeTypes, sizeof(TakeType) * cTakeNum);
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktTIs) + sizeof(TakeType) * cTakeNum, CmdCharTakeItems, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharTakeGold(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID,
|
||||
unsigned char cSrcPos, unsigned char cDstPos, unsigned long dwGold)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktTG), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktTG* lpTGPt = reinterpret_cast<PktTG *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpTGPt->m_dwCharID = dwCharID;
|
||||
lpTGPt->m_cSrcPos = cSrcPos;
|
||||
lpTGPt->m_cDstPos = cDstPos;
|
||||
lpTGPt->m_dwGold = dwGold;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktTG), CmdCharTakeGold, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharExchangeCmd(ClientNet::CClientEventHandler* lpHandler, unsigned long dwSenderID,
|
||||
unsigned long dwRecverID, unsigned char cCmd)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktExC), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktExC* lpExCPt = reinterpret_cast<PktExC *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpExCPt->m_dwSenderID = dwSenderID;
|
||||
lpExCPt->m_dwRecverID = dwRecverID;
|
||||
lpExCPt->m_cCmd = cCmd;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktExC), CmdCharExchangeCmd, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
bool SendPacket::CharQuickSlotMove(ClientNet::CClientEventHandler* lpHandler,
|
||||
TakeType &TakeType, unsigned short usSkillID)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktQSM), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktQSM* lpQSMPt = reinterpret_cast<PktQSM *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpQSMPt->m_TakeType = TakeType;
|
||||
lpQSMPt->m_usSkillID = usSkillID;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktQSM), CmdCharQuickSlotMove, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharCastObjectInfo(ClientNet::CClientEventHandler* lpHandler, unsigned long dwSenderID,
|
||||
unsigned long dwRecverID, CastObject &CastObject)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == dwSenderID || 0 == dwRecverID, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktCOInfo), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktCOInfo* lpCOInfoPt = reinterpret_cast<PktCOInfo *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpCOInfoPt->m_dwSenderID = dwSenderID;
|
||||
lpCOInfoPt->m_dwReceiverID = dwRecverID;
|
||||
lpCOInfoPt->m_sCastObject = CastObject;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktCOInfo), CmdCharCastObjectInfo, 0, 0);
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
#ifndef _GAMA_CLIENT_SEND_ITEM_H_
|
||||
#define _GAMA_CLIENT_SEND_ITEM_H_
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
struct TakeType;
|
||||
struct CastObject;
|
||||
|
||||
class ClientSocket;
|
||||
|
||||
namespace ClientNet
|
||||
{
|
||||
class CClientEventHandler;
|
||||
}
|
||||
|
||||
namespace Item
|
||||
{
|
||||
class CItem;
|
||||
struct ItemPos;
|
||||
}
|
||||
|
||||
namespace SendPacket
|
||||
{
|
||||
bool CharPickUp(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID, unsigned __int64 nObjectID, Item::ItemPos Index);
|
||||
bool CharPullDown(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID, Item::ItemPos Index, unsigned char cNum);
|
||||
bool CharTakeItem(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID, TakeType TakeType);
|
||||
bool CharSwapItem(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID, TakeType SrcType, TakeType DstType);
|
||||
bool CharTradeItem(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID, unsigned long dwNPCID, unsigned char cCmd, unsigned short wItemID, TakeType TakeType, Item::ItemPos CouponPos, Item::CItem* lpItem);
|
||||
bool CharEquipShopInfo(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID, unsigned long dwNPCID, unsigned char cRace, unsigned char cTabPage);
|
||||
bool CharRepairItem(ClientNet::CClientEventHandler* lpHandler, unsigned long dwNPCID, Item::ItemPos* lpIndex);
|
||||
bool CharRepairAllItem(ClientNet::CClientEventHandler* lpHandler, unsigned long dwNPCID);
|
||||
bool CharUseItem(ClientNet::CClientEventHandler* lpHandler, unsigned long dwSenderID, unsigned long dwRecver, Item::ItemPos* lpIndex);
|
||||
|
||||
bool CharCastObject(ClientNet::CClientEventHandler* lpHandler, unsigned long dwSenderID, unsigned long dwRecverID, CastObject &CastObject);
|
||||
bool CharInstallSocket(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID, Item::ItemPos* lpEquipIndex, Item::ItemPos* lpSocket);
|
||||
bool CharRuneInstallSocket(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID, unsigned char ucRunePos, Item::ItemPos* lpEquipIndex, Item::ItemPos* lpSocket);
|
||||
bool CharRuneRemoveSocket(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID, unsigned char ucRunePos, Item::ItemPos* lpEquipIndex, Item::ItemPos* lpSocket);
|
||||
bool CharItemChemical(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID, Item::ItemPos* lpPickkingPos, Item::ItemPos* lpTargetPos, unsigned char cPickkingNum);
|
||||
bool CharUpgradeItem(ClientNet::CClientEventHandler* lpHandler, unsigned long dwNPCID);
|
||||
bool CharItemOptionGraft(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID, unsigned char cAttributeType);
|
||||
bool CharItemCompensation(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID);
|
||||
bool CharSplitItem(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID, TakeType &TakeType);
|
||||
bool CharAutoRouting(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID, unsigned __int64 nObjectID, unsigned short wItemID, Item::ItemPos Index);
|
||||
|
||||
bool StoreLogin(ClientNet::CClientEventHandler* lpHandler, char *Password, char PassSave);
|
||||
bool StoreLogout(ClientNet::CClientEventHandler* lpHandler);
|
||||
bool StoreBuyTab(ClientNet::CClientEventHandler* lpHandler, char TabNum);
|
||||
bool StoreChangePass(ClientNet::CClientEventHandler* lpHandler, char *Password, char *NewPassword);
|
||||
|
||||
bool CharStallOpen(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID, char* StallName);
|
||||
bool CharStallRegisterItem(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID, unsigned long dwShopID, TakeType TakeType, unsigned long dwPrice, unsigned char cCmd);
|
||||
bool CharStallEnter(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCustomerID, unsigned long dwOwner);
|
||||
|
||||
bool CharTakeItems(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID, unsigned char cTakeNum, TakeType* lpTakeTypes);
|
||||
bool CharTakeGold(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID, unsigned char cSrcPos, unsigned char cDstPos, unsigned long dwGold);
|
||||
bool CharExchangeCmd(ClientNet::CClientEventHandler* lpHandler, unsigned long dwSenderID, unsigned long dwRecverID, unsigned char cCmd);
|
||||
bool CharQuickSlotMove(ClientNet::CClientEventHandler* lpHandler, TakeType &TakeType, unsigned short usSkillID);
|
||||
|
||||
bool CharCastObjectInfo(ClientNet::CClientEventHandler* lpHandler, unsigned long dwSenderID,
|
||||
unsigned long dwRecverID, CastObject &CastObject);
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,126 @@
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
#include <Network/ClientSocket/ClientSocket.h>
|
||||
#include <Network/ClientNetwork/ClientEventHandler.h>
|
||||
#include <Network/Packet/PacketCommand.h>
|
||||
#include <Network/Packet/PacketStruct/CharCommunityPacket.h>
|
||||
#include <Network/Packet/PacketStruct/CharLoginoutPacket.h>
|
||||
#include <Network/Packet/PacketStruct/ServerPacket.h>
|
||||
|
||||
#include <Network/Packet/PacketStruct/GuildPacket.h>
|
||||
|
||||
#include "SendPacket.h"
|
||||
#include "SendLoginout.h"
|
||||
#include "GMMemory.h"
|
||||
|
||||
|
||||
bool SendPacket::CharLogin(ClientSocket& clientSocket, unsigned long dwUID,
|
||||
unsigned long dwCID, unsigned long dwSessionID)
|
||||
{
|
||||
clientSocket.ClearAddress(ClientSocket::MoveZoneAddr);
|
||||
|
||||
CHECK_TRUE_RETURN(0 == dwUID || 0 == dwCID, false);
|
||||
|
||||
ClientNet::CClientEventHandler* lpHandler =
|
||||
&clientSocket.GetHandler(ClientSocket::GameEventHandler);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktCLi), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktCLi* lpCLiPt = reinterpret_cast<PktCLi *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpCLiPt->m_dwSessionID = dwSessionID;
|
||||
lpCLiPt->m_dwUserID = dwUID;
|
||||
lpCLiPt->m_dwCharID = dwCID;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktCLi), CmdCharLogin, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharLogout(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned long dwCloseReason)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == dwCID, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktCLo), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktCLo* lpCLoPt = reinterpret_cast<PktCLo *>(lpMsgBlock->wr_ptr());
|
||||
lpCLoPt->m_dwCharID = dwCID;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktCLo), CmdCharLogout, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
// sphawk : ä<><C3A4> <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD>ϴ<EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -1<><31> <20>־<EFBFBD> <20>ּ<EFBFBD><D6BC><EFBFBD>.
|
||||
bool SendPacket::CharMoveZone(ClientNet::CClientEventHandler* lpHandler, char cZone, char cChannel, POS& NewPos_In)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktSZMv), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktSZMv* lpSZMvPt = reinterpret_cast<PktSZMv *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpSZMvPt->m_cChannel = cChannel;
|
||||
lpSZMvPt->m_cZone = cZone;
|
||||
lpSZMvPt->m_NewPos = NewPos_In;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktSZMv), CmdCharMoveZone, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::ServerZone(ClientNet::CClientEventHandler* lpHandler, char cZone,char cChannel)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktSZ), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktSZ* lpSZPt = reinterpret_cast<PktSZ *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpSZPt->m_cZone = cZone;
|
||||
lpSZPt->m_cChannel = cChannel;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktSZ), CmdServerZone, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CSAuthReturnCode(ClientNet::CClientEventHandler* lpHandler,
|
||||
unsigned long dwCID, unsigned long dwAuthCodeType,
|
||||
unsigned long dwReturnCode, const _GG_AUTH_DATA* lpAnswerCode)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktCSAuth), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktCSAuth* lpCSAuthPt = reinterpret_cast<PktCSAuth *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpCSAuthPt->m_dwCharID = dwCID;
|
||||
lpCSAuthPt->m_AuthCodeType = dwAuthCodeType;
|
||||
lpCSAuthPt->m_dwAuthCode = dwReturnCode;
|
||||
lpCSAuthPt->m_AuthCode2 = *lpAnswerCode;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktCSAuth), CmdCSAuth, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::KeyInfo(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned long* pKeyInfo)
|
||||
{
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktKeyInfo), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktKeyInfo* lpKeyInfo = reinterpret_cast<PktKeyInfo*>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpKeyInfo->m_dwCID = dwCID;
|
||||
memcpy(lpKeyInfo->m_dwKeyInfo, pKeyInfo, sizeof(unsigned long)*PktKeyInfo::MAX_KEY_INFO);
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktKeyInfo), CmdKeyInfo, 0, 0);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
#ifndef _GAMA_CLIENT_SEND_LOGIN_OUT_H_
|
||||
#define _GAMA_CLIENT_SEND_LOGIN_OUT_H_
|
||||
|
||||
#include <DB/DBDefine.h>
|
||||
|
||||
struct _GG_AUTH_DATA;
|
||||
class ClientSocket;
|
||||
|
||||
namespace ClientNet
|
||||
{
|
||||
class CClientEventHandler;
|
||||
}
|
||||
|
||||
namespace SendPacket
|
||||
{
|
||||
bool CharLogin(ClientSocket& clientSocket, unsigned long dwUID, unsigned long dwCID, unsigned long dwSessionID);
|
||||
bool CharLogout(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned long dwCloseReason);
|
||||
bool CharMoveZone(ClientNet::CClientEventHandler* lpHandler, char cZone, char cChannel, POS& NewPos_In);
|
||||
bool ServerZone(ClientNet::CClientEventHandler* lpHandler, char cZone, char cChannel);
|
||||
|
||||
// AuthCodeType<70><65> 1Ȥ<31><C8A4> 2<><32>
|
||||
bool CSAuthReturnCode(ClientNet::CClientEventHandler* lpHandler,
|
||||
unsigned long dwCID, unsigned long dwAuthCodeType,
|
||||
unsigned long dwReturnCode, const _GG_AUTH_DATA* lpAnswerCode);
|
||||
|
||||
bool KeyInfo(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCID, unsigned long* pKeyInfo);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,160 @@
|
||||
#include "stdafx.h"
|
||||
#include "SendMove.h"
|
||||
#include "SendPacket.h"
|
||||
|
||||
#include <Network/ClientNetwork/ClientEventHandler.h>
|
||||
#include <Network/ClientSocket/ClientSocket.h>
|
||||
#include <Network/Packet/PacketCommand.h>
|
||||
#include <Network/Packet/PacketStruct/AddressPacket.h>
|
||||
#include <Network/Packet/PacketStruct/CharMovePacket.h>
|
||||
#include <Network/Packet/PacketStruct/CharStatusPacket.h>
|
||||
|
||||
#include <mmsystem.h>
|
||||
#include "GMMemory.h"
|
||||
|
||||
|
||||
// TODO : ä<>ü<EFBFBD><C3BC><EFBFBD><EFBFBD>ε<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ְ<EFBFBD> <20>ܺο<DCBA><CEBF><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ѵ<EFBFBD>.
|
||||
// TODO : 1<>и<EFBFBD><D0B8><EFBFBD> <20>ѹ<EFBFBD><D1B9><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> UDP<44><50>Ŷ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20>ϵ<EFBFBD><CFB5><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ѵ<EFBFBD>.
|
||||
/*
|
||||
bool SendPacket::CharMoveUpdate(ClientNet::CClientEventHandler* lpHandler, unsigned long CharID_In,
|
||||
bool SitMode_In, POS* Pos_In, float Dir_In)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == CharID_In, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktMU), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktMU* lpMUPt = reinterpret_cast<PktMU *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpMUPt->m_dwTick = timeGetTime(); // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ƾ
|
||||
lpMUPt->m_bSitMode = SitMode_In;
|
||||
lpMUPt->m_Position = *Pos_In;
|
||||
lpMUPt->m_fDir = Dir_In;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktMU), CmdCharMoveUpdate, 0, 0);
|
||||
}
|
||||
|
||||
bool SendPacket::CharUpdateAddress(ClientSocket& clientSocket, unsigned long CharID_In)
|
||||
{
|
||||
ClientNet::CSession& Session = clientSocket.GetSession(ClientSocket::UDPSession);
|
||||
CHECK_TRUE_RETURN(0 == CharID_In, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktUA), INET_Addr(
|
||||
reinterpret_cast<SOCKADDR&>(clientSocket.GetAddress(ClientSocket::GameServerUDPAddr)), sizeof(SOCKADDR_IN)), CmdCharUpdateAddress);
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktUA* lpUAPt = reinterpret_cast<PktUA *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpUAPt->m_dwCharID = CharID_In;
|
||||
lpUAPt->m_PrivateAddress = clientSocket.GetAddress(ClientSocket::PrivateAddr);
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktUA), CmdCharUpdateAddress, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharAddressInfo(ClientSocket& clientSocket, unsigned long CharID_In, unsigned long TargetID_In)
|
||||
{
|
||||
ClientNet::CSession& Session = clientSocket.GetSession(ClientSocket::UDPSession);
|
||||
CHECK_TRUE_RETURN(0 == CharID_In, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktAI), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktAI* lpAIPt = reinterpret_cast<PktAI *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpAIPt->m_AddressInfo.m_dwCharID = CharID_In;
|
||||
lpAIPt->m_AddressInfo.m_PublicAddress = clientSocket.GetAddress(ClientSocket::PublicAddr);
|
||||
lpAIPt->m_AddressInfo.m_PrivateAddress = clientSocket.GetAddress(ClientSocket::PrivateAddr);
|
||||
|
||||
SendUDPList(Session, clientSocket.GetUDPList(ClientSocket::ListType_Client),
|
||||
TargetID_In, lpMsgBlock, sizeof(PktAI), CmdCharAddressInfo, 0, 0);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharMove(ClientSocket& clientSocket, unsigned long CharID_In, POS* Pos_In,
|
||||
float Dir_In, unsigned short UAct_In, unsigned short LAct_In,
|
||||
char Level_In, unsigned long ChantEf_In, unsigned long EnchantEf_In)
|
||||
{
|
||||
ClientNet::CSession& Session = clientSocket.GetSession(ClientSocket::UDPSession);
|
||||
CHECK_TRUE_RETURN(0 == CharID_In, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktMV), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktMV* lpMVPt = reinterpret_cast<PktMV *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpMVPt->m_dwCharID = CharID_In;
|
||||
lpMVPt->m_Position = *Pos_In;
|
||||
lpMVPt->m_fDir = Dir_In;
|
||||
lpMVPt->m_wUAct = UAct_In;
|
||||
lpMVPt->m_wLAct = LAct_In;
|
||||
|
||||
lpMVPt->m_wLevel = Level_In;
|
||||
lpMVPt->m_dwChantEf = ChantEf_In;
|
||||
lpMVPt->m_dwEnchantEf = EnchantEf_In;
|
||||
|
||||
SendUDPList(Session, clientSocket.GetUDPList(ClientSocket::ListType_Instance),
|
||||
clientSocket.IsRealIP(), lpMsgBlock, sizeof(PktMV), CmdCharMove, 0, 0);
|
||||
|
||||
clientSocket.DeleteInstanceUDPList();
|
||||
return true;
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
bool SendPacket::CharMoveEx(ClientSocket& clientSocket, unsigned long CharID_In,
|
||||
CNetworkPos& netPos, unsigned char UAct_In, unsigned char LAct_In)
|
||||
{
|
||||
ClientNet::CClientEventHandler* lpHandler = &clientSocket.GetHandler(ClientSocket::GameEventHandler);
|
||||
|
||||
CHECK_TRUE_RETURN(0 == CharID_In, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktMVEx), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktMVEx* lpPktMVEx = reinterpret_cast<PktMVEx*>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpPktMVEx->m_NetworkPos = netPos;
|
||||
lpPktMVEx->m_cUAct = UAct_In;
|
||||
lpPktMVEx->m_cLAct = LAct_In;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktMVEx), CmdCharMove, CharID_In);
|
||||
}
|
||||
|
||||
/* NOT USE
|
||||
bool SendPacket::CharRequireInfo(ClientSocket& clientSocket, unsigned long SenderID_In,
|
||||
unsigned long TargetID_In, unsigned char Cmd_In)
|
||||
{
|
||||
ClientNet::CSession& Session = clientSocket.GetSession(ClientSocket::UDPSession);
|
||||
CHECK_TRUE_RETURN(0 == SenderID_In || 0 == TargetID_In, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktRI), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktRI* lpRIPt = reinterpret_cast<PktRI *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpRIPt->m_dwCharID = SenderID_In;
|
||||
lpRIPt->m_cCmd = Cmd_In;
|
||||
lpRIPt->m_PublicAddress = clientSocket.GetAddress(ClientSocket::PublicAddr);
|
||||
lpRIPt->m_PrivateAddress = clientSocket.GetAddress(ClientSocket::PrivateAddr);
|
||||
|
||||
SendUDPList(Session, clientSocket.GetUDPList(ClientSocket::ListType_Client),
|
||||
TargetID_In, lpMsgBlock, sizeof(PktRI), CmdCharRequireInfo, 0, 0);
|
||||
|
||||
return true;
|
||||
}
|
||||
*/
|
||||
@@ -0,0 +1,34 @@
|
||||
#ifndef _GAMA_CLIENT_SEND_MOVE_H_
|
||||
#define _GAMA_CLIENT_SEND_MOVE_H_
|
||||
|
||||
#include <Network/Address/INET_Addr.h>
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
class ClientSocket;
|
||||
class CNetworkPos;
|
||||
struct POS;
|
||||
|
||||
namespace ClientNet
|
||||
{
|
||||
// forward decl.
|
||||
class CClientEventHandler;
|
||||
}
|
||||
|
||||
namespace SendPacket
|
||||
{
|
||||
bool CharMoveUpdate(ClientNet::CClientEventHandler* lpHandler, unsigned long CharID_In, bool SitMode_In, POS* Pos_In, float Dir_In);
|
||||
|
||||
bool CharMoveEx(ClientSocket& clientSocket, unsigned long CharID_In,
|
||||
CNetworkPos& netPos, unsigned char UAct_In, unsigned char LAct_In);
|
||||
|
||||
/* DEPLECATED
|
||||
// TODO : REMOVE UDP Packets
|
||||
bool CharUpdateAddress(ClientSocket& clientSocket, unsigned long CharID_In);
|
||||
bool CharAddressInfo(ClientSocket& clientSocket, unsigned long CharID_In, unsigned long TargetID_In);
|
||||
bool CharMove(ClientSocket& clientSocket, unsigned long CharID_In, POS* Pos_In, float Dir_In, unsigned short UAct_In,
|
||||
unsigned short LAct_In, char Level_In, unsigned long ChantEf_In, unsigned long EnchantEf_In);
|
||||
bool CharRequireInfo(ClientSocket& clientSocket, unsigned long SenderID_In, unsigned long TargetID_In, unsigned char Cmd_In);
|
||||
*/
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,41 @@
|
||||
#include "stdafx.h"
|
||||
#include "../ClientSocket.h"
|
||||
#include "SendPacket.h"
|
||||
#include <Network/ClientNetwork/ClientEventHandler.h>
|
||||
#include <Network/ClientNetwork/NetworkMsgBlock.h>
|
||||
#include "GMMemory.h"
|
||||
|
||||
bool SendPacket::SendPacket(ClientNet::CClientEventHandler* lpHandler,
|
||||
ClientNet::CNetworkMsgBlock* lpNetworkMsgBlock,
|
||||
unsigned short Len_In, unsigned char Cmd_In,
|
||||
unsigned short State_In, unsigned short Error_In)
|
||||
{
|
||||
if (0 != lpNetworkMsgBlock &&
|
||||
lpNetworkMsgBlock->WrapCrypt(Len_In, Cmd_In, State_In, Error_In) &&
|
||||
!ClientSocket::IsNSFlagChainChecked(Cmd_In))
|
||||
{
|
||||
ClientSocket::SetNSFlagOn( Cmd_In );
|
||||
lpHandler->SendPacket(lpNetworkMsgBlock);
|
||||
return true;
|
||||
}
|
||||
|
||||
ClientNet::CNetworkMsgPool::GetInstance().FreeNetworkMsgBlock(lpNetworkMsgBlock);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool SendPacket::SendPacket(ClientNet::CClientEventHandler* lpHandler,
|
||||
ClientNet::CNetworkMsgBlock* lpNetworkMsgBlock,
|
||||
unsigned short Len_In, unsigned char Cmd_In, unsigned long Tick_In)
|
||||
{
|
||||
if (0 != lpNetworkMsgBlock &&
|
||||
lpNetworkMsgBlock->WrapCrypt(Len_In, Cmd_In, Tick_In) &&
|
||||
!ClientSocket::IsNSFlagChainChecked(Cmd_In))
|
||||
{
|
||||
ClientSocket::SetNSFlagOn( Cmd_In );
|
||||
lpHandler->SendPacket(lpNetworkMsgBlock);
|
||||
return true;
|
||||
}
|
||||
|
||||
ClientNet::CNetworkMsgPool::GetInstance().FreeNetworkMsgBlock(lpNetworkMsgBlock);
|
||||
return false;
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
#ifndef _GAMA_CLIENT_PACKET_SEND_H_
|
||||
#define _GAMA_CLIENT_PACKET_SEND_H_
|
||||
|
||||
#include <cstdio>
|
||||
|
||||
#define _QUOTE(x) # x
|
||||
#define QUOTE(x) _QUOTE(x)
|
||||
|
||||
|
||||
#ifdef _DEBUG
|
||||
|
||||
#define CHECK_NULL_RETURN(value, retval)\
|
||||
if(0 == (value)) { fprintf(stderr, QUOTE(__FUNCTION__) " - " QUOTE(value) " is NULL\n"); return (retval); }
|
||||
|
||||
#define CHECK_TRUE_RETURN(value, retval)\
|
||||
if((value)) { fprintf(stderr, QUOTE(__FUNCTION__) " - " QUOTE(value) " is TRUE\n"); return (retval); }
|
||||
|
||||
#else
|
||||
|
||||
#define CHECK_NULL_RETURN(value, retval) if(0 == (value)) { return (retval); }
|
||||
#define CHECK_TRUE_RETURN(value, retval) if((value)) { return (retval); }
|
||||
|
||||
#endif
|
||||
|
||||
namespace ClientNet
|
||||
{
|
||||
// forward decl.
|
||||
class CClientEventHandler;
|
||||
class CNetworkMsgBlock;
|
||||
}
|
||||
|
||||
|
||||
namespace SendPacket
|
||||
{
|
||||
bool SendPacket(ClientNet::CClientEventHandler* lpHandler,
|
||||
ClientNet::CNetworkMsgBlock* lpNetworkMsgBlock,
|
||||
unsigned short Len_In, unsigned char Cmd_In,
|
||||
unsigned short State_In, unsigned short Error_In);
|
||||
|
||||
bool SendPacket(ClientNet::CClientEventHandler* lpHandler,
|
||||
ClientNet::CNetworkMsgBlock* lpNetworkMsgBlock,
|
||||
unsigned short Len_In, unsigned char Cmd_In, unsigned long Tick_In);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,69 @@
|
||||
#include "stdafx.h"
|
||||
#include "SendPacket.h"
|
||||
#include "SendQuest.h"
|
||||
|
||||
#include <Network/ClientNetwork/ClientEventHandler.h>
|
||||
#include <Network/Packet/PacketCommand.h>
|
||||
#include <Network/Packet/PacketStruct/CharQuestPacket.h>
|
||||
#include "GMMemory.h"
|
||||
|
||||
bool SendPacket::CharStartQuest(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID_In,
|
||||
unsigned long dwNPCID_In, unsigned short wQuestID_In)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == dwCharID_In, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktStartQuest), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktStartQuest* lpSQPt = reinterpret_cast<PktStartQuest *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpSQPt->m_dwCharID = dwCharID_In;
|
||||
lpSQPt->m_dwNPCID = dwNPCID_In;
|
||||
lpSQPt->m_wQuestID = wQuestID_In;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktStartQuest), CmdCharStartQuest, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharCancelQuest(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID_In, unsigned short wQuestID_In)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == dwCharID_In, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktCancelQuest), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktCancelQuest* lpCQPt = reinterpret_cast<PktCancelQuest *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpCQPt->m_dwCharID = dwCharID_In;
|
||||
lpCQPt->m_wQuestID = wQuestID_In;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktCancelQuest), CmdCharCancelQuest, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharOperateTrigger(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID_In, unsigned short wQuestID_In,
|
||||
unsigned char cPhase_In, unsigned char cTriggerKind_In, unsigned char cTrigger_In, unsigned char cCount_In)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == dwCharID_In, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktOperateTrigger), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
PktOperateTrigger* lpOTPt = reinterpret_cast<PktOperateTrigger *>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpOTPt->m_dwCharID = dwCharID_In;
|
||||
lpOTPt->m_wQuestID = wQuestID_In;
|
||||
lpOTPt->m_cPhase = cPhase_In;
|
||||
lpOTPt->m_cTriggerKind = cTriggerKind_In;
|
||||
lpOTPt->m_cTrigger = cTrigger_In;
|
||||
lpOTPt->m_cCount = cCount_In;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktOperateTrigger), CmdCharOperateTrigger, 0, 0);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
#ifndef _GAMA_CLIENT_SEND_QUEST_H_
|
||||
#define _GAMA_CLIENT_SEND_QUEST_H_
|
||||
|
||||
namespace ClientNet
|
||||
{
|
||||
// forward decl.
|
||||
class CClientEventHandler;
|
||||
}
|
||||
|
||||
namespace SendPacket
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
|
||||
bool CharStartQuest(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID_In, unsigned long dwNPCID_In, unsigned short wQuestID_In);
|
||||
bool CharCancelQuest(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID_In, unsigned short wQuestID_In);
|
||||
bool CharOperateTrigger(ClientNet::CClientEventHandler* lpHandler, unsigned long dwCharID_In, unsigned short wQuestID_In, unsigned char cPhase_In,
|
||||
unsigned char cTriggerKind_In, unsigned char cTrigger_In, unsigned char cCount_In);
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,69 @@
|
||||
#include "stdafx.h"
|
||||
#include "SendPacket.h"
|
||||
#include "SendSkill.h"
|
||||
|
||||
#include <Network/ClientNetwork/ClientEventHandler.h>
|
||||
#include <Network/Packet/PacketCommand.h>
|
||||
#include <Network/Packet/PacketStruct/CharStatusPacket.h>
|
||||
#include <Network/Packet/PacketStruct/CharAttackPacket.h>
|
||||
#include "GMMemory.h"
|
||||
|
||||
|
||||
bool SendPacket::CharSkillCreate(ClientNet::CClientEventHandler* lpHandler, unsigned long CharID_In,
|
||||
unsigned short SkillID_In, unsigned char Index_In)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == CharID_In, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktSk), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
LPPktSk lpSkPt = reinterpret_cast<LPPktSk>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpSkPt->m_dwCharID = CharID_In;
|
||||
lpSkPt->m_wSkill = SkillID_In;
|
||||
lpSkPt->m_cIndex = Index_In;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktSk), CmdCharSkillCreate, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharSkillErase(ClientNet::CClientEventHandler* lpHandler, unsigned long CharID_In,
|
||||
unsigned short SkillID_In, unsigned char Index_In)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == CharID_In, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktSk), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
LPPktSk lpSkPt = reinterpret_cast<LPPktSk>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpSkPt->m_dwCharID = CharID_In;
|
||||
lpSkPt->m_wSkill = SkillID_In;
|
||||
lpSkPt->m_cIndex = Index_In;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktSk), CmdCharSkillErase, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
bool SendPacket::CharSummonCmd(ClientNet::CClientEventHandler* lpHandler, unsigned long CharID_In,
|
||||
unsigned char Cmd_In, unsigned long TargetID_In)
|
||||
{
|
||||
CHECK_TRUE_RETURN(0 == CharID_In, false);
|
||||
|
||||
ClientNet::CNetworkMsgBlock* lpMsgBlock =
|
||||
ClientNet::CNetworkMsgPool::GetInstance().GetNetworkMsgBlock(sizeof(PktSummonCmd), lpHandler->GetPeerAddress());
|
||||
|
||||
CHECK_NULL_RETURN(lpMsgBlock, false);
|
||||
|
||||
LPPktSummonCmd lpSuCPt = reinterpret_cast<LPPktSummonCmd>(lpMsgBlock->wr_ptr());
|
||||
|
||||
lpSuCPt->m_dwCharID = CharID_In;
|
||||
lpSuCPt->m_cCmd = Cmd_In;
|
||||
lpSuCPt->m_dwTargetID = TargetID_In;
|
||||
|
||||
return SendPacket(lpHandler, lpMsgBlock, sizeof(PktSummonCmd), CmdCharSummonCmd, 0, 0);
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
#ifndef _GAMA_CLIENT_SEND_SKILL_PACKET_H_
|
||||
#define _GAMA_CLIENT_SEND_SKILL_PACKET_H_
|
||||
|
||||
|
||||
#include <Item/ItemStructure.h>
|
||||
|
||||
namespace ClientNet
|
||||
{
|
||||
// forward decl.
|
||||
class CClientEventHandler;
|
||||
}
|
||||
|
||||
|
||||
namespace SendPacket
|
||||
{
|
||||
bool CharSkillCreate(ClientNet::CClientEventHandler* lpHandler, unsigned long CharID_In, unsigned short SkillID_In, unsigned char Index_In);
|
||||
bool CharSkillErase(ClientNet::CClientEventHandler* lpHandler, unsigned long CharID_In, unsigned short SkillID_In, unsigned char Index_In);
|
||||
bool CharSummonCmd(ClientNet::CClientEventHandler* lpHandler, unsigned long CharID_In, unsigned char Cmd_In, unsigned long TargetID_In = 0);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,357 @@
|
||||
/*
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// UDPList
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
#include "stdafx.h"
|
||||
#include "UDPList.h"
|
||||
|
||||
UDPList::UDPList(void)
|
||||
{
|
||||
}
|
||||
|
||||
UDPList::~UDPList(void)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
DWORD UDPList::InsertIntoAddressList(DWORD CharID_In, const SOCKADDR_IN& PubAddress_In,
|
||||
const SOCKADDR_IN& PriAddress_In, PEERTYPE PeerType_In)
|
||||
{
|
||||
LPUDP_LIST lpList = SearchFromAddressList(CharID_In);
|
||||
if(lpList != NULL)
|
||||
{
|
||||
lpList->CharID = CharID_In;
|
||||
lpList->PublicAddress = PubAddress_In;
|
||||
lpList->PrivateAddress = PriAddress_In;
|
||||
lpList->PeerType = PeerType_In;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
lpList = Create();
|
||||
if(lpList != NULL)
|
||||
{
|
||||
lpList->CharID = CharID_In;
|
||||
lpList->PublicAddress = PubAddress_In;
|
||||
lpList->PrivateAddress = PriAddress_In;
|
||||
lpList->PeerType = PeerType_In;
|
||||
|
||||
InsertToList(lpList);
|
||||
|
||||
return 2;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool UDPList::DeleteFromAddressList(DWORD CharID_In)
|
||||
{
|
||||
LPUDP_LIST lpList = SearchFromAddressList(CharID_In);
|
||||
if(lpList != NULL)
|
||||
{
|
||||
DeleteFromList(lpList);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool UDPList::DeleteFromAddressList(const SOCKADDR_IN& Address_In)
|
||||
{
|
||||
LPUDP_LIST lpList = SearchFromAddressList(Address_In);
|
||||
if(lpList != NULL)
|
||||
{
|
||||
DeleteFromList(lpList);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
LPUDP_LIST UDPList::SearchFromAddressList(DWORD CharID_In)
|
||||
{
|
||||
LPUDP_LIST lpList;
|
||||
|
||||
lpList = m_pListHead;
|
||||
while(lpList)
|
||||
{
|
||||
if(lpList->CharID == CharID_In)
|
||||
return lpList;
|
||||
|
||||
lpList = lpList->pNext;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
LPUDP_LIST UDPList::SearchFromAddressList(const SOCKADDR_IN& Address_In)
|
||||
{
|
||||
LPUDP_LIST lpList;
|
||||
|
||||
lpList = m_pListHead;
|
||||
while(lpList)
|
||||
{
|
||||
if(lpList->PrivateAddress.sin_addr.S_un.S_addr == Address_In.sin_addr.S_un.S_addr && lpList->PrivateAddress.sin_port == Address_In.sin_port)
|
||||
return lpList;
|
||||
|
||||
if(lpList->PublicAddress.sin_addr.S_un.S_addr == Address_In.sin_addr.S_un.S_addr && lpList->PublicAddress.sin_port == Address_In.sin_port)
|
||||
return lpList;
|
||||
|
||||
lpList = lpList->pNext;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// UDPList
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
#include "stdafx.h"
|
||||
#include "UDPList.h"
|
||||
#include "GMMemory.h"
|
||||
|
||||
UDPList::UDPList(void)
|
||||
: m_nMaxGarbageStackLength(0)
|
||||
{
|
||||
}
|
||||
|
||||
UDPList::~UDPList(void)
|
||||
{
|
||||
DeleteAllFromList();
|
||||
ClearGarbageStack();
|
||||
}
|
||||
|
||||
DWORD UDPList::InsertIntoAddressList(DWORD CharID_In, const SOCKADDR_IN& PubAddress_In,
|
||||
const SOCKADDR_IN& PriAddress_In, PEERTYPE PeerType_In)
|
||||
{
|
||||
LPUDP_LIST lpList = SearchFromAddressList(CharID_In);
|
||||
|
||||
if(NULL == lpList)
|
||||
{
|
||||
if(m_GarbageList.empty())
|
||||
{
|
||||
lpList = new UDP_LIST;
|
||||
}
|
||||
else
|
||||
{
|
||||
lpList = m_GarbageList.front();
|
||||
m_GarbageList.pop_front();
|
||||
}
|
||||
|
||||
if(lpList != NULL)
|
||||
{
|
||||
lpList->CharID = CharID_In;
|
||||
lpList->PublicAddress = PubAddress_In;
|
||||
lpList->PrivateAddress = PriAddress_In;
|
||||
lpList->PeerType = PeerType_In;
|
||||
lpList->MoveTick = 0;
|
||||
|
||||
m_UDP_List.push_back(lpList);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lpList->PublicAddress = PubAddress_In;
|
||||
lpList->PrivateAddress = PriAddress_In;
|
||||
lpList->PeerType = PeerType_In;
|
||||
lpList->MoveTick = 0;
|
||||
return 2;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
DWORD UDPList::InsertIntoAddressList(UDP_LIST* lpUDP_List)
|
||||
{
|
||||
LPUDP_LIST lpList = SearchFromAddressList(lpUDP_List->CharID);
|
||||
|
||||
if(NULL == lpList)
|
||||
{
|
||||
if(m_GarbageList.empty())
|
||||
{
|
||||
lpList = new UDP_LIST;
|
||||
}
|
||||
else
|
||||
{
|
||||
lpList = m_GarbageList.front();
|
||||
m_GarbageList.pop_front();
|
||||
}
|
||||
|
||||
if(lpList != NULL)
|
||||
{
|
||||
*lpList = *lpUDP_List;
|
||||
m_UDP_List.push_back(lpList);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
*lpList = *lpUDP_List;
|
||||
return 2;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool UDPList::DeleteFromAddressList(DWORD CharID_In)
|
||||
{
|
||||
STDLIST::iterator pos = m_UDP_List.begin();
|
||||
STDLIST::iterator end = m_UDP_List.end();
|
||||
|
||||
for(;pos != end; ++pos)
|
||||
{
|
||||
LPUDP_LIST lpList = (*pos);
|
||||
if(lpList->CharID == CharID_In)
|
||||
{
|
||||
m_UDP_List.erase(pos);
|
||||
|
||||
if(m_GarbageList.size() < m_nMaxGarbageStackLength)
|
||||
{
|
||||
m_GarbageList.push_back(lpList);
|
||||
}
|
||||
else
|
||||
{
|
||||
delete lpList;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool UDPList::DeleteFromAddressList(const SOCKADDR_IN& Address_In)
|
||||
{
|
||||
STDLIST::iterator pos = m_UDP_List.begin();
|
||||
STDLIST::iterator end = m_UDP_List.end();
|
||||
|
||||
for(;pos != end; ++pos)
|
||||
{
|
||||
LPUDP_LIST lpList = (*pos);
|
||||
bool bDelete = false;
|
||||
|
||||
if(lpList->PrivateAddress.sin_addr.S_un.S_addr == Address_In.sin_addr.S_un.S_addr &&
|
||||
lpList->PrivateAddress.sin_port == Address_In.sin_port)
|
||||
{
|
||||
bDelete = true;
|
||||
}
|
||||
|
||||
if(lpList->PublicAddress.sin_addr.S_un.S_addr == Address_In.sin_addr.S_un.S_addr &&
|
||||
lpList->PublicAddress.sin_port == Address_In.sin_port)
|
||||
{
|
||||
bDelete = true;
|
||||
}
|
||||
|
||||
if(bDelete)
|
||||
{
|
||||
m_UDP_List.erase(pos);
|
||||
|
||||
if(m_GarbageList.size() < m_nMaxGarbageStackLength)
|
||||
{
|
||||
m_GarbageList.push_back(lpList);
|
||||
}
|
||||
else
|
||||
{
|
||||
delete lpList;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
LPUDP_LIST UDPList::SearchFromAddressList(DWORD CharID_In)
|
||||
{
|
||||
STDLIST::iterator pos = m_UDP_List.begin();
|
||||
STDLIST::iterator end = m_UDP_List.end();
|
||||
|
||||
for(;pos != end; ++pos)
|
||||
{
|
||||
LPUDP_LIST lpList = (*pos);
|
||||
if(lpList->CharID == CharID_In)
|
||||
{
|
||||
return lpList;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
LPUDP_LIST UDPList::SearchFromAddressList(const SOCKADDR_IN& Address_In)
|
||||
{
|
||||
STDLIST::iterator pos = m_UDP_List.begin();
|
||||
STDLIST::iterator end = m_UDP_List.end();
|
||||
|
||||
for(;pos != end; ++pos)
|
||||
{
|
||||
LPUDP_LIST lpList = (*pos);
|
||||
|
||||
if(lpList->PrivateAddress.sin_addr.S_un.S_addr == Address_In.sin_addr.S_un.S_addr &&
|
||||
lpList->PrivateAddress.sin_port == Address_In.sin_port)
|
||||
{
|
||||
return lpList;
|
||||
}
|
||||
|
||||
if(lpList->PublicAddress.sin_addr.S_un.S_addr == Address_In.sin_addr.S_un.S_addr &&
|
||||
lpList->PublicAddress.sin_port == Address_In.sin_port)
|
||||
{
|
||||
return lpList;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
void UDPList::DeleteAllFromList()
|
||||
{
|
||||
STDLIST::iterator pos = m_UDP_List.begin();
|
||||
STDLIST::iterator end = m_UDP_List.end();
|
||||
|
||||
for(;pos != end; ++pos)
|
||||
{
|
||||
LPUDP_LIST lpList = (*pos);
|
||||
|
||||
if(m_GarbageList.size() < m_nMaxGarbageStackLength)
|
||||
{
|
||||
m_GarbageList.push_back(lpList);
|
||||
}
|
||||
else
|
||||
{
|
||||
delete lpList;
|
||||
}
|
||||
}
|
||||
|
||||
m_UDP_List.clear();
|
||||
}
|
||||
|
||||
|
||||
void UDPList::SetGarbageStackLength(size_t StackLength_In)
|
||||
{
|
||||
m_nMaxGarbageStackLength = StackLength_In;
|
||||
}
|
||||
|
||||
void UDPList::ClearGarbageStack(void)
|
||||
{
|
||||
STDLIST::iterator pos = m_GarbageList.begin();
|
||||
STDLIST::iterator end = m_GarbageList.end();
|
||||
|
||||
for(;pos != end; ++pos)
|
||||
{
|
||||
delete (*pos);
|
||||
}
|
||||
|
||||
m_GarbageList.clear();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// UDPList
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
#ifndef _GAMA_CLIENT_UDP_ADDRESS_LIST_H_
|
||||
#define _GAMA_CLIENT_UDP_ADDRESS_LIST_H_
|
||||
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <winsock2.h>
|
||||
#include <winsock.h>
|
||||
#include <list>
|
||||
|
||||
enum PEERTYPE
|
||||
{
|
||||
Not_Defined = 0, // <20><><EFBFBD><EFBFBD> <20>ȵ<EFBFBD>
|
||||
REAL_IP, // <20><><EFBFBD><EFBFBD> IP
|
||||
NAT_Friendly, // <20><><EFBFBD><EFBFBD> IP (<28><><EFBFBD><EFBFBD> NAT)
|
||||
NAT_Different // <20><><EFBFBD><EFBFBD> IP (<28>ٸ<EFBFBD> NAT)
|
||||
};
|
||||
|
||||
typedef struct UDP_LIST* LPUDP_LIST;
|
||||
struct UDP_LIST
|
||||
{
|
||||
DWORD CharID; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD>̵<EFBFBD>
|
||||
|
||||
PEERTYPE PeerType; // <20><><EFBFBD><EFBFBD> Ÿ<><C5B8>
|
||||
SOCKADDR_IN PublicAddress; // <20>ּ<EFBFBD> Public
|
||||
SOCKADDR_IN PrivateAddress; // <20>ּ<EFBFBD> Private
|
||||
|
||||
DWORD MoveTick; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ð<EFBFBD>
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Ŭ<><C5AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
class UDPList
|
||||
{
|
||||
public:
|
||||
|
||||
typedef std::list<UDP_LIST*> STDLIST;
|
||||
|
||||
UDPList();
|
||||
~UDPList();
|
||||
|
||||
DWORD InsertIntoAddressList(DWORD CharID_In, const SOCKADDR_IN& PubAddress_In,
|
||||
const SOCKADDR_IN& PriAddress_In, PEERTYPE PeerType_In);
|
||||
|
||||
DWORD InsertIntoAddressList(UDP_LIST* lpUDP_List);
|
||||
|
||||
bool DeleteFromAddressList(DWORD CharID_In);
|
||||
bool DeleteFromAddressList(const SOCKADDR_IN& Address_In);
|
||||
void DeleteAllFromList();
|
||||
|
||||
bool IsListEmpty() { return m_UDP_List.empty(); }
|
||||
size_t GetListCount() { return m_UDP_List.size(); }
|
||||
|
||||
LPUDP_LIST SearchFromAddressList(DWORD CharID_In);
|
||||
LPUDP_LIST SearchFromAddressList(const SOCKADDR_IN& Address_In);
|
||||
|
||||
void SetGarbageStackLength(size_t StackLength_In);
|
||||
void ClearGarbageStack(void);
|
||||
|
||||
STDLIST::iterator begin() { return m_UDP_List.begin(); }
|
||||
STDLIST::iterator end() { return m_UDP_List.end(); }
|
||||
|
||||
protected:
|
||||
|
||||
STDLIST m_UDP_List;
|
||||
STDLIST m_GarbageList;
|
||||
|
||||
size_t m_nMaxGarbageStackLength;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user