From 26f965e251fe041ec8db1a686ddf6bd3018edc59 Mon Sep 17 00:00:00 2001 From: KimLS Date: Sat, 23 Feb 2013 22:42:40 -0800 Subject: [PATCH] Fix for shared memory loot: both the inconsistent tables and the not loading of tables with no items --- common/shareddb.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/common/shareddb.cpp b/common/shareddb.cpp index f4b4faeea..222f1fbdf 100644 --- a/common/shareddb.cpp +++ b/common/shareddb.cpp @@ -1790,7 +1790,7 @@ void SharedDatabase::LoadLootTables(void *data, uint32 size) { EQEmu::FixedMemoryVariableHashSet hash(reinterpret_cast(data), size); const char *query = "SELECT loottable.id, loottable.mincash, loottable.maxcash, loottable.avgcoin," " loottable_entries.lootdrop_id, loottable_entries.multiplier, loottable_entries.droplimit, " - "loottable_entries.mindrop, loottable_entries.probability FROM loottable JOIN loottable_entries" + "loottable_entries.mindrop, loottable_entries.probability FROM loottable LEFT JOIN loottable_entries" " ON loottable.id = loottable_entries.loottable_id ORDER BY id"; char errbuf[MYSQL_ERRMSG_SIZE]; MYSQL_RES *result; @@ -1820,6 +1820,10 @@ void SharedDatabase::LoadLootTables(void *data, uint32 size) { if(current_entry > 128) { continue; } + + if(!row[4]) { + continue; + } lt->Entries[current_entry].lootdrop_id = static_cast(atoul(row[4])); lt->Entries[current_entry].multiplier = static_cast(atoi(row[5])); @@ -1924,7 +1928,7 @@ const LootTable_Struct* SharedDatabase::GetLootTable(uint32 loottable_id) { return NULL; try { - if(loot_drop_hash->exists(loottable_id)) { + if(loot_table_hash->exists(loottable_id)) { return &loot_table_hash->at(loottable_id); } } catch(std::exception &ex) {