Weak Auras - кликабельная кнопка [Решение найдено]

Доброго времени суток всем мимопроходцам.

Есть вполне конкретный вопрос. Может кто-то помочь человеку без многомесячного изучения lua присвоить условной иконке weak auras возможность кликнуть по предмету из подсказки без подтасовывания под интерфейс всяких Bartender.

Ситуация так же вполне конкретная. Будучи тем ещё ленивым фармером я для себя прописываю подсказки с триггерами на сбор достаточного количества ингредиентов (ежедневные ресурсы пандарии/дренора; либо, сейчас актуально - фрагменты реликвий для сундуков в нападениях. Нужно сделать отображаемые фрагменты кликабельными в области подсказки, без поиска их в сумках. Либо, в случае с крафтовыми материалами, присвоить кнопке открытие окна профессии, если возможно. Знаю, сейчас у многих аддонов с этим в принципе проблема.

Я находил статью в интернете одного товарища, который пилил для себя в Weak Auras интерфейс Diablo, но там слишком много лишней информации, при этом какие-то более мелкие детали не упоминаются - очевидно, автор называет продвинутыми пользователей, которые и без его статьи могут написать аддон.

2 лайка

Попробовал создать вашку, не знаю, понял ли точно что тебе нужно. Можно ипортировать отсюда: https://pastebin.com/AxrUXq3X
Вся фишка в создании фрейма SecureActionButtonTemplate в который можно передавать использование предметов или макросов

Лайков: 1

По всей видимости не совсем правильно понял. Но этот код помог мне отыскать то, что мне было нужно. Спасибо!
https://pastebin.com/xMZvraAu

Отыскал в функции отображения камня здоровья при наличии, не удивлюсь, если утянул что-то лишнее, не вполне разбираюсь; но работает ведь! Реализовал желаемое на примере временного расходника из шахты гарнизона, в целом этой короткой функции мне достаточно, остальное я смогу уже осуществить в интерфейсе WA.
P. S. Долгое время не мог понять почему не работает, оказалось что кнопка не кликалась из-за активного отображения подсказки к предмету. Странные дела.
P. P. S. Не могу только понять, почему таким же образом не получается настроить открытие окна профессии. Ни при помощи spell, ни за счёт SetAttribute(“macrotext”, “/закл Кузнечное дело”). Аллергия на кириллицу?

Лайков: 1

Попробуй так
local openMacro = [=[
/закл Кузнечное дело
]=]
SetAttribute(“type1”, “macro”);
SetAttribute(“macrotext1”, openMacro);

2 лайка

Всё равно кнопка прокликивается насквозь. Почему-то никакая команда кроме использования предмета у меня не работает. Ну да это уже не суть важно, самое докучающее удалось решить.

Обратите внимание на данное сообщение

Лайков: 1

жаль что оба кода отсутствуют внутри этой темы, данного форума, ибо обе ссылки на код мертвы.

2 лайка

Я тут заметил сообщение. Ну, в общем…

Код для игры до Dragonflight
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")

Эх… Теперь все старые кнопки под это переписывать…

3 лайка

гдет за 2 месяца пофиксили, на

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
]])
2 лайка