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

📄 msgiteminfoex.cpp

📁 网络游戏魔域源代码 测试可以完整变异
💻 CPP
字号:
// MsgItemInfoEx.cpp: implementation of the CMsgItemInfoEx class.
//
//////////////////////////////////////////////////////////////////////

#include "MsgItemInfoEx.h"
#include "GamePlayerSet.h"
#include "Hero.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CMsgItemInfoEx::CMsgItemInfoEx()
{
	Init();
	m_pInfo	=(MSG_Info *)m_bufMsg;
	m_StrPacker.SetBuf(m_pInfo->szBuf, _MAX_MSGSIZE-sizeof(MSG_Info)+1);
}

CMsgItemInfoEx::~CMsgItemInfoEx()
{

}
//////////////////////////////////////////////////////////////////////
BOOL CMsgItemInfoEx::Create(char* pbufMsg, DWORD dwMsgSize)
{
	if (!CNetMsg::Create(pbufMsg, dwMsgSize))
		return false;

	if(_MSG_ITEMINFOEX != this->GetType())
		return false;

	return true;
}

//////////////////////////////////////////////////////////////////////
void CMsgItemInfoEx::Process(void* pInfo)
{
	switch(m_pInfo->ucAction)
	{
	case ITEMINFOEX_BOOTH:
		{
			if(g_objHero.m_objBooth.GetID() == m_pInfo->idOwner)
			{
				CItem* pItem	=new CItem;
				if (!pItem || !pItem->Create(m_pInfo->id, m_pInfo->dwType))
					return;
				
				if (pItem->GetPackageType() == PACKAGE_PET
					&& m_StrPacker.GetStrAmount()>0)
				{
					char szName[_MAX_NAMESIZE];
					m_StrPacker.GetString(0, szName, _MAX_NAMESIZE);
					pItem->SetMonsterName(szName);
				}
				pItem->SetAmount(m_pInfo->usAmount);
				pItem->SetAmountLimit(m_pInfo->usAmountLimit);
				pItem->SetStatus(m_pInfo->ucStatus);
				pItem->SetGem1(m_pInfo->ucGem1);
				pItem->SetGem2(m_pInfo->ucGem2);
				pItem->SetMagic1(m_pInfo->ucMagic1);
				pItem->SetMagic2(m_pInfo->ucMagic2);
				pItem->SetMagic3(m_pInfo->ucMagic3);
				pItem->SetOwnerID(m_pInfo->idOwner);
				pItem->SetBoothSellPrice(m_pInfo->dwPrice);
				pItem->SetGemAtkType(m_pInfo->dwGemAtkType);
				pItem->SetWarGhostExp(m_pInfo->dwWarGhostExp);
				pItem->SetAvailabeTime(m_pInfo->dwAvailabeTime);
				pItem->SetMonsterGrow(m_pInfo->nData);
				
				g_objHero.m_objBooth.AddItem(pItem);
			}
		}
		break;

	case ITEMINFOEX_EQUIPMENT:
		{
			CPlayer* pPlayer = g_objPlayerSet.GetPlayer(m_pInfo->idOwner, false);
			if (pPlayer)	// player
			{
				switch(m_pInfo->ucPosition)
				{
				case ITEMPOSITION_HELMET:
					pPlayer->SetArmet(m_pInfo->dwType);
					break;

				case ITEMPOSITION_ARMOR:
					pPlayer->SetArmor(m_pInfo->dwType);
					break;

				case ITEMPOSITION_WEAPONR:
					pPlayer->SetRWeapon(m_pInfo->dwType);
					break;

				case ITEMPOSITION_WEAPONL:
					pPlayer->SetLWeapon(m_pInfo->dwType);
					break;
				}
			}
			else if (m_pInfo->idOwner == g_objHero.GetID())
			{
				CItem* pItem = g_objHero.SearchEquipment(m_pInfo->id);
				if (!pItem)
					return;

				if (pItem->GetTypeID() != m_pInfo->dwType)
				{	// type changed
					if (!pItem->Create(m_pInfo->id, m_pInfo->dwType))
						return;
				}

				pItem->SetAmount(m_pInfo->usAmount);
				pItem->SetAmountLimit(m_pInfo->usAmountLimit);
				pItem->SetStatus(m_pInfo->ucStatus);
				pItem->SetGem1(m_pInfo->ucGem1);
				pItem->SetGem2(m_pInfo->ucGem2);
				pItem->SetMagic1(m_pInfo->ucMagic1);
				pItem->SetMagic2(m_pInfo->ucMagic2);
				pItem->SetMagic3(m_pInfo->ucMagic3);
				pItem->SetGemAtkType(m_pInfo->dwGemAtkType);
				pItem->SetWarGhostExp(m_pInfo->dwWarGhostExp);
				pItem->SetAvailabeTime(m_pInfo->dwAvailabeTime);
				
				g_objHero.SetEquipment(m_pInfo->ucPosition, pItem);
				::PostCmd(CMD_FLASHEQUIPMENT);
			}
		}
		break;
	}

}
//////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -