From 8d11d42c9e29bc20cae446eb1b30471f0dc72cbc Mon Sep 17 00:00:00 2001 From: ckaotik Date: Wed, 12 May 2010 08:14:58 +0200 Subject: [PATCH] second step to fix selling issues --- core.lua | 29 ++++++++++++++++++++--------- helper.lua | 21 +++++++++++++++++++-- 2 files changed, 39 insertions(+), 11 deletions(-) diff --git a/core.lua b/core.lua index 96f2109..61a7343 100644 --- a/core.lua +++ b/core.lua @@ -646,7 +646,7 @@ function BrokerGarbage:ScanInventory() or BG_GlobalDB.autoSellList[itemID] or BG_LocalDB.autoSellList[itemID] then -- AutoSell isSell = true - force = true + force = false value = vendorPrice if value then value = value * count end @@ -656,7 +656,7 @@ function BrokerGarbage:ScanInventory() ((isVendor and not isExclude) or BG_GlobalDB.forceVendorPrice[itemID]) then -- Force Vendor Price List item isVendor = true - force = true + force = false value = vendorPrice if value then value = value * count end @@ -703,8 +703,9 @@ function BrokerGarbage:ScanInventory() force = force, }) - elseif quality > BG_GlobalDB.dropQuality and source == BrokerGarbage.tagUnusableGear then - tinsert(BrokerGarbage.sellGear, { + elseif quality > BG_GlobalDB.dropQuality and + (source == BrokerGarbage.tagUnusableGear or source == BrokerGarbage.tagVendorList) then + tinsert(BrokerGarbage.sellItems, { bag = container, slot = slot, itemID = itemID, @@ -745,7 +746,10 @@ function BrokerGarbage:GetCheapest(number) local skip = false for _, usedTable in pairs(cheapestItems) do - if usedTable == itemTable then skip = true end + if usedTable == itemTable then + skip = true + break + end end if not skip and itemTable.force then @@ -753,7 +757,12 @@ function BrokerGarbage:GetCheapest(number) end end table.sort(temp, function(a, b) - return a.value < b.value + -- put included items even prior to forced vendor price items + if (a.source == b.source) or (a.source ~= BrokerGarbage.tagInclude and b.source ~= BrokerGarbage.tagInclude) then + return a.value < b.value + else + return a.source == BrokerGarbage.tagInclude + end end) if #temp <= number then @@ -799,10 +808,13 @@ end -- when at a merchant this will clear your bags of junk (gray quality) and items on your autoSellList function BrokerGarbage:AutoSell() if BG_GlobalDB.autoSellToVendor or self == _G["BrokerGarbage_SellIcon"] then + if self == _G["BrokerGarbage_SellIcon"] then + BrokerGarbage:Debug("AutoSell was triggered by a click on Sell Icon.", BrokerGarbage:FormatMoney(sellValue), BrokerGarbage:FormatMoney(BrokerGarbage.toSellValue)) + end local i = 1 local skip sellValue = 0 - for _, itemTable in pairs(BrokerGarbage:JoinTables(BrokerGarbage.inventory, BrokerGarbage.sellGear)) do + for _, itemTable in pairs(BrokerGarbage:JoinSimpleTables(BrokerGarbage.inventory, BrokerGarbage.sellItems)) do local sellByString, excludeByString = false, false local temp, checkTable @@ -872,6 +884,7 @@ function BrokerGarbage:AutoSell() locked = true end + BrokerGarbage:Debug("Selling", itemTable.itemID) sellValue = sellValue + itemTable.value BG_GlobalDB.moneyEarned = BG_GlobalDB.moneyEarned + itemTable.value BG_LocalDB.moneyEarned = BG_LocalDB.moneyEarned + itemTable.value @@ -884,8 +897,6 @@ function BrokerGarbage:AutoSell() end if self == _G["BrokerGarbage_SellIcon"] then - BrokerGarbage:Debug("AutoSell was triggered by a click on Sell Icon.", BrokerGarbage:FormatMoney(sellValue), BrokerGarbage:FormatMoney(toSellValue)) - if sellValue == 0 and BG_GlobalDB.reportNothingToSell then BrokerGarbage:Print(BrokerGarbage.locale.reportNothingToSell) elseif sellValue ~= 0 and not BG_GlobalDB.autoSellToVendor then diff --git a/helper.lua b/helper.lua index 7da63b3..de57773 100644 --- a/helper.lua +++ b/helper.lua @@ -1,6 +1,6 @@ _, BrokerGarbage = ... -local debug = false -- set this to 'true' to get your chatframe spammed :D +local debug = true -- set this to 'true' to get your chatframe spammed :D -- Addon Basics @@ -32,7 +32,7 @@ function BrokerGarbage:Find(table, value) return false end --- joins any number of tables together, one after the other. elements within the input-tables will get mixed, though +-- joins any number of non-basic index tables together, one after the other. elements within the input-tables will get mixed, though function BrokerGarbage:JoinTables(...) local result = {} local tab @@ -49,6 +49,23 @@ function BrokerGarbage:JoinTables(...) return result end +-- joins numerically indexed tables +function BrokerGarbage:JoinSimpleTables(...) + local result = {} + local tab, i, j + + for i=1,select("#", ...) do + tab = select(i, ...) + if tab then + for _, value in pairs(tab) do + tinsert(result, value) + end + end + end + + return result +end + function BrokerGarbage:Count(table) local i = 0 for _, _ in pairs(table) do i = i + 1 end -- 1.7.9.5