cgreloadfrominventoryhandler.cpp

来自「dk1游戏的原代码文件,完整.编译系统redhat7.3,mysql 3.23 」· C++ 代码 · 共 122 行

CPP
122
字号
//////////////////////////////////////////////////////////////////////////////// Filename    : CGReloadFromInventoryHandler.cc// Written By  : elca@ewestsoft.com// Description ://////////////////////////////////////////////////////////////////////////////#include "CGReloadFromInventory.h"#ifdef __GAME_SERVER__	#include "GamePlayer.h"	#include "Zone.h"	#include "Slayer.h"	#include "Inventory.h"	#include "Item.h"	#include "ItemUtil.h"	#include "ItemInfo.h"	#include "ItemInfoManager.h"	#include "EffectManager.h"	#include "EffectReloadTimer.h"	#include "Gpackets/GCCannotUse.h"#endif////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGReloadFromInventoryHandler::execute (CGReloadFromInventory* pPacket , Player* pPlayer)	throw (ProtocolException, Error){	__BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__	Assert(pPacket != NULL);	Assert(pPlayer != NULL);	try 	{		GamePlayer*  pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer);		Creature*    pCreature   = pGamePlayer->getCreature();		Assert(pCreature->isSlayer());		Slayer*      pSlayer     = dynamic_cast<Slayer*>(pCreature);		Item*        pArmsItem   = pSlayer->getWearItem(Slayer::WEAR_RIGHTHAND);		ObjectID_t   ItemObjectID;		CoordInven_t x, y;		bool         Success     = false;		Item*        pItem       = NULL;		Inventory*   pInventory  = NULL;		if (pArmsItem != NULL) 		{			if (isArmsWeapon(pArmsItem))			{				pInventory = pSlayer->getInventory();				x          = pPacket->getX();				y          = pPacket->getY();				pItem      = pInventory->getItem(x, y);				//Assert(pItem != NULL);				if (pItem == NULL)				{					GCCannotUse _GCCannotUse;					_GCCannotUse.setObjectID(pPacket->getObjectID());					pPlayer->sendPacket(&_GCCannotUse);					return;				}						// 牢亥配府 浇儿俊 乐绰 酒捞袍狼 Object甫 罐绰促.				ItemObjectID = pItem->getObjectID();						if (ItemObjectID != pPacket->getObjectID())				{					GCCannotUse _GCCannotUse;					_GCCannotUse.setObjectID(pPacket->getObjectID());					pPlayer->sendPacket(&_GCCannotUse);					return;				}				SkillSlot*	pVivid = pSlayer->getSkill( SKILL_VIVID_MAGAZINE );				bool		hasVivid = (pVivid != NULL) && pVivid->canUse();				if (isSuitableMagazine(pArmsItem, pItem, hasVivid)) Success = true;			}		} 		// reload delay啊 乐栏骨肺 effect俊 殿废 矫挪促.		EffectManager* pEffectManager = pSlayer->getEffectManager();		if (pEffectManager == NULL) return;		if (Success && !pSlayer->isFlag(Effect::EFFECT_CLASS_RELOAD_TIMER)) 		{			EffectReloadTimer* pEffect = new EffectReloadTimer(pSlayer);						pEffect->setFromInventory(true);			pEffect->setObjectID(ItemObjectID);			pEffect->setInventoryXY(x, y);						if (pSlayer->hasSkill(SKILL_FAST_RELOAD)) pEffect->setDeadline(7); // 狐弗 reload(0.7檬)			else                                      pEffect->setDeadline(2*10); // 焊烹 reload(2sec)			pSlayer->setFlag(Effect::EFFECT_CLASS_RELOAD_TIMER);			pEffectManager->addEffect(pEffect);		} 		else 		{			GCCannotUse _GCCannotUse;			_GCCannotUse.setObjectID(pPacket->getObjectID());			pPlayer->sendPacket(&_GCCannotUse);		}	} 	catch (Throwable & t) 	{		//cout << t.toString();	}#endif	// __GAME_SERVER__    __END_DEBUG_EX __END_CATCH}

⌨️ 快捷键说明

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