cgridemotorcyclehandler.cpp

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

CPP
148
字号
//////////////////////////////////////////////////////////////////////////////// Filename    : CGRideMotorCycleHandler.cc// Written By  : elca@ewestsoft.com// Description ://////////////////////////////////////////////////////////////////////////////#include "CGRideMotorCycle.h"#ifdef __GAME_SERVER__	#include "GamePlayer.h"	#include "SkillHandlerManager.h"	#include "Creature.h"	#include "Effect.h"	#include "ZoneUtil.h"	#include "RelicUtil.h"	#include "item/Motorcycle.h"	#include "CreatureUtil.h"	#include "Gpackets/GCRideMotorCycle.h"	#include "Gpackets/GCRideMotorCycleOK.h"	#include "Gpackets/GCRideMotorCycleFailed.h"#endif	// __GAME_SERVER__////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGRideMotorCycleHandler::execute (CGRideMotorCycle* pPacket , Player* pPlayer)	 throw (Error){	__BEGIN_TRY __BEGIN_DEBUG_EX		#ifdef __GAME_SERVER__	Assert(pPacket != NULL);	Assert(pPlayer != NULL);	try 	{		GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer);		if (pGamePlayer->getPlayerStatus() == GPS_NORMAL) 		{			Creature* pCreature = pGamePlayer->getCreature();			bool      Success   = false;			Assert (pCreature != NULL);			if (pCreature->isSlayer()) 			{				Slayer*      pSlayer = dynamic_cast<Slayer*>(pCreature);				Zone*        pZone   = pSlayer->getZone();				Motorcycle*  pMotor  = pSlayer->getMotorcycle();				ZoneCoord_t  X       = pPacket->getX();				ZoneCoord_t  Y       = pPacket->getY();				// 谅钎啊 官款靛甫 逞绢啊搁 救 等促.				if (!isValidZoneCoord(pZone, X, Y)) 				{					GCRideMotorCycleFailed _GCRideMotorCycleFailed;					pGamePlayer->sendPacket(&_GCRideMotorCycleFailed);					return;				}				Tile& rTile = pZone->getTile(X, Y);				Item* pItem = rTile.getItem();				if (pSlayer->hasRelicItem()||pSlayer->isFlag( Effect::EFFECT_CLASS_REFINIUM_TICKET )					|| pSlayer->isFlag( Effect::EFFECT_CLASS_HAS_FLAG )					|| pSlayer->isFlag( Effect::EFFECT_CLASS_HAS_SWEEPER) )				{					//cout << "己拱阑 啊柳 惑怕俊辑绰 坷配官捞甫 呕 荐 绝嚼聪促" << endl;					GCRideMotorCycleFailed _GCRideMotorCycleFailed;					pGamePlayer->sendPacket(&_GCRideMotorCycleFailed);					return;				}				if (pItem == NULL || pItem->getItemClass() != Item::ITEM_CLASS_MOTORCYCLE)				{					//cout << "Item NULL or Not Motorcycle" << endl;					GCRideMotorCycleFailed _GCRideMotorCycleFailed;					pGamePlayer->sendPacket(&_GCRideMotorCycleFailed);					return;				}				if (pSlayer->isDead() || pSlayer->isFlag(Effect::EFFECT_CLASS_COMA))				{					//cout << "Is Dead or Coma" << endl;					GCRideMotorCycleFailed _GCRideMotorCycleFailed;					pGamePlayer->sendPacket(&_GCRideMotorCycleFailed);					return;				}				if (pItem->getItemClass() == Item::ITEM_CLASS_MOTORCYCLE && pMotor == NULL) 				{					Motorcycle* pMotorcycle  = dynamic_cast<Motorcycle*>(pItem);					ItemID_t    TargetItemID = pMotorcycle->getItemID();					Inventory*  pInventory   = pSlayer->getInventory();					if (pInventory->hasKey(TargetItemID)) 					{						pSlayer->setMotorcycle(pMotorcycle);						GCRideMotorCycle    _GCRideMotorCycle;						GCRideMotorCycleOK  _GCRideMotorCycleOK;						_GCRideMotorCycle.setObjectID(pSlayer->getObjectID());						_GCRideMotorCycle.setTargetObjectID(pMotorcycle->getObjectID());						_GCRideMotorCycleOK.setObjectID(pMotorcycle->getObjectID());						// 粮俊辑 酒捞袍阑 瘤快绊...						pZone->deleteItem(pItem, X, Y);						// OK 菩哦阑 敲饭捞绢俊霸 焊郴林绊...						pGamePlayer->sendPacket(&_GCRideMotorCycleOK);						// 葛磐荤捞努阑 爬促绰 沥焊甫 宏肺靛某胶泼						pZone->broadcastPacket(&_GCRideMotorCycle);						Success = true;						if ( pSlayer->getPetInfo() != NULL )						{							pSlayer->setPetInfo( NULL );							sendPetInfo( pGamePlayer, true );						}					}					else					{						//cout << "Not has key : " << TargetItemID << endl;					}				}			}			if (!Success) 			{				GCRideMotorCycleFailed _GCRideMotorCycleFailed;				pGamePlayer->sendPacket(&_GCRideMotorCycleFailed);			}		}	} 	catch (Throwable & t) 	{		//cout << t.toString() << endl;	}#endif	// __GAME_SERVER__			__END_DEBUG_EX __END_CATCH}

⌨️ 快捷键说明

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