From 4137379853cec4dcf6ab2677470b0b0dae3eb997 Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 25 Feb 2018 21:46:34 +1100 Subject: [PATCH] fix possible null pointer access & eobj state update --- src/servers/sapphire_zone/Actor/Actor.cpp | 7 +++++-- src/servers/sapphire_zone/Actor/EventObject.cpp | 9 +++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/servers/sapphire_zone/Actor/Actor.cpp b/src/servers/sapphire_zone/Actor/Actor.cpp index 7c855c43..560d5b9b 100644 --- a/src/servers/sapphire_zone/Actor/Actor.cpp +++ b/src/servers/sapphire_zone/Actor/Actor.cpp @@ -313,10 +313,13 @@ void Core::Entity::Actor::setCurrentZone( ZonePtr currZone ) m_pCurrentZone = currZone; } -/*! \return InstanceContentPtr to the current instance, null if not an instance or not set */ +/*! \return InstanceContentPtr to the current instance, nullptr if not an instance or not set */ Core::InstanceContentPtr Core::Entity::Actor::getCurrentInstance() const { - return getCurrentZone()->getAsInstanceContent(); + if( m_pCurrentZone ) + return m_pCurrentZone->getAsInstanceContent(); + + return nullptr; } /*! diff --git a/src/servers/sapphire_zone/Actor/EventObject.cpp b/src/servers/sapphire_zone/Actor/EventObject.cpp index 9784e8e1..87fba41a 100644 --- a/src/servers/sapphire_zone/Actor/EventObject.cpp +++ b/src/servers/sapphire_zone/Actor/EventObject.cpp @@ -56,6 +56,15 @@ void Core::Entity::EventObject::setState( uint8_t state ) { m_state = state; + for( const auto& player : m_inRangePlayers ) + { + ZoneChannelPacket< FFXIVIpcActorControl142 > eobjUpdatePacket( getId(), player->getId() ); + eobjUpdatePacket.data().category = Common::ActorControlType::DirectorEObjMod; + eobjUpdatePacket.data().param1 = state; + + player->queuePacket( eobjUpdatePacket ); + } + //m_parentInstance->updateEObj( InstanceObjectPtr( this ) ); }