diff options
author | XTZGZoReX <none@none> | 2009-04-05 18:56:10 +0200 |
---|---|---|
committer | XTZGZoReX <none@none> | 2009-04-05 18:56:10 +0200 |
commit | 0f61bac93d4285f5583239695ecd113b568a8787 (patch) | |
tree | 5cec013db9d030cbafdf0faefb569e87f4602f50 /src | |
parent | e5bbb4d20bfb5a2a63fb222d64c1a66d3fe074e7 (diff) |
* Do proper checks at startup for creature_formations table. Also remove useless lastLeaderGUID variable.
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/game/CreatureGroups.cpp | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/src/game/CreatureGroups.cpp b/src/game/CreatureGroups.cpp index 1314e865b48..24f67ec8901 100644 --- a/src/game/CreatureGroups.cpp +++ b/src/game/CreatureGroups.cpp @@ -87,7 +87,7 @@ void CreatureGroupManager::LoadCreatureFormations() return; } - uint32 total_records = result->GetRowCount(), lastLeaderGUID = 0; + uint32 total_records = result->GetRowCount(); barGoLink bar( total_records); Field *fields; @@ -110,10 +110,24 @@ void CreatureGroupManager::LoadCreatureFormations() group_member->follow_angle = fields[3].GetUInt32(); } - CreatureGroupMap[group_member->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", group_member->memberGUID); + if(!result) + { + sLog.outErrorDb("creature_formations table member guid %u incorrect (not exist)", group_member->memberGUID); + continue; + } + } + + CreatureGroupMap[group_member->memberGUID] = group_member; } while(result->NextRow()) ; |