cgstashdeposithandler.cpp

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

CPP
140
字号
//////////////////////////////////////////////////////////////////////////////// Filename    : CGStashDepositHandler.cpp// Written By  : excel96// Description : //////////////////////////////////////////////////////////////////////////////#include "CGStashDeposit.h"#ifdef __GAME_SERVER__	#include "GamePlayer.h"	#include "Zone.h"	#include "Slayer.h"	#include "Vampire.h"	#include "Ousters.h"	#include "Item.h"	#include "LogClient.h"	#include "Utility.h"	#include "item/Money.h"	#include "Gpackets/GCDeleteandPickUpOK.h"	#include "Gpackets/GCDeleteObject.h"#endif////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGStashDepositHandler::execute (CGStashDeposit* pPacket, Player* pPlayer)	throw (ProtocolException, Error){	__BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__	Assert(pPacket != NULL);	Assert(pPlayer != NULL);	GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer);	PlayerCreature* pPC		= dynamic_cast<PlayerCreature*>(pGamePlayer->getCreature());	Gold_t      amount      = pPacket->getAmount();	if ( !pPC->checkGoldIntegrity() || !pPC->checkStashGoldIntegrity() )	{		filelog("GoldBug.log", "CGStashDeposit : 捣捞 DB尔 救 嘎绰促! [%s:%s]", pGamePlayer->getID().c_str(), pPC->getName().c_str() );		throw DisconnectException("CGStashDeposit : 捣捞 DB尔 救 嘎绰促!");	}	if (amount == 0) return;	if (pPC->isSlayer())	{		Slayer* pSlayer = dynamic_cast<Slayer*>(pPC);		if (pSlayer->getGold() < amount)  return;		// 焊包窃俊 甸绢哎 荐 乐绰 捣焊促 腹篮 剧狼 捣阑 持栏妨 茄促搁		// 老何父 持绊, 唱赣瘤绰 傲 敲饭捞绢俊霸 巢败初酒具 茄促.		if (pSlayer->getStashGold() + amount > MAX_MONEY)		{			Gold_t margin = MAX_MONEY - pSlayer->getStashGold();			//pSlayer->setGoldEx(pSlayer->getGold() - margin);			//pSlayer->setStashGoldEx(pSlayer->getStashGold() + margin);			// by sigi. 2002.9.4			pSlayer->decreaseGoldEx(margin);			pSlayer->increaseStashGoldEx(margin);			log(LOG_STASH_ADD_MONEY, pSlayer->getName(), "", itos(margin));		}		else		{			//pSlayer->setGoldEx(pSlayer->getGold() - amount);			//pSlayer->setStashGoldEx(pSlayer->getStashGold() + amount);			// by sigi. 2002.9.4			pSlayer->decreaseGoldEx(amount);			pSlayer->increaseStashGoldEx(amount);			log(LOG_STASH_ADD_MONEY, pSlayer->getName(), "", itos(amount));		}	}	else if (pPC->isVampire())	{		Vampire* pVampire = dynamic_cast<Vampire*>(pPC);		if (pVampire->getGold() < amount) return;		if (pVampire->getStashGold() + amount > MAX_MONEY)		{			Gold_t margin = MAX_MONEY - pVampire->getStashGold();			//pVampire->setGoldEx(pVampire->getGold() - margin);			//pVampire->setStashGoldEx(pVampire->getStashGold() + margin);			pVampire->decreaseGoldEx(margin);			pVampire->increaseStashGoldEx(margin);			log(LOG_STASH_ADD_MONEY, pVampire->getName(), "", itos(margin));		}		else		{			//pVampire->setGoldEx(pVampire->getGold() - amount);			//pVampire->setStashGoldEx(pVampire->getStashGold() + amount);			pVampire->decreaseGoldEx(amount);			pVampire->increaseStashGoldEx(amount);			log(LOG_STASH_ADD_MONEY, pVampire->getName(), "", itos(amount));		}	}	else if (pPC->isOusters())	{		Ousters* pOusters = dynamic_cast<Ousters*>(pPC);		if (pOusters->getGold() < amount) return;		if (pOusters->getStashGold() + amount > MAX_MONEY)		{			Gold_t margin = MAX_MONEY - pOusters->getStashGold();			//pOusters->setGoldEx(pOusters->getGold() - margin);			//pOusters->setStashGoldEx(pOusters->getStashGold() + margin);			pOusters->decreaseGoldEx(margin);			pOusters->increaseStashGoldEx(margin);			log(LOG_STASH_ADD_MONEY, pOusters->getName(), "", itos(margin));		}		else		{			//pOusters->setGoldEx(pOusters->getGold() - amount);			//pOusters->setStashGoldEx(pOusters->getStashGold() + amount);			pOusters->decreaseGoldEx(amount);			pOusters->increaseStashGoldEx(amount);			log(LOG_STASH_ADD_MONEY, pOusters->getName(), "", itos(amount));		}	}#endif	// __GAME_SERVER__	__END_DEBUG_EX __END_CATCH}

⌨️ 快捷键说明

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