⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 portal.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
字号:
//////////////////////////////////////////////////////////////////////////////// Filename    : NormalPortal.cpp// Written by  : Reiot// Description ://////////////////////////////////////////////////////////////////////////////#include "Portal.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 "LogClient.h"#include "Slayer.h"#include "Vampire.h"#include "TimeManager.h"#include "WeatherManager.h"#include "GamePlayer.h"#include "IncomingPlayerManager.h"#include "PacketUtil.h"#include "Slayer.h"#include "Vampire.h"#include "ZoneUtil.h"#include "Properties.h"#include "Guild.h"#include "GuildManager.h"#include "quest/Trigger.h"#include "Gpackets/GCUpdateInfo.h"#include "Gpackets/GCMoveOK.h"////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////class isSameZoneID {public:	// constructor	isSameZoneID(ZoneID_t ZoneID) : m_ZoneID(ZoneID) {}	// operator	bool operator () (PortalTargetInfo* pPortalTargetInfo) throw ()	{		return pPortalTargetInfo->getZoneID() == m_ZoneID;	}private:	// EffectClass identifier	ZoneID_t m_ZoneID;};////////////////////////////////////////////////////////////////////////////////// class PrivatePortal member methods////////////////////////////////////////////////////////////////////////////////PrivatePortal::PrivatePortal(ObjectID_t objectID)	throw(): Portal(objectID){	__BEGIN_TRY	m_pTarget = new PortalTargetInfo();	__END_CATCH}PrivatePortal::~PrivatePortal()	throw(){	__BEGIN_TRY	SAFE_DELETE(m_pTarget);	__END_CATCH}ZoneID_t PrivatePortal::getZoneID() const 	throw() { 	__BEGIN_TRY	Assert(m_pTarget != NULL);	return m_pTarget->getZoneID(); 	__END_CATCH}void PrivatePortal::setZoneID(ZoneID_t zoneID) 	throw() { 	__BEGIN_TRY	Assert(m_pTarget != NULL);	m_pTarget->setZoneID(zoneID); 	__END_CATCH}ZoneCoord_t PrivatePortal::getX() const 	throw() { 	__BEGIN_TRY	Assert(m_pTarget != NULL);	return m_pTarget->getX(); 	__END_CATCH}void PrivatePortal::setX(ZoneCoord_t x) 	throw() { 	__BEGIN_TRY	Assert(m_pTarget != NULL);	m_pTarget->setX(x); 	__END_CATCH}ZoneCoord_t PrivatePortal::getY() const	throw() { 	__BEGIN_TRY	Assert(m_pTarget != NULL);	return m_pTarget->getY(); 	__END_CATCH}void PrivatePortal::setY(ZoneCoord_t y) 	throw() { 	__BEGIN_TRY	Assert(m_pTarget != NULL);	m_pTarget->setY(y); 	__END_CATCH}bool PrivatePortal::activate (Creature* pCreature) 	throw (Error){	__BEGIN_TRY	__BEGIN_DEBUG	Assert(pCreature != NULL);	Assert(m_pTarget != NULL);	Assert(pCreature->isPC());	transportCreature(pCreature, m_pTarget->getZoneID(), m_pTarget->getX(), m_pTarget->getY(), true);	return true;	__END_DEBUG	__END_CATCH}string PrivatePortal::toString () const	throw (){	StringStream msg;	msg << "NormalPortal("		<< "Type:"   << (int)m_PortalType		<< "ZoneID:" << (int)m_pTarget->getZoneID()		<< ",X:"     << (int)m_pTarget->getX()		<< ",Y:"     << (int)m_pTarget->getY()		<< ")";	return msg.toString();}////////////////////////////////////////////////////////////////////////////////// class NormalPortal member methods////////////////////////////////////////////////////////////////////////////////bool NormalPortal::activate (Creature* pCreature) 	throw (Error){	__BEGIN_TRY	__BEGIN_DEBUG	Assert(pCreature != NULL);	Assert(m_pTarget != NULL);	Assert(pCreature->isPC());	transportCreature(pCreature, m_pTarget->getZoneID(), m_pTarget->getX(), m_pTarget->getY(), true);	return true;	__END_DEBUG	__END_CATCH}string NormalPortal::toString () const	throw (){	StringStream msg;	msg << "NormalPortal("		<< "Type:"   << (int)m_PortalType		<< "ZoneID:" << (int)m_pTarget->getZoneID()		<< ",X:"     << (int)m_pTarget->getX()		<< ",Y:"     << (int)m_pTarget->getY()		<< ")";	return msg.toString();}////////////////////////////////////////////////////////////////////////////////// class GuildPortal member methods////////////////////////////////////////////////////////////////////////////////bool GuildPortal::activate (Creature* pCreature) 	throw (Error){	__BEGIN_TRY	__BEGIN_DEBUG	Assert(pCreature != NULL);	Assert(m_pTarget != NULL);	Assert(pCreature->isPC());	static const uint TEAM_ZONEID = 20001;	static const uint CLAN_ZONEID = 20001;	PlayerCreature* pPlayerCreature = dynamic_cast<PlayerCreature*>(pCreature);	Assert( pPlayerCreature != NULL );	Guild* pGuild = g_pGuildManager->getGuild( pPlayerCreature->getGuildID() );	// 家加等 辨靛啊 绝栏搁 傲 公矫	if ( pGuild == NULL )		return false;	// 家加等 辨靛狼 酒瘤飘啊 捞 辑滚俊 绝栏搁 公矫	if ( pGuild->getServerGroupID() != g_pConfig->getPropertyInt( "ServerID" ) )		return false;	// 辨靛狼 惑怕啊 active啊 酒聪搁 公矫	if ( pGuild->getState() != Guild::GUILD_STATE_ACTIVE )		return false;	// Guild Portal 辆幅甫 Slayer, Vampire 滴啊瘤肺 官层具 窍绰单 矫埃捞 绝绢辑 弊成 Zone ID 甫 焊绊 备喊茄促.	// 磊扁 辆练狼 辨靛 器呕牢瘤 犬牢茄促.	if ( ( pGuild->getRace() == Guild::GUILD_RACE_SLAYER  && m_pTarget->getZoneID() == TEAM_ZONEID )	  || ( pGuild->getRace() == Guild::GUILD_RACE_VAMPIRE && m_pTarget->getZoneID() == CLAN_ZONEID ) )	{		transportCreature(pCreature, pGuild->getZoneID(), m_pTarget->getX(), m_pTarget->getY(), true);	}	else	{		return false;	}	return true;	__END_DEBUG	__END_CATCH}string GuildPortal::toString () const	throw (){	StringStream msg;	msg << "GuildPortal("		<< "Type:"   << (int)m_PortalType		<< ",X:"     << (int)m_pTarget->getX()		<< ",Y:"     << (int)m_pTarget->getY()		<< ")";	return msg.toString();}////////////////////////////////////////////////////////////////////////////////// class MultiPortal member methods////////////////////////////////////////////////////////////////////////////////bool MultiPortal::activate (Creature* pCreature, ZoneID_t ZoneID) 	throw (Error){	__BEGIN_TRY	__BEGIN_DEBUG	Assert(pCreature->isPC());	list<PortalTargetInfo*>::iterator itr = find_if (m_Targets.begin(), m_Targets.end(), isSameZoneID(ZoneID)); 	if (itr == m_Targets.end()) 	{		// 给 茫疽瘤贩.		return false;	}	Assert((*itr) != NULL);		PortalTargetInfo* pPortalTargetInfo = *itr;	// by sigi. 2002.5.8	transportCreature(pCreature, 						pPortalTargetInfo->getZoneID(), 						pPortalTargetInfo->getX(), 						pPortalTargetInfo->getY(), 						true);	return true;	__END_DEBUG	__END_CATCH}string MultiPortal::toString () const	throw (){	StringStream msg;	msg << "MultiPortal("		<< "Type:"   << (int)m_PortalType;	for(list<PortalTargetInfo*>::const_iterator itr = m_Targets.begin() ; itr != m_Targets.end() ; itr++) {		msg	<< ",ZoneID:" << (int)(*itr)->getZoneID()			<< ",X:"     << (int)(*itr)->getX()			<< ",Y:"     << (int)(*itr)->getY();	}	msg << ")";	return msg.toString();}////////////////////////////////////////////////////////////////////////////////// class TriggeredPortal member methods////////////////////////////////////////////////////////////////////////////////bool TriggeredPortal::activate(Creature* pCreature) 	throw (Error){	__BEGIN_TRY	list<Trigger*>&          triggers = m_TriggerManager.getTriggers();	list<Trigger*>::iterator itr      = triggers.begin();	// 荤角 for甫 馆汗窍绰 巴篮 公狼固窍促.	// 力老 霉锅掳 飘府芭俊辑 炼扒阑 父练矫虐瘤 给窍搁,	// 墨款磐 咀记捞 角青登搁辑 府畔登绢滚府扁 锭巩捞促.	for (; itr != triggers.end(); itr++)	{		Trigger* pTrigger = *itr;		if (pTrigger->isAllSatisfied(Trigger::PASSIVE_TRIGGER, NULL, pCreature))		{			if (pTrigger->activate(NULL, pCreature)) 			{				return true;			}		}		else		{			if (pTrigger->activateCounter(NULL, pCreature))			{				return false;			}		}	}	return false;	__END_CATCH}void TriggeredPortal::load(ZoneID_t zoneid, int left, int top, int right, int bottom) 	throw (){	__BEGIN_TRY	m_TriggerManager.load(zoneid, left, top, right, bottom);	/*	// AtFirst 牧叼记捞 乐栏搁, 角青窍绊, 昏力茄促.	if (m_TriggerManager.hasCondition(Condition::CONDITION_AT_FIRST))	{		list<Trigger*>&          triggers = m_TriggerManager.getTriggers();		list<Trigger*>::iterator itr      = triggers.begin();		for (; itr != triggers.end(); itr++)		{			Trigger* pTrigger = *itr;			if (pTrigger->hasCondition(Condition::CONDITION_AT_FIRST))			{				pTrigger->activate(NULL);				triggers.erase(itr);				break;			}		}	}	*/	__END_CATCH}string TriggeredPortal::toString() const throw(){	__BEGIN_TRY	StringStream msg;	return msg.toString();	__END_CATCH}

⌨️ 快捷键说明

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