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

📄 effectdarkness.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
字号:
//////////////////////////////////////////////////////////////////////////////// Filename    : EffectDarkness.cpp// Written by  : elca// Description : //////////////////////////////////////////////////////////////////////////////#include "EffectDarkness.h"#include "Creature.h"#include "Zone.h"#include "Tile.h"#include "DB.h"////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////EffectDarkness::EffectDarkness(Zone* pZone , ZoneCoord_t ZoneX, ZoneCoord_t ZoneY)	throw(Error){	__BEGIN_TRY	m_pZone = pZone;	m_X = ZoneX;	m_Y = ZoneY;	__END_CATCH}//////////////////////////////////////////////////////////////////////////////// EffectDarkness::affectCreature()// bAffectByMove啊 false搁 力磊府俊辑 寸窍绰 巴捞骨肺.. // 寇何狼 SkillOK俊辑 modify info甫 焊辰促. 蝶扼辑 GCModifyInformation阑 // 焊尘 鞘夸啊 绝促.// pTarget狼 矫具啊 函茄  版快 true甫 return//////////////////////////////////////////////////////////////////////////////bool EffectDarkness::affectObject(Object* pTarget, bool bAffectByMove)	throw(Error){	__BEGIN_TRY	bool bAffected = false;	if (pTarget->getObjectClass() == Object::OBJECT_CLASS_CREATURE)	{		Creature* pTargetCreature = dynamic_cast<Creature*>(pTarget);		// 捞固 吧妨乐绰 版快俊绰 促矫 吧瘤 臼绰促.		if (pTargetCreature->isFlag(Effect::EFFECT_CLASS_DARKNESS))		{			return false;			}		// 浇饭捞绢老 版快俊父 吧赴促.		if (pTargetCreature->isSlayer()||pTargetCreature->isOusters())		{			bAffected = true;			pTargetCreature->setFlag(Effect::EFFECT_CLASS_DARKNESS);		}	}	return bAffected;		__END_CATCH}void EffectDarkness::unaffectObject(Object* pTarget, bool bUnaffectByMove)	throw(Error){	__BEGIN_TRY	Assert(pTarget != NULL);		if (pTarget->getObjectClass() == Object::OBJECT_CLASS_CREATURE)	{		Creature* pTargetCreature = dynamic_cast<Creature*>(pTarget);		if (pTargetCreature->isSlayer()||pTargetCreature->isOusters())		{			pTargetCreature->removeFlag(Effect::EFFECT_CLASS_DARKNESS);		}	}	__END_CATCH}//////////////////////////////////////////////////////////////////////////////// EffectDarkness::affect()//////////////////////////////////////////////////////////////////////////////void EffectDarkness::affect(Creature* pTargetCreature)	throw(Error){	__BEGIN_TRY	__END_CATCH}//////////////////////////////////////////////////////////////////////////////// EffectDarkness::affect()//////////////////////////////////////////////////////////////////////////////void EffectDarkness::affect(Zone* pZone , ZoneCoord_t x , ZoneCoord_t y , Object* pObject)	throw(Error){	__BEGIN_TRY	__END_CATCH}//////////////////////////////////////////////////////////////////////////////// unaffect()//////////////////////////////////////////////////////////////////////////////void EffectDarkness::unaffect()	throw(Error){	__BEGIN_TRY	//cout << "EffectDarkness " << "unaffect BEGIN" << endl;	Tile & tile = m_pZone->getTile(m_X, m_Y);	// unaffect creatures on tile	const slist<Object*>& oList = tile.getObjectList();	for (slist<Object*>::const_iterator itr = oList.begin(); itr != oList.end(); itr++) 	{		if (*itr != this) 		{			EffectDarkness::unaffectObject((Object*)(*itr), false);		}	}	tile.deleteEffect(m_ObjectID);	//cout << "EffectDarkness " << "unaffect END" << endl;	__END_CATCH}void EffectDarkness::unaffect(Zone* pZone , ZoneCoord_t x , ZoneCoord_t y , Object* pObject)	throw(Error){	__BEGIN_TRY	__END_CATCH}string EffectDarkness::toString() const 	throw(){	__BEGIN_TRY	StringStream msg;	msg << "EffectDarkness("		<< "DayTime:" << m_Deadline.tv_sec		<< ")";	return msg.toString();	__END_CATCH}void EffectDarknessLoader::load( Zone* pZone )	throw (Error){	__BEGIN_TRY	Statement* pStmt = NULL;	Result* pResult = NULL;	BEGIN_DB	{		pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		pResult = pStmt->executeQuery( "SELECT LeftX, TopY, RightX, BottomY FROM ZoneEffectInfo WHERE ZoneID = %u AND EffectID = %d", pZone->getZoneID(), Effect::EFFECT_CLASS_DARKNESS );		VSRect rect( 0, 0, pZone->getWidth()-1, pZone->getHeight()-1 );		while ( pResult->next() )		{			int left	= pResult->getInt(1);			int top		= pResult->getInt(2);			int right	= pResult->getInt(3);			int bottom	= pResult->getInt(4);			for ( int x = left ; x <= right ; x++ )			{				for ( int y = top ; y <= bottom ; y++ )				{					if ( !rect.ptInRect( x, y ) )						continue;					Tile& tile = pZone->getTile( x, y );					if ( tile.canAddEffect() )					{						EffectDarkness* pEffect = new EffectDarkness( pZone, x, y );						pEffect->setLevel(300);						pEffect->setStartTime();						pZone->registerObject( pEffect );						pZone->addEffect( pEffect );						tile.addEffect( pEffect );					}				}			}		}	}	END_DB( pStmt )	__END_CATCH}EffectDarknessLoader* g_pEffectDarknessLoader = NULL;

⌨️ 快捷键说明

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