Есть вполне конкретный вопрос. Может кто-то помочь человеку без многомесячного изучения lua присвоить условной иконке weak auras возможность кликнуть по предмету из подсказки без подтасовывания под интерфейс всяких Bartender.
Ситуация так же вполне конкретная. Будучи тем ещё ленивым фармером я для себя прописываю подсказки с триггерами на сбор достаточного количества ингредиентов (ежедневные ресурсы пандарии/дренора; либо, сейчас актуально - фрагменты реликвий для сундуков в нападениях. Нужно сделать отображаемые фрагменты кликабельными в области подсказки, без поиска их в сумках. Либо, в случае с крафтовыми материалами, присвоить кнопке открытие окна профессии, если возможно. Знаю, сейчас у многих аддонов с этим в принципе проблема.
Я находил статью в интернете одного товарища, который пилил для себя в Weak Auras интерфейс Diablo, но там слишком много лишней информации, при этом какие-то более мелкие детали не упоминаются - очевидно, автор называет продвинутыми пользователей, которые и без его статьи могут написать аддон.
Попробовал создать вашку, не знаю, понял ли точно что тебе нужно. Можно ипортировать отсюда: https://pastebin.com/AxrUXq3X
Вся фишка в создании фрейма SecureActionButtonTemplate в который можно передавать использование предметов или макросов
По всей видимости не совсем правильно понял. Но этот код помог мне отыскать то, что мне было нужно. Спасибо! https://pastebin.com/xMZvraAu
Отыскал в функции отображения камня здоровья при наличии, не удивлюсь, если утянул что-то лишнее, не вполне разбираюсь; но работает ведь! Реализовал желаемое на примере временного расходника из шахты гарнизона, в целом этой короткой функции мне достаточно, остальное я смогу уже осуществить в интерфейсе WA.
P. S. Долгое время не мог понять почему не работает, оказалось что кнопка не кликалась из-за активного отображения подсказки к предмету. Странные дела.
P. P. S. Не могу только понять, почему таким же образом не получается настроить открытие окна профессии. Ни при помощи spell, ни за счёт SetAttribute(“macrotext”, “/закл Кузнечное дело”). Аллергия на кириллицу?
Всё равно кнопка прокликивается насквозь. Почему-то никакая команда кроме использования предмета у меня не работает. Ну да это уже не суть важно, самое докучающее удалось решить.
local f = WeakAuras["regions"][aura_env.id]["region"]
if not f.button then
f.button = CreateFrame("Button", nil, f,"SecureActionButtonTemplate")
f.button:SetAttribute("type", "item")
f.button:SetAttribute("item", "item:92960")
f.button:SetAllPoints(f)
end
В последний раз работала. Вместо item:92960 соответственно прописываем нужный ID. Думаю, можно менять на другие параметры. Главное отключить в разделе “отображение” подсказку при наведении курсора. Она почему-то не дружит с кликабельностью.
Я их использую для всякой мелочи, вроде кофе в шахте гарнизона, фрагментов реликвий из локаций 8.3 и аналогичных предметов, действующих по принципу “собери n штук и заюзай”. Поэтому прошу не злоупотреблять. Мне хватило удаления из игры автопоиска заранее собранных групп из-за прыгунов по серверам…
UPD
Ииии… этот код не работает в Dragonflight. Однако, мне удалось методом подбора аналогов в Wago подобрать код, который заставил кнопку снова работать (сам в шоке).
Искомый код
local self = aura_env
if self. Frame then
self.frame:Hide()
self.frame:SetParent(nil)
end
self.frame = CreateFrame('Button', WeakAuras.GenerateUniqueID(), self.region,
'SecureActionButtonTemplate')
self.frame:SetAllPoints()
self.frame:SetAttribute("type", "item")
self.frame:SetAttribute("item", "item:СЮДААЙДИ")
self.frame:RegisterForClicks("LeftButtonDown", "LeftButtonUp")
Эх… Теперь все старые кнопки под это переписывать…
if not aura_env.clickableFrame then
local r = aura_env.region
aura_env.clickableFrame = CreateFrame("Button", "container_button", r, "SecureActionButtonTemplate")
end
aura_env.clickableFrame:SetAllPoints()
aura_env.clickableFrame:RegisterForClicks("LeftButtonDown", "LeftButtonUp")
aura_env.clickableFrame:SetAttribute("type", "macro")
aura_env.clickableFrame:SetAttribute("macrotext", [[
/cast Призыв распорядителя
/click StaticPopup1Button1
]])