cgaddmousetogearhandler.cpp

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

CPP
292
字号
//////////////////////////////////////////////////////////////////////////////// Filename    : CGAddMouseToGearHandler.cc// Written By  : elca@ewestsoft.com// Description ://////////////////////////////////////////////////////////////////////////////#include "CGAddMouseToGear.h"#ifdef __GAME_SERVER__	#include "GamePlayer.h"	#include "Zone.h"	#include "Slayer.h"	#include "Vampire.h"	#include "Ousters.h"	#include "Inventory.h"	#include "Item.h"	#include "ItemInfo.h"	#include "ItemInfoManager.h"	#include "ItemUtil.h"	#include "Gpackets/GCModifyInformation.h"	#include "Gpackets/GCCannotAdd.h"#endif////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGAddMouseToGearHandler::execute (CGAddMouseToGear* 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);		Assert(pGamePlayer != NULL);		Creature*   pCreature   = pGamePlayer->getCreature();		Assert(pCreature != NULL);		bool        Success     = false;		if (pCreature->isSlayer()) 		{			Slayer* pSlayer    = dynamic_cast<Slayer*>(pCreature);			Assert(pSlayer != NULL);			Item*   pItem = pSlayer->getExtraInventorySlotItem();			if (pItem == NULL)			{				GCCannotAdd _GCCannotAdd;				_GCCannotAdd.setObjectID(pPacket->getObjectID());				pPlayer->sendPacket(&_GCCannotAdd);				return;			}			ObjectID_t ItemObjectID = pItem->getObjectID();			SlotID_t   SlotID       = pPacket->getSlotID();					// 酒捞袍狼 ObjectID啊 老摹窍绰瘤 眉农茄促.			if (ItemObjectID == pPacket->getObjectID()) 			{				Item::ItemClass IClass = pItem->getItemClass();								switch (SlotID) // 浇儿阑 焊绊 弊 浇儿俊 嘎绰 酒捞袍 蜡屈牢瘤 厚背茄促.				{					case Slayer::WEAR_HEAD:						if (IClass == Item::ITEM_CLASS_HELM) Success = true;						break;					case Slayer::WEAR_NECK:						if (IClass == Item::ITEM_CLASS_NECKLACE) Success = true;						break;					case Slayer::WEAR_FINGER1:						if (IClass == Item::ITEM_CLASS_RING || IClass == Item::ITEM_CLASS_COUPLE_RING) Success = true;						break;					case Slayer::WEAR_FINGER2:						if (IClass == Item::ITEM_CLASS_RING || IClass == Item::ITEM_CLASS_COUPLE_RING) Success = true;						break;					case Slayer::WEAR_FINGER3:						if (IClass == Item::ITEM_CLASS_RING || IClass == Item::ITEM_CLASS_COUPLE_RING) Success = true;						break;					case Slayer::WEAR_FINGER4:						if (IClass == Item::ITEM_CLASS_RING || IClass == Item::ITEM_CLASS_COUPLE_RING) Success = true;						break;					case Slayer::WEAR_WRIST1:						if (IClass == Item::ITEM_CLASS_BRACELET) Success = true;						break;					case Slayer::WEAR_WRIST2:						if (IClass == Item::ITEM_CLASS_BRACELET) Success = true;						break;					case Slayer::WEAR_LEFTHAND:						if (IClass == Item::ITEM_CLASS_SHIELD) Success = true;						break;					case Slayer::WEAR_HAND3:						if (IClass == Item::ITEM_CLASS_GLOVE) Success = true;						break;					case Slayer::WEAR_BODY:						if (IClass == Item::ITEM_CLASS_COAT) Success = true;						break;					case Slayer::WEAR_BELT:						if (IClass == Item::ITEM_CLASS_BELT) Success = true;						break;					case Slayer::WEAR_LEG:						if (IClass == Item::ITEM_CLASS_TROUSER) Success = true;						break;					case Slayer::WEAR_FOOT:						if (IClass == Item::ITEM_CLASS_SHOES) Success = true;						break;					case Slayer::WEAR_RIGHTHAND:						if (isSlayerWeapon(IClass)) Success = true;						break;					default :						break;				}								// 弊 浇儿俊 嘎绰 酒捞袍阑 厘馒窍妨绊 窍绰瘤 眉农茄促.				if (Success) pSlayer->wearItem((Slayer::WearPart)SlotID);			}		} 		else if (pCreature->isVampire())		{			Vampire* pVampire = dynamic_cast<Vampire*>(pCreature);			Assert(pVampire != NULL);			Item*    pItem    = pVampire->getExtraInventorySlotItem();			if (pItem == NULL)			{				GCCannotAdd _GCCannotAdd;				_GCCannotAdd.setObjectID(pPacket->getObjectID());				pPlayer->sendPacket(&_GCCannotAdd);				return;			}			ObjectID_t ItemObjectID = pItem->getObjectID();			SlotID_t   SlotID       = pPacket->getSlotID();					// 酒捞袍狼 ObjectID啊 老摹窍绰瘤 眉农茄促.			if (ItemObjectID == pPacket->getObjectID()) 			{				Item::ItemClass IClass = pItem->getItemClass();								switch (SlotID) // 浇儿阑 焊绊 弊 浇儿俊 嘎绰 酒捞袍 蜡屈牢瘤 厚背茄促.				{					case Vampire::WEAR_NECK:						if (IClass == Item::ITEM_CLASS_VAMPIRE_NECKLACE) Success = true;						break;					case Vampire::WEAR_FINGER1:						if (IClass == Item::ITEM_CLASS_VAMPIRE_RING || IClass == Item::ITEM_CLASS_VAMPIRE_COUPLE_RING) Success = true;						break;					case Vampire::WEAR_FINGER2:						if (IClass == Item::ITEM_CLASS_VAMPIRE_RING || IClass == Item::ITEM_CLASS_VAMPIRE_COUPLE_RING) Success = true;						break;					case Vampire::WEAR_FINGER3:						if (IClass == Item::ITEM_CLASS_VAMPIRE_RING || IClass == Item::ITEM_CLASS_VAMPIRE_COUPLE_RING) Success = true;						break;					case Vampire::WEAR_FINGER4:						if (IClass == Item::ITEM_CLASS_VAMPIRE_RING || IClass == Item::ITEM_CLASS_VAMPIRE_COUPLE_RING) Success = true;						break;					case Vampire::WEAR_WRIST1:						if (IClass == Item::ITEM_CLASS_VAMPIRE_BRACELET) Success = true;						break;					case Vampire::WEAR_WRIST2:						if (IClass == Item::ITEM_CLASS_VAMPIRE_BRACELET) Success = true;						break;					case Vampire::WEAR_EARRING1:						if (IClass == Item::ITEM_CLASS_VAMPIRE_EARRING) Success = true;						break;					case Vampire::WEAR_EARRING2:						if (IClass == Item::ITEM_CLASS_VAMPIRE_EARRING) Success = true;						break;					case Vampire::WEAR_BODY:						if (IClass == Item::ITEM_CLASS_VAMPIRE_COAT) Success = true;						break;					case Vampire::WEAR_LEFTHAND:						if (IClass == Item::ITEM_CLASS_VAMPIRE_WEAPON) Success = true;						break;					case Vampire::WEAR_RIGHTHAND:						if (IClass == Item::ITEM_CLASS_VAMPIRE_WEAPON) Success = true;						break;					case Vampire::WEAR_AMULET1:						if (IClass == Item::ITEM_CLASS_VAMPIRE_AMULET) Success = true;						break;					case Vampire::WEAR_AMULET2:						if (IClass == Item::ITEM_CLASS_VAMPIRE_AMULET) Success = true;						break;					case Vampire::WEAR_AMULET3:						if (IClass == Item::ITEM_CLASS_VAMPIRE_AMULET) Success = true;						break;					case Vampire::WEAR_AMULET4:						if (IClass == Item::ITEM_CLASS_VAMPIRE_AMULET) Success = true;						break;					default :						break;				}								// 弊 浇儿俊 嘎绰 酒捞袍阑 厘馒窍妨绊 窍绰瘤 眉农茄促.				if (Success) pVampire->wearItem((Vampire::WearPart)SlotID);			}		}		else if (pCreature->isOusters())		{			Ousters* pOusters = dynamic_cast<Ousters*>(pCreature);			Assert(pOusters != NULL);			Item*    pItem    = pOusters->getExtraInventorySlotItem();			if (pItem == NULL)			{				GCCannotAdd _GCCannotAdd;				_GCCannotAdd.setObjectID(pPacket->getObjectID());				pPlayer->sendPacket(&_GCCannotAdd);				return;			}			ObjectID_t ItemObjectID = pItem->getObjectID();			SlotID_t   SlotID       = pPacket->getSlotID();					// 酒捞袍狼 ObjectID啊 老摹窍绰瘤 眉农茄促.			if (ItemObjectID == pPacket->getObjectID()) 			{				Item::ItemClass IClass = pItem->getItemClass();								switch (SlotID) // 浇儿阑 焊绊 弊 浇儿俊 嘎绰 酒捞袍 蜡屈牢瘤 厚背茄促.				{					case Ousters::WEAR_CIRCLET:						if (IClass == Item::ITEM_CLASS_OUSTERS_CIRCLET) Success = true;						break;					case Ousters::WEAR_COAT:						if (IClass == Item::ITEM_CLASS_OUSTERS_COAT) Success = true;						break;					case Ousters::WEAR_LEFTHAND:					case Ousters::WEAR_RIGHTHAND:						if (IClass == Item::ITEM_CLASS_OUSTERS_WRISTLET || IClass == Item::ITEM_CLASS_OUSTERS_CHAKRAM ) Success = true;						break;					case Ousters::WEAR_BOOTS:						if (IClass == Item::ITEM_CLASS_OUSTERS_BOOTS) Success = true;						break;					case Ousters::WEAR_ARMSBAND1:					case Ousters::WEAR_ARMSBAND2:						if (IClass == Item::ITEM_CLASS_OUSTERS_ARMSBAND) Success = true;						break;					case Ousters::WEAR_RING1:					case Ousters::WEAR_RING2:						if (IClass == Item::ITEM_CLASS_OUSTERS_RING) Success = true;						break;					case Ousters::WEAR_NECKLACE1:					case Ousters::WEAR_NECKLACE2:					case Ousters::WEAR_NECKLACE3:						if (IClass == Item::ITEM_CLASS_OUSTERS_PENDENT) Success = true;						break;					case Ousters::WEAR_STONE1:					case Ousters::WEAR_STONE2:					case Ousters::WEAR_STONE3:					case Ousters::WEAR_STONE4:						if (IClass == Item::ITEM_CLASS_OUSTERS_STONE) Success = true;						break;					default :						break;				}								// 弊 浇儿俊 嘎绰 酒捞袍阑 厘馒窍妨绊 窍绰瘤 眉农茄促.				if (Success) pOusters->wearItem((Ousters::WearPart)SlotID);			}		}		// Adding俊 角菩 窍看阑 版快		if (!Success) 		{			GCCannotAdd _GCCannotAdd;			_GCCannotAdd.setObjectID(pPacket->getObjectID());			pPlayer->sendPacket(&_GCCannotAdd);		}	} 	catch (Throwable & t) 	{		//cout << t.toString();	}#endif	// __GAME_SERVER__    __END_DEBUG_EX __END_CATCH}

⌨️ 快捷键说明

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