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

📄 shrineinfomanager.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	{		pShrine->setFlag( Effect::EFFECT_CLASS_SHRINE_HOLY );		EffectShrineHoly* pEffect = new EffectShrineHoly(pShrine);		pEffect->setShrineID( itemType );		pEffect->setTick( 60 * 10 );		pShrine->getEffectManager().addEffect( pEffect );	}	*/	TPOINT tp = pZone->addItem( pShrine, shrineInfo.getX(), shrineInfo.getY(), true );	Assert( tp.x != -1 );	if ( shrineInfo.getShrineType() == ShrineInfo::SHRINE_GUARD )	{		// 葛电 荐龋己窜俊 Shield Effect 嘿牢促		pShrine->setFlag( Effect::EFFECT_CLASS_SHRINE_SHIELD );		EffectShrineShield* pEffect = new EffectShrineShield(pShrine);		pEffect->setShrineID( itemType );		pEffect->setTick( 60 * 10 );		pShrine->getEffectManager().addEffect( pEffect );	}	forbidDarkness( pZone, tp.x, tp.y, 2 );	// 己窜 谅钎甫 货肺 技泼茄促.	shrineInfo.setX( tp.x );	shrineInfo.setY( tp.y );	__END_CATCH}void ShrineInfoManager::addShrineSet( ShrineSet* pShrineSet )	throw(Error){	__BEGIN_TRY	if ( pShrineSet == NULL ) return;	ShrineID_t shrineID = pShrineSet->getShrineID();	HashMapShrineSetItor itr = m_ShrineSets.find( shrineID );	if ( itr != m_ShrineSets.end() )	{		filelog( "ShrineInfoError.log", "ShrineInfoManager::addShrineSet DuplicatedException : %d", (int)shrineID );		return;	}	m_ShrineSets[ shrineID ] = pShrineSet;	__END_CATCH}void ShrineInfoManager::deleteShrineSet( ShrineID_t shrineID )	throw(Error){	__BEGIN_TRY	HashMapShrineSetItor itr = m_ShrineSets.find( shrineID );	if ( itr != m_ShrineSets.end() )	{		SAFE_DELETE( itr->second );		m_ShrineSets.erase( shrineID );	}		__END_CATCH}ShrineSet* ShrineInfoManager::getShrineSet( ShrineID_t shrineID ) const	throw(Error){	__BEGIN_TRY	HashMapShrineSetConstItor itr = m_ShrineSets.find( shrineID );	if ( itr != m_ShrineSets.end() )	{		return itr->second;	}	return NULL;	__END_CATCH}bool ShrineInfoManager::isMatchGuardShrine(Item* pItem, MonsterCorpse* pMonsterCorpse, PlayerCreature* pPC) const	throw(Error){	__BEGIN_TRY	if ( pItem->getItemClass() != Item::ITEM_CLASS_BLOOD_BIBLE )		return false;		ItemType_t itemType = pItem->getItemType();	ShrineID_t shrineID = itemType;					// ShrineID = ItemType(of BloodBible)	ShrineSet* pShrineSet = getShrineSet( shrineID );	if( pShrineSet == NULL )	{		// 捞 乔狼 己辑俊 秦寸窍绰 Shrine Set捞 绝促.		return false;	}	// 捞 乔狼 己辑俊 秦寸窍绰 Shrine set狼 己瘤己窜狼 MonsterType捞	// 逞绢柯 MonsterCorpse狼 MonsterType苞 鞍栏搁 true	if (pPC->isSlayer())	{		return pShrineSet->getSlayerGuardShrine().getMonsterType() == pMonsterCorpse->getMonsterType();	}	else if (pPC->isVampire())	{		return pShrineSet->getVampireGuardShrine().getMonsterType() == pMonsterCorpse->getMonsterType();	}	else if (pPC->isOusters())	{		return pShrineSet->getOustersGuardShrine().getMonsterType() == pMonsterCorpse->getMonsterType();	}		return false;	__END_CATCH}bool ShrineInfoManager::isMatchHolyShrine(Item* pItem, MonsterCorpse* pMonsterCorpse) const	throw(Error){	__BEGIN_TRY	if ( pItem->getItemClass() != Item::ITEM_CLASS_BLOOD_BIBLE )		return false;		ItemType_t itemType = pItem->getItemType();	ShrineID_t shrineID = itemType;					// ShrineID = ItemType(of BloodBible)	ShrineSet* pShrineSet = getShrineSet( shrineID );	if( pShrineSet == NULL )	{		// 捞 乔狼 己辑俊 秦寸窍绰 Shrine Set捞 绝促.		return false;	}	// 捞 乔狼 己辑俊 秦寸窍绰 Shrine set狼 己瘤己窜狼 MonsterType捞	// 逞绢柯 MonsterCorpse狼 MonsterType苞 鞍栏搁 true	return pShrineSet->getHolyShrine().getMonsterType() == pMonsterCorpse->getMonsterType();	__END_CATCH}bool ShrineInfoManager::isDefenderOfGuardShrine( PlayerCreature* pPC, MonsterCorpse* pShrine ) const	throw(Error){	__BEGIN_TRY	Zone* pZone = pShrine->getZone();	Assert( pZone != NULL );	// 己捞 酒聪搁 秽~	if ( !pZone->isCastle() )	{		return false;	}	ZoneID_t castleZoneID = pZone->getZoneID();	CastleInfo* pCastleInfo = g_pCastleInfoManager->getCastleInfo( castleZoneID );	if ( pCastleInfo == NULL )		return false;	// 辆练 傈里 吝俊绰 己狼 家蜡 辆练苞 鞍篮 辆练捞搁 defender 捞促.	if ( pPC->getRace() == pCastleInfo->getRace() )		return true;	return false;	__END_CATCH}// 捞 辆练捞 己辑 炼阿阑 甸 荐 乐绰啊?bool ShrineInfoManager::canPickupBloodBible( Race_t race, BloodBible* pBloodBible ) const	throw (Error){	__BEGIN_TRY	// 乔狼 己辑绰 辆练埃 傈里俊父 荤侩等促.	return true;/*	// 老窜 捞 己辑 炼阿捞 绢蠢 傈里俊 家加登绢 乐绰瘤 舅酒柯促.	ShrineSet* pShrineSet = getShrineSet( pBloodBible->getItemType() );	if ( pShrineSet == NULL )	{		return false;	}	ZoneID_t castleZoneID = pShrineSet->m_GuardShrine.getZoneID();	War* pWar = g_pWarSystem->getActiveWar( castleZoneID );	if ( pWar == NULL )	{		// 酒轿 秽荤府促~		filelog( "WarError.log", "傈里档 救窍绰单 己辑炼阿阑 林匡妨绊 茄促. ItemType: %u", (int)pBloodBible->getItemType() );		return false;	}	if ( pWar->getWarType() == WAR_RACE )	{		// 辆练 傈里捞搁 瘤唱俺唱 促 赁绰促.		return true;	}	else if ( pWar->getWarType() == WAR_GUILD )	{		CastleInfo* pCastleInfo = g_pCastleInfoManager->getCastleInfo( castleZoneID );		if ( pCastleInfo == NULL )		{			// 酒轿 秽荤府促~			filelog( "WarError.log", "己捞 酒聪促. ItemType: %u, ZoneID : %u", (int)pBloodBible->getItemType(), (int)castleZoneID );			return false;		}		return ( race == pCastleInfo->getRace() );	}	// 酒轿 秽荤府促~	filelog( "WarError.log", "捞惑茄 傈里捞促. WarType : %u", (int)pWar->getWarType() );	return false;	*/	__END_CATCH}bool ShrineInfoManager::getMatchGuardShrinePosition( Item* pItem, ZoneItemPosition& zip ) const	throw(Error){	__BEGIN_TRY	if ( pItem->getItemClass() != Item::ITEM_CLASS_BLOOD_BIBLE )		return false;		ItemType_t itemType = pItem->getItemType();	ShrineID_t shrineID = itemType;					// ShrineID = ItemType(of BloodBible)	ShrineSet* pShrineSet = getShrineSet( shrineID );	if ( pShrineSet == NULL )	{		// 捞 乔狼 己辑俊 秦寸窍绰 Shrine Set捞 绝促.		return false;	}	ShrineInfo& GuardShrine = pShrineSet->getReturnGuardShrine();	zip.setZoneID( GuardShrine.getZoneID() );	zip.setZoneX( GuardShrine.getX() );	zip.setZoneY( GuardShrine.getY() );	return true;	__END_CATCH}// putBloodBible ( 穿焙啊 己瘤己窜俊 己辑甫 初疽阑锭 ) 捞 阂妨瘤搁 bLock = false// returnAllBloodBible ( 矫埃捞 促 登菌阑 锭 ) 捞 阂妨瘤搁 bLock = true// true老 版快 促弗 胶饭靛 (WarSystem捞 倒酒啊绰 胶饭靛)俊辑 阂妨瘤骨肺 郴何俊辑 遏阑 吧绢拎具 窍绊// false老 版快 己瘤己窜捞 乐绰 粮苞 鞍篮 粮弊缝胶饭靛俊辑 倒酒啊骨肺 郴何俊辑 遏阑 吧绢林瘤 臼酒具 茄促.// 2003. 2. 5. by Sequoiabool ShrineInfoManager::returnBloodBible( ShrineID_t shrineID, bool bLock ) const	throw (Error){	__BEGIN_TRY	// shrineID客 包访等 BloodBible阑 DB沥焊甫 捞侩秦辑 茫绰促.	ShrineSet* pShrineSet = getShrineSet( shrineID );		if (pShrineSet==NULL) return false;	Item::ItemClass ItemClass 	= Item::ITEM_CLASS_BLOOD_BIBLE;	ItemID_t 		ItemID 		= pShrineSet->getBloodBibleItemID();	if (ItemID==0) return false;	GlobalItemPosition* pItemPosition = GlobalItemPositionLoader::getInstance()->load( ItemClass, ItemID );	if (pItemPosition==NULL) return false;	Item* pItem = pItemPosition->popItem( bLock );	if (pItem!=NULL && pItem->getItemClass()==Item::ITEM_CLASS_BLOOD_BIBLE)	{		Zone* pZone = pItemPosition->getZone();		Assert(pZone!=NULL);		BloodBible* pBloodBible = dynamic_cast<BloodBible*>(pItem);		Assert(pBloodBible!=NULL);		return returnBloodBible(pZone, pBloodBible);	}	return false;	__END_CATCH}// WarSystem俊辑父 何弗促./*bool ShrineInfoManager::returnCastleBloodBible( ZoneID_t castleZoneID ) const 	throw (Error){	__BEGIN_TRY	cout << "ShrineInfoManager::returnCastleBloodBible() is deprecated" << endl;	Assert(false);	return false;	bool bReturned = false;	HashMapShrineSetConstItor itr = m_ShrineSets.begin();	// castleZoneID狼 shrineID甫 八祸且荐啊 绝绢辑 窍唱窍唱 厚背茄促. -_-;	for (; itr!=m_ShrineSets.end(); itr++)	{		ShrineSet* pShrineSet = itr->second;		ZoneID_t guardZoneID = pShrineSet->m_GuardShrine.getZoneID();		if (castleZoneID==guardZoneID)		{			bReturned = bReturned || returnBloodBible( pShrineSet->m_ShrineID );		}	}		return bReturned;	__END_CATCH}*/// WarSystem俊辑父 何弗促.bool ShrineInfoManager::returnAllBloodBible() const 	throw (Error){	__BEGIN_TRY	bool bReturned = false;	HashMapShrineSetConstItor itr = m_ShrineSets.begin();	// castleZoneID狼 shrineID甫 八祸且荐啊 绝绢辑 窍唱窍唱 厚背茄促. -_-;	for (; itr!=m_ShrineSets.end(); itr++)	{		ShrineSet* pShrineSet = itr->second;		bReturned = returnBloodBible( pShrineSet->getShrineID() ) || bReturned;	}		return bReturned;	__END_CATCH}bool ShrineInfoManager::returnBloodBible(Zone* pZone, BloodBible* pBloodBible) const	throw (Error){	__BEGIN_TRY	Assert(pZone!=NULL);	Assert(pBloodBible!=NULL);	// TargetZone, Shrine阑 茫绰促.	ShrineID_t shrineID = pBloodBible->getItemType();	ShrineSet* pShrineSet = getShrineSet( shrineID );		if (pShrineSet==NULL) return false;	ShrineInfo& GuardShrine = pShrineSet->getReturnGuardShrine();	Zone* pTargetZone = getZoneByZoneID( GuardShrine.getZoneID() );	Assert( pTargetZone!=NULL );	ObjectID_t CorpseObjectID = GuardShrine.getObjectID();	pZone->transportItemToCorpse( pBloodBible, pTargetZone, CorpseObjectID );	/*	StringStream msg;	msg << "乔狼 己辑 炼阿(" << GuardShrine.getName() 		<< ")捞 " << (pShrineSet->getOwnerRace()==RACE_SLAYER? "浇饭捞绢":"轨颇捞绢")		<< "狼 荐龋己窜(" << GuardShrine.getName() 		<< ")栏肺 倒酒艾嚼聪促.";	*/	char msg[300];	const char* race;	if ( pShrineSet->getOwnerRace() == RACE_SLAYER )	{		race = g_pStringPool->c_str( STRID_SLAYER );	}	else if ( pShrineSet->getOwnerRace() == RACE_VAMPIRE )	{		race = g_pStringPool->c_str( STRID_VAMPIRE );	}	else if ( pShrineSet->getOwnerRace() == RACE_OUSTERS )	{		race = g_pStringPool->c_str( STRID_OUSTERS );	}	sprintf( msg, g_pStringPool->c_str( STRID_RETURN_TO_GUARD_SHRINE_BLOOD_BIBLE ),					GuardShrine.getName().c_str(), 					race,//					(pShrineSet->getOwnerRace()==RACE_SLAYER? g_pStringPool->c_str( STRID_SLAYER ) : g_pStringPool->c_str( STRID_VAMPIRE ) ), 					GuardShrine.getName().c_str() );	GCSystemMessage msgPkt;	msgPkt.setMessage( msg );	g_pHolyLandManager->broadcast( &msgPkt );	return true;			__END_CATCH

⌨️ 快捷键说明

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