1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-26 14:37:44 +00:00

Merge pull request #772 from Skyliegirl33/feature-impl

[3.x] Add onLeaveTerritory for instances
This commit is contained in:
Mordred 2022-02-12 20:49:47 +01:00 committed by GitHub
commit cddac062f1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 28 additions and 0 deletions

View file

@ -25,6 +25,11 @@ EOBJ_INIT
} }
void onLeaveTerritory( InstanceContent& instance, Entity::Player& player ) override
{
}
}; };
EXPOSE_SCRIPT( INSTANCE_NAME ); EXPOSE_SCRIPT( INSTANCE_NAME );

View file

@ -231,6 +231,10 @@ namespace Sapphire::ScriptAPI
{ {
} }
void InstanceContentScript::onLeaveTerritory( InstanceContent& instance, Entity::Player& player )
{
}
/////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////
QuestBattleScript::QuestBattleScript( uint32_t questBattleId ) : QuestBattleScript::QuestBattleScript( uint32_t questBattleId ) :

View file

@ -336,6 +336,8 @@ namespace Sapphire::ScriptAPI
virtual void onEnterTerritory( Sapphire::InstanceContent& instance, Sapphire::Entity::Player& player, uint32_t eventId, virtual void onEnterTerritory( Sapphire::InstanceContent& instance, Sapphire::Entity::Player& player, uint32_t eventId,
uint16_t param1, uint16_t param2 ); uint16_t param1, uint16_t param2 );
virtual void onLeaveTerritory( InstanceContent& instance, Entity::Player& player );
World::Manager::EventMgr& eventMgr() World::Manager::EventMgr& eventMgr()
{ {
return Common::Service< World::Manager::EventMgr >::ref(); return Common::Service< World::Manager::EventMgr >::ref();

View file

@ -637,6 +637,18 @@ bool Sapphire::Scripting::ScriptMgr::onInstanceEnterTerritory( InstanceContent&
return false; return false;
} }
bool Sapphire::Scripting::ScriptMgr::onInstanceLeaveTerritory( InstanceContent& instance, Entity::Player& player )
{
auto script = m_nativeScriptMgr->getScript< Sapphire::ScriptAPI::InstanceContentScript >( instance.getDirectorId() );
if( script )
{
script->onLeaveTerritory( instance, player );
return true;
}
return false;
}
bool Sapphire::Scripting::ScriptMgr::onPlayerSetup( QuestBattle& instance, Entity::Player& player ) bool Sapphire::Scripting::ScriptMgr::onPlayerSetup( QuestBattle& instance, Entity::Player& player )
{ {
auto script = m_nativeScriptMgr->getScript< Sapphire::ScriptAPI::QuestBattleScript >( instance.getDirectorId() ); auto script = m_nativeScriptMgr->getScript< Sapphire::ScriptAPI::QuestBattleScript >( instance.getDirectorId() );

View file

@ -102,6 +102,8 @@ namespace Sapphire::Scripting
onInstanceEnterTerritory( InstanceContent& instance, Entity::Player& player, uint32_t eventId, uint16_t param1, onInstanceEnterTerritory( InstanceContent& instance, Entity::Player& player, uint32_t eventId, uint16_t param1,
uint16_t param2 ); uint16_t param2 );
bool onInstanceLeaveTerritory( InstanceContent& instance, Entity::Player& player );
bool onPlayerSetup( QuestBattle& instance, Entity::Player& player ); bool onPlayerSetup( QuestBattle& instance, Entity::Player& player );
bool onInstanceInit( QuestBattle& instance ); bool onInstanceInit( QuestBattle& instance );

View file

@ -110,6 +110,9 @@ void Sapphire::InstanceContent::onLeaveTerritory( Entity::Player& player )
unbindPlayer( player.getId() ); unbindPlayer( player.getId() );
clearDirector( player ); clearDirector( player );
auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref();
scriptMgr.onInstanceLeaveTerritory( *this, player );
} }
void Sapphire::InstanceContent::onUpdate( uint64_t tickCount ) void Sapphire::InstanceContent::onUpdate( uint64_t tickCount )