diff --git a/src/servers/sapphire_zone/Actor/Actor.cpp b/src/servers/sapphire_zone/Actor/Actor.cpp index 657f7947..227657cf 100644 --- a/src/servers/sapphire_zone/Actor/Actor.cpp +++ b/src/servers/sapphire_zone/Actor/Actor.cpp @@ -22,9 +22,11 @@ #include "Math/CalcBattle.h" #include "Actor.h" #include "Player.h" +#include "Zone/TerritoryMgr.h" extern Core::ServerZone g_serverZone; extern Core::Data::ExdDataGenerated g_exdDataGen; +extern Core::TerritoryMgr g_territoryMgr; using namespace Core::Common; using namespace Core::Network::Packets; @@ -510,6 +512,9 @@ void Core::Entity::Actor::sendToInRangeSet( Network::Packets::GamePacketPtr pPac pSession->getZoneConnection()->queueOutPacket( pPacket ); } + if( g_territoryMgr.isPrivateTerritory( getCurrentZone()->getTerritoryId() ) ) + return; + if( m_inRangePlayers.empty() ) return; diff --git a/src/servers/sapphire_zone/Actor/Player.cpp b/src/servers/sapphire_zone/Actor/Player.cpp index 058623f0..ca71b217 100644 --- a/src/servers/sapphire_zone/Actor/Player.cpp +++ b/src/servers/sapphire_zone/Actor/Player.cpp @@ -825,6 +825,9 @@ void Core::Entity::Player::setLookAt( uint8_t index, uint8_t value ) // spawn this player for pTarget void Core::Entity::Player::spawn( Entity::PlayerPtr pTarget ) { + if( g_territoryMgr.isPrivateTerritory( getCurrentZone()->getTerritoryId() ) && pTarget->getId() != getId() ) + return; + g_log.debug( "[" + std::to_string( pTarget->getId() ) + "] Spawning " + getName() + " for " + pTarget->getName() ); diff --git a/src/servers/sapphire_zone/Network/PacketWrappers/PlayerSpawnPacket.h b/src/servers/sapphire_zone/Network/PacketWrappers/PlayerSpawnPacket.h index 61ad14fd..9c367aa9 100644 --- a/src/servers/sapphire_zone/Network/PacketWrappers/PlayerSpawnPacket.h +++ b/src/servers/sapphire_zone/Network/PacketWrappers/PlayerSpawnPacket.h @@ -32,8 +32,6 @@ namespace Server { void initialize( Entity::Player& player, Entity::Player& target ) { // todo: figure out unkown offsets - // TODO: temporary gm rank - //m_data.gmRank = 0xff; m_data.classJob = static_cast< uint8_t >( player.getClass() ); //m_data.status = static_cast< uint8_t >( pPlayer->getStatus() ); diff --git a/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp b/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp index 5c27c224..9c85b02f 100644 --- a/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp +++ b/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp @@ -116,7 +116,8 @@ bool Core::TerritoryMgr::createDefaultTerritories() "\t" + std::to_string( guid ) + "\t" + std::to_string( territoryInfo->territoryIntendedUse ) + "\t" + territoryInfo->name + - "\t" + pPlaceName->name ); + "\t" + pPlaceName->name + + "\t" + ( isPrivateTerritory( territoryId ) ? "PRIVATE" : "PUBLIC" ) ); ZonePtr pZone( new Zone( territoryId, guid, territoryInfo->name, pPlaceName->name ) ); pZone->init(); diff --git a/src/servers/sapphire_zone/Zone/Zone.cpp b/src/servers/sapphire_zone/Zone/Zone.cpp index bb79c84c..45868d8e 100644 --- a/src/servers/sapphire_zone/Zone/Zone.cpp +++ b/src/servers/sapphire_zone/Zone/Zone.cpp @@ -35,6 +35,7 @@ extern Core::Logger g_log; extern Core::ServerZone g_serverZone; extern Core::Data::ExdDataGenerated g_exdDataGen; extern Core::Scripting::ScriptManager g_scriptMgr; +extern Core::TerritoryMgr g_territoryMgr; namespace Core { @@ -369,6 +370,9 @@ void Zone::removeActor( Entity::ActorPtr pActor ) void Zone::queueOutPacketForRange( Entity::Player& sourcePlayer, uint32_t range, Network::Packets::GamePacketPtr pPacketEntry ) { + if( g_territoryMgr.isPrivateTerritory( getTerritoryId() ) ) + return; + for( auto it = m_playerMap.begin(); it != m_playerMap.end(); ++it ) { float distance = Math::Util::distance( sourcePlayer.getPos().x,