📄 castleinfomanager.cpp
字号:
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 + -