Skip to content

Commit

Permalink
feat(Core/Scripting): Implement new hook OnBeforePlayerLogout() (#18163)
Browse files Browse the repository at this point in the history
* new hook OnPlayerPreLogout

* Changed PreLogout to BeforeLogout per review

* Renamed OnPlayerBeforeLogout to OnBeforePlayerLogout per review

---------

Co-authored-by: NathanHandley <[email protected]>
  • Loading branch information
NathanHandley and NathanHandley authored Jan 13, 2024
1 parent a1891d8 commit 4321b8a
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 0 deletions.
8 changes: 8 additions & 0 deletions src/server/game/Scripting/ScriptDefines/PlayerScript.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -361,6 +361,14 @@ void ScriptMgr::OnPlayerLoadFromDB(Player* player)
});
}

void ScriptMgr::OnBeforePlayerLogout(Player* player)
{
ExecuteScript<PlayerScript>([&](PlayerScript* script)
{
script->OnBeforeLogout(player);
});
}

void ScriptMgr::OnPlayerLogout(Player* player)
{
ExecuteScript<PlayerScript>([&](PlayerScript* script)
Expand Down
3 changes: 3 additions & 0 deletions src/server/game/Scripting/ScriptDefines/PlayerScript.h
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,9 @@ class PlayerScript : public ScriptObject
// Called when a player logs in.
virtual void OnLogin(Player* /*player*/) { }

// Called before the player is logged out
virtual void OnBeforeLogout(Player* /*player*/) { }

// Called when a player logs out.
virtual void OnLogout(Player* /*player*/) { }

Expand Down
1 change: 1 addition & 0 deletions src/server/game/Scripting/ScriptMgr.h
Original file line number Diff line number Diff line change
Expand Up @@ -329,6 +329,7 @@ class ScriptMgr
void OnPlayerSpellCast(Player* player, Spell* spell, bool skipCheck);
void OnPlayerLogin(Player* player);
void OnPlayerLoadFromDB(Player* player);
void OnBeforePlayerLogout(Player* player);
void OnPlayerLogout(Player* player);
void OnPlayerCreate(Player* player);
void OnPlayerSave(Player* player);
Expand Down
3 changes: 3 additions & 0 deletions src/server/game/Server/WorldSession.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -579,6 +579,9 @@ void WorldSession::LogoutPlayer(bool save)

if (_player)
{
//! Call script hook before other logout events
sScriptMgr->OnBeforePlayerLogout(_player);

if (ObjectGuid lguid = _player->GetLootGUID())
DoLootRelease(lguid);

Expand Down

0 comments on commit 4321b8a

Please sign in to comment.