LoadSpawnGroupsByID converted to QueryDatabase

This commit is contained in:
Arthur Ice 2014-08-24 12:54:06 -07:00
parent adf36bf912
commit 932dd836d0

View File

@ -188,49 +188,44 @@ bool ZoneDatabase::LoadSpawnGroups(const char* zone_name, uint16 version, SpawnG
} }
bool ZoneDatabase::LoadSpawnGroupsByID(int spawngroupid, SpawnGroupList* spawn_group_list) { bool ZoneDatabase::LoadSpawnGroupsByID(int spawngroupid, SpawnGroupList* spawn_group_list) {
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0;
MYSQL_RES *result;
MYSQL_ROW row;
query = 0;
if (RunQuery(query, MakeAnyLenString(&query, "SELECT DISTINCT spawngroup.id, 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 spawngroup WHERE spawngroup.ID='%i'", spawngroupid), errbuf, &result)) std::string query = StringFormat("SELECT DISTINCT(spawngroup.id), spawngroup.name, spawngroup.spawn_limit, "
{ "spawngroup.dist, spawngroup.max_x, spawngroup.min_x, "
safe_delete_array(query); "spawngroup.max_y, spawngroup.min_y, spawngroup.delay, "
while((row = mysql_fetch_row(result))) { "spawngroup.despawn, spawngroup.despawn_timer, spawngroup.mindelay "
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])); "FROM spawngroup WHERE spawngroup.ID = '%i'", spawngroupid);
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());
} return false;
else }
{
_log(ZONE__SPAWNS, "Error2 in PopulateZoneLists query %s", query); for (auto row = results.begin(); row != results.end(); ++row) {
safe_delete_array(query); 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]));
spawn_group_list->AddSpawnGroup(newSpawnGroup);
}
query = StringFormat("SELECT DISTINCT(spawnentry.spawngroupID), spawnentry.npcid, "
"spawnentry.chance, spawngroup.spawn_limit FROM spawnentry, spawngroup "
"WHERE spawnentry.spawngroupID = '%i' AND spawngroup.spawn_limit = '0' "
"ORDER BY chance", spawngroupid);
results = QueryDatabase(query);
if (!results.Success()) {
_log(ZONE__SPAWNS, "Error3 in PopulateZoneLists query '%s'", query.c_str());
return false; return false;
} }
query = 0; for(auto row = results.begin(); row != results.end(); ++row) {
if (RunQuery(query, MakeAnyLenString(&query, SpawnEntry* newSpawnEntry = new SpawnEntry( atoi(row[1]), atoi(row[2]), row[3]?atoi(row[3]):0);
"SELECT DISTINCT spawnentry.spawngroupID, spawnentry.npcid, spawnentry.chance, spawngroup.spawn_limit FROM spawnentry,spawngroup WHERE spawnentry.spawngroupID='%i' AND spawngroup.spawn_limit='0' ORDER by chance", spawngroupid), errbuf, &result)) { SpawnGroup *sg = spawn_group_list->GetSpawnGroup(atoi(row[0]));
safe_delete_array(query); if (!sg) {
while((row = mysql_fetch_row(result))) _log(ZONE__SPAWNS, "Error in SpawngroupID: %s ", row[0]);
{ continue;
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) sg->AddSpawnEntry(newSpawnEntry);
sg->AddSpawnEntry(newSpawnEntry); }
else
_log(ZONE__SPAWNS, "Error in SpawngroupID: %s ", row[0]);
}
mysql_free_result(result);
}
else
{
_log(ZONE__SPAWNS, "Error3 in PopulateZoneLists query '%s'", row[0]);
safe_delete_array(query);
return false;
}
return true; return true;
} }