mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-29 07:37:45 +00:00
Implement correct handling for private areas
This commit is contained in:
parent
dae8d74fc3
commit
9790594016
5 changed files with 14 additions and 3 deletions
|
@ -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;
|
||||
|
||||
|
|
|
@ -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() );
|
||||
|
|
|
@ -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() );
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Add table
Reference in a new issue