feat(Core/Scripting): Implement new hook OnBeforePlayerLogout() (#18163)
* new hook OnPlayerPreLogout * Changed PreLogout to BeforeLogout per review * Renamed OnPlayerBeforeLogout to OnBeforePlayerLogout per review --------- Co-authored-by: NathanHandley <nathanhandley@protonmail.com>
This commit is contained in:
@@ -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)
|
void ScriptMgr::OnPlayerLogout(Player* player)
|
||||||
{
|
{
|
||||||
ExecuteScript<PlayerScript>([&](PlayerScript* script)
|
ExecuteScript<PlayerScript>([&](PlayerScript* script)
|
||||||
|
|||||||
@@ -132,6 +132,9 @@ public:
|
|||||||
// Called when a player logs in.
|
// Called when a player logs in.
|
||||||
virtual void OnLogin(Player* /*player*/) { }
|
virtual void OnLogin(Player* /*player*/) { }
|
||||||
|
|
||||||
|
// Called before the player is logged out
|
||||||
|
virtual void OnBeforeLogout(Player* /*player*/) { }
|
||||||
|
|
||||||
// Called when a player logs out.
|
// Called when a player logs out.
|
||||||
virtual void OnLogout(Player* /*player*/) { }
|
virtual void OnLogout(Player* /*player*/) { }
|
||||||
|
|
||||||
|
|||||||
@@ -329,6 +329,7 @@ public: /* PlayerScript */
|
|||||||
void OnPlayerSpellCast(Player* player, Spell* spell, bool skipCheck);
|
void OnPlayerSpellCast(Player* player, Spell* spell, bool skipCheck);
|
||||||
void OnPlayerLogin(Player* player);
|
void OnPlayerLogin(Player* player);
|
||||||
void OnPlayerLoadFromDB(Player* player);
|
void OnPlayerLoadFromDB(Player* player);
|
||||||
|
void OnBeforePlayerLogout(Player* player);
|
||||||
void OnPlayerLogout(Player* player);
|
void OnPlayerLogout(Player* player);
|
||||||
void OnPlayerCreate(Player* player);
|
void OnPlayerCreate(Player* player);
|
||||||
void OnPlayerSave(Player* player);
|
void OnPlayerSave(Player* player);
|
||||||
|
|||||||
@@ -579,6 +579,9 @@ void WorldSession::LogoutPlayer(bool save)
|
|||||||
|
|
||||||
if (_player)
|
if (_player)
|
||||||
{
|
{
|
||||||
|
//! Call script hook before other logout events
|
||||||
|
sScriptMgr->OnBeforePlayerLogout(_player);
|
||||||
|
|
||||||
if (ObjectGuid lguid = _player->GetLootGUID())
|
if (ObjectGuid lguid = _player->GetLootGUID())
|
||||||
DoLootRelease(lguid);
|
DoLootRelease(lguid);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user