mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-22 05:06:24 +00:00
(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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user