📄 handler_cg_vendor.cpp
字号:
#include "StdAfx.h"
#include ".\handler_cg_vendor.h"
#include ".\Player.h"
#include ".\PlayerManager.h"
#include ".\VendorManager.h"
#include "TradeSlotContainer.h"
#include "GameServer.h"
#include "VendorSlot.h"
Handler_CG_VENDOR::Handler_CG_VENDOR(void)
{
}
Handler_CG_VENDOR::~Handler_CG_VENDOR(void)
{
}
//------------------------------------------------------------------------------------------------
// 俺汲磊
//------------------------------------------------------------------------------------------------
Handler_CG_VENDOR_IMPL(CG_VENDOR_START_SYN)
{
MSG_CG_VENDOR_START_SYN * pRecvMsg = (MSG_CG_VENDOR_START_SYN *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
ASSERT( pPlayer );
if( !pPlayer ) return ;
if( !pPlayer->GetField() ) return;
RC::eVENDOR_RESULT rt = g_VendorManager.StartVendor( pPlayer, pRecvMsg->m_pszTitle, pRecvMsg->m_ItemInfo );
if( rt == RC::RC_VENDOR_SUCCESS )
{
MSG_CG_VENDOR_START_ACK amsg;
pPlayer->SendPacket(&amsg,sizeof(amsg));
MSG_CG_VENDOR_START_BRD bmsg;
bmsg.m_dwPlayerKey = pPlayer->GetObjectKey();
memcpy( bmsg.m_pszTitle, pRecvMsg->m_pszTitle, sizeof(TCHAR)*MAX_VENDOR_TITLE_LENGTH );
bmsg.m_pszTitle[MAX_VENDOR_TITLE_LENGTH] = '\0'; //< 菩哦阑 例距窍扁 困秦 NULL贸府
pPlayer->SendPacketAround( &bmsg, bmsg.GetSize(), FALSE );
//俺牢惑痢 矫累 肺弊
GAMELOG->WriteItemVendorStatus( pPlayer, g_pGameServer->GetServerGUID(), TRUE );
//俺牢惑痢 矫累 肺弊 场
// 俺牢惑痢 酒捞袍 沥焊
SCSlotContainer* pVendorContainer = (SCSlotContainer*)pPlayer->GetVendorContainer();
for( POSTYPE i = 0 ; i < pVendorContainer->GetMaxSlotNum() ; ++i )
{
if( !pVendorContainer->IsEmpty(i) )
{
VendorSlot& rVSlot = (VendorSlot&)pVendorContainer->GetSlot(i);
DWORD dwMoney = rVSlot.GetMoney();
SCItemSlot* pSlot = rVSlot.GetLinkItem();
GAMELOG->WriteVendorInfo( pPlayer, g_pGameServer->GetServerGUID(), pSlot, dwMoney );
}
}
// 俺牢惑痢 酒捞袍 沥焊 场
}
else
{
MSG_CG_VENDOR_START_NAK nmsg;
nmsg.m_ErrorCode = rt;
pPlayer->SendPacket(&nmsg,sizeof(nmsg));
}
}
Handler_CG_VENDOR_IMPL(CG_VENDOR_END_SYN)
{
MSG_CG_VENDOR_END_SYN * pRecvMsg = (MSG_CG_VENDOR_END_SYN *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
ASSERT( pPlayer );
if( !pPlayer ) return ;
if( !pPlayer->GetField() ) return;
RC::eVENDOR_RESULT rt = g_VendorManager.EndVendor( pPlayer );
if( rt == RC::RC_VENDOR_SUCCESS )
{
MSG_CG_VENDOR_END_ACK amsg;
pPlayer->SendPacket(&amsg,sizeof(amsg));
MSG_CG_VENDOR_END_BRD bmsg;
bmsg.m_dwPlayerKey = pPlayer->GetObjectKey();
pPlayer->SendPacketAround( &bmsg, sizeof(bmsg), FALSE );
//俺牢惑痢 场 肺弊
GAMELOG->WriteItemVendorStatus( pPlayer, g_pGameServer->GetServerGUID(), FALSE );
//俺牢惑痢 场 肺弊 场
}
else
{
MSG_CG_VENDOR_END_NAK nmsg;
nmsg.m_ErrorCode = rt;
pPlayer->SendPacket(&nmsg,sizeof(nmsg));
}
}
Handler_CG_VENDOR_IMPL(CG_VENDOR_MODIFY_REQ_SYN)
{
MSG_CG_VENDOR_MODIFY_REQ_SYN * pRecvMsg = (MSG_CG_VENDOR_MODIFY_REQ_SYN *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
ASSERT( pPlayer );
if( !pPlayer ) return ;
if( !pPlayer->GetField() ) return;
RC::eVENDOR_RESULT rt = g_VendorManager.ModifyRequest( pPlayer, pRecvMsg->m_VendorPos );
if( rt == RC::RC_VENDOR_SUCCESS )
{
MSG_CG_VENDOR_MODIFY_REQ_ACK amsg;
amsg.m_VendorPos = pRecvMsg->m_VendorPos;
pPlayer->SendPacket(&amsg,sizeof(amsg));
Send_POS_BRD<MSG_CG_VENDOR_MODIFY_REQ_BRD> op(pRecvMsg->m_VendorPos);
pPlayer->GetVendorContainer()->ForeachObserver(op);
}
else
{
MSG_CG_VENDOR_MODIFY_REQ_NAK nmsg;
nmsg.m_ErrorCode = rt;
pPlayer->SendPacket(&nmsg,sizeof(nmsg));
}
}
Handler_CG_VENDOR_IMPL( CG_VENDOR_MODIFY_CANCEL_SYN )
{
MSG_CG_VENDOR_MODIFY_CANCEL_SYN * pRecvMsg = (MSG_CG_VENDOR_MODIFY_CANCEL_SYN *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
ASSERT( pPlayer );
if( !pPlayer ) return ;
if( !pPlayer->GetField() ) return;
RC::eVENDOR_RESULT rt = g_VendorManager.ModifyCancel( pPlayer, pRecvMsg->m_VendorPos );
if( rt == RC::RC_VENDOR_SUCCESS )
{
MSG_CG_VENDOR_MODIFY_CANCEL_ACK amsg;
pPlayer->SendPacket(&amsg,sizeof(amsg));
Send_POS_BRD<MSG_CG_VENDOR_MODIFY_CANCEL_BRD> op(pRecvMsg->m_VendorPos);
pPlayer->GetVendorContainer()->ForeachObserver(op);
}
else
{
MSG_CG_VENDOR_MODIFY_CANCEL_NAK nmsg;
nmsg.m_ErrorCode = rt;
pPlayer->SendPacket(&nmsg,sizeof(nmsg));
}
}
Handler_CG_VENDOR_IMPL(CG_VENDOR_MODIFY_SYN)
{
MSG_CG_VENDOR_MODIFY_SYN * pRecvMsg = (MSG_CG_VENDOR_MODIFY_SYN *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
ASSERT( pPlayer );
if( !pPlayer ) return ;
if( !pPlayer->GetField() ) return;
MSG_CG_VENDOR_MODIFY_BRD bmsg;
RC::eVENDOR_RESULT rt = g_VendorManager.Modify( pPlayer, pRecvMsg->m_ItemSlot, bmsg.m_ItemSlot );
if( rt == RC::RC_VENDOR_SUCCESS )
{
MSG_CG_VENDOR_MODIFY_ACK amsg;
pPlayer->SendPacket(&amsg,sizeof(amsg));
// 弥利拳 绊妨窍祭!!!!!
// TEMP
bmsg.m_VendorPos = pRecvMsg->m_ItemSlot.m_VendorPos;
Send_PACKET_BRD<MSG_CG_VENDOR_MODIFY_BRD> op(bmsg);
pPlayer->GetVendorContainer()->ForeachObserver(op);
}
else
{
MSG_CG_VENDOR_MODIFY_NAK nmsg;
nmsg.m_ErrorCode = rt;
pPlayer->SendPacket(&nmsg,sizeof(nmsg));
}
}
Handler_CG_VENDOR_IMPL(CG_VENDOR_INSERT_SYN)
{
MSG_CG_VENDOR_INSERT_SYN * pRecvMsg = (MSG_CG_VENDOR_INSERT_SYN *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
ASSERT( pPlayer );
if( !pPlayer ) return ;
if( !pPlayer->GetField() ) return;
MSG_CG_VENDOR_INSERT_BRD bmsg;
RC::eVENDOR_RESULT rt = g_VendorManager.Insert( pPlayer, pRecvMsg->m_ItemSlot, bmsg.m_ItemSlot );
if( rt == RC::RC_VENDOR_SUCCESS )
{
MSG_CG_VENDOR_INSERT_ACK amsg;
pPlayer->SendPacket(&amsg,sizeof(amsg));
// 弥利拳 绊妨窍祭!!!!!
// TEMP
Send_PACKET_BRD<MSG_CG_VENDOR_INSERT_BRD> op(bmsg);
pPlayer->GetVendorContainer()->ForeachObserver(op);
}
else
{
MSG_CG_VENDOR_INSERT_NAK nmsg;
nmsg.m_ErrorCode = rt;
pPlayer->SendPacket(&nmsg,sizeof(nmsg));
}
}
Handler_CG_VENDOR_IMPL(CG_VENDOR_DELETE_SYN)
{
MSG_CG_VENDOR_DELETE_SYN * pRecvMsg = (MSG_CG_VENDOR_DELETE_SYN *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
ASSERT( pPlayer );
if( !pPlayer ) return ;
if( !pPlayer->GetField() ) return;
RC::eVENDOR_RESULT rt = g_VendorManager.Delete( pPlayer, pRecvMsg->m_VendorPos );
if( rt == RC::RC_VENDOR_SUCCESS )
{
MSG_CG_VENDOR_DELETE_ACK amsg;
amsg.m_VendorPos = pRecvMsg->m_VendorPos;
pPlayer->SendPacket(&amsg,sizeof(amsg));
Send_POS_BRD<MSG_CG_VENDOR_DELETE_BRD> op(pRecvMsg->m_VendorPos);
pPlayer->GetVendorContainer()->ForeachObserver(op);
}
else
{
MSG_CG_VENDOR_DELETE_NAK nmsg;
nmsg.m_ErrorCode = rt;
pPlayer->SendPacket(&nmsg,sizeof(nmsg));
}
}
//------------------------------------------------------------------------------------------------
// 包恩磊
//------------------------------------------------------------------------------------------------
Handler_CG_VENDOR_IMPL(CG_VENDOR_VIEW_START_SYN)
{
MSG_CG_VENDOR_VIEW_START_SYN * pRecvMsg = (MSG_CG_VENDOR_VIEW_START_SYN *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
ASSERT( pPlayer );
if( !pPlayer ) return ;
if( !pPlayer->GetField() ) return;
Player * pEstablisher = PlayerManager::Instance()->FindPlayerForObjectKey( pRecvMsg->m_dwPlayerKey );
if( !pEstablisher || !pEstablisher->GetField())
{
MSG_CG_VENDOR_VIEW_START_NAK nmsg;
nmsg.m_ErrorCode = 111;
pPlayer->SendPacket(&nmsg,sizeof(nmsg));
return;
}
MSG_CG_VENDOR_VIEW_START_ACK amsg;
RC::eVENDOR_RESULT rt = g_VendorManager.StartViewVendor( pEstablisher, pPlayer, amsg.m_pszTitle, amsg.m_ItemInfo );
if( rt == RC::RC_VENDOR_SUCCESS )
{
pPlayer->SendPacket(&amsg,amsg.GetSize());
//俺牢惑痢 包恩 肺弊
GAMELOG->WriteViewItemVendor( pPlayer, g_pGameServer->GetServerGUID(), pEstablisher );
//俺牢惑痢 包恩 肺弊 场
}
else
{
MSG_CG_VENDOR_VIEW_START_NAK nmsg;
nmsg.m_ErrorCode = rt;
pPlayer->SendPacket(&nmsg,sizeof(nmsg));
}
}
Handler_CG_VENDOR_IMPL(CG_VENDOR_VIEW_END_SYN)
{
MSG_CG_VENDOR_VIEW_END_SYN * pRecvMsg = (MSG_CG_VENDOR_VIEW_END_SYN *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
ASSERT( pPlayer );
if( !pPlayer ) return ;
if( !pPlayer->GetField() ) return;
RC::eVENDOR_RESULT rt = g_VendorManager.EndViewVendor( pPlayer );
if( rt == RC::RC_VENDOR_SUCCESS )
{
MSG_CG_VENDOR_VIEW_END_ACK amsg;
pPlayer->SendPacket(&amsg,sizeof(amsg));
}
else
{
MSG_CG_VENDOR_VIEW_END_NAK nmsg;
nmsg.m_ErrorCode = rt;
pPlayer->SendPacket(&nmsg,sizeof(nmsg));
}
}
Handler_CG_VENDOR_IMPL(CG_VENDOR_BUY_SYN)
{
MSG_CG_VENDOR_BUY_SYN * pRecvMsg = (MSG_CG_VENDOR_BUY_SYN *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
ASSERT( pPlayer );
if( !pPlayer ) return ;
if( !pPlayer->GetField() ) return;
MSG_CG_VENDOR_BUY_ACK amsg;
RC::eVENDOR_RESULT rt = g_VendorManager.Buy( pPlayer, pRecvMsg->m_VendorPos, amsg.m_InventoryTotalInfo );
if( rt == RC::RC_VENDOR_SUCCESS )
{
// 蜡历
amsg.m_Money = pPlayer->GetMoney();
pPlayer->SendPacket(&amsg,amsg.GetSize());
// 惑牢
Player * pEstablisher = pPlayer->GetVendorContainer()->GetEstablisher();
MSG_CG_VENDOR_BUY_CMD cmsg;
cmsg.m_VendorPos = pRecvMsg->m_VendorPos;
cmsg.m_Money = pEstablisher->GetMoney();
pEstablisher->SendPacket(&cmsg,sizeof(cmsg));
Send_POS_BRD<MSG_CG_VENDOR_BUY_BRD> op(pRecvMsg->m_VendorPos);
pPlayer->GetVendorContainer()->ForeachObserver(op);
}
else
{
MSG_CG_VENDOR_BUY_NAK nmsg;
nmsg.m_ErrorCode = rt;
pPlayer->SendPacket(&nmsg,sizeof(nmsg));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -