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,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
|
||||
Reference in New Issue
Block a user