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 "Math/CalcBattle.h"
|
||||||
#include "Actor.h"
|
#include "Actor.h"
|
||||||
#include "Player.h"
|
#include "Player.h"
|
||||||
|
#include "Zone/TerritoryMgr.h"
|
||||||
|
|
||||||
extern Core::ServerZone g_serverZone;
|
extern Core::ServerZone g_serverZone;
|
||||||
extern Core::Data::ExdDataGenerated g_exdDataGen;
|
extern Core::Data::ExdDataGenerated g_exdDataGen;
|
||||||
|
extern Core::TerritoryMgr g_territoryMgr;
|
||||||
|
|
||||||
using namespace Core::Common;
|
using namespace Core::Common;
|
||||||
using namespace Core::Network::Packets;
|
using namespace Core::Network::Packets;
|
||||||
|
@ -510,6 +512,9 @@ void Core::Entity::Actor::sendToInRangeSet( Network::Packets::GamePacketPtr pPac
|
||||||
pSession->getZoneConnection()->queueOutPacket( pPacket );
|
pSession->getZoneConnection()->queueOutPacket( pPacket );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( g_territoryMgr.isPrivateTerritory( getCurrentZone()->getTerritoryId() ) )
|
||||||
|
return;
|
||||||
|
|
||||||
if( m_inRangePlayers.empty() )
|
if( m_inRangePlayers.empty() )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
@ -825,6 +825,9 @@ void Core::Entity::Player::setLookAt( uint8_t index, uint8_t value )
|
||||||
// spawn this player for pTarget
|
// spawn this player for pTarget
|
||||||
void Core::Entity::Player::spawn( Entity::PlayerPtr 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 " +
|
g_log.debug( "[" + std::to_string( pTarget->getId() ) + "] Spawning " +
|
||||||
getName() + " for " +
|
getName() + " for " +
|
||||||
pTarget->getName() );
|
pTarget->getName() );
|
||||||
|
|
|
@ -32,8 +32,6 @@ namespace Server {
|
||||||
void initialize( Entity::Player& player, Entity::Player& target )
|
void initialize( Entity::Player& player, Entity::Player& target )
|
||||||
{
|
{
|
||||||
// todo: figure out unkown offsets
|
// todo: figure out unkown offsets
|
||||||
// TODO: temporary gm rank
|
|
||||||
//m_data.gmRank = 0xff;
|
|
||||||
|
|
||||||
m_data.classJob = static_cast< uint8_t >( player.getClass() );
|
m_data.classJob = static_cast< uint8_t >( player.getClass() );
|
||||||
//m_data.status = static_cast< uint8_t >( pPlayer->getStatus() );
|
//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( guid ) +
|
||||||
"\t" + std::to_string( territoryInfo->territoryIntendedUse ) +
|
"\t" + std::to_string( territoryInfo->territoryIntendedUse ) +
|
||||||
"\t" + territoryInfo->name +
|
"\t" + territoryInfo->name +
|
||||||
"\t" + pPlaceName->name );
|
"\t" + pPlaceName->name +
|
||||||
|
"\t" + ( isPrivateTerritory( territoryId ) ? "PRIVATE" : "PUBLIC" ) );
|
||||||
|
|
||||||
ZonePtr pZone( new Zone( territoryId, guid, territoryInfo->name, pPlaceName->name ) );
|
ZonePtr pZone( new Zone( territoryId, guid, territoryInfo->name, pPlaceName->name ) );
|
||||||
pZone->init();
|
pZone->init();
|
||||||
|
|
|
@ -35,6 +35,7 @@ extern Core::Logger g_log;
|
||||||
extern Core::ServerZone g_serverZone;
|
extern Core::ServerZone g_serverZone;
|
||||||
extern Core::Data::ExdDataGenerated g_exdDataGen;
|
extern Core::Data::ExdDataGenerated g_exdDataGen;
|
||||||
extern Core::Scripting::ScriptManager g_scriptMgr;
|
extern Core::Scripting::ScriptManager g_scriptMgr;
|
||||||
|
extern Core::TerritoryMgr g_territoryMgr;
|
||||||
|
|
||||||
namespace Core {
|
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 )
|
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 )
|
for( auto it = m_playerMap.begin(); it != m_playerMap.end(); ++it )
|
||||||
{
|
{
|
||||||
float distance = Math::Util::distance( sourcePlayer.getPos().x,
|
float distance = Math::Util::distance( sourcePlayer.getPos().x,
|
||||||
|
|
Loading…
Add table
Reference in a new issue