[Bug Fix] Limit merchant temp item list to zone and instance (#2346)

This prevents issues with a merchant being in more than one zone as well
as guild hall merchants sharing a list of temp items
This commit is contained in:
Michael Cook (mackal)
2022-07-30 23:22:09 -04:00
committed by GitHub
parent 53b599518a
commit c6cfcc3ea9
6 changed files with 20 additions and 12 deletions
+6 -5
View File
@@ -3133,15 +3133,16 @@ uint8 ZoneDatabase::GetGridType(uint32 grid, uint32 zoneid ) {
return atoi(row[0]);
}
void ZoneDatabase::SaveMerchantTemp(uint32 npcid, uint32 slot, uint32 item, uint32 charges){
void ZoneDatabase::SaveMerchantTemp(uint32 npcid, uint32 slot, uint32 zone_id, uint32 instance_id, uint32 item, uint32 charges){
std::string query = StringFormat("REPLACE INTO merchantlist_temp (npcid, slot, itemid, charges) "
"VALUES(%d, %d, %d, %d)", npcid, slot, item, charges);
std::string query = StringFormat("REPLACE INTO merchantlist_temp (npcid, slot, zone_id, instance_id, itemid, charges) "
"VALUES(%d, %d, %d, %d, %d, %d)", npcid, slot, zone_id, instance_id, item, charges);
QueryDatabase(query);
}
void ZoneDatabase::DeleteMerchantTemp(uint32 npcid, uint32 slot){
std::string query = StringFormat("DELETE FROM merchantlist_temp WHERE npcid=%d AND slot=%d", npcid, slot);
void ZoneDatabase::DeleteMerchantTemp(uint32 npcid, uint32 slot, uint32 zone_id, uint32 instance_id) {
std::string query = StringFormat("DELETE FROM merchantlist_temp WHERE npcid=%d AND slot=%d AND zone_id=%d AND instance_id=%d",
npcid, slot, zone_id, instance_id);
QueryDatabase(query);
}