203 lines
8.5 KiB
Lua
203 lines
8.5 KiB
Lua
--Idea:
|
|
--Get loot from everyone
|
|
--Put loot in table sorted with everyone
|
|
--If AH visit get prices of boe items? and DE mats
|
|
--In item table add value in vendor, AH and DE
|
|
--Add option to export all to excel
|
|
--Add timer (toggleable?) with a button and macro
|
|
--Add option to mark significant items, idk how maybe use macro maybe some sort of button
|
|
--Use only for guildies
|
|
--Maybe reminder to turn timer on
|
|
--Maybe individual member timer
|
|
--Sort table by member > item > iteminfo
|
|
--Where member holds time and key is name
|
|
--Maybe use time as start and endtime
|
|
--Maybe establish comms with other weakauras to make sure times are synced
|
|
--Add gold / hour !!
|
|
--Maybe add split gold f(totalgold, membertimespent)?
|
|
--Google sheets uses tab for column seperation and newline for row seperation !!
|
|
--Make into addon not weakaura
|
|
|
|
--CHAT_MSG_LOOT AUCTION_HOUSE_SHOW AUCTION_ITEM_LIST_UPDATE AH_READY
|
|
function(e, msg)
|
|
if e == "CHAT_MSG_LOOT" then
|
|
if msg then
|
|
local who = msg:match("%w+")
|
|
if who == "You" then who = UnitName("player") end
|
|
if who:match("(-)") then who:match("(.+)-%w*") end
|
|
local howmuch = msg:match("(x%d+).$")
|
|
local link
|
|
for itemLink in msg:gmatch("|%x+|Hitem:.-|h.-|h|r") do
|
|
link = itemLink
|
|
end
|
|
local itemName, _, itemQuality, _, _, itemType = GetItemInfo(link)
|
|
local itemLevel = GetDetailedItemLevelInfo(link)
|
|
if itemQuality > 1 then
|
|
if not aura_env.lootTable[who] then aura_env.lootTable[who] = {["items"] = {}} end
|
|
if not aura_env.lootTable[who].items[itemName] then
|
|
aura_env.lootTable[who].items[itemName] = {
|
|
["name"] = itemName,
|
|
["vendor"] = select(11, GetItemInfo(link)),
|
|
["quantity"] = howmuch or 1,
|
|
}
|
|
--Handles DE price prediction
|
|
--if itemType == "Armor" or itemType == "Weapon" then
|
|
-- print("itemLevel", itemLevel)
|
|
-- if itemLevel >= 45 and itemLevel <= 55 then
|
|
-- local price = 0
|
|
-- for k,v in pairs(WeakAurasSaved.LootLog.DEStats[1]) do
|
|
-- price = price + (v * WeakAurasSaved.LootLog.AHPrices[k])
|
|
-- end
|
|
-- price = price * (howmuch or 1)
|
|
-- aura_env.lootTable[who].items[itemName].DE = price
|
|
-- DevTools_Dump(aura_env.lootTable)
|
|
-- elseif itemLevel >= 56 then
|
|
-- local price = 0
|
|
-- for k,v in pairs(WeakAurasSaved.LootLog.DEStats[2]) do
|
|
-- price = price + (v * WeakAurasSaved.LootLog.AHPrices[k])
|
|
-- end
|
|
-- price = price * (howmuch or 1)
|
|
-- aura_env.lootTable[who].items[itemName].DE = price
|
|
-- DevTools_Dump(aura_env.lootTable)
|
|
-- elseif itemLevel > 58 and itemLevel < 77 and itemQuality == 4 then
|
|
-- local price = 0
|
|
-- for k,v in pairs(WeakAurasSaved.LootLog.DEStats[3]) do
|
|
-- price = price + (v * WeakAurasSaved.LootLog.AHPrices[k])
|
|
-- end
|
|
-- price = price * (howmuch or 1)
|
|
-- aura_env.lootTable[who].items[itemName].DE = price
|
|
-- DevTools_Dump(aura_env.lootTable)
|
|
-- end
|
|
--end
|
|
if WeakAurasSaved.LootLog.Notables[itemName] then
|
|
aura_env.lootTable[who].items[itemName].AH = WeakAurasSaved.LootLog.Notables[itemName]
|
|
end
|
|
else
|
|
aura_env.lootTable[who].items[itemName].quantity = aura_env.lootTable[who].items[itemName].quantity + 1
|
|
end
|
|
end
|
|
DevTools_Dump(aura_env.lootTable)
|
|
--DevTools_Dump(WeakAurasSaved.LootLog)
|
|
end
|
|
elseif e == "AUCTION_HOUSE_SHOW" then
|
|
DevTools_Dump(WeakAurasSaved.LootLog.AHPrices)
|
|
if aura_env.i == 1 then
|
|
QueryAuctionItems("Illusion Dust")
|
|
print("Querry", "Illusion Dust")
|
|
end
|
|
--Querry update that fires item list update then get item info from like a page or two and get median value if the spread isn't too much
|
|
elseif e == "AUCTION_ITEM_LIST_UPDATE" then
|
|
--Get auction info
|
|
if not aura_env.timer then
|
|
SortAuctionSetSort("list", "buyout")
|
|
SortAuctionApplySort("list")
|
|
end
|
|
if aura_env.timer then aura_env.timer:Cancel(); aura_env.timer = nil end
|
|
if not aura_env.timer then aura_env.timer = C_Timer.NewTimer(1, function() WeakAuras.ScanEvents("AH_READY") end) end
|
|
elseif e == "AH_READY" then
|
|
if aura_env.timer then aura_env.timer = nil end
|
|
local masterName, masterID
|
|
if aura_env.i == 1 then
|
|
masterName = "Illusion Dust"
|
|
masterID = "ID"
|
|
elseif aura_env.i == 2 then
|
|
masterName = "Dream Dust"
|
|
masterID = "DD"
|
|
elseif aura_env.i == 3 then
|
|
masterName = "Small Brillaint Shard"
|
|
masterID = "SBS"
|
|
elseif aura_env.i == 4 then
|
|
masterName = "Large Brilliant Shard"
|
|
masterID = "LBS"
|
|
elseif aura_env.i == 5 then
|
|
masterName = "Lesser Eternal Essence"
|
|
masterID = "LEE"
|
|
elseif aura_env.i == 6 then
|
|
masterName = "Greater Eternal Essence"
|
|
masterID = "GEE"
|
|
end
|
|
for i = 1, GetNumAuctionItems("list") do
|
|
local name, _, count = GetAuctionItemInfo("list", i)
|
|
local buyoutPrice = select(10, GetAuctionItemInfo("list", i))
|
|
if name == masterName then
|
|
local pricePerEach = buyoutPrice / count
|
|
if WeakAurasSaved.LootLog.AHPrices[masterID] == 0 then
|
|
WeakAurasSaved.LootLog.AHPrices[masterID] = pricePerEach
|
|
else
|
|
WeakAurasSaved.LootLog.AHPrices[masterID] = (WeakAurasSaved.LootLog.AHPrices[masterID] + pricePerEach) / 2
|
|
end
|
|
end
|
|
end
|
|
aura_env.i = aura_env.i + 1
|
|
if WeakAurasSaved.LootLog.AHPrices[masterID] then WeakAurasSaved.LootLog.AHPrices[masterID] = math.floor(WeakAurasSaved.LootLog.AHPrices[masterID]) end
|
|
--DevTools_Dump(WeakAurasSaved.LootLog.AHPrices)
|
|
if aura_env.i == 1 then
|
|
masterName = "Illusion Dust"
|
|
masterID = "ID"
|
|
elseif aura_env.i == 2 then
|
|
masterName = "Dream Dust"
|
|
masterID = "DD"
|
|
elseif aura_env.i == 3 then
|
|
masterName = "Small Brillaint Shard"
|
|
masterID = "SBS"
|
|
elseif aura_env.i == 4 then
|
|
masterName = "Large Brilliant Shard"
|
|
masterID = "LBS"
|
|
elseif aura_env.i == 5 then
|
|
masterName = "Lesser Eternal Essence"
|
|
masterID = "LEE"
|
|
elseif aura_env.i == 6 then
|
|
masterName = "Greater Eternal Essence"
|
|
masterID = "GEE"
|
|
elseif aura_env.i > 6 then
|
|
print("AH Scan complete")
|
|
DevTools_Dump(WeakAurasSaved.LootLog.AHPrices)
|
|
masterName = nil
|
|
masterID = nil
|
|
aura_env.i = 1
|
|
end
|
|
if masterName then
|
|
QueryAuctionItems(masterName)
|
|
print("Querry", masterName)
|
|
end
|
|
end
|
|
end
|
|
|
|
--INIT
|
|
aura_env.i = 1
|
|
aura_env.lootTable = {}
|
|
if not WeakAurasSaved.LootLog then WeakAurasSaved.LootLog = {} end
|
|
if not WeakAurasSaved.LootLog.AHPrices then
|
|
WeakAurasSaved.LootLog.AHPrices = {
|
|
["ID"] = 0,
|
|
["DD"] = 0,
|
|
["SBS"] = 0,
|
|
["LBS"] = 0,
|
|
["LEE"] = 0,
|
|
["GEE"] = 0,
|
|
}
|
|
end
|
|
if not WeakAurasSaved.LootLog.DEStats then
|
|
WeakAurasSaved.LootLog.DEStats = {
|
|
--<45,55>
|
|
[1] = {
|
|
["DD"] = 0,
|
|
["SBS"] = 0,
|
|
["LBS"] = 0,
|
|
["LEE"] = 0,
|
|
["GEE"] = 0,
|
|
["GME"] = 0,
|
|
},
|
|
--<56,65>
|
|
[2] = {
|
|
["ID"] = 2.8699,
|
|
["LBS"] = 0.018,
|
|
["GEE"] = 0.4,
|
|
},
|
|
--Purple items between 59 and 78
|
|
[3] = {
|
|
["LBS"] = 0,
|
|
},
|
|
}
|
|
end
|
|
if not WeakAurasSaved.LootLog.Notables then WeakAurasSaved.LootLog.Notables = {} end |