From cea63f6fc68ecbbdf21b5f8e59464c5db4aa10c6 Mon Sep 17 00:00:00 2001 From: XTZGZoReX Date: Tue, 7 Apr 2009 18:10:47 +0200 Subject: * Re-implement creature_formations startup checks after formations update. --HG-- branch : trunk --- src/game/CreatureGroups.cpp | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/game/CreatureGroups.cpp b/src/game/CreatureGroups.cpp index 63a252a9e20..ed0fde19eb0 100644 --- a/src/game/CreatureGroups.cpp +++ b/src/game/CreatureGroups.cpp @@ -106,7 +106,7 @@ void CreatureGroupManager::LoadCreatureFormations() return; } - uint32 total_records = result->GetRowCount(), lastLeaderGUID = 0; + uint32 total_records = result->GetRowCount(); barGoLink bar( total_records); Field *fields; @@ -129,10 +129,24 @@ void CreatureGroupManager::LoadCreatureFormations() group_member->follow_angle = fields[3].GetUInt32(); } - CreatureGroupMap[memberGUID] = group_member; + // check data correctness + { + QueryResult* result = WorldDatabase.PQuery("SELECT guid FROM creature WHERE guid = %u", group_member->leaderGUID); + if(!result) + { + sLog.outErrorDb("creature_formations table leader guid %u incorrect (not exist)", group_member->leaderGUID); + continue; + } - if(lastLeaderGUID != group_member->leaderGUID) - lastLeaderGUID = group_member->leaderGUID; + result = WorldDatabase.PQuery("SELECT guid FROM creature WHERE guid = %u", memberGUID); + if(!result) + { + sLog.outErrorDb("creature_formations table member guid %u incorrect (not exist)", memberGUID); + continue; + } + } + + CreatureGroupMap[memberGUID] = group_member; } while(result->NextRow()) ; -- cgit v1.2.3