LoadSpawnGroups converted to QueryDatabase

This commit is contained in:
Arthur Ice 2014-08-24 12:46:02 -07:00
parent b36cc3ab08
commit adf36bf912

View File

@ -140,53 +140,49 @@ bool SpawnGroupList::RemoveSpawnGroup(uint32 in_id) {
} }
bool ZoneDatabase::LoadSpawnGroups(const char* zone_name, uint16 version, SpawnGroupList* spawn_group_list) { bool ZoneDatabase::LoadSpawnGroups(const char* zone_name, uint16 version, SpawnGroupList* spawn_group_list) {
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0;
MYSQL_RES *result;
MYSQL_ROW row;
query = 0; std::string query = StringFormat("SELECT DISTINCT(spawngroupID), spawngroup.name, spawngroup.spawn_limit, "
if (RunQuery(query, MakeAnyLenString(&query, "SELECT DISTINCT(spawngroupID), spawngroup.name, spawngroup.spawn_limit, spawngroup.dist, spawngroup.max_x, spawngroup.min_x, spawngroup.max_y, spawngroup.min_y, spawngroup.delay, spawngroup.despawn, spawngroup.despawn_timer, spawngroup.mindelay FROM spawn2,spawngroup WHERE spawn2.spawngroupID=spawngroup.ID and spawn2.version=%u and zone='%s'", version, zone_name), errbuf, &result)) "spawngroup.dist, spawngroup.max_x, spawngroup.min_x, "
{ "spawngroup.max_y, spawngroup.min_y, spawngroup.delay, "
safe_delete_array(query); "spawngroup.despawn, spawngroup.despawn_timer, spawngroup.mindelay "
while((row = mysql_fetch_row(result))) { "FROM spawn2, spawngroup WHERE spawn2.spawngroupID = spawngroup.ID "
SpawnGroup* newSpawnGroup = new SpawnGroup( atoi(row[0]), row[1], atoi(row[2]), atof(row[3]), atof(row[4]), atof(row[5]), atof(row[6]), atof(row[7]), atoi(row[8]), atoi(row[9]), atoi(row[10]), atoi(row[11])); "AND spawn2.version = %u and zone = '%s'", version, zone_name);
spawn_group_list->AddSpawnGroup(newSpawnGroup); auto results = QueryDatabase(query);
} if (!results.Success()) {
mysql_free_result(result); _log(ZONE__SPAWNS, "Error2 in PopulateZoneLists query '%s' ", query.c_str());
}
else
{
_log(ZONE__SPAWNS, "Error2 in PopulateZoneLists query '%s' ", query);
safe_delete_array(query);
return false; return false;
} }
query = 0; for (auto row = results.begin(); row != results.end(); ++row) {
if (RunQuery(query, MakeAnyLenString(&query, SpawnGroup* newSpawnGroup = new SpawnGroup(atoi(row[0]), row[1], atoi(row[2]), atof(row[3]),
"SELECT DISTINCT spawnentry.spawngroupID, npcid, chance, " atof(row[4]), atof(row[5]), atof(row[6]), atof(row[7]),
"npc_types.spawn_limit AS sl " atoi(row[8]), atoi(row[9]), atoi(row[10]), atoi(row[11]));
"FROM spawnentry, spawn2, npc_types " spawn_group_list->AddSpawnGroup(newSpawnGroup);
"WHERE spawnentry.npcID=npc_types.id AND spawnentry.spawngroupID=spawn2.spawngroupID " }
"AND zone='%s'", zone_name), errbuf, &result)) {
safe_delete_array(query); query = StringFormat("SELECT DISTINCT spawnentry.spawngroupID, npcid, chance, "
while((row = mysql_fetch_row(result))) "npc_types.spawn_limit AS sl "
{ "FROM spawnentry, spawn2, npc_types "
SpawnEntry* newSpawnEntry = new SpawnEntry( atoi(row[1]), atoi(row[2]), row[3]?atoi(row[3]):0); "WHERE spawnentry.npcID=npc_types.id "
SpawnGroup *sg = spawn_group_list->GetSpawnGroup(atoi(row[0])); "AND spawnentry.spawngroupID = spawn2.spawngroupID "
if (sg) "AND zone = '%s'", zone_name);
sg->AddSpawnEntry(newSpawnEntry); results = QueryDatabase(query);
else if (!results.Success()) {
_log(ZONE__SPAWNS, "Error in LoadSpawnGroups %s ", query); _log(ZONE__SPAWNS, "Error2 in PopulateZoneLists query '%'", query.c_str());
}
mysql_free_result(result);
}
else
{
_log(ZONE__SPAWNS, "Error2 in PopulateZoneLists query '%'", query);
safe_delete_array(query);
return false; return false;
} }
for (auto row = results.begin(); row != results.end(); ++row) {
SpawnEntry* newSpawnEntry = new SpawnEntry( atoi(row[1]), atoi(row[2]), row[3]?atoi(row[3]):0);
SpawnGroup *sg = spawn_group_list->GetSpawnGroup(atoi(row[0]));
if (!sg) {
_log(ZONE__SPAWNS, "Error in LoadSpawnGroups %s ", query.c_str());
continue;
}
sg->AddSpawnEntry(newSpawnEntry);
}
return true; return true;
} }