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>
434 lines
15 KiB
C++
434 lines
15 KiB
C++
#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();
|
||
}
|