cgmousetostashhandler.cpp

来自「天之炼狱1服务器端源文件游戏服务端不完整」· C++ 代码 · 共 222 行

CPP
222
字号
//////////////////////////////////////////////////////////////////////////////// Filename    : CGMouseToStashHandler.cc// Written By  : elca@ewestsoft.com// Description ://////////////////////////////////////////////////////////////////////////////#include "CGMouseToStash.h"#ifdef __GAME_SERVER__	#include "GamePlayer.h"	#include "Zone.h"	#include "PlayerCreature.h"	#include "Stash.h"	#include "Item.h"	#include "ItemUtil.h"	#include "ItemInfo.h"	#include "ItemInfoManager.h"	#include "LogClient.h"	#include "RelicUtil.h"	#include "CreatureUtil.h"	#include "item/Potion.h"	#include "item/Magazine.h"	#include "item/PetItem.h"	#include "Gpackets/GCCannotAdd.h"	#include <stdio.h>#endif////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGMouseToStashHandler::execute (CGMouseToStash* pPacket , Player* pPlayer)	throw (ProtocolException, Error){	__BEGIN_TRY __BEGIN_DEBUG_EX	__BEGIN_DEBUG#ifdef __GAME_SERVER__	Assert(pPacket != NULL);	Assert(pPlayer != NULL);	try 	{		GamePlayer*         pGamePlayer  = dynamic_cast<GamePlayer*>(pPlayer);		Creature*           pCreature    = pGamePlayer->getCreature();		PlayerCreature*     pPC          = dynamic_cast<PlayerCreature*>(pCreature);		Stash*              pStash       = pPC->getStash();		Item*               pMouseItem   = pPC->getExtraInventorySlotItem();		bool                Success      = false;		// 付快胶俊 酒捞袍捞 崔妨乐唱?		// 蜡聪农 酒捞袍篮 焊包窃俊 给 持绰促.		// canPutInStash肺 extract 2003. 3. 3		if (pMouseItem == NULL			|| !canPutInStash( pMouseItem )//			|| pMouseItem->isUnique())		)		{			GCCannotAdd _GCCannotAdd;			_GCCannotAdd.setObjectID(pPacket->getObjectID());			pPlayer->sendPacket(&_GCCannotAdd);			return;		}		ObjectID_t MouseItemOID = pMouseItem->getObjectID();		BYTE       rack         = pPacket->getRack();		BYTE       index        = pPacket->getIndex();		// 沥惑利牢 谅钎蔼牢啊? 坷宏璃飘 酒捞叼绰 老摹窍唱?		// Relic篮 焊包窃俊 历厘瞪 荐 绝促.		if (rack >= STASH_RACK_MAX 			|| index >= STASH_INDEX_MAX 			|| rack >= pPC->getStashNum() 			|| MouseItemOID != pPacket->getObjectID()			)		{			GCCannotAdd _GCCannotAdd;			_GCCannotAdd.setObjectID(pPacket->getObjectID());			pPlayer->sendPacket(&_GCCannotAdd);			return;		}		// 持阑妨绰 Stash Slot狼 Item阑 罐酒柯促.		Item* pStashItem = pStash->get(rack, index);		// 弊 厘家俊 酒捞袍捞 乐促搁		if (pStashItem != NULL) 		{			// 酒捞袍 努贰胶啊 鞍阑锭 箭磊甫 棵妨 林绊 付快胶俊 乐绰 巴篮 绝矩促.			if (isSameItem(pMouseItem, pStashItem) && isStackable(pMouseItem))			{				int MaxStack = ItemMaxStack[pMouseItem->getItemClass()];				if (pMouseItem->getNum() + pStashItem->getNum() > MaxStack) 				{					ItemNum_t CurrentNum = pStashItem->getNum();					ItemNum_t AddNum     = pMouseItem->getNum();					pStashItem->setNum(MaxStack);					pMouseItem->setNum(AddNum + CurrentNum - MaxStack);					// 官诧 沥焊甫 DB俊 历厘茄促.					//pStashItem->save(pPC->getName(), STORAGE_STASH, 0, rack, index);					// item历厘 弥利拳. by sigi. 2002.5.13					char pField[80];					sprintf(pField, "Num=%d, Storage=%d, X=%d, Y=%d", MaxStack, STORAGE_STASH, rack, index);					pStashItem->tinysave(pField);					//pMouseItem->save(pPC->getName(), STORAGE_EXTRASLOT, 0, 0, 0);					// item历厘 弥利拳. by sigi. 2002.5.13					sprintf(pField, "Num=%d, Storage=%d", pMouseItem->getNum(), STORAGE_EXTRASLOT);					pMouseItem->tinysave(pField);					log(LOG_STASH_ADD_ITEM, pPC->getName(), "", pMouseItem->toString());					Success = true;				} 				else 				{					pPC->deleteItemFromExtraInventorySlot();//					pMouseItem->whenPCLost(pPC);					pStashItem->setNum(pStashItem->getNum() + pMouseItem->getNum());					//pStashItem->save(pPC->getName(), STORAGE_STASH, 0, rack, index);					// item历厘 弥利拳. by sigi. 2002.5.13					char pField[80];					sprintf(pField, "Num=%d, Storage=%d, X=%d, Y=%d", pStashItem->getNum(), STORAGE_STASH, rack, index);					pStashItem->tinysave(pField);					log(LOG_STASH_ADD_ITEM, pPC->getName(), "", pMouseItem->toString());					// 滴俺狼 酒捞袍捞 窍唱肺 登菌栏聪鳖, 					// 歹窍扼绊 柯 酒捞袍篮 昏力秦 霖促.					pMouseItem->destroy();					SAFE_DELETE(pMouseItem);					Success = true;				}			} 			else // 酒捞袍 努贰胶啊 促福芭唱, 阶捞绰 酒捞袍捞 酒聪扼搁.			{				// 焊包窃俊 乐带 巴阑 付快胶俊 崔酒霖促.				pPC->deleteItemFromExtraInventorySlot();				pPC->addItemToExtraInventorySlot(pStashItem);//				pStashItem->whenPCTake( pPC );				// Stash俊 付快胶俊 崔妨乐带 酒捞袍阑 持绰促.				pStash->remove(rack, index);				pStash->insert(rack , index , pMouseItem);//				pMouseItem->whenPCLost( pPC );				//pStashItem->save(pPC->getName(), STORAGE_EXTRASLOT, 0, 0, 0);				// item历厘 弥利拳. by sigi. 2002.5.13				char pField[80];				sprintf(pField, "Storage=%d", STORAGE_EXTRASLOT);				pStashItem->tinysave(pField);				//pMouseItem->save(pPC->getName(), STORAGE_STASH, 0, rack, index);				// item历厘 弥利拳. by sigi. 2002.5.13				sprintf(pField, "Storage=%d, X=%d, Y=%d", STORAGE_STASH, rack, index);				pMouseItem->tinysave(pField);				log(LOG_STASH_REMOVE_ITEM, pPC->getName(), "", pStashItem->toString());				log(LOG_STASH_ADD_ITEM, pPC->getName(), "", pMouseItem->toString());				Success = true;			}		} 		else // 弊 厘家俊 酒捞袍捞 绝促搁.		{			// Stash俊 漂沥 酒捞袍阑 持绰促.			pStash->insert(rack , index , pMouseItem);			pPC->deleteItemFromExtraInventorySlot();//			pMouseItem->whenPCLost(pPC);			//pMouseItem->save(pPC->getName(), STORAGE_STASH, 0, rack, index);			// item历厘 弥利拳. by sigi. 2002.5.13			char pField[80];			sprintf(pField, "Storage=%d, X=%d, Y=%d", STORAGE_STASH, rack, index);			pMouseItem->tinysave(pField);			log(LOG_STASH_ADD_ITEM, pPC->getName(), "", pMouseItem->toString());			Success = true;		}		if (!Success) 		{			GCCannotAdd _GCCannotAdd;			_GCCannotAdd.setObjectID(pPacket->getObjectID());			pPlayer->sendPacket(&_GCCannotAdd);		}		else		{			if ( pMouseItem != NULL && pMouseItem->getItemClass() == Item::ITEM_CLASS_PET_ITEM )			{				PetItem* pPetItem = dynamic_cast<PetItem*>(pMouseItem);				if ( pPetItem != NULL && pPetItem->getPetInfo() != NULL && pPetItem->getPetInfo() == pPC->getPetInfo() )				{					pPC->setPetInfo(NULL);					pPC->initAllStatAndSend();					sendPetInfo( pGamePlayer, true );				}			}		}	}	catch (Throwable & t) 	{ 		//cout << t.toString(); 	}#endif	// __GAME_SERVER__    __END_DEBUG	__END_DEBUG_EX __END_CATCH}

⌨️ 快捷键说明

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