cgsilvercoatinghandler.cpp

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

CPP
154
字号
//////////////////////////////////////////////////////////////////////////////// Filename    : CGSilverCoatingHandler.cpp// Written By  : 辫己刮// Description ://////////////////////////////////////////////////////////////////////////////#include "CGSilverCoating.h"#ifdef __GAME_SERVER__	#include "GamePlayer.h"	#include "NPC.h"	#include "Slayer.h"	#include "Vampire.h"	#include "ItemInfo.h"	#include "ItemInfoManager.h"	#include "PriceManager.h"	#include "LogClient.h"	#include "Gpackets/GCNPCResponse.h"	#include <stdio.h>#endif////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGSilverCoatingHandler::execute (CGSilverCoating* pPacket , Player* pPlayer)	 throw (ProtocolException , Error){	__BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__	Assert(pPacket != NULL);	Assert(pPlayer != NULL);		ObjectID_t    ITEMOID      = pPacket->getObjectID();	Creature*     pPC          = dynamic_cast<GamePlayer*>(pPlayer)->getCreature();	bool          bSlayer      = true;	Gold_t        playerMoney  = 0;	Price_t       coatingPrice = 0;	Item*         pItem        = NULL;	Slayer*       pSlayer      = NULL;	Vampire*      pVampire     = NULL;	int           storage      = 0;	int           X            = 0;	int           Y            = 0;	GCNPCResponse response;	// 敲饭捞绢啊 浇饭捞绢牢瘤 轨颇捞绢牢瘤 备盒.	if (pPC->isSlayer())       bSlayer = true;	else if (pPC->isVampire()) bSlayer = false;	// 敲饭捞绢啊 内泼窍妨绊 窍绰 酒捞袍阑 啊瘤绊 乐绰瘤 八荤	if (bSlayer)	{		pSlayer     = dynamic_cast<Slayer*>(pPC);		playerMoney = pSlayer->getGold();		pItem       = pSlayer->findItemOID(ITEMOID, storage, X, Y);	}	else	{		pVampire    = dynamic_cast<Vampire*>(pPC);		playerMoney = pVampire->getGold();		pItem       = pVampire->findItemOID(ITEMOID, storage, X, Y);	}	// 酒捞袍捞 绝促搁 寸楷洒 内泼且 荐 绝促.	if (pItem == NULL)	{		response.setCode(NPC_RESPONSE_SILVER_COATING_FAIL_ITEM_NOT_EXIST);		pPlayer->sendPacket(&response);		return;	}	// 内泼窍妨绰 酒捞袍捞 内泼瞪 荐 绝绰 酒捞袍捞扼搁...	switch (pItem->getItemClass())	{		case Item::ITEM_CLASS_BLADE:		case Item::ITEM_CLASS_SWORD:		case Item::ITEM_CLASS_CROSS:		case Item::ITEM_CLASS_MACE:			break;		default:			response.setCode(NPC_RESPONSE_SILVER_COATING_FAIL_ITEM_TYPE);			pPlayer->sendPacket(&response);			return;	}	coatingPrice = g_pPriceManager->getSilverCoatingPrice(pItem);	if (coatingPrice > playerMoney)	{		response.setCode(NPC_RESPONSE_SILVER_COATING_FAIL_MONEY);		pPlayer->sendPacket(&response);		return;	}	// 弥措 篮 档陛樊阑 掘绢客辑... 档陛茄促.	ItemInfo* pItemInfo = g_pItemInfoManager->getItemInfo(pItem->getItemClass(), pItem->getItemType());	pItem->setSilver(pItemInfo->getMaxSilver());	// 捣阑 临牢促.	if (bSlayer)	{		//pSlayer->setGoldEx(playerMoney - coatingPrice);		// by sigi. 2002.9.4		pSlayer->decreaseGoldEx(coatingPrice);		//log(LOG_REPAIR_ITEM, pSlayer->getName(), "", pItem->toString());	}	else	{		//pVampire->setGoldEx(playerMoney - coatingPrice);		// by sigi. 2002.9.4		pVampire->decreaseGoldEx(coatingPrice);		//log(LOG_REPAIR_ITEM, pVampire->getName(), "", pItem->toString());	}	// silver父 历厘窍搁 等促.	// 酒捞袍 历厘 弥利拳. by sigi. 2002.5.13	char pField[80];	sprintf(pField, "Silver=%d", pItem->getSilver());	pItem->tinysave(pField);	// 酒捞袍阑 篮栏肺 内泼沁促绰 沥焊甫 DB俊促啊 历厘秦霖促.	// 窜 盒疙洒 STORAGE_STASH啊 倒酒棵 荐 乐瘤父, 	// 焊包窃俊 乐绰 巴阑 荐府茄促绰 巴篮 富捞 救 登骨肺,	// 历厘窍瘤 臼绰促.	/*	switch (storage)	{		case STORAGE_INVENTORY:			pItem->save(pPC->getName(), STORAGE_INVENTORY, 0, X, Y);			break;		case STORAGE_GEAR:			if (bSlayer) pItem->save(pSlayer->getName(),  STORAGE_GEAR, 0, X, 0);			else         pItem->save(pVampire->getName(), STORAGE_GEAR, 0, X, 0);			break;		default:			break;	}	*/	// OK 菩哦阑 朝妨霖促.	response.setCode(NPC_RESPONSE_SILVER_COATING_OK);	response.setParameter(playerMoney-coatingPrice);	pPlayer->sendPacket(&response);	#endif	__END_DEBUG_EX __END_CATCH}

⌨️ 快捷键说明

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