1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-26 06:27:45 +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 );

View file

@ -231,6 +231,10 @@ namespace Sapphire::ScriptAPI
{
}
void InstanceContentScript::onLeaveTerritory( InstanceContent& instance, Entity::Player& player )
{
}
///////////////////////////////////////////////////////////////////
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,
uint16_t param1, uint16_t param2 );
virtual void onLeaveTerritory( InstanceContent& instance, Entity::Player& player );
World::Manager::EventMgr& eventMgr()
{
return Common::Service< World::Manager::EventMgr >::ref();

View file

@ -637,6 +637,18 @@ bool Sapphire::Scripting::ScriptMgr::onInstanceEnterTerritory( InstanceContent&
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 )
{
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,
uint16_t param2 );
bool onInstanceLeaveTerritory( InstanceContent& instance, Entity::Player& player );
bool onPlayerSetup( QuestBattle& instance, Entity::Player& player );
bool onInstanceInit( QuestBattle& instance );

View file

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