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

📄 castleshrineinfomanager.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		{			// 悼练 傈里 吝俊绰 傍侩己捞 酒匆 版快 己狼 家蜡 辨靛啊 defender 捞促.			if ( pPC->getGuildID() == pCastleInfo->getGuildID() )				return true;		}	}	return false;	__END_CATCH}// 捞 辆练捞 己狼 惑隆 炼阿阑 甸 荐 乐绰啊?bool CastleShrineInfoManager::canPickupCastleSymbol( Race_t race, CastleSymbol* pCastleSymbol ) const	throw (Error){	__BEGIN_TRY	// 老窜 捞 己狼 惑隆 炼阿捞 绢蠢 傈里俊 家加登绢 乐绰瘤 舅酒柯促.	CastleShrineSet* pShrineSet = getShrineSet( pCastleSymbol->getItemType() );	if ( pShrineSet == NULL )	{		return false;	}	ZoneID_t guardZoneID = pShrineSet->m_GuardShrine.getZoneID();	ZoneID_t castleZoneID;	bool isCastle = g_pCastleInfoManager->getCastleZoneID( guardZoneID, castleZoneID );	Assert(isCastle==true);	War* pWar = g_pWarSystem->getActiveWar( castleZoneID );	if ( pWar == NULL )	{		// 酒轿 秽荤府促~		filelog( "WarError.log", "傈里档 救窍绰单 己狼 惑隆炼阿阑 林匡妨绊 茄促. ItemType: %u", (int)pCastleSymbol->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)pCastleSymbol->getItemType(), (int)castleZoneID );			return false;		}		return ( race == pCastleInfo->getRace() );	}	// 酒轿 秽荤府促~	filelog( "WarError.log", "捞惑茄 傈里捞促. WarType : %u", (int)pWar->getWarType() );	return false;	__END_CATCH}bool CastleShrineInfoManager::getMatchGuardShrinePosition( Item* pItem, ZoneItemPosition& zip ) const	throw(Error){	__BEGIN_TRY	if ( pItem->getItemClass() != Item::ITEM_CLASS_CASTLE_SYMBOL )		return false;		ItemType_t itemType = pItem->getItemType();	ShrineID_t shrineID = itemType;					// ShrineID = ItemType(of CastleSymbol)	CastleShrineSet* pShrineSet = getShrineSet( shrineID );	if ( pShrineSet == NULL )	{		// 捞 己狼 惑隆俊 秦寸窍绰 Shrine Set捞 绝促.		return false;	}	zip.setZoneID( pShrineSet->m_GuardShrine.getZoneID() );	zip.setZoneX( pShrineSet->m_GuardShrine.getX() );	zip.setZoneY( pShrineSet->m_GuardShrine.getY() );	return true;	__END_CATCH}// putCastleSymbol ( 穿焙啊 己瘤己窜俊 己狼 惑隆阑 初疽阑锭 ) 捞 阂妨瘤搁 bLock = false// returnAllCastleSymbol ( 矫埃捞 促 登菌阑 锭 ) 捞 阂妨瘤搁 bLock = true// true老 版快 促弗 胶饭靛 (WarSystem捞 倒酒啊绰 胶饭靛)俊辑 阂妨瘤骨肺 郴何俊辑 遏阑 吧绢拎具 窍绊// false老 版快 己瘤己窜捞 乐绰 粮苞 鞍篮 粮弊缝胶饭靛俊辑 倒酒啊骨肺 郴何俊辑 遏阑 吧绢林瘤 臼酒具 茄促.// 2003. 2. 5. by Sequoiabool CastleShrineInfoManager::returnCastleSymbol( ShrineID_t shrineID, bool bLock ) const	throw (Error){	__BEGIN_TRY	// shrineID客 包访等 CastleSymbol阑 DB沥焊甫 捞侩秦辑 茫绰促.	CastleShrineSet* pShrineSet = getShrineSet( shrineID );		if (pShrineSet==NULL) return false;	Item::ItemClass ItemClass 	= Item::ITEM_CLASS_CASTLE_SYMBOL;	ItemID_t 		ItemID 		= pShrineSet->getCastleSymbolItemID();	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_CASTLE_SYMBOL)	{		Zone* pZone = pItemPosition->getZone();		Assert(pZone!=NULL);		CastleSymbol* pCastleSymbol = dynamic_cast<CastleSymbol*>(pItem);		Assert(pCastleSymbol!=NULL);		return returnCastleSymbol(pZone, pCastleSymbol);	}	return false;	__END_CATCH}// WarSystem俊辑父 何弗促.bool CastleShrineInfoManager::returnAllCastleSymbol( ZoneID_t castleZoneID ) const 	throw (Error){	__BEGIN_TRY	bool bReturned = false;	HashMapShrineSetConstItor itr = m_ShrineSets.begin();	// castleZoneID狼 shrineID甫 八祸且荐啊 绝绢辑 窍唱窍唱 厚背茄促. -_-;	for (; itr!=m_ShrineSets.end(); itr++)	{		CastleShrineSet* pShrineSet = itr->second;		ZoneID_t guardZoneID = pShrineSet->m_GuardShrine.getZoneID();		ZoneID_t guardCastleZoneID;		if (g_pCastleInfoManager->getCastleZoneID(guardZoneID, guardCastleZoneID))		{			if (castleZoneID==guardCastleZoneID)			{				bReturned = returnCastleSymbol( pShrineSet->m_ShrineID ) || bReturned;			}		}	}		return bReturned;	__END_CATCH}bool CastleShrineInfoManager::returnCastleSymbol(Zone* pZone, CastleSymbol* pCastleSymbol) const	throw (Error){	__BEGIN_TRY	Assert(pZone!=NULL);	Assert(pCastleSymbol!=NULL);	// TargetZone, Shrine阑 茫绰促.	ShrineID_t shrineID = pCastleSymbol->getItemType();	CastleShrineSet* pShrineSet = getShrineSet( shrineID );		if (pShrineSet==NULL) return false;	ShrineInfo& GuardShrine = pShrineSet->m_GuardShrine;	Zone* pTargetZone = getZoneByZoneID( GuardShrine.getZoneID() );	Assert( pTargetZone!=NULL );	ObjectID_t CorpseObjectID = GuardShrine.getObjectID();	pZone->transportItemToCorpse( pCastleSymbol, pTargetZone, CorpseObjectID );//	StringStream msg;//	msg << "己狼 惑隆 炼阿(" << GuardShrine.getName() << ")捞 荐龋己窜(" << GuardShrine.getName() << ")栏肺 倒酒艾嚼聪促.";	char msg[200];	sprintf( msg, g_pStringPool->c_str( STRID_RETURN_TO_GUARD_SHRINE_CASTLE_SYMBOL ),					GuardShrine.getName().c_str(), GuardShrine.getName().c_str() );	GCSystemMessage msgPkt;	msgPkt.setMessage( msg );	g_pCastleInfoManager->broadcastShrinePacket( shrineID, &msgPkt );	return true;			__END_CATCH}bool CastleShrineInfoManager::putCastleSymbol(PlayerCreature* pPC, Item* pItem, MonsterCorpse* pCorpse) const	throw (Error){	__BEGIN_TRY	Assert(pPC!=NULL);	Assert(pItem!=NULL);	Assert(pCorpse!=NULL);	ShrineID_t shrineID = pItem->getItemType();	filelog( "WarLog.txt", "%s啊 己狼 惑隆[%u]阑 己瘤 己窜[%s]俊 持菌嚼聪促.",			pPC->getName().c_str(), (uint)shrineID, pCorpse->getName().c_str() );	// 己狼 惑隆捞 甸绢埃 己窜栏肺何磐 己狼 惑隆捞 朝酒辑 倒酒皑阑 唱鸥郴绰 捞棋飘甫 嘿咯霖促.//	sendCastleSymbolEffect( pCorpse, Effect::EFFECT_CLASS_SHRINE_HOLY_WARP );	// PC俊霸辑 己狼 惑隆阑 哗狙酒 己窜 救俊 持绰促.	Assert( pItem->getObjectID() == pPC->getExtraInventorySlotItem()->getObjectID() );	pPC->deleteItemFromExtraInventorySlot();	GCDeleteInventoryItem gcDeleteInventoryItem;	gcDeleteInventoryItem.setObjectID( pItem->getObjectID() );	pPC->getPlayer()->sendPacket( &gcDeleteInventoryItem );	deleteRelicEffect( pPC, pItem );	pCorpse->addTreasure( pItem );	CastleShrineSet* pShrineSet = getShrineSet( shrineID );	if (pShrineSet==NULL) return false;	ZoneID_t guardZoneID = pShrineSet->m_GuardShrine.getZoneID();	ZoneID_t castleZoneID;	bool isCastle = g_pCastleInfoManager->getCastleZoneID( guardZoneID, castleZoneID );	Assert(isCastle==true);    // 舅嘎篮 己窜俊 持栏搁 傈里捞 场唱绊 荐龋己窜栏肺 倒酒啊绊    if (isMatchHolyShrine( pItem, pCorpse ) && g_pWarSystem->isModifyCastleOwner( castleZoneID, pPC ))    {        g_pWarSystem->endWar(pPC, castleZoneID);		// 傈里 场唱绰 War::executeEnd俊辑 舅酒辑 登倒妨霖促.//        returnCastleSymbol( shrineID, false );		return true;    }    // 促弗 己窜俊 持芭唱 傈里捞 场朝 惑炔捞 酒聪搁 荐龋己窜栏肺 弊成 倒酒埃促   	returnCastleSymbol( shrineID, false );	return false;	__END_CATCH}// pZone篮 guardZone捞促.bool CastleShrineInfoManager::removeShrineShield( Zone *pZone )	throw(Error){	__BEGIN_TRY	Assert(pZone != NULL);	HashMapShrineSetConstItor itr = m_ShrineSets.begin();	ZoneID_t guardZoneID = pZone->getZoneID();	// castleZoneID狼 shrineID甫 八祸且荐啊 绝绢辑 窍唱窍唱 厚背茄促. -_-;	for (; itr!=m_ShrineSets.end(); itr++)	{		CastleShrineSet* pShrineSet = itr->second;		ZoneID_t currentGuardZoneID = pShrineSet->m_GuardShrine.getZoneID();		if (guardZoneID==currentGuardZoneID)		{			Item* pItem = pZone->getItem( pShrineSet->m_GuardShrine.getObjectID() );			if (pItem != NULL 				&& pItem->getItemClass() == Item::ITEM_CLASS_CORPSE				&& pItem->isFlag(Effect::EFFECT_CLASS_HAS_CASTLE_SYMBOL)				&& pItem->isFlag(Effect::EFFECT_CLASS_SHRINE_SHIELD) ) 			{				pItem->removeFlag(Effect::EFFECT_CLASS_SHRINE_SHIELD);				Corpse* pCorpse = dynamic_cast<Corpse*>(pItem);				EffectManager& EM = pItem->getEffectManager();				EM.deleteEffect(Effect::EFFECT_CLASS_SHRINE_SHIELD);				GCRemoveEffect gcRemoveEffect;				gcRemoveEffect.setObjectID(pItem->getObjectID());				gcRemoveEffect.addEffectList(Effect::EFFECT_CLASS_SHRINE_SHIELD);				pZone->broadcastPacket(pCorpse->getX(), pCorpse->getY(), &gcRemoveEffect);			}		}	}	return true;		__END_CATCH}// pZone篮 guardZone捞促.bool CastleShrineInfoManager::addShrineShield(Zone *pZone)	throw(Error){	__BEGIN_TRY	Assert(pZone!=NULL);	bool bAdded = false;    __ENTER_CRITICAL_SECTION( (*pZone) )	bAdded = addShrineShield_LOCKED( pZone );    __LEAVE_CRITICAL_SECTION( (*pZone) )	return bAdded;	__END_CATCH}// pZone篮 guardZone捞促.bool CastleShrineInfoManager::addShrineShield_LOCKED( Zone *pZone )	throw(Error){	__BEGIN_TRY	Assert(pZone != NULL);	HashMapShrineSetConstItor itr = m_ShrineSets.begin();	ZoneID_t guardZoneID = pZone->getZoneID();	// castleZoneID狼 shrineID甫 八祸且荐啊 绝绢辑 窍唱窍唱 厚背茄促. -_-;	for (; itr!=m_ShrineSets.end(); itr++)	{		CastleShrineSet* pShrineSet = itr->second;		ZoneID_t currentGuardZoneID = pShrineSet->m_GuardShrine.getZoneID();		if (guardZoneID==currentGuardZoneID)		{			Item* pItem = pZone->getItem( pShrineSet->m_GuardShrine.getObjectID() );			if (pItem != NULL 				&& pItem->getItemClass() == Item::ITEM_CLASS_CORPSE				&& !pItem->isFlag(Effect::EFFECT_CLASS_SHRINE_SHIELD) ) 			{				pItem->setFlag(Effect::EFFECT_CLASS_SHRINE_SHIELD);				Corpse* pCorpse = dynamic_cast<Corpse*>(pItem);				Assert(pCorpse!=NULL);				EffectManager& EM = pItem->getEffectManager();				EffectShrineShield* pEffect = new EffectShrineShield(pCorpse);				pEffect->setShrineID( pCorpse->getItemType() );				pEffect->setTick( 60 * 10 );				EM.addEffect(pEffect);				GCAddEffect gcAddEffect;				gcAddEffect.setObjectID( pItem->getObjectID() );				gcAddEffect.setEffectID( Effect::EFFECT_CLASS_SHRINE_SHIELD );				gcAddEffect.setDuration( 65000 );				pZone->broadcastPacket(pCorpse->getX(), pCorpse->getY(), &gcAddEffect);			}		}	}	return true;	__END_CATCH}string CastleShrineInfoManager::toString() const 	throw(){	__BEGIN_TRY	StringStream msg;	msg << "ShrineInfoManager("		<< "Size:" << size()		<< ",(\n";	HashMapShrineSetConstItor itr = m_ShrineSets.begin();	for( ; itr != m_ShrineSets.end() ; itr++ )	{		msg << "\t" << itr->second->toString() << "\n";	}	msg << "))";	return msg.toString();	__END_CATCH}CastleShrineInfoManager* g_pCastleShrineInfoManager = NULL;

⌨️ 快捷键说明

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