⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 handler_cg_vendor.cpp

📁 奇迹世界 部分源代码奇迹世界 部分源代码奇迹世界 部分源代码
💻 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 + -