Загрузить файлы в «/»

This commit is contained in:
Ade
2026-10-30 06:34:25 +00:00
parent 07a5723bd8
commit ac5248f9b7
4 changed files with 66 additions and 14 deletions
+1 -1
View File
@@ -2,7 +2,7 @@
## Title: Ade Alts
## Notes: Alt manager: cooldowns, inventory, bank, gear, professions and missing recipes of all your characters. /ade
## Author: Ade
## Version: 1.2.3
## Version: 1.2.4
## SavedVariables: AdeAltsDB, ProfCDTrackerDB
## OptionalDeps: pfUI, SuperWoW, nampower
core.lua
+3
View File
@@ -1,5 +1,8 @@
# Changelog
## 1.2.4
- Fixed: recipe items whose name differs from the crafted item (e.g. Pattern: Guardian Bracers -> Guardian Leather Bracers) showed no alt info. Recipes are now identified by item id.
## 1.2.3
- Guild / party / raid chat sync is now **off by default**; enable it with `/ade chat`. Shared-file sync (SuperWoW) is unaffected.
+1 -1
View File
@@ -7,7 +7,7 @@ local AA = AdeAlts
-- Command: /pcd Minimap button: auto-docked by pfUI's addon button panel.
AA.ADDON = "AdeAlts"
AA.VERSION = "1.2.3"
AA.VERSION = "1.2.4"
AA.PREFIX = "PCDT"
AA.DAY = 86400
AA.RDATA = {} -- recipe database, filled by the data_*.lua files
+61 -12
View File
@@ -3,19 +3,42 @@ local AA = AdeAlts
local PREFIX = { Pattern = 1, Recipe = 1, Plans = 1, Formula = 1, Schematic = 1, Manual = 1, Design = 1, Book = 1, Technique = 1 }
-- finds the craft(s) taught by the item in the tooltip: by item id (from the item link) first,
-- then by the "Teaches you how to craft X" line, finally by the item name
local function FindHits(tt)
local idx = AA.RIndex()
if tt.adeLink then
local _, _, id = string.find(tt.adeLink, "item:(%d+)")
if id and idx.byItem[tonumber(id)] then return idx.byItem[tonumber(id)] end
end
local name = tt:GetName()
local title
for i = 1, tt:NumLines() do
local fs = getglobal(name .. "TextLeft" .. i)
local txt = fs and fs:GetText()
if txt then
if i == 1 then title = txt end
local _, _, id = string.find(txt, "ItemID: (%d+)")
if id and idx.byItem[tonumber(id)] then return idx.byItem[tonumber(id)] end
local _, _, craft = string.find(txt, "Teaches you how to craft (.-)%.?$")
if craft and idx.byAny[string.lower(craft)] then return idx.byAny[string.lower(craft)] end
end
end
if title then
local _, _, pre, nm = string.find(title, "^(%a+): (.+)$")
if pre and PREFIX[pre] and idx.byAny[string.lower(nm)] then return idx.byAny[string.lower(nm)] end
end
return nil
end
function AA.EnhanceTooltip(tt)
if not AA.db or not AA.RIndex or tt.adeDone then return end
local l1 = getglobal(tt:GetName() .. "TextLeft1")
local txt = l1 and l1:GetText()
if not txt then return end
local _, _, pre, nm = string.find(txt, "^(%a+): (.+)$")
if not pre or not PREFIX[pre] then return end
local hits = AA.RIndex().byAny[string.lower(nm)]
local hits = FindHits(tt)
if not hits then return end
tt.adeDone = true
local key = string.lower(nm)
local added = false
for _, h in ipairs(hits) do
local key = string.lower(h.c[2])
for _, k in ipairs(AA.SortedAlts()) do
local ch = AA.db.chars[k]
local p = ch and ch.prof and ch.prof[h.prof]
@@ -49,16 +72,42 @@ function AA.EnhanceTooltip(tt)
if added then tt:Show() end
end
-- tooltip functions that show an item: remember the item link, then add our lines
local GETTERS = {
SetBagItem = function(a, b) return GetContainerItemLink(a, b) end,
SetInventoryItem = function(a, b) return GetInventoryItemLink(a, b) end,
SetHyperlink = function(a) return a end,
SetLootItem = function(a) return GetLootSlotLink(a) end,
SetMerchantItem = function(a) return GetMerchantItemLink(a) end,
SetAuctionItem = function(a, b) return GetAuctionItemLink(a, b) end,
SetQuestItem = function(a, b) return GetQuestItemLink(a, b) end,
SetQuestLogItem = function(a, b) return GetQuestLogItemLink(a, b) end,
SetTradePlayerItem = function(a) return GetTradePlayerItemLink(a) end,
SetTradeTargetItem = function(a) return GetTradeTargetItemLink(a) end,
SetInboxItem = function(a) return GetInboxItemLink and GetInboxItemLink(a, 1) end,
SetTradeSkillItem = function(a, b) return GetTradeSkillItemLink and GetTradeSkillItemLink(a) end,
}
local function Hook(tt)
if not tt then return end
local oldShow = tt:GetScript("OnShow")
tt:SetScript("OnShow", function()
if oldShow then oldShow() end
AA.EnhanceTooltip(this)
end)
for fname, getter in pairs(GETTERS) do
local orig = tt[fname]
if orig then
tt[fname] = function(self, a, b, c, d)
local r1, r2, r3 = orig(self, a, b, c, d)
self.adeDone = nil
local ok, link = pcall(getter, a, b)
self.adeLink = ok and link or nil
AA.EnhanceTooltip(self)
return r1, r2, r3
end
end
end
-- forget the item when the tooltip closes
local oldHide = tt:GetScript("OnHide")
tt:SetScript("OnHide", function()
this.adeDone = nil
this.adeLink = nil
if oldHide then oldHide() end
end)
end