* Do proper checks at startup for creature_formations table. Also remove useless lastLeaderGUID variable.

--HG--
branch : trunk
This commit is contained in:
XTZGZoReX
2009-04-05 18:56:10 +02:00
parent e5bbb4d20b
commit 0f61bac93d
+18 -4
View File
@@ -87,7 +87,7 @@ void CreatureGroupManager::LoadCreatureFormations()
return; return;
} }
uint32 total_records = result->GetRowCount(), lastLeaderGUID = 0; uint32 total_records = result->GetRowCount();
barGoLink bar( total_records); barGoLink bar( total_records);
Field *fields; Field *fields;
@@ -110,10 +110,24 @@ void CreatureGroupManager::LoadCreatureFormations()
group_member->follow_angle = fields[3].GetUInt32(); 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) result = WorldDatabase.PQuery("SELECT guid FROM creature WHERE guid = %u", group_member->memberGUID);
lastLeaderGUID = group_member->leaderGUID; 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()) ; while(result->NextRow()) ;