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

📄 shrineinfomanager.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 3 页
字号:
}bool ShrineInfoManager::putBloodBible(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() );	// 己辑啊 甸绢埃 己窜栏肺何磐 乔狼 己辑啊 朝酒辑 倒酒皑阑 唱鸥郴绰 捞棋飘甫 嘿咯霖促.//	sendBloodBibleEffect( 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 );	ShrineSet* pShrineSet = getShrineSet( shrineID );	if (pShrineSet==NULL) return false;	//ZoneID_t castleZoneID = pShrineSet->getReturnGuardShrine().getZoneID();    // 舅嘎篮 己窜俊 持栏搁 林牢捞 官诧 第 荐龋己窜栏肺 倒酒啊绊    if (isMatchHolyShrine( pItem, pCorpse )// && g_pWarSystem->isModifyCastleOwner( castleZoneID, pPC ))		// 己狼 辆练苞 持绰 荤恩狼 辆练捞 鞍篮 版快扼搁 GuardShrine俊 持绢档 等促.		|| isDefenderOfGuardShrine( pPC, pCorpse ) && isMatchGuardShrine( pItem, pCorpse, pPC ) )    {		pShrineSet->setOwnerRace( pPC->getRace() );//        g_pWarSystem->endWar(pPC, castleZoneID);		// 傈里 场唱绰 War::executeEnd俊辑 舅酒辑 登倒妨霖促.//        returnBloodBible( shrineID, false );		//return true;    }    // 促弗 己窜俊 持芭唱 傈里捞 场朝 惑炔捞 酒聪搁 荐龋己窜栏肺 弊成 倒酒埃促   	returnBloodBible( shrineID, false );	return false;	__END_CATCH}/*bool ShrineInfoManager::removeShrineShield( Zone *pZone )	throw(Error){	__BEGIN_TRY	cout << "ShrineInfoManager::removeShrineShield() is deprecated" << endl;	Assert(false);	return false;	Assert(pZone != NULL);	HashMapShrineSetConstItor itr = m_ShrineSets.begin();	ZoneID_t castleZoneID = pZone->getZoneID();	// castleZoneID狼 shrineID甫 八祸且荐啊 绝绢辑 窍唱窍唱 厚背茄促. -_-;	for (; itr!=m_ShrineSets.end(); itr++)	{		ShrineSet* pShrineSet = itr->second;		ZoneID_t guardZoneID = pShrineSet->m_GuardShrine.getZoneID();		if (castleZoneID==guardZoneID)		{			Item* pItem = pZone->getItem( pShrineSet->m_GuardShrine.getObjectID() );			if (pItem != NULL 				&& pItem->getItemClass() == Item::ITEM_CLASS_CORPSE				&& pItem->isFlag(Effect::EFFECT_CLASS_HAS_BLOOD_BIBLE)				&& 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}*/bool ShrineInfoManager::removeAllShrineShield()	throw(Error){	__BEGIN_TRY	HashMapShrineSetConstItor itr = m_ShrineSets.begin();	// castleZoneID狼 shrineID甫 八祸且荐啊 绝绢辑 窍唱窍唱 厚背茄促. -_-;	for (; itr!=m_ShrineSets.end(); itr++)	{		ShrineSet* pShrineSet = itr->second;		removeShrineShield( &(pShrineSet->getSlayerGuardShrine()) );		removeShrineShield( &(pShrineSet->getVampireGuardShrine()) );		removeShrineShield( &(pShrineSet->getOustersGuardShrine()) );	}	return true;		__END_CATCH}bool ShrineInfoManager::removeShrineShield( ShrineInfo* pShrineInfo )	throw(Error){	__BEGIN_TRY	ZoneID_t guardZoneID = pShrineInfo->getZoneID();	Zone* pZone = getZoneByZoneID( guardZoneID );	Assert(pZone!=NULL);	Item* pItem = pZone->getItem( pShrineInfo->getObjectID() );	if (pItem != NULL 		&& pItem->getItemClass() == Item::ITEM_CLASS_CORPSE//		&& pItem->isFlag(Effect::EFFECT_CLASS_HAS_BLOOD_BIBLE)		&& 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);		// 己窜俊 乐绰 乔狼 己辑 困摹甫 舅妨霖促.		if (pItem->isFlag(Effect::EFFECT_CLASS_HAS_BLOOD_BIBLE))		{			Effect* pEffect = EM.findEffect(Effect::EFFECT_CLASS_HAS_BLOOD_BIBLE);			Assert(pEffect!=NULL);			EffectHasRelic* pHasRelicEffect = dynamic_cast<EffectHasRelic*>(pEffect);			Assert(pHasRelicEffect!=NULL);			pHasRelicEffect->affect();		}		return true;	}	return false;	__END_CATCH}/*bool ShrineInfoManager::addShrineShield(Zone *pZone)	throw(Error){	__BEGIN_TRY	cout << "ShrineInfoManager::addShrineShield_LOCKED( Zone *pZone ) is deprecated" << endl;	Assert( false );	return false;	Assert(pZone!=NULL);	bool bAdded = false;    __ENTER_CRITICAL_SECTION( (*pZone) )	bAdded = addShrineShield_LOCKED( pZone );    __LEAVE_CRITICAL_SECTION( (*pZone) )	return bAdded;	__END_CATCH}*//*bool ShrineInfoManager::addShrineShield_LOCKED( Zone *pZone )	throw(Error){	__BEGIN_TRY	cout << "ShrineInfoManager::addShrineShield_LOCKED( Zone *pZone ) is deprecated" << endl;	Assert( false );	return false;	Assert(pZone != NULL);	HashMapShrineSetConstItor itr = m_ShrineSets.begin();	ZoneID_t castleZoneID = pZone->getZoneID();	// castleZoneID狼 shrineID甫 八祸且荐啊 绝绢辑 窍唱窍唱 厚背茄促. -_-;	for (; itr!=m_ShrineSets.end(); itr++)	{		ShrineSet* pShrineSet = itr->second;		ZoneID_t guardZoneID = pShrineSet->m_GuardShrine.getZoneID();		if (castleZoneID==guardZoneID)		{			addShrineShield( pShrineSet );		}	}	return true;	__END_CATCH}*/void ShrineInfoManager::addAllShrineShield()	throw(Error){	__BEGIN_TRY	HashMapShrineSetConstItor itr = m_ShrineSets.begin();	for (; itr!=m_ShrineSets.end(); itr++)	{		ShrineSet* pShrineSet = itr->second;		addShrineShield( pShrineSet->getSlayerGuardShrine() );		addShrineShield( pShrineSet->getVampireGuardShrine() );		addShrineShield( pShrineSet->getOustersGuardShrine() );	}	__END_CATCH}bool ShrineInfoManager::addShrineShield( ShrineInfo& shrineInfo )	throw (Error){	__BEGIN_TRY	Zone* pZone = getZoneByZoneID( shrineInfo.getZoneID() );	Assert(pZone!=NULL);	Item* pItem = pZone->getItem( shrineInfo.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;	}	return false;	__END_CATCH}bool ShrineInfoManager::saveBloodBibleOwner() 	throw(Error){	__BEGIN_TRY	Statement* pStmt = NULL;	BEGIN_DB	{		pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		HashMapShrineSetConstItor itr = m_ShrineSets.begin();		for (; itr!=m_ShrineSets.end(); itr++)		{			ShrineSet* pShrineSet = itr->second;			pShrineSet->saveBloodBibleOwner();		}		SAFE_DELETE(pStmt);	}	END_DB( pStmt )	return true;	__END_CATCH}bool ShrineSet::saveBloodBibleOwner()	throw(Error){	__BEGIN_TRY	Statement* pStmt = NULL;	BEGIN_DB	{		pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		pStmt->executeQuery( "UPDATE ShrineInfo SET OwnerRace=%d WHERE ID=%d",								(int)getOwnerRace(),								(int)getShrineID() );		SAFE_DELETE(pStmt);	}	END_DB( pStmt )	return true;	__END_CATCH}void ShrineInfoManager::registerBloodBibleStatus( ItemType_t m_Part, GCBloodBibleStatus* pGCBBS )	throw(Error){	__BEGIN_TRY	ShrineSet* pShrineSet = getShrineSet( m_Part );	Assert( pShrineSet != NULL );	pShrineSet->setBloodBibleStatus( pGCBBS );	__END_CATCH}void ShrineInfoManager::sendBloodBibleStatus( PlayerCreature* pPC )	throw(Error){	__BEGIN_TRY	Assert( pPC != NULL );	HashMapShrineSetConstItor itr = m_ShrineSets.begin();	for (; itr!=m_ShrineSets.end(); itr++)	{		ShrineSet* pShrineSet = itr->second;		pShrineSet->sendBloodBibleStatus( pPC );	}	__END_CATCH}void ShrineInfoManager::broadcastBloodBibleStatus()	throw(Error){	__BEGIN_TRY	HashMapShrineSetConstItor itr = m_ShrineSets.begin();	for (; itr!=m_ShrineSets.end(); itr++)	{		ShrineSet* pShrineSet = itr->second;		pShrineSet->broadcastBloodBibleStatus();	}	__END_CATCH}string ShrineInfoManager::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}ShrineInfoManager* g_pShrineInfoManager = NULL;

⌨️ 快捷键说明

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