actionentereventzone.cpp

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

CPP
210
字号
////////////////////////////////////////////////////////////////////////////////// Filename    : ActionEnterEventZone.cpp// Written By  : // Description :////////////////////////////////////////////////////////////////////////////////#include "ActionEnterEventZone.h"#include "Zone.h"#include "ZoneGroup.h"#include "ZoneGroupManager.h"#include "ZoneInfo.h"#include "ZoneInfoManager.h"#include "ZonePlayerManager.h"#include "PCSlayerInfo2.h"#include "PCVampireInfo2.h"#include "PCOustersInfo2.h"#include "Slayer.h"#include "Vampire.h"#include "Ousters.h"#include "WeatherManager.h"#include "PaySystem.h"#include "GamePlayer.h"#include "IncomingPlayerManager.h"#include "LogClient.h"#include "PacketUtil.h"#include "ZoneUtil.h"#include "Properties.h"#include "CastleInfoManager.h"#include "StringStream.h"#include "StringPool.h"#include "EventZoneInfo.h"#include <stdio.h>#include "Gpackets/GCUpdateInfo.h"#include "Gpackets/GCMoveOK.h"#include "Gpackets/GCSystemMessage.h"#include "Gpackets/GCNPCResponse.h"#include "Gpackets/GCModifyInformation.h"////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void ActionEnterEventZone::read (PropertyBuffer & pb)    throw (Error){    __BEGIN_TRY	try 	{		m_EventID = pb.getPropertyInt("EventID");	} 	catch (NoSuchElementException & nsee)	{		throw Error(nsee.toString());	}	    __END_CATCH}////////////////////////////////////////////////////////////////////////////////// 咀记阑 角青茄促.////////////////////////////////////////////////////////////////////////////////void ActionEnterEventZone::execute (Creature * pNPC , Creature * pCreature) 	throw (Error){	__BEGIN_TRY	__BEGIN_DEBUG	Assert(pCreature != NULL);	Assert(pCreature->isPC());	GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pCreature->getPlayer());	PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pCreature);	Assert( pPC != NULL );	EventZoneInfo* pEventZoneInfo = EventZoneInfoManager::Instance().getZoneEventInfo( m_EventID )->getCurrentEventZoneInfo();	if ( pEventZoneInfo == NULL )	{		transportCreature(pPC, pPC->getZone()->getZoneID(), pPC->getX(), pPC->getY(), true);		GCSystemMessage gcSystemMessage;		gcSystemMessage.setMessage( g_pStringPool->getString( STRID_CANNOT_ENTER ) );		pGamePlayer->sendPacket (&gcSystemMessage);		return;	}	if ( !pEventZoneInfo->canEnter() )	{		transportCreature(pPC, pPC->getZone()->getZoneID(), pPC->getX(), pPC->getY(), true);		GCSystemMessage gcSystemMessage;		gcSystemMessage.setMessage( g_pStringPool->getString( STRID_PKZONE_PC_LIMITED ) );		pGamePlayer->sendPacket (&gcSystemMessage);		return;	}	bool bTransport = true;#if defined(__PAY_SYSTEM_ZONE__) || defined(__PAY_SYSTEM_FREE_LIMIT__)	try {		ZoneInfo* pZoneInfo = g_pZoneInfoManager->getZoneInfo( pEventZoneInfo->getZoneID() );		// 蜡丰粮牢单 蜡丰荤侩磊啊 酒聪搁...		if (pZoneInfo==NULL			|| pZoneInfo->isPayPlay() && !pGamePlayer->isPayPlaying())		{			string connectIP = pGamePlayer->getSocket()->getHost();			// 蜡丰 辑厚胶 荤侩捞 啊瓷茄啊?			if (pGamePlayer->loginPayPlay(connectIP, pGamePlayer->getID()))			{				sendPayInfo(pGamePlayer);			}			else			{				// 蜡丰 辑厚胶 荤侩 阂啊牢 版快				GCSystemMessage gcSystemMessage;				if (g_pConfig->getPropertyInt("IsNetMarble")==0)				{					gcSystemMessage.setMessage( g_pStringPool->getString( STRID_CANNOT_ENTER_PAY_ZONE ) );				}				else				{					gcSystemMessage.setMessage( g_pStringPool->getString( STRID_CANNOT_ENTER ) );				}				pGamePlayer->sendPacket (&gcSystemMessage);				bTransport = false;				return;			}		}	} catch (NoSuchElementException&) {	}#endif	if (bTransport)	{		if ( pPC->isSlayer() )		{			Slayer* pSlayer = dynamic_cast<Slayer*>(pPC);			Assert( pSlayer != NULL );			// 坷配官捞甫 鸥绊 乐栏搁 坷配官捞俊辑 郴赴促.			if ( pSlayer->hasRideMotorcycle() )			{				pSlayer->getOffMotorcycle();			}		}		if ( pPC->isOusters() )		{			Ousters* pOusters = dynamic_cast<Ousters*>(pPC);			Assert( pOusters != NULL );			// 角橇 鸥绊 乐栏搁 郴妨霖促			if ( pOusters->isFlag(Effect::EFFECT_CLASS_SUMMON_SYLPH) )			{				Effect* pEffect = pOusters->findEffect(Effect::EFFECT_CLASS_SUMMON_SYLPH);				if ( pEffect != NULL ) pEffect->setDeadline(0);			}		}		if ( pPC->isVampire() )		{			Vampire* pVampire = dynamic_cast<Vampire*>(pPC);			Assert( pVampire != NULL );			if ( pVampire->isFlag(Effect::EFFECT_CLASS_TRANSFORM_TO_BAT) )			{				addUntransformCreature( pVampire->getZone(), pVampire, true );			}		}		transportCreature(pCreature, pEventZoneInfo->getZoneID(), pEventZoneInfo->getEnterX(), pEventZoneInfo->getEnterY(), true);	}	else	{		GCSystemMessage gcSystemMessage;		gcSystemMessage.setMessage( g_pStringPool->getString( STRID_CANNOT_ENTER ) );		pGamePlayer->sendPacket (&gcSystemMessage);	}	__END_DEBUG	__END_CATCH}////////////////////////////////////////////////////////////////////////////////// get debug string////////////////////////////////////////////////////////////////////////////////string ActionEnterEventZone::toString () const 	throw (){	__BEGIN_TRY	StringStream msg;	msg << "ActionEnterEventZone("	    << ")";	return msg.toString();	__END_CATCH}

⌨️ 快捷键说明

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