Szukam sposobu na dodanie wyświetlanego cooldownu do makra, najlepiej żeby sczytywało cooldown ze skilla użytego w tym makro. Samego makra nie udało mi się znaleźć a jedynie addony, sprawdzałem już MacroCooldowns i ExtraActionBars jednak nie spełniają zadania w tym przypadku, makro posiada warunki i nawet jeśli nie użyje skilla to odpala cooldown. Najlepiej wypadł nkXtdMacro który byłby idealny jednak posiada dużą wadę która go skreśla, powoduje mikro ściny podczas używania skilli i to nie tylko makr.
Sam addon nie jest długi więc może znajdzie się tu programista który wyłapie gdzie leży problem i jak to zmienić, wiem tyle że po wciśnięciu dowolnego skilla addon na to reaguje i sprawdza wszystkie 80 pół na paskach akcji w poszukiwaniu "nazw" i to powoduje ścinę.
- nkXtdMacro = {};
- nkXtdMacro.AddonName = "nkXtdMacro";
- nkXtdMacro.AddonVersion = "v1.0.1";
- -- Hook standard function
- local orig_ActionButton_Update = ActionButton_Update;
- local orig_ActionButton_UpdateCooldown = ActionButton_UpdateCooldown;
- local orig_ActionButton_UpdateUsable = ActionButton_UpdateUsable;
- function ActionButton_Update(button)
- orig_ActionButton_Update(button);
- if button ~= nil then
- local texture, name, count, locked, wore, continued = GetActionInfo(ActionButton_GetButtonID(button));
- if (name ~= nil and name ~= "") then
- -- Macro oder Emote
- local skillIcon = nkXtdMacro.GetSkillTexture (name);
- if skillIcon ~= nil then
- local icon = getglobal(button:GetName().."Icon");
- icon:SetTexture(skillIcon);
- end;
- end;
- end;
- end;
- function ActionButton_UpdateCooldown(button)
- orig_ActionButton_UpdateCooldown(button);
- if button ~= nil then
- local texture, name, count, locked, wore, continued = GetActionInfo(ActionButton_GetButtonID(button));
- local skillIcon = nkXtdMacro.GetSkillTexture (name);
- if name ~= nil then
- -- Macro oder Emote
- duration, remaining = nkXtdMacro.GetSkillCooldown(name);
- if duration ~= nil and remaining ~= nil then
- CooldownFrame_SetTime(getglobal(button:GetName().."Cooldown"), duration, remaining);
- end;
- end;
- end;
- end
- function ActionButton_UpdateUsable(button)
- orig_ActionButton_UpdateUsable(button);
- if button ~= nil then
- local texture, name, count, locked, wore, continued = GetActionInfo(ActionButton_GetButtonID(button));
- if name ~= nil then
- -- Macro oder Emote
- local cooldown, remaining = nkXtdMacro.GetSkillCooldown (name);
- if remaining ~= nil then
- if ( remaining == 0 ) then
- getglobal(button:GetName().."Invalid"):Hide();
- else
- getglobal(button:GetName().."Invalid"):Show();
- end;
- end;
- end;
- end;
- end
- nkXtdMacro.GetSkillCooldown = function (name)
- for tabNum = 1, 5 do
- local numSkills = GetNumSkill(tabNum)
- if numSkills then
- for skillNum = 1, numSkills do
- local skillName, temp1, skillIcon, temp2, skillLVL , temp3, tpNextLvl, temp4, learned = GetSkillDetail(tabNum, skillNum);
- if skillName == name then
- local cooldown, remaining = GetSkillCooldown (tabNum, skillNum);
- return cooldown, remaining;
- end;
- end;
- end;
- end;
- return nil;
- end;
- nkXtdMacro.GetSkillTexture = function (name)
- for tabNum = 1, 5 do
- local numSkills = GetNumSkill(tabNum)
- if numSkills then
- for skillNum = 1, numSkills do
- local skillName, temp1, skillIcon, temp2, skillLVL , temp3, tpNextLvl, temp4, learned = GetSkillDetail(tabNum, skillNum);
- if skillName == name then
- return skillIcon;
- end;
- end;
- end;
- end;
- return nil;
- end;
Samo makro na którym ma się pokazać cooldown wygląda tak