LoadItems converted to QueryDatabase

This commit is contained in:
Arthur Ice 2014-10-04 14:06:37 -07:00
parent 638d121b75
commit 2a73a572d3

View File

@ -729,9 +729,6 @@ bool SharedDatabase::LoadItems() {
void SharedDatabase::LoadItems(void *data, uint32 size, int32 items, uint32 max_item_id) { void SharedDatabase::LoadItems(void *data, uint32 size, int32 items, uint32 max_item_id) {
EQEmu::FixedMemoryHashSet<Item_Struct> hash(reinterpret_cast<uint8*>(data), size, items, max_item_id); EQEmu::FixedMemoryHashSet<Item_Struct> hash(reinterpret_cast<uint8*>(data), size, items, max_item_id);
char errbuf[MYSQL_ERRMSG_SIZE];
MYSQL_RES *result;
MYSQL_ROW row;
char ndbuffer[4]; char ndbuffer[4];
bool disableNoRent = false; bool disableNoRent = false;
@ -759,21 +756,27 @@ void SharedDatabase::LoadItems(void *data, uint32 size, int32 items, uint32 max_
} }
} }
char query[] = "select source," Item_Struct item;
const std::string query = "SELECT source,"
#define F(x) "`"#x"`," #define F(x) "`"#x"`,"
#include "item_fieldlist.h" #include "item_fieldlist.h"
#undef F #undef F
"updated" "updated FROM items ORDER BY id";
" from items order by id"; auto results = QueryDatabase(query);
Item_Struct item; if (!results.Success()) {
if(RunQuery(query, sizeof(query), errbuf, &result)) { LogFile->write(EQEMuLog::Error, "LoadItems '%s', %s", query.c_str(), results.ErrorMessage().c_str());
while((row = mysql_fetch_row(result))) { return;
}
for(auto row = results.begin(); row != results.end(); ++row) {
memset(&item, 0, sizeof(Item_Struct)); memset(&item, 0, sizeof(Item_Struct));
item.ItemClass = (uint8)atoi(row[ItemField::itemclass]); item.ItemClass = (uint8)atoi(row[ItemField::itemclass]);
strcpy(item.Name,row[ItemField::name]); strcpy(item.Name,row[ItemField::name]);
strcpy(item.Lore,row[ItemField::lore]); strcpy(item.Lore,row[ItemField::lore]);
strcpy(item.IDFile,row[ItemField::idfile]); strcpy(item.IDFile,row[ItemField::idfile]);
item.ID = (uint32)atoul(row[ItemField::id]); item.ID = (uint32)atoul(row[ItemField::id]);
item.Weight = (uint8)atoi(row[ItemField::weight]); item.Weight = (uint8)atoi(row[ItemField::weight]);
item.NoRent = disableNoRent ? (uint8)atoi("255") : (uint8)atoi(row[ItemField::norent]); item.NoRent = disableNoRent ? (uint8)atoi("255") : (uint8)atoi(row[ItemField::norent]);
@ -801,7 +804,7 @@ void SharedDatabase::LoadItems(void *data, uint32 size, int32 items, uint32 max_
item.AC = (int32)atoul(row[ItemField::ac]); item.AC = (int32)atoul(row[ItemField::ac]);
item.Deity = (uint32)atoul(row[ItemField::deity]); item.Deity = (uint32)atoul(row[ItemField::deity]);
item.SkillModValue = (int32)atoul(row[ItemField::skillmodvalue]); item.SkillModValue = (int32)atoul(row[ItemField::skillmodvalue]);
//item.Unk033 = (int32)atoul(row[ItemField::UNK033]);
item.SkillModType = (uint32)atoul(row[ItemField::skillmodtype]); item.SkillModType = (uint32)atoul(row[ItemField::skillmodtype]);
item.BaneDmgRace = (uint32)atoul(row[ItemField::banedmgrace]); item.BaneDmgRace = (uint32)atoul(row[ItemField::banedmgrace]);
item.BaneDmgAmt = (int8)atoi(row[ItemField::banedmgamt]); item.BaneDmgAmt = (int8)atoi(row[ItemField::banedmgamt]);
@ -822,12 +825,12 @@ void SharedDatabase::LoadItems(void *data, uint32 size, int32 items, uint32 max_
item.Color = (uint32)atoul(row[ItemField::color]); item.Color = (uint32)atoul(row[ItemField::color]);
item.Classes = (uint32)atoul(row[ItemField::classes]); item.Classes = (uint32)atoul(row[ItemField::classes]);
item.Races = (uint32)atoul(row[ItemField::races]); item.Races = (uint32)atoul(row[ItemField::races]);
//item.Unk054 = (uint32)atoul(row[ItemField::UNK054]);
item.MaxCharges = (int16)atoi(row[ItemField::maxcharges]); item.MaxCharges = (int16)atoi(row[ItemField::maxcharges]);
item.ItemType = (uint8)atoi(row[ItemField::itemtype]); item.ItemType = (uint8)atoi(row[ItemField::itemtype]);
item.Material = (uint8)atoi(row[ItemField::material]); item.Material = (uint8)atoi(row[ItemField::material]);
item.SellRate = (float)atof(row[ItemField::sellrate]); item.SellRate = (float)atof(row[ItemField::sellrate]);
//item.Unk059 = (uint32)atoul(row[ItemField::UNK059]);
item.CastTime = (uint32)atoul(row[ItemField::casttime]); item.CastTime = (uint32)atoul(row[ItemField::casttime]);
item.EliteMaterial = (uint32)atoul(row[ItemField::elitematerial]); item.EliteMaterial = (uint32)atoul(row[ItemField::elitematerial]);
item.ProcRate = (int32)atoi(row[ItemField::procrate]); item.ProcRate = (int32)atoi(row[ItemField::procrate]);
@ -849,7 +852,9 @@ void SharedDatabase::LoadItems(void *data, uint32 size, int32 items, uint32 max_
item.FactionAmt2 = (int32)atoul(row[ItemField::factionamt2]); item.FactionAmt2 = (int32)atoul(row[ItemField::factionamt2]);
item.FactionAmt3 = (int32)atoul(row[ItemField::factionamt3]); item.FactionAmt3 = (int32)atoul(row[ItemField::factionamt3]);
item.FactionAmt4 = (int32)atoul(row[ItemField::factionamt4]); item.FactionAmt4 = (int32)atoul(row[ItemField::factionamt4]);
strcpy(item.CharmFile,row[ItemField::charmfile]); strcpy(item.CharmFile,row[ItemField::charmfile]);
item.AugType = (uint32)atoul(row[ItemField::augtype]); item.AugType = (uint32)atoul(row[ItemField::augtype]);
item.AugSlotType[0] = (uint8)atoi(row[ItemField::augslot1type]); item.AugSlotType[0] = (uint8)atoi(row[ItemField::augslot1type]);
item.AugSlotVisible[0] = (uint8)atoi(row[ItemField::augslot1visible]); item.AugSlotVisible[0] = (uint8)atoi(row[ItemField::augslot1visible]);
@ -866,6 +871,7 @@ void SharedDatabase::LoadItems(void *data, uint32 size, int32 items, uint32 max_
item.AugSlotType[4] = (uint8)atoi(row[ItemField::augslot5type]); item.AugSlotType[4] = (uint8)atoi(row[ItemField::augslot5type]);
item.AugSlotVisible[4] = (uint8)atoi(row[ItemField::augslot5visible]); item.AugSlotVisible[4] = (uint8)atoi(row[ItemField::augslot5visible]);
item.AugSlotUnk2[4] = 0; item.AugSlotUnk2[4] = 0;
item.LDoNTheme = (uint32)atoul(row[ItemField::ldontheme]); item.LDoNTheme = (uint32)atoul(row[ItemField::ldontheme]);
item.LDoNPrice = (uint32)atoul(row[ItemField::ldonprice]); item.LDoNPrice = (uint32)atoul(row[ItemField::ldonprice]);
item.LDoNSold = (uint32)atoul(row[ItemField::ldonsold]); item.LDoNSold = (uint32)atoul(row[ItemField::ldonsold]);
@ -875,7 +881,9 @@ void SharedDatabase::LoadItems(void *data, uint32 size, int32 items, uint32 max_
item.BagWR = (uint8)atoi(row[ItemField::bagwr]); item.BagWR = (uint8)atoi(row[ItemField::bagwr]);
item.Book = (uint8)atoi(row[ItemField::book]); item.Book = (uint8)atoi(row[ItemField::book]);
item.BookType = (uint32)atoul(row[ItemField::booktype]); item.BookType = (uint32)atoul(row[ItemField::booktype]);
strcpy(item.Filename,row[ItemField::filename]); strcpy(item.Filename,row[ItemField::filename]);
item.BaneDmgRaceAmt = (uint32)atoul(row[ItemField::banedmgraceamt]); item.BaneDmgRaceAmt = (uint32)atoul(row[ItemField::banedmgraceamt]);
item.AugRestrict = (uint32)atoul(row[ItemField::augrestrict]); item.AugRestrict = (uint32)atoul(row[ItemField::augrestrict]);
item.LoreGroup = disableLoreGroup ? (uint8)atoi("0") : atoi(row[ItemField::loregroup]); item.LoreGroup = disableLoreGroup ? (uint8)atoi("0") : atoi(row[ItemField::loregroup]);
@ -909,7 +917,9 @@ void SharedDatabase::LoadItems(void *data, uint32 size, int32 items, uint32 max_
item.Click.Type = (uint8)atoul(row[ItemField::clicktype]); item.Click.Type = (uint8)atoul(row[ItemField::clicktype]);
item.Click.Level = (uint8)atoul(row[ItemField::clicklevel]); item.Click.Level = (uint8)atoul(row[ItemField::clicklevel]);
item.Click.Level2 = (uint8)atoul(row[ItemField::clicklevel2]); item.Click.Level2 = (uint8)atoul(row[ItemField::clicklevel2]);
strcpy(item.CharmFile,row[ItemField::charmfile]); strcpy(item.CharmFile,row[ItemField::charmfile]);
item.Proc.Effect = (uint16)atoul(row[ItemField::proceffect]); item.Proc.Effect = (uint16)atoul(row[ItemField::proceffect]);
item.Proc.Type = (uint8)atoul(row[ItemField::proctype]); item.Proc.Type = (uint8)atoul(row[ItemField::proctype]);
item.Proc.Level = (uint8)atoul(row[ItemField::proclevel]); item.Proc.Level = (uint8)atoul(row[ItemField::proclevel]);
@ -954,6 +964,7 @@ void SharedDatabase::LoadItems(void *data, uint32 size, int32 items, uint32 max_
item.ScriptFileID = (uint32)atoul(row[ItemField::scriptfileid]); item.ScriptFileID = (uint32)atoul(row[ItemField::scriptfileid]);
item.ExpendableArrow = (uint16)atoul(row[ItemField::expendablearrow]); item.ExpendableArrow = (uint16)atoul(row[ItemField::expendablearrow]);
item.Clairvoyance = (uint32)atoul(row[ItemField::clairvoyance]); item.Clairvoyance = (uint32)atoul(row[ItemField::clairvoyance]);
strcpy(item.ClickName,row[ItemField::clickname]); strcpy(item.ClickName,row[ItemField::clickname]);
strcpy(item.ProcName,row[ItemField::procname]); strcpy(item.ProcName,row[ItemField::procname]);
strcpy(item.WornName,row[ItemField::wornname]); strcpy(item.WornName,row[ItemField::wornname]);
@ -968,11 +979,6 @@ void SharedDatabase::LoadItems(void *data, uint32 size, int32 items, uint32 max_
} }
} }
mysql_free_result(result);
}
else {
LogFile->write(EQEMuLog::Error, "LoadItems '%s', %s", query, errbuf);
}
} }
const Item_Struct* SharedDatabase::GetItem(uint32 id) { const Item_Struct* SharedDatabase::GetItem(uint32 id) {