cgrequestrepairhandler.cpp

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

CPP
612
字号
//////////////////////////////////////////////////////////////////////////////// Filename    : CGRequestRepairHandler.cpp// Written By  : 辫己刮// Description ://////////////////////////////////////////////////////////////////////////////#include "CGRequestRepair.h"#ifdef __GAME_SERVER__	#include "GamePlayer.h"	#include "NPC.h"	#include "Slayer.h"	#include "Vampire.h"	#include "Ousters.h"	#include "ItemUtil.h"	#include "ItemInfo.h"	#include "ItemInfoManager.h"	#include "PriceManager.h"	#include "LogClient.h"	#include "ZoneUtil.h"	#include "item/Key.h"	#include "item/SlayerPortalItem.h"	#include "item/OustersSummonItem.h"	#include "Gpackets/GCNPCResponse.h"	#include <stdio.h>#endif////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGRequestRepairHandler::execute (CGRequestRepair* 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();	GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer);	Creature*   pPC         = pGamePlayer->getCreature();	bool        bSlayer     = false;	bool        bVampire    = false;	bool        bOusters    = false;	Item*       pItem       = NULL;		// 敲饭捞绢啊 浇饭捞绢牢瘤 轨颇捞绢牢瘤 备盒.	if (pPC->isSlayer())       bSlayer = true;	else if (pPC->isVampire()) bVampire = true;	else if (pPC->isOusters()) bOusters = true;	else throw ProtocolException("CGRequestRepairHandler::execute() : Unknown player creature!");	if (ITEMOID == 0)	{		// ObjectID啊 0捞扼搁 葛电 酒捞袍阑 荐府窍绊磊 窍绰 巴捞促.		executeAll(pPacket, pPlayer);	}	else	{		if (bSlayer) pItem = (dynamic_cast<Slayer*>(pPC))->findItemOID(ITEMOID);		else if (bVampire) pItem = (dynamic_cast<Vampire*>(pPC))->findItemOID(ITEMOID);		else if (bOusters) pItem = (dynamic_cast<Ousters*>(pPC))->findItemOID(ITEMOID);		// 敲饭捞绢啊 酒捞袍阑 啊瘤绊 乐促搁		if (pItem != NULL)		{			// 弊 酒捞袍捞 葛磐 荤捞努 虐扼搁...			if (pItem->getItemClass() == Item::ITEM_CLASS_KEY && pItem->getItemType() == 2)			{				executeMotorcycle(pPacket, pPlayer);				return;			}			else executeNormal(pPacket, pPlayer);		}		else		{			// 酒捞袍捞 绝栏聪, 寸楷洒 荐府且 荐 绝促.			GCNPCResponse response;			response.setCode(NPC_RESPONSE_REPAIR_FAIL_ITEM_NOT_EXIST);			pPlayer->sendPacket(&response);		}	}	#endif	__END_DEBUG_EX __END_CATCH}//////////////////////////////////////////////////////////////////////////////// 老馆 酒捞袍阑 贸府茄促.//////////////////////////////////////////////////////////////////////////////void CGRequestRepairHandler::executeNormal (CGRequestRepair* pPacket , Player* pPlayer)	 throw (ProtocolException , Error){	__BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__	ObjectID_t    ITEMOID       = pPacket->getObjectID();	Creature*     pPC           = dynamic_cast<GamePlayer*>(pPlayer)->getCreature();	bool          bSlayer       = false;	bool          bVampire      = false;	bool          bOusters      = false;	Gold_t        playerMoney   = 0;	Price_t       repairPrice   = 0;	Item*         pItem         = NULL;	Slayer*       pSlayer       = NULL;	Vampire*      pVampire      = NULL;	Ousters*      pOusters      = NULL;	int           storage       = 0;	int           X             = 0;	int           Y             = 0;	GCNPCResponse response;	// 敲饭捞绢啊 浇饭捞绢牢瘤 轨颇捞绢牢瘤 备盒.	if (pPC->isSlayer())       bSlayer = true;	else if (pPC->isVampire()) bVampire = true;	else if (pPC->isOusters()) bOusters = true;	// 敲饭捞绢啊 荐府窍妨绊 窍绰 酒捞袍阑 啊瘤绊 乐绰瘤 八荤	if (bSlayer)	{		pSlayer     = dynamic_cast<Slayer*>(pPC);		playerMoney = pSlayer->getGold();		pItem       = pSlayer->findItemOID(ITEMOID, storage, X, Y);	}	else if (bVampire)	{		pVampire    = dynamic_cast<Vampire*>(pPC);		playerMoney = pVampire->getGold();		pItem       = pVampire->findItemOID(ITEMOID, storage, X, Y);	}	else if (bOusters)	{		pOusters    = dynamic_cast<Ousters*>(pPC);		playerMoney = pOusters->getGold();		pItem       = pOusters->findItemOID(ITEMOID, storage, X, Y);	}	// 敲饭捞绢啊 荐府窍妨绊 窍绰 酒捞袍阑 啊瘤绊 乐绰瘤 	// 惑困俊辑 八荤甫 窍扁 锭巩俊, pItem捞 澄老府绰 绝促.	// 窜, 荐府且 荐 绝绰 酒捞袍牢瘤甫 八荤茄促.	if (isRepairableItem(pItem) == false)	{		response.setCode(NPC_RESPONSE_REPAIR_FAIL_ITEM_TYPE);		pPlayer->sendPacket(&response);		return;	}	repairPrice = g_pPriceManager->getRepairPrice(pItem);	if (repairPrice > playerMoney)	{		response.setCode(NPC_RESPONSE_REPAIR_FAIL_MONEY);		pPlayer->sendPacket(&response);		return;	}	// 荐府茄促.	repairItem(pItem);	// 捣阑 临牢促.	if (bSlayer)	{		//pSlayer->setGoldEx(playerMoney-repairPrice);		// by sigi. 2002.9.4		pSlayer->decreaseGoldEx(repairPrice);		log(LOG_REPAIR_ITEM, pSlayer->getName(), "", pItem->toString());	}	else if (bVampire)	{		// by sigi. 2002.9.4		pVampire->decreaseGoldEx(repairPrice);		log(LOG_REPAIR_ITEM, pVampire->getName(), "", pItem->toString());	}	else if (bOusters)	{		// by sigi. 2002.9.4		pOusters->decreaseGoldEx(repairPrice);		log(LOG_REPAIR_ITEM, pOusters->getName(), "", pItem->toString());	}	// 酒捞袍阑 荐府沁促绰 沥焊甫 DB俊促啊 历厘秦霖促.	// 窜 盒疙洒 STORAGE_STASH啊 倒酒棵 荐 乐瘤父, 	// 焊包窃俊 乐绰 巴阑 荐府茄促绰 巴篮 富捞 救 登骨肺,	// 历厘窍瘤 臼绰促.	// item历厘 弥利拳. by sigi. 2002.5.17	if (repairPrice>0)	{		char pField[80];		if (pItem->getItemClass()==Item::ITEM_CLASS_SLAYER_PORTAL_ITEM)		{			SlayerPortalItem* pSPItem = dynamic_cast<SlayerPortalItem*>(pItem);			sprintf(pField, "Charge=%d", pSPItem->getCharge());		}		else if (pItem->getItemClass()==Item::ITEM_CLASS_OUSTERS_SUMMON_ITEM)		{			OustersSummonItem* pOSItem = dynamic_cast<OustersSummonItem*>(pItem);			sprintf(pField, "Charge=%d", pOSItem->getCharge());		}		else		{			sprintf(pField, "Durability=%d", pItem->getDurability());		}		pItem->tinysave(pField);	}	/*	// 构啊 灯电.. durability父 官操搁 等促.	// 辟单.. ItemObject俊 Durability field啊 绝绰 巴档 乐绊	// Charge甫 历厘秦具 窍绰 巴档 乐促.	// 弊贰辑.. 老窜篮 葛滴 促 历厘窍绰 save甫 捞侩窍档废 茄促.	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_REPAIR_OK);	response.setParameter(playerMoney-repairPrice);	pPlayer->sendPacket(&response);#endif	__END_DEBUG_EX __END_CATCH}//////////////////////////////////////////////////////////////////////////////// 葛磐 荤捞努阑 贸府茄促.//////////////////////////////////////////////////////////////////////////////void CGRequestRepairHandler::executeMotorcycle (CGRequestRepair* pPacket , Player* pPlayer)	 throw (ProtocolException , Error){	__BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__	// 菩哦 沥焊甫 惶酒辰促.	ObjectID_t      ITEMOID     = pPacket->getObjectID();	Creature*       pPC         = dynamic_cast<GamePlayer*>(pPlayer)->getCreature();	Zone*           pZone       = pPC->getZone();	Gold_t          playerMoney = 0;	ZoneCoord_t     CenterX     = pPC->getX();	ZoneCoord_t     CenterY     = pPC->getY();	Item*           pItem       = NULL;	bool            bSlayer     = false;	bool            bVampire    = false;	bool            bOusters    = false;	GCNPCResponse   response;		// 敲饭捞绢啊 浇饭捞绢牢瘤 轨颇捞绢牢瘤 备盒.	if (pPC->isSlayer())       bSlayer = true;	else if (pPC->isVampire()) bVampire = true;	else if (pPC->isOusters()) bOusters = true;	else throw ProtocolException("CGRequestRepairHandler::execute() : Unknown player creature!");	// 敲饭捞绢啊 荐府窍妨绊 窍绰 酒捞袍阑 啊瘤绊 乐绰瘤 	// 惑困俊辑 八荤甫 窍扁 锭巩俊, pItem捞 澄老府绰 绝促.	if (bSlayer)	{		pItem       = (dynamic_cast<Slayer*>(pPC))->findItemOID(ITEMOID);		playerMoney = (dynamic_cast<Slayer*>(pPC))->getGold();	}	else if (bVampire)	{		pItem       = (dynamic_cast<Vampire*>(pPC))->findItemOID(ITEMOID);		playerMoney = (dynamic_cast<Vampire*>(pPC))->getGold();	}	else if (bOusters)	{		pItem       = (dynamic_cast<Ousters*>(pPC))->findItemOID(ITEMOID);		playerMoney = (dynamic_cast<Ousters*>(pPC))->getGold();	}	// 林困 老沥 裹困甫 八祸秦辑, 葛磐 荤捞努捞 乐绰瘤 犬牢茄促.	for (ZoneCoord_t zx=CenterX-5; zx<=CenterX+5; zx++)

⌨️ 快捷键说明

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