mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-20 09:17:36 +01:00
Core/Scripts: Add OnPlayerLogin, OnPlayerLogout, OnPlayerCreate and OnPlayerDelete
--HG-- branch : trunk
This commit is contained in:
@@ -1174,6 +1174,26 @@ void ScriptMgr::OnPlayerSpellCast(Player *player, Spell *spell, bool skipCheck)
|
||||
FOREACH_SCRIPT(PlayerScript)->OnSpellCast(player, spell, skipCheck);
|
||||
}
|
||||
|
||||
void ScriptMgr::OnPlayerLogin(Player *player)
|
||||
{
|
||||
FOREACH_SCRIPT(PlayerScript)->OnLogin(player);
|
||||
}
|
||||
|
||||
void ScriptMgr::OnPlayerLogout(Player *player)
|
||||
{
|
||||
FOREACH_SCRIPT(PlayerScript)->OnLogout(player);
|
||||
}
|
||||
|
||||
void ScriptMgr::OnPlayerCreate(Player *player)
|
||||
{
|
||||
FOREACH_SCRIPT(PlayerScript)->OnCreate(player);
|
||||
}
|
||||
|
||||
void ScriptMgr::OnPlayerDelete(uint64 guid)
|
||||
{
|
||||
FOREACH_SCRIPT(PlayerScript)->OnDelete(guid);
|
||||
}
|
||||
|
||||
void ScriptMgr::OnGuildAddMember(Guild *guild, Player *player, uint32& plRank)
|
||||
{
|
||||
FOREACH_SCRIPT(GuildScript)->OnAddMember(guild, player, plRank);
|
||||
|
||||
@@ -706,7 +706,15 @@ class PlayerScript : public ScriptObject
|
||||
virtual void OnTextEmote(Player* /*player*/, uint32 /*text_emote*/, uint32 /*emoteNum*/, uint64 /*guid*/) { }
|
||||
|
||||
// Called in Spell::cast
|
||||
virtual void OnSpellCast(Player * /*player*/, Spell * /*spell*/, bool /*skipCheck*/) { }
|
||||
virtual void OnSpellCast(Player* /*player*/, Spell * /*spell*/, bool /*skipCheck*/) { }
|
||||
|
||||
// Called when a player logs in or out
|
||||
virtual void OnLogin(Player* /*player*/) { }
|
||||
virtual void OnLogout(Player* /*player*/) { }
|
||||
|
||||
// Called when a player is created/deleted
|
||||
virtual void OnCreate(Player* /*player*/) { }
|
||||
virtual void OnDelete(uint64 /*guid*/) { }
|
||||
};
|
||||
|
||||
class GuildScript : public ScriptObject
|
||||
@@ -930,7 +938,11 @@ class ScriptMgr
|
||||
void OnPlayerChat(Player* player, uint32 type, uint32 lang, std::string msg, Channel* channel);
|
||||
void OnPlayerEmote(Player* player, uint32 emote);
|
||||
void OnPlayerTextEmote(Player* player, uint32 text_emote, uint32 emoteNum, uint64 guid);
|
||||
void OnPlayerSpellCast(Player *player, Spell *spell, bool skipCheck);
|
||||
void OnPlayerSpellCast(Player* player, Spell *spell, bool skipCheck);
|
||||
void OnPlayerLogin(Player* player);
|
||||
void OnPlayerLogout(Player* player);
|
||||
void OnPlayerCreate(Player* player);
|
||||
void OnPlayerDelete(uint64 guid);
|
||||
|
||||
public: /* GuildScript */
|
||||
void OnGuildAddMember(Guild *guild, Player *player, uint32& plRank);
|
||||
|
||||
@@ -471,8 +471,9 @@ void WorldSession::HandleCharCreateOpcode(WorldPacket & recv_data)
|
||||
SendPacket(&data);
|
||||
|
||||
std::string IP_str = GetRemoteAddress();
|
||||
sLog.outBasic("Account: %d (IP: %s) Create Character:[%s] (GUID: %u)", GetAccountId(), IP_str.c_str(), name.c_str(), pNewChar->GetGUIDLow());
|
||||
sLog.outDetail("Account: %d (IP: %s) Create Character:[%s] (GUID: %u)", GetAccountId(), IP_str.c_str(), name.c_str(), pNewChar->GetGUIDLow());
|
||||
sLog.outChar("Account: %d (IP: %s) Create Character:[%s] (GUID: %u)", GetAccountId(), IP_str.c_str(), name.c_str(), pNewChar->GetGUIDLow());
|
||||
sScriptMgr.OnPlayerCreate(pNewChar);
|
||||
delete pNewChar; // created only to call SaveToDB()
|
||||
|
||||
}
|
||||
@@ -522,6 +523,7 @@ void WorldSession::HandleCharDeleteOpcode(WorldPacket & recv_data)
|
||||
std::string IP_str = GetRemoteAddress();
|
||||
sLog.outDetail("Account: %d (IP: %s) Delete Character:[%s] (GUID: %u)",GetAccountId(),IP_str.c_str(),name.c_str(),GUID_LOPART(guid));
|
||||
sLog.outChar("Account: %d (IP: %s) Delete Character:[%s] (GUID: %u)",GetAccountId(),IP_str.c_str(),name.c_str(),GUID_LOPART(guid));
|
||||
sScriptMgr.OnPlayerDelete(guid);
|
||||
|
||||
if (sLog.IsOutCharDump()) // optimize GetPlayerDump call
|
||||
{
|
||||
@@ -801,6 +803,7 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder * holder)
|
||||
|
||||
m_playerLoading = false;
|
||||
|
||||
sScriptMgr.OnPlayerLogin(pCurrChar);
|
||||
delete holder;
|
||||
}
|
||||
|
||||
|
||||
@@ -479,6 +479,7 @@ void WorldSession::LogoutPlayer(bool Save)
|
||||
CharacterDatabase.PExecute("UPDATE characters SET online = 0 WHERE account = '%u'",
|
||||
GetAccountId());
|
||||
sLog.outDebug("SESSION: Sent SMSG_LOGOUT_COMPLETE Message");
|
||||
sScriptMgr.OnPlayerLogout(GetPlayer());
|
||||
}
|
||||
|
||||
m_playerLogout = false;
|
||||
|
||||
Reference in New Issue
Block a user