(Core\DB) Create Logging Game Event Creatures\Gameobjects (#9731)

Add loggin for game_event_creature/game_event_gameobject contains creature/gameobject not found in table creature/gameobject table.
Also Clean Up SQL for reported missing guids per game_event_creature/game_event_gameobject that was reported in the DBerrors.log
This commit is contained in:
acidmanifesto
2021-12-16 17:02:57 +01:00
committed by GitHub
parent 58e0430f71
commit 2afd3a420c
2 changed files with 41 additions and 6 deletions

View File

@@ -394,9 +394,8 @@ void GameEventMgr::LoadFromDB()
{
uint32 oldMSTime = getMSTime();
// 1 2
QueryResult result = WorldDatabase.Query("SELECT creature.guid, game_event_creature.eventEntry FROM creature"
" JOIN game_event_creature ON creature.guid = game_event_creature.guid");
// 0 1
QueryResult result = WorldDatabase.Query("SELECT guid, eventEntry FROM game_event_creature");
if (!result)
{
@@ -413,6 +412,13 @@ void GameEventMgr::LoadFromDB()
ObjectGuid::LowType guid = fields[0].GetUInt32();
int16 event_id = fields[1].GetInt8();
CreatureData const* data = sObjectMgr->GetCreatureData(guid);
if (!data)
{
LOG_ERROR("sql.sql", "`game_event_creature` contains creature (GUID: %u) not found in `creature` table.", guid);
continue;
}
int32 internal_event_id = mGameEvent.size() + event_id - 1;
if (internal_event_id < 0 || internal_event_id >= int32(mGameEventCreatureGuids.size()))
@@ -436,9 +442,8 @@ void GameEventMgr::LoadFromDB()
{
uint32 oldMSTime = getMSTime();
// 0 1
QueryResult result = WorldDatabase.Query("SELECT gameobject.guid, game_event_gameobject.eventEntry FROM gameobject"
" JOIN game_event_gameobject ON gameobject.guid=game_event_gameobject.guid");
// 0 1
QueryResult result = WorldDatabase.Query("SELECT guid, eventEntry FROM game_event_gameobject");
if (!result)
{
@@ -457,6 +462,13 @@ void GameEventMgr::LoadFromDB()
int32 internal_event_id = mGameEvent.size() + event_id - 1;
GameObjectData const* data = sObjectMgr->GetGOData(guid);
if (!data)
{
LOG_ERROR("sql.sql", "`game_event_gameobject` contains gameobject (GUID: %u) not found in `gameobject` table.", guid);
continue;
}
if (internal_event_id < 0 || internal_event_id >= int32(mGameEventGameobjectGuids.size()))
{
LOG_ERROR("sql.sql", "`game_event_gameobject` game event id (%i) is out of range compared to max event id in `game_event`", event_id);