Browse Source

Auto looter, Print fix, auto delete Ascension empty mails (#19)

* Fixing Auto looter

* Fixing prints for quantity

* Deleting empty (already looted) ascension mails for postmaster, stuck AH pages, and customer support.
pull/22/head
Szyler 1 year ago committed by GitHub
parent
commit
7899324b3b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 75
      TradeSkillMaster_Mailing/Modules/Inbox.lua

75
TradeSkillMaster_Mailing/Modules/Inbox.lua

@ -263,18 +263,22 @@ function private:InboxUpdate()
if isInvoice then
local invoiceType, itemName, playerName, bid, buyout, deposit, ahcut, _, _, _, quantity = GetInboxInvoiceInfo(i)
sender = sender or "?"
if sender == "Blackwater Auction House" then sender = "AH" end
if not quantity then
quantity = select(3, GetInboxItem(i))
end
-- fix MoP difference
if (quantity == nil) then quantity = itemQuantity end
if invoiceType == "buyer" then
local itemLink = GetInboxItemLink(i, 1) or itemName
mailInfo[i] = format(L["Buy: %s (%d) | %s | %s"], itemLink, quantity or 0, TSMAPI:FormatTextMoney(bid, redColor), FormatDaysLeft(daysLeft, i))
mailInfo[i] = format(L["Buy: %s (%d) | %s | %s"], itemLink, quantity or 1, TSMAPI:FormatTextMoney(bid, redColor), FormatDaysLeft(daysLeft, i))
elseif invoiceType == "seller" then
collectGold = collectGold + bid - ahcut
--mailInfo[i] = format(L["Sale: %s (%d) | %s | %s"], itemName, quantity, TSMAPI:FormatTextMoney(bid - ahcut, greenColor), FormatDaysLeft(daysLeft, i))
mailInfo[i] = format("Sale: %s | %s | %s", itemName, TSMAPI:FormatTextMoney(bid - ahcut, greenColor), FormatDaysLeft(daysLeft, i))
mailInfo[i] = format(L["Sale: %s (%d) | %s | %s"], itemName, quantity or 1, TSMAPI:FormatTextMoney(bid - ahcut, greenColor), FormatDaysLeft(daysLeft, i))
-- mailInfo[i] = format("Sale: %s | %s | %s", itemName, TSMAPI:FormatTextMoney(bid - ahcut, greenColor), FormatDaysLeft(daysLeft, i))
elseif invoiceType == "seller_temp_invoice" then
mailInfo[i] = format("Pending Sale: %s | %s | %s", itemName, TSMAPI:FormatTextMoney(bid - ahcut, yellowColor), FormatDaysLeft(daysLeft, i))
mailInfo[i] = format("Pending Sale: %s (%d) | %s | %s", itemName, quantity or 1, TSMAPI:FormatTextMoney(bid - ahcut, yellowColor), FormatDaysLeft(daysLeft, i))
-- mailInfo[i] = format("Pending Sale: %s | %s | %s", itemName, TSMAPI:FormatTextMoney(bid - ahcut, yellowColor), FormatDaysLeft(daysLeft, i))
end
elseif hasItem then
local itemLink
@ -317,27 +321,27 @@ function private:InboxUpdate()
private:UpdateTopLabel()
-- Yay nothing else to loot, so nothing else to update the cache for!
if private.cacheFrame.endTime and numMail == totalMail and private.lastTotal ~= totalMail then
private.cacheFrame.endTime = nil
private.cacheFrame:Hide()
-- Start a timer since we're over the limit of 50 items before waiting for it to recache
elseif (private.cacheFrame.endTime and numMail >= 50 and private.lastTotal ~= totalMail) or (numMail >= 50 and private.allowTimerStart) then
private.resetIndex = nil
private.allowTimerStart = nil
private.waitingForData = nil
private.lastTotal = totalMail
private.cacheFrame.endTime = GetTime() + 60
private.cacheFrame:Show()
end
-- -- Yay nothing else to loot, so nothing else to update the cache for!
-- if private.cacheFrame.endTime and numMail == totalMail and private.lastTotal ~= totalMail then
-- private.cacheFrame.endTime = nil
-- private.cacheFrame:Hide()
-- -- Start a timer since we're over the limit of 50 items before waiting for it to recache
-- elseif (private.cacheFrame.endTime and numMail >= 50 and private.lastTotal ~= totalMail) or (numMail >= 50 and private.allowTimerStart) then
-- private.resetIndex = nil
-- private.allowTimerStart = nil
-- private.waitingForData = nil
-- private.lastTotal = totalMail
-- private.cacheFrame.endTime = GetTime() + 60
-- private.cacheFrame:Show()
-- end
-- The last item we setup to auto loot is finished, time for the next one
if not private.frame.buttonsEnabled then
if private.autoLootTotal ~= numMail then
private.autoLootTotal = GetInboxNumItems()
-- if private.autoLootTotal ~= numMail then
-- private.autoLootTotal = GetInboxNumItems()
-- If we're auto checking mail when new data is available, will wait and continue auto looting, otherwise we just stop now
if numMail == 0 and (not TSM.db.global.autoCheck or totalMail == 0) then
if totalMail == 0 then
private:StopAutoLooting()
else
private:AutoLoot()
@ -350,7 +354,7 @@ function private:InboxUpdate()
return private:AutoLoot()
end
end)
end
-- end
end
end
@ -447,8 +451,8 @@ function private:AutoLoot()
return
end
local money, cod, _, items, _, _, _, _, isGM = select(5, GetInboxHeaderInfo(private.lootIndex))
if not isGM and (not cod or cod <= 0) and ((money and money > 0) or (items and items > 0)) or GetInboxInvoiceInfo(private.lootIndex) == "seller_temp_invoice" then
local _, _, sender, subject, money, cod, _, items, _, _, _, _, isGM = GetInboxHeaderInfo(private.lootIndex)
if (sender == "The Postmaster" or sender == "Blackwater Auction House" or sender == "Customer Support") or not isGM and (not cod or cod <= 0) and ((money and money > 0) or (items and items > 0)) or GetInboxInvoiceInfo(private.lootIndex) == "seller_temp_invoice" then
TSMAPI:CancelFrame("mailWaitDelay")
if private.mode == "all" then
if money > 0 then
@ -487,14 +491,17 @@ end
function private:LootMailItem(index)
if TSM.db.global.inboxMessages then
--local _, _, sender, subject, money, cod, _, hasItem = GetInboxHeaderInfo(index)
local _, _, sender, subject, money, cod, _, hasItem, _, _, _, _, _, itemQuantity = GetInboxHeaderInfo(index)
local _, _, sender, subject, money, cod, daysLeft, hasItem, _, _, _, _, _, itemQuantity = GetInboxHeaderInfo(index)
sender = sender or "?"
if select(4, GetInboxText(index)) then
isTakeable = select(4, GetInboxText(index))
if isTakeable then
-- it's an invoice
local invoiceType, itemName, playerName, bid, _, _, ahcut, _, _, _, quantity = GetInboxInvoiceInfo(index)
-- fix MoP difference
if (quantity == nil) then quantity = itemQuantity end
if not quantity then
quantity = select(3, GetInboxItem(index))
end
local redColor = "|cffFF0000"
local greenColor = "|cff00FF00"
@ -502,12 +509,13 @@ function private:LootMailItem(index)
if invoiceType == "buyer" then
local itemLink = GetInboxItemLink(index, 1) or itemName
TSM:Printf(L["Collected purchase of %s (%d) for %s."], itemLink, quantity, TSMAPI:FormatTextMoney(bid, redColor))
TSM:Printf(L["Collected purchase of %s (%d) for %s."], itemLink, quantity or 1, TSMAPI:FormatTextMoney(bid, redColor))
elseif invoiceType == "seller" then
--TSM:Printf(L["Collected sale of %s (%d) for %s."], itemName, quantity, TSMAPI:FormatTextMoney(bid - ahcut, greenColor))
TSM:Printf("Collected sale of %s for %s.", itemName, TSMAPI:FormatTextMoney(bid - ahcut, greenColor))
TSM:Printf(L["Collected sale of %s (%d) for %s."], itemName, quantity or 1, TSMAPI:FormatTextMoney(bid - ahcut, greenColor))
-- TSM:Printf("Collected sale of %s for %s.", itemName, TSMAPI:FormatTextMoney(bid - ahcut, greenColor))
elseif invoiceType == "seller_temp_invoice" then
TSM:Printf("Removing pending sale: %s (%s)", itemName, TSMAPI:FormatTextMoney(bid - ahcut, yellowColor))
-- TSM:Printf("Removing pending sale: %s (%s)", itemName, TSMAPI:FormatTextMoney(bid - ahcut, yellowColor))
TSM:Printf("Removing pending sale of %s (%d) for %s.", itemName, quantity or 1, TSMAPI:FormatTextMoney(bid - ahcut, yellowColor))
DeleteInboxItem(index)
return
end
@ -536,6 +544,9 @@ function private:LootMailItem(index)
end
elseif money > 0 then
TSM:Printf(L["Collected %s from %s."], TSMAPI:FormatTextMoney(money, greenColor), sender)
elseif (sender == "The Postmaster" or sender == "Blackwater Auction House" or sender == "Customer Support" and subject == "Your Ascension Order" and daysLeft < 270) and money == 0 and hasItem == nil then
TSM:Printf("Removing empty mail from %s.", sender)
DeleteInboxItem(index)
else
TSM:Printf(L["Collected mail from %s with a subject of '%s'."], sender, subject)
end

Loading…
Cancel
Save