aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEllie <ellie1337@gmail.com>2013-01-02 15:46:31 -0800
committerEllie <ellie1337@gmail.com>2013-01-02 17:03:57 -0800
commitc2e610cde79d6c97a77370f44cd7940319fad9bf (patch)
tree4e9a552f2f52520990508e51ae846c82f1093a2f
parentc6ed15f826d4fccc3db85bc5be6d7b82a6d5e08b (diff)
Core/Scripting: Created a hook for when a player is about to be saved.
-rw-r--r--src/server/game/Entities/Player/Player.cpp3
-rw-r--r--src/server/game/Scripting/ScriptMgr.cpp5
-rw-r--r--src/server/game/Scripting/ScriptMgr.h4
3 files changed, 11 insertions, 1 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 986eeb8e275..801530eb9f1 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -1753,7 +1753,8 @@ void Player::Update(uint32 p_time)
{
if (p_time >= m_nextSave)
{
- // m_nextSave reseted in SaveToDB call
+ // m_nextSave reset in SaveToDB call
+ sScriptMgr->OnPlayerSave(this);
SaveToDB();
sLog->outDebug(LOG_FILTER_PLAYER, "Player '%s' (GUID: %u) saved", GetName().c_str(), GetGUIDLow());
}
diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp
index 6a5bccc743c..cae8ea9d2d5 100644
--- a/src/server/game/Scripting/ScriptMgr.cpp
+++ b/src/server/game/Scripting/ScriptMgr.cpp
@@ -1241,6 +1241,11 @@ void ScriptMgr::OnPlayerDelete(uint64 guid)
FOREACH_SCRIPT(PlayerScript)->OnDelete(guid);
}
+void ScriptMgr::OnPlayerSave(Player* player)
+{
+ FOREACH_SCRIPT(PlayerScript)->OnSave(player);
+}
+
void ScriptMgr::OnPlayerBindToInstance(Player* player, Difficulty difficulty, uint32 mapid, bool permanent)
{
FOREACH_SCRIPT(PlayerScript)->OnBindToInstance(player, difficulty, mapid, permanent);
diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h
index bf032b84379..d58b9a3ec32 100644
--- a/src/server/game/Scripting/ScriptMgr.h
+++ b/src/server/game/Scripting/ScriptMgr.h
@@ -746,6 +746,9 @@ class PlayerScript : public UnitScript
// Called when a player is deleted.
virtual void OnDelete(uint64 /*guid*/) { }
+ // Called whe is a player is about to be saved.
+ virtual void OnSave(Player* /*player*/) { }
+
// Called when a player is bound to an instance
virtual void OnBindToInstance(Player* /*player*/, Difficulty /*difficulty*/, uint32 /*mapId*/, bool /*permanent*/) { }
@@ -1022,6 +1025,7 @@ class ScriptMgr
void OnPlayerLogout(Player* player);
void OnPlayerCreate(Player* player);
void OnPlayerDelete(uint64 guid);
+ void OnPlayerSave(Player* player);
void OnPlayerBindToInstance(Player* player, Difficulty difficulty, uint32 mapid, bool permanent);
void OnPlayerUpdateZone(Player* player, uint32 newZone, uint32 newArea);