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

📄 castleinfomanager.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 3 页
字号:
string CastleInfoManager::toString () const	throw (){	__BEGIN_TRY	StringStream msg;	msg << "CastleInfoManager(";	if (m_CastleInfos.empty()) msg << "EMPTY";	else 	{		for (hash_map< ZoneID_t , CastleInfo* >::const_iterator itr = m_CastleInfos.begin() ; itr != m_CastleInfos.end() ; itr ++) 		{			msg << itr->second->toString();		}	}	msg << ")";	return msg.toString();	__END_CATCH}bool CastleInfoManager::modifyCastleOwner(ZoneID_t zoneID, PlayerCreature* pPC )	throw(Error){	__BEGIN_TRY	Assert( pPC != NULL );	Race_t 		race 	= pPC->getRace();	GuildID_t 	guildID = pPC->getGuildID();	return modifyCastleOwner( zoneID, race, guildID );	__END_CATCH}bool CastleInfoManager::modifyCastleOwner(ZoneID_t zoneID, Race_t race, GuildID_t guildID )	throw(Error){	__BEGIN_TRY	CastleInfo* pCastleInfo = getCastleInfo( zoneID );	if( pCastleInfo == NULL ) return false;	Race_t oldRace = pCastleInfo->getRace();	pCastleInfo->setGuildID( guildID );	pCastleInfo->setRace( race );	pCastleInfo->setTaxBalance( 0 );	Zone* pZone = getZoneByZoneID(zoneID);	if( pCastleInfo->isCommon() )	{		pCastleInfo->setEntranceFee( g_pVariableManager->getVariable( COMMON_CASTLE_ENTRANCE_FEE ) );		setItemTaxRatio( pZone, g_pVariableManager->getVariable( COMMON_CASTLE_ITEM_TAX_RATIO ) );	}	else	{		pCastleInfo->setEntranceFee( g_pVariableManager->getVariable( GUILD_CASTLE_ENTRANCE_FEE ) );		setItemTaxRatio( pZone, g_pVariableManager->getVariable( GUILD_CASTLE_ITEM_TAX_RATIO ) );	}	StringStream msg;	msg << "GuildID = " << (int)pCastleInfo->getGuildID()		<< ",Race = " << (int)pCastleInfo->getRace()		<< ",TaxBalance = " << (int)pCastleInfo->getTaxBalance()		<< ",ItemTaxRatio = " << (int)pCastleInfo->getItemTaxRatio()		<< ",EntranceFee = " << (int)pCastleInfo->getEntranceFee();	if( tinysave( zoneID, msg.toString() ) )	{//		StringStream msg;		char msg[100];		if( guildID == SlayerCommon )		{//			msg << pCastleInfo->getName() << "己捞 浇饭捞绢 傍侩 己捞 登菌嚼聪促.";			sprintf( msg, g_pStringPool->c_str( STRID_BECOME_SLAYER_COMMON_CASTLE ),							pCastleInfo->getName().c_str() );		}		else if ( guildID == VampireCommon )		{//			msg << pCastleInfo->getName() << "己捞 轨颇捞绢 傍侩 己捞 登菌嚼聪促.";			sprintf( msg, g_pStringPool->c_str( STRID_BECOME_VAMPIRE_COMMON_CASTLE ),							pCastleInfo->getName().c_str() );		}		else if ( guildID == OustersCommon )		{			sprintf( msg, "%s 己捞 酒快胶磐令 傍侩 己捞 登菌嚼聪促.", pCastleInfo->getName().c_str() );		}		else		{			Guild* pGuild = g_pGuildManager->getGuild( guildID );			if( pGuild == NULL )			{				filelog( "CastleError.log", "舅 荐 绝绰 辨靛ID : %d", (int)guildID );			}			else			{				if ( pGuild->getRace() == Guild::GUILD_RACE_SLAYER )				{//					msg << pGuild->getName() << " 评捞 ";					sprintf( msg, g_pStringPool->c_str( STRID_BECOME_SLAYER_GUILD_CASTLE ),								pGuild->getName().c_str(), pCastleInfo->getName().c_str() );				}				else				{//					msg << pGuild->getName() << " 努罚捞 ";					sprintf( msg, g_pStringPool->c_str( STRID_BECOME_VAMPIRE_GUILD_CASTLE ),								pGuild->getName().c_str(), pCastleInfo->getName().c_str() );				}			}//			msg << pCastleInfo->getName() << " 己阑 痢飞沁嚼聪促.";		}		// 己阑 家蜡茄 辆练捞 官诧 版快狼 贸府		if ( oldRace != race )		{			// 己 包访 焊呈胶 犁汲沥			//g_pHolyLandRaceBonus->refresh();			// [NPC 犁汲沥] --> War俊辑 茄促.			/*			Zone* pZone = getZoneByZoneID( zoneID );			// 己狼 NPC甫 葛滴 瘤款促.			pZone->deleteNPCs( oldRace );			// 己狼 NPC甫 促矫 Load茄促.			pZone->loadNPCs( race );			*/			// 己狼 傈里 胶纳领阑 葛滴 秒家茄促.			WarScheduler* pWarScheduler = pZone->getWarScheduler();			Assert(pWarScheduler!=NULL);			// 辨靛傈 胶纳领阑 葛滴 秒家茄促.			pWarScheduler->cancelGuildSchedules();		}		filelog( "WarLog.txt", "[CastleZoneID:%u]%s", (uint)pCastleInfo->getZoneID(), msg );		// Holy Land Race Bonus 甫 Player 俊霸 官肺 利侩登档废 茄促.		EventRefreshHolyLandPlayer* pEvent = new EventRefreshHolyLandPlayer( NULL );		pEvent->setDeadline(0);		g_pClientManager->addEvent( pEvent );		GCSystemMessage gcSystemMessage;		gcSystemMessage.setType( SYSTEM_MESSAGE_HOLY_LAND );		gcSystemMessage.setMessage( msg );		g_pZoneGroupManager->broadcast( &gcSystemMessage );	}	return true;	__END_CATCH}bool CastleInfoManager::increaseTaxBalance( ZoneID_t zoneID, Gold_t tax )	throw(Error){	__BEGIN_TRY	CastleInfo* pCastleInfo = getCastleInfo( zoneID );	if ( pCastleInfo == NULL) return false;	Gold_t TaxBalance = pCastleInfo->increaseTaxBalance(tax);	char str[40];	sprintf(str, "TaxBalance=%d", (int)TaxBalance );	return tinysave( zoneID, str );	__END_CATCH}bool CastleInfoManager::decreaseTaxBalance( ZoneID_t zoneID, Gold_t tax ) 	throw(Error){	__BEGIN_TRY	CastleInfo* pCastleInfo = getCastleInfo( zoneID );	if ( pCastleInfo == NULL) return false;	Gold_t TaxBalance = pCastleInfo->decreaseTaxBalance(tax);	char str[40];	sprintf(str, "TaxBalance=%d", (int)TaxBalance );	return tinysave( zoneID, str );	__END_CATCH}bool CastleInfoManager::setItemTaxRatio( Zone* pZone, int itemTaxRatio ) 	throw(Error){	__BEGIN_TRY	Assert(pZone != NULL);	CastleInfo* pCastleInfo = getCastleInfo( pZone->getZoneID() );	if ( pCastleInfo == NULL) return false;	pCastleInfo->setItemTaxRatio( itemTaxRatio );	char str[40];	sprintf(str,"ItemTaxRatio=%d", (int)itemTaxRatio);	tinysave( pZone->getZoneID(), str );	GCNoticeEvent gcNoticeEvent;	gcNoticeEvent.setCode(NOTICE_EVENT_SHOP_TAX_CHANGE);	gcNoticeEvent.setParameter((uint)itemTaxRatio);	pZone->broadcastPacket(&gcNoticeEvent);	return true;	__END_CATCH}int CastleInfoManager::getItemTaxRatio( PlayerCreature* pPC ) const	throw(Error){	__BEGIN_TRY	Assert(pPC != NULL);	Zone* pZone = pPC->getZone();	const CastleInfo* pCastleInfo = getCastleInfo( pZone->getZoneID() );	if (pCastleInfo != NULL) 	{		GuildID_t 	OwnerGuildID = pCastleInfo->getGuildID();		GuildID_t 	PlayerGuildID = pPC->getGuildID();		int			ItemTaxRatio = pCastleInfo->getItemTaxRatio();				if ( PlayerGuildID == SlayerCommon 			 || PlayerGuildID == VampireCommon			 || PlayerGuildID == OustersCommon			 || PlayerGuildID != OwnerGuildID )		{			return ItemTaxRatio;		}	}	return 100;	__END_CATCH}Gold_t CastleInfoManager::getEntranceFee( ZoneID_t zoneID, PlayerCreature* pPC ) const	throw(Error){	__BEGIN_TRY    Assert(pPC != NULL);    const CastleInfo* pCastleInfo = getCastleInfo( zoneID );	// 己捞 傈里 吝捞扼搁 涝厘丰啊 0 捞促.    if ( pCastleInfo != NULL && !g_pWarSystem->hasCastleActiveWar( zoneID ) && !g_pWarSystem->hasActiveRaceWar() )    {        GuildID_t   OwnerGuildID = pCastleInfo->getGuildID();        GuildID_t   PlayerGuildID = pPC->getGuildID();        Gold_t      EntranceFee = pCastleInfo->getEntranceFee();        if ( PlayerGuildID == SlayerCommon             || PlayerGuildID == VampireCommon             || PlayerGuildID == OustersCommon             || PlayerGuildID != OwnerGuildID )        {            return EntranceFee;        }    }    return 0;	__END_CATCH}bool CastleInfoManager::isCastleMember( PlayerCreature* pPC ) const	throw(Error){	__BEGIN_TRY    Assert(pPC != NULL);    Zone* pZone = pPC->getZone();    const CastleInfo* pCastleInfo = getCastleInfo( pZone->getZoneID() );    if (pCastleInfo != NULL)    {        GuildID_t   OwnerGuildID = pCastleInfo->getGuildID();        GuildID_t   PlayerGuildID = pPC->getGuildID();        if ( PlayerGuildID == SlayerCommon             || PlayerGuildID == VampireCommon			 || PlayerGuildID == OustersCommon             || PlayerGuildID != OwnerGuildID )        {            return false;        }    }    return true;	__END_CATCH}bool CastleInfoManager::isCastleMember( ZoneID_t zoneID, PlayerCreature* pPC ) const	throw(Error){	__BEGIN_TRY    Assert(pPC != NULL);    const CastleInfo* pCastleInfo = getCastleInfo( zoneID );    if (pCastleInfo != NULL)    {        GuildID_t   OwnerGuildID = pCastleInfo->getGuildID();        GuildID_t   PlayerGuildID = pPC->getGuildID();        if ( PlayerGuildID == SlayerCommon             || PlayerGuildID == VampireCommon             || PlayerGuildID == OustersCommon             || PlayerGuildID != OwnerGuildID )        {            return false;        }    }	else		return false;    return true;	__END_CATCH}bool CastleInfoManager::hasOtherBloodBible( ZoneID_t zoneID, PlayerCreature* pPC ) const	throw(Error){	__BEGIN_TRY	if ( pPC->isFlag( Effect::EFFECT_CLASS_HAS_BLOOD_BIBLE ) )	{		// 捞 己俊 秦寸窍瘤 臼绰 乔狼 己辑甫 甸绊 乐栏搁 给 甸绢啊霸 秦具 茄促.		EffectHasBloodBible* pEffect = dynamic_cast<EffectHasBloodBible*>( pPC->findEffect( Effect::EFFECT_CLASS_HAS_BLOOD_BIBLE ) );		Assert( pEffect != NULL );				int part = pEffect->getPart();		ShrineSet* pShrineSet = g_pShrineInfoManager->getShrineSet( part );		if ( pShrineSet->getVampireGuardShrine().getZoneID() == zoneID		||	 pShrineSet->getSlayerGuardShrine().getZoneID() == zoneID		||	 pShrineSet->getOustersGuardShrine().getZoneID() == zoneID )		{			return false;		}		return true;	}	else	{		return false;	}	__END_CATCH}	bool CastleInfoManager::isPossibleEnter( ZoneID_t zoneID, PlayerCreature* pPC ) const	throw(Error){    __BEGIN_TRY    Assert(pPC != NULL);    const CastleInfo* pCastleInfo = getCastleInfo( zoneID );    if (pCastleInfo != NULL)    {        Race_t   OwnerRace = pCastleInfo->getRace();        Race_t   PlayerRace = pPC->getRace();//(pPC->isSlayer()? RACE_SLAYER : RACE_VAMPIRE);		if ( g_pWarSystem->hasActiveRaceWar() )		{			if ( hasOtherBloodBible( zoneID, pPC ) )			{				return false;			}			else			{				return true;			}		}		else if ( OwnerRace == PlayerRace ) 		{			return true;		}		return false;    }    return true;    __END_CATCH}bool CastleInfoManager::canPortalActivate( ZoneID_t zoneID, PlayerCreature* pPC ) const 	throw(Error){	__BEGIN_TRY	const CastleInfo* pCastleInfo = getCastleInfo( zoneID );	if ( pCastleInfo == NULL )	{		filelog( "CastleError.log", "CastleInfoManager::canPortalActivate() CastleInfo(%d)啊 绝嚼聪促.", (int)zoneID );		Assert( false );	}	if ( g_pWarSystem->hasActiveRaceWar() )	{		if ( hasOtherBloodBible( zoneID, pPC ) )		{			return false;		}		else		{			return true;		}	}	if ( g_pWarSystem->hasCastleActiveWar( zoneID ) )	{		War* pWar = g_pWarSystem->getActiveWar( zoneID );				if ( pWar != NULL )		{			return pPC->getRace() == pCastleInfo->getRace();		}	}	return false;	__END_CATCH}CastleInfo* CastleInfoManager::getGuildCastleInfo( GuildID_t guildID ) const	throw(Error){	__BEGIN_TRY

⌨️ 快捷键说明

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