cgselecttileeffecthandler.cpp

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

CPP
218
字号
//////////////////////////////////////////////////////////////////////////////// Filename    : CGSelectTileEffectHandler.cpp// Written By  : excel96// Description ://////////////////////////////////////////////////////////////////////////////#include "CGSelectTileEffect.h"#ifdef __GAME_SERVER__	#include "GamePlayer.h"	#include "Slayer.h"	#include "Vampire.h"	#include "Effect.h"	#include "EffectManager.h"	#include "ZoneInfoManager.h"	#include "ZoneUtil.h"	#include "PacketUtil.h"	#include "Properties.h"	#include "RelicUtil.h"	#include "StringPool.h"	#include "skill/EffectVampirePortal.h"	#include "Gpackets/GCEnterVampirePortal.h"	#include "Gpackets/GCSystemMessage.h"#endif // __GAME_SERVER__////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGSelectTileEffectHandler::execute(CGSelectTileEffect* 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);		Assert(pGamePlayer != NULL);		if (pGamePlayer->getPlayerStatus() != GPS_NORMAL) return;		Creature* pCreature = pGamePlayer->getCreature();		Assert(pCreature != NULL);		// 己拱 甸绊 乐栏搁 器呕俊 甸绢哎 荐 绝促.		if ( pCreature->hasRelicItem() 			|| pCreature->isFlag( Effect::EFFECT_CLASS_HAS_FLAG ) 			|| pCreature->isFlag( Effect::EFFECT_CLASS_HAS_SWEEPER ) )		{			return;		}		Zone* pZone = pCreature->getZone();		Assert(pZone != NULL);		Effect* pEffect = NULL;		// 刚历 轨颇捞绢 器呕 概聪历俊辑 茫绰促.		EffectManager* pVampirePortalManager = pZone->getVampirePortalManager();		pEffect = pVampirePortalManager->findEffect(pPacket->getEffectObjectID());		if (pEffect != NULL)		{			//cout << "CGSelectTileEffectHandler::execute() : Effect Exist" << endl;			switch (pEffect->getEffectClass())			{				case Effect::EFFECT_CLASS_VAMPIRE_PORTAL:					executeVampirePortal(pPacket, pPlayer, pEffect);					break;				default:					Assert(false);					break;			}		}		else		{			cout << "CGSelectTileEffectHandler::execute() : Effect DOES NOT Exist" << endl;			// 褥... 弊繁 OID甫 啊柳 捞棋飘啊 绝阑 锭俊绰 混娄 公矫秦霖促.		}	} 	catch (Throwable & t) 	{ 		cerr << t.toString() << endl; 	}#endif	// __GAME_SERVER__			__END_DEBUG_EX __END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGSelectTileEffectHandler::executeVampirePortal(CGSelectTileEffect* pPacket , Player* pPlayer, Effect* pEffect)	 throw (Error){	__BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__	Assert(pPacket != NULL);	Assert(pPlayer != NULL);	Assert(pEffect != NULL);	Assert(pEffect->getEffectClass() == Effect::EFFECT_CLASS_VAMPIRE_PORTAL);	try 	{		// 霸烙 敲饭捞绢狼 惑怕啊 沥惑捞 酒聪扼搁 傲 府畔茄促.		GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer);		Assert(pGamePlayer != NULL);		if (pGamePlayer->getPlayerStatus() != GPS_NORMAL) return;		Creature* pCreature = pGamePlayer->getCreature();		Assert(pCreature != NULL);				// 轨颇捞绢父捞 捞侩且 荐 乐促.		if (!pCreature->isVampire()) return;		Zone* pZone = pCreature->getZone();		Assert(pZone != NULL);		Vampire* pVampire = dynamic_cast<Vampire*>(pCreature);		Assert(pVampire != NULL);		EffectVampirePortal* pEffectVampirePortal = dynamic_cast<EffectVampirePortal*>(pEffect);		ZONE_COORD zonecoord = pEffectVampirePortal->getZoneCoord();		// 抛皋府俊肺绰 哎 荐 绝促.		// 盔贰绰 酒抗 喉矾叼 磐澄阑 父甸 荐 绝档废秦具 窍瘤父		// 捞固 谅钎啊 汲沥登绢 乐绰 玖捞 乐绢辑 绢驴 荐 绝捞 咯扁辑档 阜绰促.		if ( zonecoord.id == 1122 || zonecoord.id == 8000 )		{			return;		}		try {			ZoneInfo* pZoneInfo = g_pZoneInfoManager->getZoneInfo( zonecoord.id );#if defined(__PAY_SYSTEM_ZONE__) || defined(__PAY_SYSTEM_FREE_LIMIT__)			// 蜡丰粮牢单 蜡丰荤侩吝捞 酒聪搁...			// 弊府绊 菩剐府 夸陛力 利侩吝牢 酒聪搁			if (pZoneInfo==NULL				|| (pZoneInfo->isPayPlay() || pZoneInfo->isPremiumZone())					&& !pGamePlayer->isPayPlaying() && !pGamePlayer->isFamilyFreePass() )			{				//Statement* pStmt = NULL;				string connectIP = pGamePlayer->getSocket()->getHost();				// 蜡丰 辑厚胶 荤侩捞 啊瓷茄啊?				if (pGamePlayer->loginPayPlay(connectIP, pGamePlayer->getID()))				{					sendPayInfo(pGamePlayer);				}				else if (pZoneInfo->isPayPlay())				{					// 蜡丰 辑厚胶 荤侩 阂啊牢 版快					GCSystemMessage gcSystemMessage;					if (g_pConfig->getPropertyInt("IsNetMarble")==0)					{						gcSystemMessage.setMessage( g_pStringPool->getString( STRID_CANNOT_ENTER ) );					}					else					{						gcSystemMessage.setMessage( g_pStringPool->getString( STRID_CANNOT_ENTER ) );					}					pGamePlayer->sendPacket (&gcSystemMessage);					return;				}			}#endif		} catch (NoSuchElementException&) {			return;		}		if (pEffectVampirePortal->getCount() > 0)		{			// 轨颇捞绢 磊脚俊霸 敲贰弊甫 吧绢霖促.			// 捞绰 Zone::addPC俊辑 轨颇捞绢啊 眠啊瞪 锭, 林困俊促 谎府绰			// GCAddVampire 俊促 器呕肺何磐 吭澜阑 舅府扁 困秦辑捞促.			// Zone::addPC俊辑 促矫 钱绢林搁 等促.			pVampire->setFlag(Effect::EFFECT_CLASS_VAMPIRE_PORTAL);			// 刚历 林困俊促啊 轨颇捞绢啊 器呕阑 捞侩秦 荤扼柳促绰 荤角阑 舅妨霖促.			GCEnterVampirePortal gcEnterVampirePortal;			gcEnterVampirePortal.setObjectID(pVampire->getObjectID());			gcEnterVampirePortal.setX(pEffectVampirePortal->getX());			gcEnterVampirePortal.setY(pEffectVampirePortal->getY());			pZone->broadcastPacket(pVampire->getX(), pVampire->getY(), &gcEnterVampirePortal);			// 角力肺 捞悼阑 矫挪促.			transportCreature(pCreature, zonecoord.id, zonecoord.x, zonecoord.y, false);			// 捞悼矫淖促搁 墨款飘甫 临捞绊, 墨款飘啊 0捞 登搁 捞棋飘绰 荤扼柳促.			pEffectVampirePortal->setCount(pEffectVampirePortal->getCount()-1);			//if (pEffectVampirePortal->getCount() == 0) pEffectVampirePortal->setDeadline(0);		}	} 	catch (Throwable & t) 	{ 		cerr << t.toString() << endl; 	}#endif	// __GAME_SERVER__			__END_DEBUG_EX __END_CATCH}

⌨️ 快捷键说明

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