cgdropmoneyhandler.cpp

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

CPP
166
字号
//////////////////////////////////////////////////////////////////////////////// Filename    : CGDropMoneyHandler.cc// Written By  :// Description : //////////////////////////////////////////////////////////////////////////////#include "CGDropMoney.h"#ifdef __GAME_SERVER__	#include "GamePlayer.h"	#include "Zone.h"	#include "Slayer.h"	#include "Vampire.h"	#include "Ousters.h"	#include "Item.h"	#include "ItemUtil.h"	#include "LogClient.h"	#include "ItemFactoryManager.h"	#include "VariableManager.h"	#include "item/Money.h"	#include "Gpackets/GCDeleteandPickUpOK.h"	#include "Gpackets/GCDeleteObject.h"	#include <stdio.h>#endif////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGDropMoneyHandler::execute (CGDropMoney* pPacket, Player* pPlayer)	throw (ProtocolException, Error){	__BEGIN_TRY __BEGIN_DEBUG_EX	__BEGIN_DEBUG	#ifdef __GAME_SERVER__	// -_-; 公矫//	return;	throw DisconnectException( "捣篮 滚副 荐 绝嚼聪促." );	Assert(pPacket != NULL);	Assert(pPlayer != NULL);	try 	{		GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer);		Creature*   pPC         = pGamePlayer->getCreature();		Gold_t      amount      = pPacket->getAmount();		Slayer*     pSlayer     = NULL;		Vampire*    pVampire    = NULL;		Ousters*    pOusters    = NULL;		Zone*       pZone       = NULL;		ZoneCoord_t ZoneX       = pPC->getX();		ZoneCoord_t ZoneY       = pPC->getY();		if (amount == 0)		{			// 泅犁肺辑绰 傲 府畔茄促.			// 捣 冻绢哆府扁甫 角菩沁促绰 菩哦阑 父甸绢具 窍绰 吧鳖?			return;		}		if (pPC->isSlayer()) 		{			pSlayer = dynamic_cast<Slayer*>(pPC);			pZone   = pSlayer->getZone();		}		else if (pPC->isVampire())		{			pVampire = dynamic_cast<Vampire*>(pPC);			pZone    = pVampire->getZone();		}		else if (pPC->isOusters())		{			pOusters = dynamic_cast<Ousters*>(pPC);			pZone    = pOusters->getZone();		}		else throw ProtocolException("CGDropMoneyHandler::execute() : 舅 荐 绝绰 敲饭捞绢 农府媚.");		// 敲饭捞绢啊 冻绢哆府绊磊 窍绰 咀荐父怒狼 捣阑 啊瘤绊 乐绰瘤 犬牢茄促.		Item* pItem = NULL;		list<OptionType_t> optionNULL;		if (pPC->isSlayer())		{			if (pSlayer->getGold() < amount)  return;			pItem = g_pItemFactoryManager->createItem(Item::ITEM_CLASS_MONEY, 0, optionNULL);		}		else if (pPC->isVampire())		{			if (pVampire->getGold() < amount) return;			pItem = g_pItemFactoryManager->createItem(Item::ITEM_CLASS_MONEY, 1, optionNULL);		}		else if (pPC->isOusters())		{			if (pOusters->getGold() < amount) return;			pItem = g_pItemFactoryManager->createItem(Item::ITEM_CLASS_MONEY, 2, optionNULL);		}		// 捣 酒捞袍阑 积己茄促.			dynamic_cast<Money*>(pItem)->setAmount(amount);		// 捣 酒捞袍阑 殿废茄促.		pZone->getObjectRegistry().registerObject(pItem);		// 捣阑 粮俊促 冻绢哆赴促.		TPOINT pt = pZone->addItem(pItem, ZoneX, ZoneY);		if (pt.x != -1)		{			//pItem->save("", STORAGE_ZONE, pZone->getZoneID(), pt.x, pt.y);				// item历厘 弥利拳. by sigi. 2002.5.13			char pField[80];			sprintf(pField, "OwnerID='', Storage=%d, StorageID=%lu, X=%d, Y=%d", STORAGE_ZONE, pZone->getZoneID(), pt.x, pt.y);			pItem->tinysave(pField);			//pItem->create("", STORAGE_ZONE, pZone->getZoneID(), pt.x, pt.y);			// 捣肺弊 巢辨 咀荐搁 捣肺弊 巢变促			if ( amount >= g_pVariableManager->getMoneyTraceLogLimit() )			{				char zoneName[15];				sprintf(zoneName, "%4d%3d%3d", pZone->getZoneID(), ZoneX, ZoneY);				remainMoneyTraceLog( pPC->getName(), zoneName, ITEM_LOG_MOVE, DETAIL_DROP, amount);			}			log(LOG_DROP_MONEY, pPC->getName(), "", pItem->toString());		}		else		{			log(LOG_DROP_MONEY, pPC->getName(), "", "CANNOT DROP! : " + pItem->toString());			//cout << "#############################################" << endl;			//cout << "# CRITICAL ERROR! CANNOT ADD MONEY TO ZONE! #" << endl;			//cout << "#############################################" << endl;			SAFE_DELETE(pItem);			return;		}		// 敲饭捞绢肺何磐 捣阑 化绰促.		//if (pPC->isSlayer())       pSlayer->setGoldEx(pSlayer->getGold() - amount);		//else if (pPC->isVampire()) pVampire->setGoldEx(pVampire->getGold() - amount);		// by sigi. 2002.9.4		if (pPC->isSlayer())       pSlayer->decreaseGoldEx(amount);		else if (pPC->isVampire()) pVampire->decreaseGoldEx(amount);		else if (pPC->isOusters()) pOusters->decreaseGoldEx(amount);	} 	catch (Throwable & t) 	{ 		//cout << t.toString() << endl; 	}#endif	// __GAME_SERVER__	__END_DEBUG	__END_DEBUG_EX __END_CATCH}

⌨️ 快捷键说明

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