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,75 @@
|
||||
#include "stdafx.h"
|
||||
#include "LogDispatch.h"
|
||||
|
||||
#include <Network/Packet/PacketCommand.h>
|
||||
#include <Network/Packet/PacketStruct/ServerPacket.h>
|
||||
#include <Network/Dispatch/GameLog/SendLogPacket.h>
|
||||
|
||||
#include <Utility/Setup/ServerSetup.h>
|
||||
|
||||
CLogDispatch::CLogDispatch(CSession& Session)
|
||||
: CRylServerDispatch(Session, 0xFFFFFFFF)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
CLogDispatch::~CLogDispatch()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void CLogDispatch::Connected()
|
||||
{
|
||||
SendLogPacket::ServerLogin(m_SendStream, CServerSetup::GetInstance().GetServerID());
|
||||
}
|
||||
|
||||
void CLogDispatch::Disconnected()
|
||||
{
|
||||
ERRLOG0(g_Log, "<EFBFBD>α<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.");
|
||||
GetDispatchTable().RemoveDispatch(this);
|
||||
}
|
||||
|
||||
bool CLogDispatch::DispatchPacket(PktBase* lpPktBase)
|
||||
{
|
||||
bool bResult = false;
|
||||
|
||||
switch(lpPktBase->GetCmd())
|
||||
{
|
||||
case CmdSysServerLogin:
|
||||
bResult = ProcessServerLoginAck(lpPktBase);
|
||||
break;
|
||||
|
||||
default:
|
||||
bResult = true;
|
||||
ERRLOG2(g_Log, "DP:0x%p/Cmd:0x%02x/Unknown Logpacket",
|
||||
this, lpPktBase->GetCmd());
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if(!bResult)
|
||||
{
|
||||
ERRLOG2(g_Log, "DP:0x%p/Cmd:0x%02x/Logpacket Process failed",
|
||||
this, lpPktBase->GetCmd());
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool CLogDispatch::ProcessServerLoginAck(PktBase* lpPktBase)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>..
|
||||
|
||||
if(0 == lpPktBase->GetError())
|
||||
{
|
||||
DETLOG0(g_Log, "<EFBFBD>α<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD>ϴ<EFBFBD>.");
|
||||
GetDispatchTable().SetDispatch(this);
|
||||
return true;
|
||||
}
|
||||
|
||||
ERRLOG0(g_Log, "<EFBFBD>α<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ῡ <20><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>.");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
#ifndef _GAME_SERVER_LOG_DISPATCH_H_
|
||||
#define _GAME_SERVER_LOG_DISPATCH_H_
|
||||
|
||||
#include <Network/Stream/SendStream.h>
|
||||
#include <Network/Dispatch/RylServerDispatch.h>
|
||||
#include <Network/Dispatch/SingleDispatchStorage.h>
|
||||
|
||||
class CLogDispatch : public CRylServerDispatch
|
||||
{
|
||||
public:
|
||||
|
||||
static CSingleDispatch& GetDispatchTable()
|
||||
{
|
||||
static CSingleDispatch singleDispatch;
|
||||
return singleDispatch;
|
||||
}
|
||||
|
||||
enum Const
|
||||
{
|
||||
MAX_PACKET_DISPATCH_PER_PULSE = 10
|
||||
};
|
||||
|
||||
CLogDispatch(CSession& Session);
|
||||
virtual ~CLogDispatch();
|
||||
|
||||
virtual void Connected();
|
||||
virtual void Disconnected();
|
||||
virtual bool DispatchPacket(PktBase* lpPktBase);
|
||||
|
||||
private:
|
||||
|
||||
bool ProcessServerLoginAck(PktBase* lpPktBase);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,642 @@
|
||||
#include "stdafx.h"
|
||||
#include "SendLogPacket.h"
|
||||
#include "LogDispatch.h"
|
||||
|
||||
|
||||
#include <RylGameLibrary/Item/Item.h>
|
||||
#include <RylGameLibrary/Log/GameLog.h>
|
||||
#include <RylGameLibrary/Creature/Character/Character.h>
|
||||
#include <RylServerLibrary/Network/Stream/SendStream.h>
|
||||
#include <RylServerLibrary/Network/Packet/PacketCommand.h>
|
||||
#include <RylServerLibrary/Network/Packet/PacketStruct/ServerPacket.h>
|
||||
#include <RylServerLibrary/Network/Packet/PacketStruct/GameLogPacket.h>
|
||||
|
||||
|
||||
bool SendLogPacket::ServerLogin(CSendStream& LogSendStream, unsigned long dwServerID)
|
||||
{
|
||||
char* lpBuffer = LogSendStream.GetBuffer(sizeof(PktSL));
|
||||
if(NULL != lpBuffer)
|
||||
{
|
||||
PktSL* lpPktSL = reinterpret_cast<PktSL*>(lpBuffer);
|
||||
|
||||
memset(lpPktSL, 0, sizeof(PktSL));
|
||||
lpPktSL->m_dwServerID = dwServerID;
|
||||
|
||||
return LogSendStream.WrapHeader(sizeof(PktSL), CmdSysServerLogin, 0, 0);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool SendLogPacket::DefaultInfo(CSendStream& LogSendStream, CCharacter& Character,
|
||||
unsigned long dwGold, unsigned long dwSecondUID, unsigned long dwSecondCID,
|
||||
unsigned char cCommand, unsigned char cFlags)
|
||||
{
|
||||
char* lpBuffer = LogSendStream.GetBuffer(sizeof(GAMELOG::PACKET::DefaultInfo));
|
||||
if(NULL != lpBuffer)
|
||||
{
|
||||
GAMELOG::PACKET::DefaultInfo* lpDefaultInfo =
|
||||
reinterpret_cast<GAMELOG::PACKET::DefaultInfo*>(lpBuffer);
|
||||
|
||||
lpDefaultInfo->m_dwTime = time(NULL);
|
||||
|
||||
lpDefaultInfo->m_dwFirstUID = Character.GetUID();
|
||||
lpDefaultInfo->m_dwFirstCID = Character.GetCID();
|
||||
lpDefaultInfo->m_dwGold = dwGold;
|
||||
lpDefaultInfo->m_dwSecondUID = dwSecondUID;
|
||||
lpDefaultInfo->m_dwSecondCID = dwSecondCID;
|
||||
|
||||
const Position& Pos = Character.GetCurrentPos();
|
||||
|
||||
lpDefaultInfo->m_usPosX = static_cast<unsigned short>(Pos.m_fPointX);
|
||||
lpDefaultInfo->m_usPosY = static_cast<unsigned short>(Pos.m_fPointY);
|
||||
lpDefaultInfo->m_usPosZ = static_cast<unsigned short>(Pos.m_fPointZ);
|
||||
lpDefaultInfo->m_cCommand = cCommand;
|
||||
lpDefaultInfo->m_cFlags = cFlags;
|
||||
|
||||
return LogSendStream.WrapHeader(sizeof(GAMELOG::PACKET::DefaultInfo),
|
||||
GAMELOG::CMD::DefaultInfo, 0, 0);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool SendLogPacket::ItemInfo(CSendStream& LogSendStream, CCharacter& Character, Item::CItem& Item,
|
||||
unsigned long dwGold, unsigned long dwSecondUID, unsigned long dwSecondCID,
|
||||
unsigned char cCommand, unsigned char cFlags)
|
||||
{
|
||||
char* lpBuffer = LogSendStream.GetBuffer(sizeof(GAMELOG::PACKET::ItemInfo));
|
||||
if(NULL != lpBuffer)
|
||||
{
|
||||
GAMELOG::PACKET::ItemInfo* lpItemInfo =
|
||||
reinterpret_cast<GAMELOG::PACKET::ItemInfo*>(lpBuffer);
|
||||
|
||||
lpItemInfo->m_dwTime = time(NULL);
|
||||
|
||||
lpItemInfo->m_dwFirstUID = Character.GetUID();
|
||||
lpItemInfo->m_dwFirstCID = Character.GetCID();
|
||||
lpItemInfo->m_dwGold = dwGold;
|
||||
lpItemInfo->m_dwSecondUID = dwSecondUID;
|
||||
lpItemInfo->m_dwSecondCID = dwSecondCID;
|
||||
|
||||
const Position& Pos = Character.GetCurrentPos();
|
||||
|
||||
lpItemInfo->m_usPosX = static_cast<unsigned short>(Pos.m_fPointX);
|
||||
lpItemInfo->m_usPosY = static_cast<unsigned short>(Pos.m_fPointY);
|
||||
lpItemInfo->m_usPosZ = static_cast<unsigned short>(Pos.m_fPointZ);
|
||||
lpItemInfo->m_cCommand = cCommand;
|
||||
lpItemInfo->m_cFlags = cFlags;
|
||||
|
||||
lpItemInfo->m_dwItemUID = Item.GetUID();
|
||||
lpItemInfo->m_usItemProtoTypeID = Item.GetPrototypeID();
|
||||
lpItemInfo->m_cItemAmount = Item.GetNumOrDurability();
|
||||
|
||||
Item::ItemPos itemPos = Item.GetPos();
|
||||
|
||||
lpItemInfo->m_cTakeType = itemPos.m_cPos;
|
||||
|
||||
switch(itemPos.m_cPos)
|
||||
{
|
||||
case TakeType::TS_INVEN:
|
||||
case TakeType::TS_EXCHANGE:
|
||||
case TakeType::TS_DEPOSIT:
|
||||
case TakeType::TS_STALL:
|
||||
|
||||
lpItemInfo->m_cItemPosX = itemPos.GetXIndex();
|
||||
lpItemInfo->m_cItemPosY = itemPos.GetYIndex();
|
||||
lpItemInfo->m_cItemPosZ = itemPos.GetZIndex();
|
||||
break;
|
||||
|
||||
case TakeType::TS_EQUIP:
|
||||
case TakeType::TS_TEMP:
|
||||
case TakeType::TS_EXTRA:
|
||||
|
||||
lpItemInfo->m_cItemPosX = itemPos.m_cIndex;
|
||||
lpItemInfo->m_cItemPosY = 0;
|
||||
lpItemInfo->m_cItemPosZ = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
lpItemInfo->m_cItemExtra = 0;
|
||||
|
||||
return LogSendStream.WrapHeader(sizeof(GAMELOG::PACKET::ItemInfo),
|
||||
GAMELOG::CMD::ItemInfo, 0, 0);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool SendLogPacket::EquipInfo(CSendStream& LogSendStream, CCharacter& Character, Item::CEquipment& Equipment,
|
||||
unsigned long dwGold, unsigned long dwSecondUID, unsigned long dwSecondCID,
|
||||
unsigned char cCommand, unsigned char cFlags)
|
||||
{
|
||||
char* lpBuffer = LogSendStream.GetBuffer(sizeof(GAMELOG::PACKET::EquipInfo));
|
||||
if(NULL != lpBuffer)
|
||||
{
|
||||
GAMELOG::PACKET::EquipInfo* lpEquipInfo =
|
||||
reinterpret_cast<GAMELOG::PACKET::EquipInfo*>(lpBuffer);
|
||||
|
||||
lpEquipInfo->m_dwTime = time(NULL);
|
||||
|
||||
lpEquipInfo->m_dwFirstUID = Character.GetUID();
|
||||
lpEquipInfo->m_dwFirstCID = Character.GetCID();
|
||||
lpEquipInfo->m_dwGold = dwGold;
|
||||
lpEquipInfo->m_dwSecondUID = dwSecondUID;
|
||||
lpEquipInfo->m_dwSecondCID = dwSecondCID;
|
||||
|
||||
const Position& Pos = Character.GetCurrentPos();
|
||||
|
||||
lpEquipInfo->m_usPosX = static_cast<unsigned short>(Pos.m_fPointX);
|
||||
lpEquipInfo->m_usPosY = static_cast<unsigned short>(Pos.m_fPointY);
|
||||
lpEquipInfo->m_usPosZ = static_cast<unsigned short>(Pos.m_fPointZ);
|
||||
lpEquipInfo->m_cCommand = cCommand;
|
||||
lpEquipInfo->m_cFlags = cFlags;
|
||||
|
||||
lpEquipInfo->m_dwItemUID = Equipment.GetUID();
|
||||
lpEquipInfo->m_usItemProtoTypeID = Equipment.GetPrototypeID();
|
||||
lpEquipInfo->m_cItemAmount = Equipment.GetNumOrDurability();
|
||||
|
||||
Item::ItemPos itemPos = Equipment.GetPos();
|
||||
|
||||
lpEquipInfo->m_cTakeType = itemPos.m_cPos;
|
||||
|
||||
switch(itemPos.m_cPos)
|
||||
{
|
||||
case TakeType::TS_INVEN:
|
||||
case TakeType::TS_EXCHANGE:
|
||||
case TakeType::TS_DEPOSIT:
|
||||
case TakeType::TS_STALL:
|
||||
|
||||
lpEquipInfo->m_cItemPosX = itemPos.GetXIndex();
|
||||
lpEquipInfo->m_cItemPosY = itemPos.GetYIndex();
|
||||
lpEquipInfo->m_cItemPosZ = itemPos.GetZIndex();
|
||||
break;
|
||||
|
||||
case TakeType::TS_EQUIP:
|
||||
case TakeType::TS_TEMP:
|
||||
case TakeType::TS_EXTRA:
|
||||
|
||||
lpEquipInfo->m_cItemPosX = itemPos.m_cIndex;
|
||||
lpEquipInfo->m_cItemPosY = 0;
|
||||
lpEquipInfo->m_cItemPosZ = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
lpEquipInfo->m_cItemExtra = 0;
|
||||
|
||||
// lpEquipInfo->m_usRuneSocket = Equipment.GetRuneSocket();
|
||||
lpEquipInfo->m_cUpgradeStep = Equipment.GetUpgradeLevel();
|
||||
lpEquipInfo->m_cMaxSocket = Equipment.GetMaxSocketNum();
|
||||
lpEquipInfo->m_cMaxDurability = Equipment.GetMaxNumOrDurability();
|
||||
|
||||
Equipment.GetSocket(lpEquipInfo->m_cSocket, GAMELOG::PACKET::MAX_SOCKET_NUM);
|
||||
Equipment.GetAttribute(lpEquipInfo->m_usAttribute, GAMELOG::PACKET::MAX_ATTRIBUTE_NUM);
|
||||
|
||||
return LogSendStream.WrapHeader(sizeof(GAMELOG::PACKET::EquipInfo),
|
||||
GAMELOG::CMD::EquipInfo, 0, 0);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void CharLoginout(CCharacter& Character, unsigned char cCommand)
|
||||
{
|
||||
unsigned char cInventoryCommand = 0;
|
||||
unsigned char cDepositCommand = 0;
|
||||
|
||||
switch(cCommand)
|
||||
{
|
||||
case GAMELOG::CMD::CHAR_LOGIN:
|
||||
|
||||
cInventoryCommand = GAMELOG::CMD::CHAR_LOGIN_INVENTORY_GOLD;
|
||||
cDepositCommand = GAMELOG::CMD::CHAR_LOGIN_DEPOSIT_GOLD;
|
||||
break;
|
||||
|
||||
case GAMELOG::CMD::CHAR_LOGOUT:
|
||||
|
||||
cInventoryCommand = GAMELOG::CMD::CHAR_LOGOUT_INVENTORY_GOLD;
|
||||
cDepositCommand = GAMELOG::CMD::CHAR_LOGOUT_DEPOSIT_GOLD;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
GET_SINGLE_DISPATCH(lpLogDispatch, CLogDispatch,
|
||||
CLogDispatch::GetDispatchTable());
|
||||
|
||||
if(NULL != lpLogDispatch)
|
||||
{
|
||||
CSendStream& SendStream = lpLogDispatch->GetSendStream();
|
||||
|
||||
// ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
// ij<><C4B3><EFBFBD><EFBFBD> <20>κ<EFBFBD><CEBA>丮, â<><C3A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : 1. Equipment, 2. Inventory, 3. Extra, 4.Exchange, 5. Deposit
|
||||
|
||||
Item::CItem* lpItem = NULL;
|
||||
Item::CEquipment* lpEquipment = NULL;
|
||||
Item::CItemContainer::iterator begin, end;
|
||||
|
||||
Item::CDepositContainer& Deposit = Character.GetDeposit();
|
||||
|
||||
const int MAX_CONTAINER = 8;
|
||||
Item::CItemContainer* lpItemContainers[MAX_CONTAINER] =
|
||||
{
|
||||
&Character.GetEquipments(),
|
||||
&Character.GetInventory(),
|
||||
&Character.GetExtra(),
|
||||
&Character.GetExchange(),
|
||||
Deposit.GetTab(0),
|
||||
Deposit.GetTab(1),
|
||||
Deposit.GetTab(2),
|
||||
Deposit.GetTab(3)
|
||||
};
|
||||
|
||||
Item::CItemContainer** first = lpItemContainers;
|
||||
Item::CItemContainer** last = lpItemContainers + MAX_CONTAINER;
|
||||
|
||||
for(; first != last; ++first)
|
||||
{
|
||||
Item::CItemContainer* lpItemContainer = *first;
|
||||
|
||||
if(NULL != lpItemContainer)
|
||||
{
|
||||
begin = lpItemContainer->begin();
|
||||
end = lpItemContainer->end();
|
||||
|
||||
for(;begin != end; ++begin)
|
||||
{
|
||||
Item::CItem* lpItem = *begin;
|
||||
|
||||
if(NULL != lpItem)
|
||||
{
|
||||
if(lpEquipment = Item::CEquipment::DowncastToEquipment(lpItem))
|
||||
{
|
||||
SendLogPacket::EquipInfo(SendStream, Character, *lpEquipment, 0, 0, 0, cCommand, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
SendLogPacket::ItemInfo(SendStream, Character, *lpItem, 0, 0, 0, cCommand, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SendLogPacket::DefaultInfo(SendStream, Character, Character.GetGold(), 0, 0, cInventoryCommand, 0); // <20>κ<EFBFBD><CEBA>丮 <20><>
|
||||
SendLogPacket::DefaultInfo(SendStream, Character, Deposit.GetGold(), 0, 0, cDepositCommand, 0); // â<><C3A2> <20><>
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void SendLogPacket::CharLogin(CCharacter& Character) { CharLoginout(Character, GAMELOG::CMD::CHAR_LOGIN); }
|
||||
void SendLogPacket::CharLogout(CCharacter& Character) { CharLoginout(Character, GAMELOG::CMD::CHAR_LOGOUT); }
|
||||
|
||||
|
||||
void PickupOrDrop(CCharacter& Character, Item::CItem* lpItem, unsigned long dwGold, unsigned char cCommand)
|
||||
{
|
||||
switch(cCommand)
|
||||
{
|
||||
case GAMELOG::CMD::PICKUP:
|
||||
case GAMELOG::CMD::DROP:
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
GET_SINGLE_DISPATCH(lpLogDispatch, CLogDispatch,
|
||||
CLogDispatch::GetDispatchTable());
|
||||
|
||||
if(NULL != lpLogDispatch)
|
||||
{
|
||||
CSendStream& SendStream = lpLogDispatch->GetSendStream();
|
||||
|
||||
if(NULL != lpItem)
|
||||
{
|
||||
Item::CEquipment* lpEquipment = NULL;
|
||||
|
||||
if(lpEquipment = Item::CEquipment::DowncastToEquipment(lpItem))
|
||||
{
|
||||
SendLogPacket::EquipInfo(SendStream, Character, *lpEquipment, 0, 0, 0, cCommand, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
SendLogPacket::ItemInfo(SendStream, Character, *lpItem, 0, 0, 0, cCommand, 0);
|
||||
}
|
||||
}
|
||||
else if(0 != dwGold)
|
||||
{
|
||||
SendLogPacket::DefaultInfo(SendStream, Character, dwGold, 0, 0, cCommand, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void SendLogPacket::Pickup(CCharacter& Character, Item::CItem* lpPickupItem, unsigned long dwPickupGold)
|
||||
{
|
||||
PickupOrDrop(Character, lpPickupItem, dwPickupGold, GAMELOG::CMD::PICKUP);
|
||||
}
|
||||
|
||||
void SendLogPacket::Drop(CCharacter& Character, Item::CItem* lpDropItem, unsigned long dwDropGold)
|
||||
{
|
||||
PickupOrDrop(Character, lpDropItem, dwDropGold, GAMELOG::CMD::DROP);
|
||||
}
|
||||
|
||||
|
||||
void BuyOrSell(CCharacter& Character, unsigned long dwOtherwiseUID, unsigned dwOtherwiseCID,
|
||||
Item::CItem* lpItem, unsigned long dwPrice, unsigned char cCommand)
|
||||
{
|
||||
GET_SINGLE_DISPATCH(lpLogDispatch, CLogDispatch,
|
||||
CLogDispatch::GetDispatchTable());
|
||||
|
||||
if(NULL != lpLogDispatch)
|
||||
{
|
||||
CSendStream& SendStream = lpLogDispatch->GetSendStream();
|
||||
|
||||
if(NULL != lpItem)
|
||||
{
|
||||
Item::CEquipment* lpEquipment = NULL;
|
||||
|
||||
if(lpEquipment = Item::CEquipment::DowncastToEquipment(lpItem))
|
||||
{
|
||||
SendLogPacket::EquipInfo(SendStream, Character, *lpEquipment, dwPrice,
|
||||
dwOtherwiseUID, dwOtherwiseCID, cCommand, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
SendLogPacket::ItemInfo(SendStream, Character, *lpItem, dwPrice,
|
||||
dwOtherwiseUID, dwOtherwiseCID, cCommand, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void SendLogPacket::BuyItem(CCharacter& Buyer, unsigned long dwSellerUID, unsigned dwSellerCID,
|
||||
Item::CItem* lpBuyItem, unsigned long dwPrice)
|
||||
{
|
||||
BuyOrSell(Buyer, dwSellerUID, dwSellerCID, lpBuyItem, dwPrice, GAMELOG::CMD::BUY_ITEM);
|
||||
}
|
||||
|
||||
void SendLogPacket::SellItem(CCharacter& Seller, unsigned long dwBuyerUID, unsigned dwBuyerCID,
|
||||
Item::CItem* lpSell_Item, unsigned long dwPrice)
|
||||
{
|
||||
BuyOrSell(Seller, dwBuyerUID, dwBuyerCID, lpSell_Item, dwPrice, GAMELOG::CMD::SELL_ITEM);
|
||||
}
|
||||
|
||||
|
||||
void Exchange(CCharacter& Character, unsigned long dwExchangerUID,
|
||||
unsigned long dwExchangerCID, unsigned long dwExchangeGold, unsigned char cCommand)
|
||||
{
|
||||
switch(cCommand)
|
||||
{
|
||||
case GAMELOG::CMD::BEFORE_EXCHANGE:
|
||||
case GAMELOG::CMD::AFTER_EXCHANGE:
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
GET_SINGLE_DISPATCH(lpLogDispatch, CLogDispatch,
|
||||
CLogDispatch::GetDispatchTable());
|
||||
|
||||
if(NULL != lpLogDispatch)
|
||||
{
|
||||
CSendStream& SendStream = lpLogDispatch->GetSendStream();
|
||||
Item::CExchangeContainer& Exchange = Character.GetExchange();
|
||||
|
||||
Item::CItemContainer::iterator begin = Exchange.begin();
|
||||
Item::CItemContainer::iterator end = Exchange.end();
|
||||
|
||||
Item::CItem* lpItem = NULL;
|
||||
|
||||
for(; begin != end; ++begin)
|
||||
{
|
||||
lpItem = *begin;
|
||||
|
||||
if(NULL != lpItem)
|
||||
{
|
||||
Item::CEquipment* lpEquipment = NULL;
|
||||
|
||||
if(lpEquipment = Item::CEquipment::DowncastToEquipment(lpItem))
|
||||
{
|
||||
SendLogPacket::EquipInfo(SendStream, Character, *lpEquipment, 0,
|
||||
dwExchangerUID, dwExchangerCID, cCommand, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
SendLogPacket::ItemInfo(SendStream, Character, *lpItem, 0,
|
||||
dwExchangerUID, dwExchangerCID, cCommand, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SendLogPacket::DefaultInfo(SendStream, Character, Exchange.GetGold(),
|
||||
dwExchangerUID, dwExchangerCID, cCommand, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void SendLogPacket::BeforeExchange(CCharacter& Character, unsigned long dwExchangerUID,
|
||||
unsigned long dwExchangerCID, unsigned long dwExchangeGold)
|
||||
{
|
||||
Exchange(Character, dwExchangerUID, dwExchangerCID,
|
||||
dwExchangeGold, GAMELOG::CMD::BEFORE_EXCHANGE);
|
||||
}
|
||||
|
||||
void SendLogPacket::AfterExchange(CCharacter& Character, unsigned long dwExchangerUID,
|
||||
unsigned long dwExchangerCID, unsigned long dwExchangeGold)
|
||||
{
|
||||
Exchange(Character, dwExchangerUID, dwExchangerCID,
|
||||
dwExchangeGold, GAMELOG::CMD::AFTER_EXCHANGE);
|
||||
}
|
||||
|
||||
void SendLogPacket::ItemUse(CCharacter& Character, Item::CItem* lpUseItem, unsigned long dwUseGold)
|
||||
{
|
||||
GET_SINGLE_DISPATCH(lpLogDispatch, CLogDispatch,
|
||||
CLogDispatch::GetDispatchTable());
|
||||
|
||||
if(NULL != lpLogDispatch)
|
||||
{
|
||||
CSendStream& SendStream = lpLogDispatch->GetSendStream();
|
||||
|
||||
if(NULL != lpUseItem)
|
||||
{
|
||||
Item::CEquipment* lpEquipment = NULL;
|
||||
|
||||
if(lpEquipment = Item::CEquipment::DowncastToEquipment(lpUseItem))
|
||||
{
|
||||
SendLogPacket::EquipInfo(SendStream, Character, *lpEquipment,
|
||||
dwUseGold, 0, 0, GAMELOG::CMD::USE_ITEM, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
SendLogPacket::ItemInfo(SendStream, Character, *lpUseItem,
|
||||
dwUseGold, 0, 0, GAMELOG::CMD::USE_ITEM, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void SendLogPacket::ItemUpgrade(CCharacter& Character, Item::CEquipment* lpEquipment,
|
||||
Item::CItem* lpMineral, unsigned long dwUseGold)
|
||||
{
|
||||
GET_SINGLE_DISPATCH(lpLogDispatch, CLogDispatch,
|
||||
CLogDispatch::GetDispatchTable());
|
||||
|
||||
if(NULL != lpLogDispatch)
|
||||
{
|
||||
CSendStream& SendStream = lpLogDispatch->GetSendStream();
|
||||
|
||||
if(NULL != lpEquipment && NULL != lpMineral)
|
||||
{
|
||||
ItemUse(Character, lpMineral, 0);
|
||||
SendLogPacket::EquipInfo(SendStream, Character, *lpEquipment,
|
||||
dwUseGold, 0, 0, GAMELOG::CMD::UPGRADE_ITEM, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void SendLogPacket::InstallSocket(CCharacter& Character, Item::CEquipment* lpEquipment, Item::CItem* lpGems)
|
||||
{
|
||||
GET_SINGLE_DISPATCH(lpLogDispatch, CLogDispatch,
|
||||
CLogDispatch::GetDispatchTable());
|
||||
|
||||
if(NULL != lpLogDispatch)
|
||||
{
|
||||
CSendStream& SendStream = lpLogDispatch->GetSendStream();
|
||||
|
||||
if(NULL != lpEquipment && NULL != lpGems)
|
||||
{
|
||||
ItemUse(Character, lpGems, 0);
|
||||
SendLogPacket::EquipInfo(SendStream, Character, *lpEquipment,
|
||||
0, 0, 0, GAMELOG::CMD::INSTALL_SOCKET, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void QuestLog(CCharacter& Character, Item::CItem* lpQuestItem, unsigned long dwQuestNPC_CID,
|
||||
unsigned long dwGold, unsigned char cCommand)
|
||||
{
|
||||
GET_SINGLE_DISPATCH(lpLogDispatch, CLogDispatch,
|
||||
CLogDispatch::GetDispatchTable());
|
||||
|
||||
if(NULL != lpLogDispatch)
|
||||
{
|
||||
CSendStream& SendStream = lpLogDispatch->GetSendStream();
|
||||
|
||||
if(NULL != lpQuestItem)
|
||||
{
|
||||
Item::CEquipment* lpEquipment = Item::CEquipment::DowncastToEquipment(lpQuestItem);
|
||||
|
||||
if(NULL != lpEquipment)
|
||||
{
|
||||
SendLogPacket::EquipInfo(SendStream, Character,
|
||||
*lpEquipment, dwGold, 0, dwQuestNPC_CID, cCommand, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
SendLogPacket::ItemInfo(SendStream, Character,
|
||||
*lpQuestItem, dwGold, 0, dwQuestNPC_CID, cCommand, 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SendLogPacket::DefaultInfo(SendStream, Character,
|
||||
dwGold, 0, dwQuestNPC_CID, cCommand, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void SendLogPacket::GetQuestItem(CCharacter& Character, Item::CItem* lpQuestItem,
|
||||
unsigned long dwQuestNPC_CID, unsigned long dwGetGold)
|
||||
{
|
||||
QuestLog(Character, lpQuestItem, dwQuestNPC_CID, dwGetGold, GAMELOG::CMD::GET_QUEST_ITEM);
|
||||
}
|
||||
|
||||
void SendLogPacket::RemoveQuestItem(CCharacter& Character, Item::CItem* lpQuestItem,
|
||||
unsigned long dwQuestNPC_CID, unsigned long dwRemoveGold)
|
||||
{
|
||||
QuestLog(Character, lpQuestItem, dwQuestNPC_CID, dwRemoveGold, GAMELOG::CMD::REMOVE_QUEST_ITEM);
|
||||
}
|
||||
|
||||
void SendLogPacket::GetQuestReward(CCharacter& Character, Item::CItem* lpQuestReward,
|
||||
unsigned long dwQuestNPC_CID, unsigned long dwRewardGold)
|
||||
{
|
||||
QuestLog(Character, lpQuestReward, dwQuestNPC_CID, dwRewardGold, GAMELOG::CMD::GET_QUEST_REWARD);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void SendLogPacket::RepairItem(CCharacter& Character, Item::CEquipment* lpEquipment,
|
||||
unsigned long dwRepairNPC_CID, unsigned long dwUsedGold)
|
||||
{
|
||||
GET_SINGLE_DISPATCH(lpLogDispatch, CLogDispatch,
|
||||
CLogDispatch::GetDispatchTable());
|
||||
|
||||
if(NULL != lpLogDispatch)
|
||||
{
|
||||
CSendStream& SendStream = lpLogDispatch->GetSendStream();
|
||||
|
||||
if(NULL != lpEquipment)
|
||||
{
|
||||
SendLogPacket::EquipInfo(SendStream, Character, *lpEquipment,
|
||||
dwUsedGold, 0, dwRepairNPC_CID, GAMELOG::CMD::REPAIR_ITEM, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SendLogPacket::AdminDropItem(CCharacter& Character, unsigned long dwAdminUID, unsigned long dwAdminCID,
|
||||
Item::CItem* lpAdminItem, unsigned long dwGiveGold)
|
||||
{
|
||||
GET_SINGLE_DISPATCH(lpLogDispatch, CLogDispatch,
|
||||
CLogDispatch::GetDispatchTable());
|
||||
|
||||
if(NULL != lpLogDispatch)
|
||||
{
|
||||
CSendStream& SendStream = lpLogDispatch->GetSendStream();
|
||||
|
||||
if(NULL != lpAdminItem)
|
||||
{
|
||||
Item::CEquipment* lpEquipment = Item::CEquipment::DowncastToEquipment(lpAdminItem);
|
||||
|
||||
if(NULL != lpEquipment)
|
||||
{
|
||||
EquipInfo(SendStream, Character, *lpEquipment, dwGiveGold,
|
||||
dwAdminUID, dwAdminCID, GAMELOG::CMD::ADMIN_DROP, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
ItemInfo(SendStream, Character, *lpAdminItem, dwGiveGold,
|
||||
dwAdminUID, dwAdminCID, GAMELOG::CMD::ADMIN_DROP, 0);
|
||||
}
|
||||
}
|
||||
else if(0 != dwGiveGold)
|
||||
{
|
||||
DefaultInfo(SendStream, Character, dwGiveGold,
|
||||
dwAdminUID, dwAdminCID, GAMELOG::CMD::ADMIN_DROP, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SendLogPacket::RentDepositGold(CCharacter& Character, unsigned long dwRentDepositGold)
|
||||
{
|
||||
GET_SINGLE_DISPATCH(lpLogDispatch, CLogDispatch,
|
||||
CLogDispatch::GetDispatchTable());
|
||||
|
||||
if(NULL != lpLogDispatch)
|
||||
{
|
||||
DefaultInfo(lpLogDispatch->GetSendStream(), Character,
|
||||
dwRentDepositGold, 0, 0, GAMELOG::CMD::DEPOSIT_RENT_GOLD, 0);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,103 @@
|
||||
#ifndef _SEND_LOG_PACKET_H_
|
||||
#define _SEND_LOG_PACKET_H_
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
class CCharacter;
|
||||
class CSendStream;
|
||||
|
||||
namespace Item
|
||||
{
|
||||
class CItem;
|
||||
class CEquipment;
|
||||
};
|
||||
|
||||
namespace SendLogPacket
|
||||
{
|
||||
bool ServerLogin(CSendStream& LogSendStream, unsigned long dwServerID);
|
||||
|
||||
bool DefaultInfo(CSendStream& LogSendStream, CCharacter& Character,
|
||||
unsigned long dwGold, unsigned long dwSecondUID, unsigned long dwSecondCID,
|
||||
unsigned char cCommand, unsigned char cFlags);
|
||||
|
||||
bool ItemInfo(CSendStream& LogSendStream, CCharacter& Character, Item::CItem& Item,
|
||||
unsigned long dwGold, unsigned long dwSecondUID, unsigned long dwSecondCID,
|
||||
unsigned char cCommand, unsigned char cFlags);
|
||||
|
||||
bool EquipInfo(CSendStream& LogSendStream, CCharacter& Character, Item::CEquipment& Equipment,
|
||||
unsigned long dwGold, unsigned long dwSecondUID, unsigned long dwSecondCID,
|
||||
unsigned char cCommand, unsigned char cFlags);
|
||||
|
||||
/*
|
||||
<20>α<EFBFBD><CEB1><EFBFBD>
|
||||
<20>αƿ<D7BE>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ȱ<EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ų <20><> <20><><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>)
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
<20><><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ڱ<EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
<20><EFBFBD><EEBFB5> <20><><EFBFBD><EFBFBD>(dropitem)
|
||||
|
||||
<20><> <20>α<EFBFBD>
|
||||
|
||||
/<2F>α<EFBFBD><CEB1>ν<EFBFBD> <20>κ<EFBFBD><CEBA>丮 <20>ݾ<EFBFBD>
|
||||
/<2F>α<EFBFBD><CEB1>ν<EFBFBD> â<><C3A2> <20>ݾ<EFBFBD>
|
||||
/<2F>αƿ<D7BE><C6BF><EFBFBD> <20>κ<EFBFBD><CEBA>丮 <20>ݾ<EFBFBD>
|
||||
/<2F>αƿ<D7BE><C6BF><EFBFBD> â<><C3A2> <20>ݾ<EFBFBD>
|
||||
/<2F><> <20><><EFBFBD> <20>κ<EFBFBD><CEBA>丮<EFBFBD><E4B8AE> <20><><EFBFBD><EFBFBD>
|
||||
â<><C3A2> <20>뿩<EFBFBD><EBBFA9> <20><><EFBFBD><EFBFBD> // <20>뿩<EFBFBD><EBBFA9> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/<2F><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ȱ<EFBFBD>
|
||||
/<2F><> <20><>ȯ<EFBFBD><C8AF>
|
||||
<20><>ų <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>Ҹ<EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>Ҹ<EFBFBD>
|
||||
<20><EFBFBD><EEBFB5> <20><><EFBFBD><EFBFBD>(givegold)
|
||||
*/
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> - <20>α<EFBFBD> Ŀ<>ǵ<EFBFBD>.
|
||||
struct Const;
|
||||
|
||||
void CharLogin(CCharacter& Character);
|
||||
void CharLogout(CCharacter& Character);
|
||||
void Pickup(CCharacter& Character, Item::CItem* lpPickupItem, unsigned long dwPickupGold);
|
||||
void Drop(CCharacter& Character, Item::CItem* lpDropItem, unsigned long dwDropGold);
|
||||
|
||||
void BuyItem(CCharacter& Buyer, unsigned long dwSellerUID, unsigned dwSellerCID,
|
||||
Item::CItem* lpBuyItem, unsigned long dwPrice);
|
||||
|
||||
void SellItem(CCharacter& Seller, unsigned long dwBuyerUID, unsigned dwBuyerCID,
|
||||
Item::CItem* lpSell_Item, unsigned long dwPrice);
|
||||
|
||||
void BeforeExchange(CCharacter& Character, unsigned long dwExchangerUID, unsigned long dwExchangerCID, unsigned long dwExchangeGold);
|
||||
void AfterExchange(CCharacter& Character, unsigned long dwExchangerUID, unsigned long dwExchangerCID, unsigned long dwExchangeGold);
|
||||
|
||||
void ItemUse(CCharacter& Character, Item::CItem* lpUseItem, unsigned long dwUseGold);
|
||||
void ItemUpgrade(CCharacter& Character, Item::CEquipment* lpEquipment, Item::CItem* lpMineral, unsigned long dwUseGold);
|
||||
void InstallSocket(CCharacter& Character, Item::CEquipment* lpEquipment, Item::CItem* lpGems);
|
||||
void RepairItem(CCharacter& Character, Item::CEquipment* lpEquipment,
|
||||
unsigned long dwRepairNPC_CID, unsigned long dwUsedGold);
|
||||
|
||||
void GetQuestItem(CCharacter& Character, Item::CItem* lpQuestItem,
|
||||
unsigned long dwQuestNPC_CID, unsigned long dwGetGold);
|
||||
|
||||
void RemoveQuestItem(CCharacter& Character, Item::CItem* lpQuestItem,
|
||||
unsigned long dwQuestNPC_CID, unsigned long dwRemoveGold);
|
||||
|
||||
void GetQuestReward(CCharacter& Character, Item::CItem* lpQuestReward,
|
||||
unsigned long dwQuestNPC_CID, unsigned long dwRewardGold);
|
||||
|
||||
void AdminDropItem(CCharacter& Character, unsigned long dwAdminUID, unsigned long dwAdminCID,
|
||||
Item::CItem* lpAdminItem, unsigned long dwGiveGold);
|
||||
|
||||
void RentDepositGold(CCharacter& Character, unsigned long dwRentDepositGold);
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user