mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 17:51:28 +00:00
LoadZoneObjects converted to QueryDatabase
This commit is contained in:
parent
87efd22394
commit
f0abaad84f
@ -156,27 +156,28 @@ bool Zone::Bootup(uint32 iZoneID, uint32 iInstanceID, bool iStaticZone) {
|
|||||||
|
|
||||||
//this really loads the objects into entity_list
|
//this really loads the objects into entity_list
|
||||||
bool Zone::LoadZoneObjects() {
|
bool Zone::LoadZoneObjects() {
|
||||||
char errbuf[MYSQL_ERRMSG_SIZE];
|
|
||||||
char* query = nullptr;
|
|
||||||
MYSQL_RES *result;
|
|
||||||
MYSQL_ROW row;
|
|
||||||
|
|
||||||
uint32 len_query = MakeAnyLenString(&query, "SELECT "
|
std::string query = StringFormat("SELECT id, zoneid, xpos, ypos, zpos, heading, "
|
||||||
"id,zoneid,xpos,ypos,zpos,heading,itemid,charges,objectname,type,icon,"
|
"itemid, charges, objectname, type, icon, unknown08, "
|
||||||
"unknown08,unknown10,unknown20,unknown24,unknown76"
|
"unknown10, unknown20, unknown24, unknown76 fROM object "
|
||||||
" from object where zoneid=%i and (version=%u or version=-1)", zoneid, instanceversion);
|
"WHERE zoneid = %i AND (version = %u OR version = -1)",
|
||||||
|
zoneid, instanceversion);
|
||||||
|
auto results = database.QueryDatabase(query);
|
||||||
|
if (!results.Success()) {
|
||||||
|
LogFile->write(EQEMuLog::Error, "Error Loading Objects from DB: %s",results.ErrorMessage().c_str());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (database.RunQuery(query, len_query, errbuf, &result)) {
|
|
||||||
safe_delete_array(query);
|
|
||||||
LogFile->write(EQEMuLog::Status, "Loading Objects from DB...");
|
LogFile->write(EQEMuLog::Status, "Loading Objects from DB...");
|
||||||
while ((row = mysql_fetch_row(result))) {
|
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||||
if (atoi(row[9]) == 0)
|
if (atoi(row[9]) == 0)
|
||||||
{
|
{
|
||||||
// Type == 0 - Static Object
|
// Type == 0 - Static Object
|
||||||
const char* shortname = database.GetZoneName(atoi(row[1]), false); // zoneid -> zone_shortname
|
const char* shortname = database.GetZoneName(atoi(row[1]), false); // zoneid -> zone_shortname
|
||||||
|
|
||||||
if (shortname)
|
if (!shortname)
|
||||||
{
|
continue;
|
||||||
|
|
||||||
Door d;
|
Door d;
|
||||||
memset(&d, 0, sizeof(d));
|
memset(&d, 0, sizeof(d));
|
||||||
|
|
||||||
@ -192,16 +193,12 @@ bool Zone::LoadZoneObjects() {
|
|||||||
// Strip trailing "_ACTORDEF" if present. Client won't accept it for doors.
|
// Strip trailing "_ACTORDEF" if present. Client won't accept it for doors.
|
||||||
int len = strlen(d.door_name);
|
int len = strlen(d.door_name);
|
||||||
if ((len > 9) && (memcmp(&d.door_name[len - 9], "_ACTORDEF", 10) == 0))
|
if ((len > 9) && (memcmp(&d.door_name[len - 9], "_ACTORDEF", 10) == 0))
|
||||||
{
|
|
||||||
d.door_name[len - 9] = '\0';
|
d.door_name[len - 9] = '\0';
|
||||||
}
|
|
||||||
|
|
||||||
memcpy(d.dest_zone, "NONE", 5);
|
memcpy(d.dest_zone, "NONE", 5);
|
||||||
|
|
||||||
if ((d.size = atoi(row[11])) == 0) // unknown08 = optional size percentage
|
if ((d.size = atoi(row[11])) == 0) // unknown08 = optional size percentage
|
||||||
{
|
|
||||||
d.size = 100;
|
d.size = 100;
|
||||||
}
|
|
||||||
|
|
||||||
switch (d.opentype = atoi(row[12])) // unknown10 = optional request_nonsolid (0 or 1 or experimental number)
|
switch (d.opentype = atoi(row[12])) // unknown10 = optional request_nonsolid (0 or 1 or experimental number)
|
||||||
{
|
{
|
||||||
@ -220,8 +217,6 @@ bool Zone::LoadZoneObjects() {
|
|||||||
entity_list.AddDoor(door);
|
entity_list.AddDoor(door);
|
||||||
}
|
}
|
||||||
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
Object_Struct data = {0};
|
Object_Struct data = {0};
|
||||||
uint32 id = 0;
|
uint32 id = 0;
|
||||||
uint32 icon = 0;
|
uint32 icon = 0;
|
||||||
@ -276,20 +271,12 @@ bool Zone::LoadZoneObjects() {
|
|||||||
Object* object = new Object(id, type, icon, data, inst);
|
Object* object = new Object(id, type, icon, data, inst);
|
||||||
entity_list.AddObject(object, false);
|
entity_list.AddObject(object, false);
|
||||||
if(type == OT_DROPPEDITEM && itemid != 0)
|
if(type == OT_DROPPEDITEM && itemid != 0)
|
||||||
{
|
|
||||||
entity_list.RemoveObject(object->GetID());
|
entity_list.RemoveObject(object->GetID());
|
||||||
}
|
|
||||||
|
|
||||||
safe_delete(inst);
|
safe_delete(inst);
|
||||||
}
|
}
|
||||||
mysql_free_result(result);
|
|
||||||
}
|
return true;
|
||||||
else {
|
|
||||||
safe_delete_array(query);
|
|
||||||
LogFile->write(EQEMuLog::Error, "Error Loading Objects from DB: %s",errbuf);
|
|
||||||
return(false);
|
|
||||||
}
|
|
||||||
return(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//this also just loads into entity_list, not really into zone
|
//this also just loads into entity_list, not really into zone
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user