mirror of
https://github.com/EQEmu/Server.git
synced 2026-03-05 17:42:24 +00:00
LoadWorldContainer converted to QueryDatabase
This commit is contained in:
parent
e60658c684
commit
3777e8d1ce
@ -464,49 +464,36 @@ void ZoneDatabase::LoadWorldContainer(uint32 parentid, ItemInst* container)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
char errbuf[MYSQL_ERRMSG_SIZE];
|
std::string query = StringFormat("SELECT bagidx, itemid, charges, augslot1, augslot2, augslot3, augslot4, augslot5 "
|
||||||
char* query = 0;
|
"FROM object_contents WHERE parentid = %i", parentid);
|
||||||
MYSQL_RES *result;
|
auto results = QueryDatabase(query);
|
||||||
MYSQL_ROW row;
|
if (!results.Success()) {
|
||||||
//const Item_Struct* item = nullptr;
|
LogFile->write(EQEMuLog::Error, "Error in DB::LoadWorldContainer: %s", results.ErrorMessage().c_str());
|
||||||
//ItemInst* inst = nullptr;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
uint32 len_query = MakeAnyLenString(&query, "select "
|
for (auto row = results.begin(); row != results.end(); ++row) {
|
||||||
"bagidx,itemid,charges,augslot1,augslot2,augslot3,augslot4,augslot5 from object_contents where parentid=%i", parentid);
|
uint8 index = (uint8)atoi(row[0]);
|
||||||
|
uint32 item_id = (uint32)atoi(row[1]);
|
||||||
|
int8 charges = (int8)atoi(row[2]);
|
||||||
|
uint32 aug[EmuConstants::ITEM_COMMON_SIZE];
|
||||||
|
aug[0] = (uint32)atoi(row[3]);
|
||||||
|
aug[1] = (uint32)atoi(row[4]);
|
||||||
|
aug[2] = (uint32)atoi(row[5]);
|
||||||
|
aug[3] = (uint32)atoi(row[6]);
|
||||||
|
aug[4] = (uint32)atoi(row[7]);
|
||||||
|
|
||||||
if (RunQuery(query, len_query, errbuf, &result)) {
|
ItemInst* inst = database.CreateItem(item_id, charges);
|
||||||
while ((row = mysql_fetch_row(result))) {
|
if (inst && inst->GetItem()->ItemClass == ItemClassCommon) {
|
||||||
uint8 index = (uint8)atoi(row[0]);
|
for(int i = AUG_BEGIN; i < EmuConstants::ITEM_COMMON_SIZE; i++)
|
||||||
uint32 item_id = (uint32)atoi(row[1]);
|
if (aug[i])
|
||||||
int8 charges = (int8)atoi(row[2]);
|
inst->PutAugment(&database, i, aug[i]);
|
||||||
uint32 aug[EmuConstants::ITEM_COMMON_SIZE];
|
// Put item inside world container
|
||||||
aug[0] = (uint32)atoi(row[3]);
|
container->PutItem(index, *inst);
|
||||||
aug[1] = (uint32)atoi(row[4]);
|
safe_delete(inst);
|
||||||
aug[2] = (uint32)atoi(row[5]);
|
}
|
||||||
aug[3] = (uint32)atoi(row[6]);
|
}
|
||||||
aug[4] = (uint32)atoi(row[7]);
|
|
||||||
|
|
||||||
ItemInst* inst = database.CreateItem(item_id, charges);
|
|
||||||
if (inst) {
|
|
||||||
if (inst->GetItem()->ItemClass == ItemClassCommon) {
|
|
||||||
for(int i = AUG_BEGIN; i < EmuConstants::ITEM_COMMON_SIZE; i++) {
|
|
||||||
if (aug[i]) {
|
|
||||||
inst->PutAugment(&database, i, aug[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Put item inside world container
|
|
||||||
container->PutItem(index, *inst);
|
|
||||||
safe_delete(inst);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
mysql_free_result(result);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
LogFile->write(EQEMuLog::Error, "Error in DB::LoadWorldContainer: %s", errbuf);
|
|
||||||
}
|
|
||||||
|
|
||||||
safe_delete_array(query);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save child objects for a world container (i.e., forge, bag dropped to ground, etc)
|
// Save child objects for a world container (i.e., forge, bag dropped to ground, etc)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user