Fix corrupt item cache crashes, bot whispers, trade crashes

This commit is contained in:
郑佩茹
2022-03-22 10:51:50 -06:00
parent ff0e5d5e3b
commit db71f4739c
25 changed files with 299 additions and 88 deletions

View File

@@ -18,6 +18,21 @@
#include "ScriptMgr.h"
#include "ScriptMgrMacros.h"
bool ScriptMgr::OnDatabasesLoading()
{
auto ret = IsValidBoolScript<DatabaseScript>([&](DatabaseScript* script)
{
return !script->OnDatabasesLoading();
});
if (ret && *ret)
{
return false;
}
return true;
}
void ScriptMgr::OnAfterDatabasesLoaded(uint32 updateFlags)
{
ExecuteScript<DatabaseScript>([&](DatabaseScript* script)
@@ -25,3 +40,43 @@ void ScriptMgr::OnAfterDatabasesLoaded(uint32 updateFlags)
script->OnAfterDatabasesLoaded(updateFlags);
});
}
void ScriptMgr::OnDatabasesKeepAlive()
{
ExecuteScript<DatabaseScript>([&](DatabaseScript* script)
{
script->OnDatabasesKeepAlive();
});
}
void ScriptMgr::OnDatabasesClosing()
{
ExecuteScript<DatabaseScript>([&](DatabaseScript* script)
{
script->OnDatabasesClosing();
});
}
void ScriptMgr::OnDatabaseWarnAboutSyncQueries(bool apply)
{
ExecuteScript<DatabaseScript>([&](DatabaseScript* script)
{
script->OnDatabaseWarnAboutSyncQueries(apply);
});
}
void ScriptMgr::OnDatabaseSelectIndexLogout(Player* player, uint32& statementIndex, uint32& statementParam)
{
ExecuteScript<DatabaseScript>([&](DatabaseScript* script)
{
script->OnDatabaseSelectIndexLogout(player, statementIndex, statementParam);
});
}
void ScriptMgr::OnDatabaseGetDBRevision(std::string& revision)
{
ExecuteScript<DatabaseScript>([&](DatabaseScript* script)
{
script->OnDatabaseGetDBRevision(revision);
});
}

View File

@@ -305,6 +305,14 @@ void ScriptMgr::OnPlayerUpdate(Player* player, uint32 p_time)
});
}
void ScriptMgr::OnAfterPlayerUpdate(Player* player, uint32 diff)
{
ExecuteScript<PlayerScript>([&](PlayerScript* script)
{
script->OnAfterUpdate(player, diff);
});
}
void ScriptMgr::OnPlayerLogin(Player* player)
{
ExecuteScript<PlayerScript>([&](PlayerScript* script)

View File

@@ -74,6 +74,15 @@ bool ScriptMgr::CanPacketReceive(WorldSession* session, WorldPacket const& packe
return true;
}
void ScriptMgr::OnPacketReceived(WorldSession* session, WorldPacket const& packet)
{
WorldPacket copy(packet);
ExecuteScript<ServerScript>([&](ServerScript* script)
{
script->OnPacketReceived(session, copy);
});
}
bool ScriptMgr::CanPacketSend(WorldSession* session, WorldPacket const& packet)
{
ASSERT(session);