Go to Page... |
|
Thread Tools | Display Modes |
10-22-10, 03:43 AM | #1 |
How To : Right click removing buff
Hello
I know that the new SecuredAuraheader is quite complicated to use, this is a helper to show you how RDX handle that. Create a file AuraButtonTemplate.xml : The secureAuraengine need a xml template to create buttons on the fly : Code:
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/ ..\FrameXML\UI.xsd"> <Button name="RDXAB30x30Template" inherits="SecureActionButtonTemplate" virtual="true"> <Size x="30" y="30"/> <Attributes> <Attribute name="type" value="cancelaura"/> </Attributes> <Scripts> <OnLoad> self:RegisterForClicks("RightButtonUp"); </OnLoad> <OnEnter> GameTooltip:SetOwner(self, "ANCHOR_BOTTOMLEFT"); GameTooltip:SetFrameLevel(self:GetFrameLevel() + 2); if self:GetAttribute("target-slot") == 16 or self:GetAttribute("target-slot") == 17 or self:GetAttribute("target-slot") == 18 then GameTooltip:SetInventoryItem("player", self:GetID()); else GameTooltip:SetUnitAura("player", self:GetID()); end </OnEnter> <OnLeave> GameTooltip:Hide(); </OnLeave> </Scripts> </Button> </Ui> Size This will define the height and width of your buff, example: <Size x="30" y="30"/> Attribute : indicate the button is a cancelaura type. <Attributes> <Attribute name="type" value="cancelaura"/> </Attributes> Create the SecureAuraHeader handler : Code:
local headerAura = CreateFrame("Frame", "SAH", nil, "SecureAuraHeaderTemplate"); headerAura:SetAttribute("unit", "player"); -- to activate UNITAURA event refresh headerAura:SetAttribute("filter", "HELPFUL"); headerAura:SetAttribute("template", "RDXAB30x30Template"); -- must be the template name of your XML headerAura:SetAttribute("minWidth", 100); headerAura:SetAttribute("minHeight", 100); -- the following code create a buff bar anchor to TOPLEFT and buff orientation goes to right with 10 buttons max on two rows headerAura:SetAttribute("point", "TOPLEFT"); headerAura:SetAttribute("xOffset", 30); headerAura:SetAttribute("yOffset", 0); headerAura:SetAttribute("wrapAfter", 10); headerAura:SetAttribute("wrapXOffset", 0); headerAura:SetAttribute("wrapYOffset", -30); headerAura:SetAttribute("maxWraps", 2); -- sorting headerAura:SetAttribute("sortMethod", "NAME"); -- INDEX or NAME or TIME headerAura:SetAttribute("sortDir", "+"); -- - to reverse headerAura:Show(); -- provide a simple iterator to the header local function siter_active_children(header, i) i = i + 1; local child = header:GetAttribute("child" .. i); if child and child:IsShown() then return i, child, child:GetAttribute("index"); end end function headerAura:ActiveChildren() return siter_active_children, self, 0; end -- The update style function local function updateStyle() for _,frame in headerAura:ActiveChildren() do -- create style texture if it doesn't exist if not frame.tex then frame.tex = CreateTexture(frame); frame.tex:SetAllPoints(frame); frame.cd = CreateFrame("Cooldown"); frame.cd:SetAllPoints(frame); frame.txt = CreateFontString(frame); frame.txt:SetAllPoints(frame); frame.txt:SetFont(GameFontNormal); end local name, _, icon, count, debuffType, duration, expirationTime = UnitAura("player", frame:GetID(), "HELPFUL"); if name then frame.tex:SetTexture(icon); frame.cd:SetCooldown(expirationTime - duration, duration); if count > 1 then frame.txt:SetText(count); else frame.txt:SetText("");end frame.tex:Show(); frame.cd:Show(); frame.txt:Show(); else frame.tex:Hide(); frame.cd:Hide(); frame.txt:Hide(); end end end Code:
local f = CreateFrame("Frame"); f:RegisterEvent("UNIT_AURA"); -- in the OnEvent UNIT_AURA : -- depending of the framework you are using, delay the update to the next frame. I suppose there is a similary function in ace. The example here use our VFL framework VFLT.NextFrame(math.random(10000000), function() updateStyle() end); Cheers Sigg |
|
WoWInterface » Developer Discussions » Tutorials & Other Helpful Info. » How To : Right click removing buff |
«
Previous Thread
|
Next Thread
»
|
Display Modes |
Switch to Linear Mode |
Switch to Hybrid Mode |
Threaded Mode |
|
|