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,138 @@
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
#include <Item/Item.h>
|
||||
#include <Item/Container/ItemContainer.h>
|
||||
|
||||
#include <Network/Dispatch/GameClient/GameClientDispatch.h>
|
||||
#include <Network/Dispatch/GameClient/SendCharItem.h>
|
||||
|
||||
#include <Creature/Character/Character.h>
|
||||
#include <Log/ItemLog.h>
|
||||
|
||||
#include "TempInvenContainer.h"
|
||||
|
||||
Item::CTempInvenContainer::CTempInvenContainer()
|
||||
: m_lpOwner(NULL), m_cItemNum(0)
|
||||
{
|
||||
}
|
||||
|
||||
Item::CTempInvenContainer::~CTempInvenContainer()
|
||||
{
|
||||
}
|
||||
|
||||
bool Item::CTempInvenContainer::Initialize(CCharacter* lpCharacter, unsigned short nMaxSize)
|
||||
{
|
||||
m_lpOwner = lpCharacter;
|
||||
return Item::CListContainer::Initialize(lpCharacter->GetCID(), nMaxSize);
|
||||
}
|
||||
|
||||
Item::CItem* Item::CTempInvenContainer::GetItem(Item::ItemPos itemPos)
|
||||
{
|
||||
CItem* lpItem = m_lppItems[0];
|
||||
return (lpItem != m_lpNullItem) ? lpItem : NULL;
|
||||
}
|
||||
|
||||
bool Item::CTempInvenContainer::SetItem(Item::ItemPos itemPos, Item::CItem* lpItem)
|
||||
{
|
||||
CGameClientDispatch* lpDispatch = m_lpOwner->GetDispatcher();
|
||||
|
||||
if (true == IsFull())
|
||||
{
|
||||
CCell::ItemInfo itemInfo;
|
||||
|
||||
CCell* lpCell = m_lpOwner->GetCellPos().m_lpCell;
|
||||
if (NULL == lpCell)
|
||||
{
|
||||
ERRLOG1(g_Log, "CID:%10u / <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", m_lpOwner->GetCID());
|
||||
return false;
|
||||
}
|
||||
|
||||
// <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Item::CItem* lpItem = m_lppItems[0];
|
||||
ItemPos itemPos(TakeType::TS_TEMPINVEN, 0);
|
||||
|
||||
// <20>ӽ<EFBFBD> <20>κ<EFBFBD><CEBA>丮<EFBFBD><E4B8AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if (false == RemoveItem(itemPos))
|
||||
{
|
||||
ERRLOG1(g_Log, "CID:%10u / <20>ӽ<EFBFBD> <20>κ<EFBFBD><CEBA>丮<EFBFBD><E4B8AE> <20><> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD>ϴ<EFBFBD>. (<28>ӽ<EFBFBD> <20>κ<EFBFBD><CEBA>丮<EFBFBD><E4B8AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)",
|
||||
m_lpOwner->GetCID());
|
||||
return false;
|
||||
}
|
||||
|
||||
// <20>ʵ忡 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
lpCell->SetItem(m_lpOwner->GetCurrentPos(), lpItem, 0, m_lpOwner->GetCID(), CCell::NONE, itemInfo);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
GAMELOG::LogDropItem(*m_lpOwner, itemPos, itemInfo.m_lpItem, 0, 0);
|
||||
|
||||
if (0 != lpDispatch)
|
||||
{
|
||||
GameClientSendPacket::SendCharPullDown(lpDispatch->GetSendStream(),
|
||||
m_lpOwner->GetCID(), itemPos, itemInfo, PktBase::NO_SERVER_ERR);
|
||||
}
|
||||
}
|
||||
|
||||
itemPos.m_cIndex = m_cItemNum;
|
||||
|
||||
if (!Item::CListContainer::SetItem(itemPos, lpItem))
|
||||
{
|
||||
ERRLOG1(g_Log, "CID:%10u / <20>ӽ<EFBFBD> <20>κ<EFBFBD><CEBA>丮<EFBFBD><E4B8AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD>ϴ<EFBFBD>.", m_lpOwner->GetCID());
|
||||
return false;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
++m_cItemNum;
|
||||
|
||||
if (0 != lpDispatch)
|
||||
{
|
||||
unsigned char cNum = (lpItem->IsSet(Item::DetailData::STACKABLE)) ? lpItem->GetNumOrDurability() : 1;
|
||||
GameClientSendPacket::SendCharPickUp(lpDispatch->GetSendStream(), m_lpOwner->GetCID(),
|
||||
0, 0, lpItem, itemPos, cNum, PktBase::NO_SERVER_ERR);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Item::CTempInvenContainer::RemoveItem(Item::ItemPos itemPos)
|
||||
{
|
||||
if (NULL == m_lppItems[0])
|
||||
{
|
||||
ERRLOG1(g_Log, "CID:%10u / <20>ӽ<EFBFBD> <20>κ<EFBFBD><CEBA>丮<EFBFBD><E4B8AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴµ<CFB4> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD>ϴ<EFBFBD>.", m_dwCID);
|
||||
return false;
|
||||
}
|
||||
|
||||
for (unsigned char cIndex = 0; cIndex < m_nMaxSize - 1; ++cIndex)
|
||||
{
|
||||
m_lppItems[cIndex] = m_lppItems[cIndex + 1];
|
||||
if (NULL != m_lppItems[cIndex])
|
||||
{
|
||||
m_lppItems[cIndex]->MoveItem(ItemPos(TakeType::TS_TEMPINVEN, cIndex));
|
||||
}
|
||||
}
|
||||
|
||||
m_lppItems[m_nMaxSize - 1] = NULL;
|
||||
--m_cItemNum;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Item::CTempInvenContainer::SerializeIn(const char* szItemBuffer_In, unsigned long dwBufferSize_In)
|
||||
{
|
||||
if (false == CListContainer::SerializeIn(szItemBuffer_In, dwBufferSize_In))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
for (unsigned char cIndex = 0; cIndex < m_nMaxSize; ++cIndex)
|
||||
{
|
||||
if (NULL == m_lppItems[cIndex])
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
++m_cItemNum;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
Reference in New Issue
Block a user