Thread Tools Display Modes
01-08-13, 03:53 PM   #1
Sauerkraut
A Wyrmkin Dreamwalker
 
Sauerkraut's Avatar
AddOn Author - Click to view addons
Join Date: Oct 2008
Posts: 52
Need help coloring "widget" again :(

So I'm trying to add my arrow widget to some other frames at the request of a user. So far I have gotten everything working, except that the initial arrow always shows up white. Once you change targets then it seems to color fine. I am using the following events to set the color

Code:
		self:RegisterEvent("PLAYER_TARGET_CHANGED", lib.setTargetArrowColor)
		self:RegisterEvent("UNIT_TARGET", lib.setTargetArrowColor)
I must be missing some thing but for the life of me I can't figure out what.
  Reply With Quote
01-08-13, 11:33 PM   #2
Phanx
Cat.
 
Phanx's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2006
Posts: 5,617
Without seeing the rest of your code, there's no way anyone can tell you what you're doing wrong, or not doing that you should be doing...
__________________
Retired author of too many addons.
Message me if you're interested in taking over one of my addons.
Don’t message me about addon bugs or programming questions.
  Reply With Quote
01-09-13, 05:49 AM   #3
Sauerkraut
A Wyrmkin Dreamwalker
 
Sauerkraut's Avatar
AddOn Author - Click to view addons
Join Date: Oct 2008
Posts: 52
Sorry here is the rest of the target arrow code

Code:
lib.setTargetArrowColor = function(self)
	local _, cType = UnitClass("target")
	local ccolor = oUF.colors.class[cType] or {.3,.45,.65}
	self.Power.arrow:SetVertexColor(unpack(ccolor))
end
and here is the currently working player arrow code

Code:
lib.setArrowColor = function(self)
    local _, pType = UnitPowerType("player")
    local pcolor = oUF.colors.power[pType] or {.3,.45,.65}
    self.Power.arrow:SetVertexColor(unpack(pcolor))
end
Code:
self:RegisterEvent("PLAYER_LOGIN", lib.setFocusTargetArrowColor)
self:RegisterEvent("PLAYER_ENTERING_WORLD", lib.setFocusTargetArrowColor)
self:RegisterEvent("UNIT_DISPLAYPOWER", lib.setFocusTargetArrowColor)
The arrow tracks along the energy/rage/focus/mana/runic power bar

There are some images as well as a little discussion at http://www.wowinterface.com/download....html#comments in case it's not clear what I am trying to do.
  Reply With Quote
01-09-13, 06:12 PM   #4
Phanx
Cat.
 
Phanx's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2006
Posts: 5,617
When I say "the rest of your code" I really mean "the rest of your code", as in, all of your code. The snippets you posted are not enough; for example, one of the snippets you posted is referring to a function that is not defined in any of the snippets you posted, and none of the snippets provide any context whatsoever.

Assuming your current code matches the file I downloaded from the page you linked, there are several issues with your arrow code:

1. You have duplicate functions for every unit, which is wasteful and unnecessary; you can get the frame's current unit via self.unit and do not need to hardcode the unit into the function.

2. You are potentially creating a new table every time you color the arrow texture, which is also wasteful and unnecessary. Define the default color once, outside of the functions, and then refer to it when needed.

lib.lua:
Code:
local arrow = {[[Interface\Addons\oUF_Fail\media\textureArrow]]}
local arrowDefaultColor = {.3,.45,.65}

lib.setPowerArrowColor = function(self)
	local _, powerType = UnitPowerType(self.unit)
	self.Power.arrow:SetVertexColor(unpack(oUF.colors.power[powerType] or arrowDefaultColor))
end

lib.setClassArrowColor = function(self)
	local _, class = UnitClass(self.unit)
	self.Power.arrow:SetVertexColor(unpack(oUF.colors.class[class] or arrowDefaultColor))
end
As for the rest, this (core.lua, line 91) won't work:
Code:
	self.Power.arrow.PostUpdate = lib.setPowerArrowColor
...because self.Power.arrow is not an actual oUF element. If you change it to:
Code:
	self.Power.PostUpdate = lib.setPowerArrowColor
...it will probably work as desired without the need for anything like this:
Code:
		self:RegisterEvent("PLAYER_LOGIN", lib.setPowerArrowColor)
		self:RegisterEvent("PLAYER_ENTERING_WORLD", lib.setPowerArrowColor)
		self:RegisterEvent("UNIT_DISPLAYPOWER", lib.setPowerArrowColor)
...since oUF will then automatically update the arrow any time the power bar is updated.

On a side note, whatever layout you based your code on (I'm guessing the mis-named oUF "Simple") is pretty unreadable. There's no consistency in naming conventions at all, related functions are in totally separate files, there's tons of duplication, tons of inefficient and wasteful code, etc. It's pretty bad.
__________________
Retired author of too many addons.
Message me if you're interested in taking over one of my addons.
Don’t message me about addon bugs or programming questions.
  Reply With Quote
01-09-13, 07:49 PM   #5
MiRai
A Warpwood Thunder Caller
Join Date: Jul 2011
Posts: 96
Originally Posted by Phanx View Post
Assuming your current code matches the file I downloaded from the page you linked, there are several issues with your arrow code:

1. You have duplicate functions for every unit, which is wasteful and unnecessary; you can get the frame's current unit via self.unit and do not need to hardcode the unit into the function.

2. You are potentially creating a new table every time you color the arrow texture, which is also wasteful and unnecessary. Define the default color once, outside of the functions, and then refer to it when needed.
This is my fault because I didn't know how to make it more 'elegant'. I was hoping Sauerkraut or I could get the Focus Target frame to pick up the power color and then fix it from there.


Originally Posted by Phanx View Post
lib.lua:
Code:
local arrow = {[[Interface\Addons\oUF_Fail\media\textureArrow]]}
local arrowDefaultColor = {.3,.45,.65}

lib.setPowerArrowColor = function(self)
	local _, powerType = UnitPowerType(self.unit)
	self.Power.arrow:SetVertexColor(unpack(oUF.colors.power[powerType] or arrowDefaultColor))
end

lib.setClassArrowColor = function(self)
	local _, class = UnitClass(self.unit)
	self.Power.arrow:SetVertexColor(unpack(oUF.colors.class[class] or arrowDefaultColor))
end
Using the above code produces the same results as before:





Also, the Focus frame arrow (just to the left of the Focus Target) is still only picking up the correct class color after clearing and reacquiring a target.


Originally Posted by Phanx View Post
As for the rest, this (core.lua, line 91) won't work:
Code:
	self.Power.arrow.PostUpdate = lib.setPowerArrowColor
...because self.Power.arrow is not an actual oUF element. If you change it to:
Code:
	self.Power.PostUpdate = lib.setPowerArrowColor
And after making these changes in core.lua I am now receiving multiple Lua errors (there were a few more than this, can post them if needed):

Code:
Message: Interface\AddOns\oUF_Fail\lib.lua:120: Usage: UnitPowerType("unit"[, index])
Time: 01/09/13 19:09:55
Count: 4
Stack: [C]: in function `UnitPowerType'
Interface\AddOns\oUF_Fail\lib.lua:120: in function <Interface\AddOns\oUF_Fail\lib.lua:119>
(tail call): ?
(tail call): ?
Interface\AddOns\oUF\ouf.lua:158: in function `func'
Interface\AddOns\oUF\events.lua:113: in function `?'
Interface\AddOns\oUF\events.lua:76: in function <Interface\AddOns\oUF\events.lua:62>

Locals: (*temporary) = nil
Code:
Message: Interface\AddOns\oUF_Fail\lib.lua:120: Usage: UnitPowerType("unit"[, index])
Time: 01/09/13 19:09:52
Count: 1
Stack: [C]: in function `UnitPowerType'
Interface\AddOns\oUF_Fail\lib.lua:120: in function <Interface\AddOns\oUF_Fail\lib.lua:119>
(tail call): ?
(tail call): ?
Interface\AddOns\oUF\ouf.lua:158: in function `UpdateAllElements'
Interface\AddOns\oUF\ouf.lua:58: in function <Interface\AddOns\oUF\ouf.lua:38>
Interface\AddOns\oUF\ouf.lua:81: in function <Interface\AddOns\oUF\ouf.lua:74>
[C]: in function `SetAttribute'
Interface\FrameXML\SecureGroupHeaders.lua:195: in function <Interface\FrameXML\SecureGroupHeaders.lua:115>
Interface\FrameXML\SecureGroupHeaders.lua:458: in function <Interface\FrameXML\SecureGroupHeaders.lua:382>
[C]: in function `Show'
Interface\FrameXML\SecureStateDriver.lua:100: in function <Interface\FrameXML\SecureStateDriver.lua:95>
Interface\FrameXML\SecureStateDriver.lua:127: in function <Interface\FrameXML\SecureStateDriver.lua:119>

Locals: (*temporary) = nil



Line 120 of lib.lua is local _, powerType = UnitPowerType(self.unit) from the newest chunk of code above.

Last edited by MiRai : 01-09-13 at 08:18 PM. Reason: Typo
  Reply With Quote
01-09-13, 09:50 PM   #6
Phanx
Cat.
 
Phanx's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2006
Posts: 5,617
Try changing self.unit to self.__owner.unit... I don't remember offhand whether the base frame or the element frame is passed as self, but if you're getting an error with self.unit then it's probably the element frame.
__________________
Retired author of too many addons.
Message me if you're interested in taking over one of my addons.
Don’t message me about addon bugs or programming questions.
  Reply With Quote
01-09-13, 10:07 PM   #7
MiRai
A Warpwood Thunder Caller
Join Date: Jul 2011
Posts: 96
Definitely appreciate the help, Phanx. Using self.__owner.unit throws this now immediately upon logging in:

Code:
Message: Interface\AddOns\oUF_Fail\lib.lua:121: attempt to index field 'Power' (a nil value)
Time: 01/09/13 21:58:16
Count: 1
Stack: Interface\AddOns\oUF_Fail\lib.lua:121: in function <Interface\AddOns\oUF_Fail\lib.lua:119>
(tail call): ?
(tail call): ?
Interface\AddOns\oUF\ouf.lua:158: in function `func'
Interface\AddOns\oUF\events.lua:113: in function `?'
Interface\AddOns\oUF\events.lua:76: in function <Interface\AddOns\oUF\events.lua:62>

Locals: self = <unnamed> {
 __owner = oUF_failPlayer {
 }
 frequentUpdates = true
 PostUpdate = <function> defined @Interface\AddOns\oUF_Fail\lib.lua:119
 colorPower = true
 disconnected = false
 SetValue = <function> defined @Interface\AddOns\oUF_Fail\Elements\smooth.lua:7
 ForceUpdate = <function> defined @Interface\AddOns\oUF\elements\power.lua:193
 SetValue_ = <function> defined =[C]:-1
 0 = <userdata>
 arrow = <unnamed> {
 }
 bg = <unnamed> {
 }
 Smooth = true
}
_ = 1
powerType = "RAGE"
(*temporary) = nil
(*temporary) = "RAGE"
(*temporary) = nil
(*temporary) = nil
(*temporary) = "attempt to index field 'Power' (a nil value)"
arrowDefaultColor = <table> {
 1 = 0.3
 2 = 0.45
 3 = 0.65
}

Just to be sure, here's that chunk of code (line 6 below is line 121 in the error):

Lua Code:
  1. local arrow = {[[Interface\Addons\oUF_Fail\media\textureArrow]]}
  2. local arrowDefaultColor = {.3,.45,.65}
  3.  
  4. lib.setPowerArrowColor = function(self)
  5.     local _, powerType = UnitPowerType(self.__owner.unit)
  6.     self.Power.arrow:SetVertexColor(unpack(oUF.colors.power[powerType] or arrowDefaultColor))
  7. end
  8.  
  9. lib.setClassArrowColor = function(self)
  10.     local _, class = UnitClass(self.__owner.unit)
  11.     self.Power.arrow:SetVertexColor(unpack(oUF.colors.class[class] or arrowDefaultColor))
  12. end

If you need more from that, please let me know.
  Reply With Quote
01-10-13, 01:02 AM   #8
Phanx
Cat.
 
Phanx's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2006
Posts: 5,617
That means you're still calling lib.setPowerArrowColor manually somewhere. Remove all such calls; that function should only ever be called by oUF under the alias <power element>.PostUpdate.
__________________
Retired author of too many addons.
Message me if you're interested in taking over one of my addons.
Don’t message me about addon bugs or programming questions.
  Reply With Quote
01-10-13, 02:43 AM   #9
zork
A Pyroguard Emberseer
 
zork's Avatar
AddOn Author - Click to view addons
Join Date: Jul 2008
Posts: 1,740
Have you checked if the events you have registered fire?

That would have been my first test. Afaik there are situations where UNIT_TARGET and PLAYER_TARGET_CHANGED do not fire properly.

I had sth similar when trying to add a target sound. What I did is:
Lua Code:
  1. --sound
  2.     self:RegisterEvent("PLAYER_TARGET_CHANGED", playTargetSound)
  3.     self.Health:SetScript("OnShow",function(s)
  4.       playTargetSound(self,"PLAYER_TARGET_CHANGED")
  5.     end)

So basically I used the show event of my target healthbar to trigger the event if target changed event fails.
__________________
| Simple is beautiful.
| WoWI AddOns | GitHub | Zork (WoW)

"I wonder what the non-pathetic people are doing tonight?" - Rajesh Koothrappali (The Big Bang Theory)
  Reply With Quote
01-10-13, 04:21 AM   #10
Phanx
Cat.
 
Phanx's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2006
Posts: 5,617
No, the event registrations themselves are the problem. There should not be any events directly registered to call the "color the arrow" function; instead, that function should be called via the PostUpdate member on the Power element, since the arrow texture is part of the power bar and needs to be updated whenever the power bar is updated.
__________________
Retired author of too many addons.
Message me if you're interested in taking over one of my addons.
Don’t message me about addon bugs or programming questions.
  Reply With Quote
01-10-13, 05:50 AM   #11
Sauerkraut
A Wyrmkin Dreamwalker
 
Sauerkraut's Avatar
AddOn Author - Click to view addons
Join Date: Oct 2008
Posts: 52
Originally Posted by Phanx View Post
When I say "the rest of your code" I really mean "the rest of your code", as in, all of your code. The snippets you posted are not enough; for example, one of the snippets you posted is referring to a function that is not defined in any of the snippets you posted, and none of the snippets provide any context whatsoever.

Assuming your current code matches the file I downloaded from the page you linked, there are several issues with your arrow code:

1. You have duplicate functions for every unit, which is wasteful and unnecessary; you can get the frame's current unit via self.unit and do not need to hardcode the unit into the function.

2. You are potentially creating a new table every time you color the arrow texture, which is also wasteful and unnecessary. Define the default color once, outside of the functions, and then refer to it when needed.

lib.lua:
Code:
local arrow = {[[Interface\Addons\oUF_Fail\media\textureArrow]]}
local arrowDefaultColor = {.3,.45,.65}

lib.setPowerArrowColor = function(self)
	local _, powerType = UnitPowerType(self.unit)
	self.Power.arrow:SetVertexColor(unpack(oUF.colors.power[powerType] or arrowDefaultColor))
end

lib.setClassArrowColor = function(self)
	local _, class = UnitClass(self.unit)
	self.Power.arrow:SetVertexColor(unpack(oUF.colors.class[class] or arrowDefaultColor))
end
As for the rest, this (core.lua, line 91) won't work:
Code:
	self.Power.arrow.PostUpdate = lib.setPowerArrowColor
...because self.Power.arrow is not an actual oUF element. If you change it to:
Code:
	self.Power.PostUpdate = lib.setPowerArrowColor
...it will probably work as desired without the need for anything like this:
Code:
		self:RegisterEvent("PLAYER_LOGIN", lib.setPowerArrowColor)
		self:RegisterEvent("PLAYER_ENTERING_WORLD", lib.setPowerArrowColor)
		self:RegisterEvent("UNIT_DISPLAYPOWER", lib.setPowerArrowColor)
...since oUF will then automatically update the arrow any time the power bar is updated.

On a side note, whatever layout you based your code on (I'm guessing the mis-named oUF "Simple") is pretty unreadable. There's no consistency in naming conventions at all, related functions are in totally separate files, there's tons of duplication, tons of inefficient and wasteful code, etc. It's pretty bad.
Sorry I actually pasted a wrong section of code. I really appreciate the help Phanx however I could really do without the condescension. I've never claimed to be anything but a poor coder. My very basic understanding of lua allows me to make something that is functional and suits my tastes. I am not a programmer, just a guy that likes to tinker.
  Reply With Quote
01-10-13, 08:17 AM   #12
MiRai
A Warpwood Thunder Caller
Join Date: Jul 2011
Posts: 96
Alright, after commenting out every line related to lib.setPowerArrowColor in the core.lua file the layout will load just fine with uncolored power arrows. The very moment I un-comment any of these lines (specifically line 39 from the large chunk of Lua at the bottom of this post):
Code:
self.Power.PostUpdate = lib.setPowerArrowColor
I am hit with the same error from before:

Code:
Message: Interface\AddOns\oUF_Fail\lib.lua:121: attempt to index field 'Power' (a nil value)
Time: 01/10/13 07:58:20
Count: 1
Stack: Interface\AddOns\oUF_Fail\lib.lua:121: in function <Interface\AddOns\oUF_Fail\lib.lua:119>
(tail call): ?
(tail call): ?
Interface\AddOns\oUF\ouf.lua:158: in function `?'
Interface\AddOns\oUF\events.lua:76: in function <Interface\AddOns\oUF\events.lua:62>

Apparently I am misunderstanding what I'm supposed to be doing with or how I'm supposed to be calling lib.setPowerArrowColor in the core file. Below is the chunk of code from my Player frame that I just tested this with:

Lua Code:
  1. player = function(self, ...)
  2.  
  3.         self.mystyle = "player"
  4.        
  5.         -- Size and Scale
  6.         self:SetScale(cfg.scale)
  7.         self:SetSize(192, 35)
  8.  
  9.         -- Generate Bars
  10.         lib.gen_hpbar(self)
  11.         lib.gen_hpstrings(self)
  12.         lib.gen_highlight(self)
  13.         lib.gen_ppbar(self)
  14.         lib.gen_RaidMark(self)
  15.         lib.gen_combat_feedback(self)
  16.         lib.gen_InfoIcons(self)
  17.         lib.HealPred(self)
  18.        
  19.         -- Buffs and Debuffs
  20.         if cfg.showPlayerAuras then
  21.             BuffFrame:Hide()
  22.             lib.createBuffs(self)
  23.             lib.createDebuffs(self)
  24.             lib.gen_WeaponEnchant(self)
  25.         end
  26.  
  27.         self.Health.frequentUpdates = true
  28.         self.Health.colorSmooth = true
  29.         self.Health.Smooth = true
  30.         -- self.Health.bg.multiplier = 0.2
  31.         self.Power.colorPower = true
  32.         --self.Power.arrow.colorPower = true
  33.         self.Power.Smooth = true
  34.         self.Power.frequentUpdates = true
  35.         self.Power.bg.multiplier = 0.2
  36.         lib.gen_exp(self)
  37.         lib.gen_castbar(self)
  38.         lib.debuffHighlight(self)
  39.         --self.Power.PostUpdate = lib.setPowerArrowColor
  40.        
  41.         --oUF_Fader Options
  42.         self.FadeCasting = true
  43.         self.FadeCombat = true
  44.         self.FadeTarget = true
  45.         self.FadeHealth = true
  46.         self.FadePower = false
  47.         self.FadeHover = true
  48.         self.FadeSmooth = 1.0
  49.         self.FadeMinAlpha = 0
  50.         self.FadeMaxAlpha = 1.0
  51.        
  52.         if cfg.showRunebar then lib.genRunes(self) end
  53.         if cfg.showEclipsebar then lib.addEclipseBar(self) end
  54.         if cfg.showClassIcons then lib.gen_ClassIcons(self) end
  55.  
  56.         -- Addons
  57.         if cfg.showTotemBar then lib.gen_TotemBar(self) end
  58.         if cfg.showVengeance then lib.gen_Vengeance(self) end
  59.        
  60.         -- self:RegisterEvent("PLAYER_LOGIN", lib.setPowerArrowColor)
  61.         -- self:RegisterEvent("PLAYER_ENTERING_WORLD", lib.setPowerArrowColor)
  62.         -- self:RegisterEvent("UNIT_DISPLAYPOWER", lib.setPowerArrowColor)     
  63.        
  64.     end,
  Reply With Quote
01-10-13, 12:38 PM   #13
MiRai
A Warpwood Thunder Caller
Join Date: Jul 2011
Posts: 96
Using self.__owner.unit is working, there was just one slight change that needed to be made.

Code:
self.Power.arrow
...should be:

Code:
self.arrow
...and all is well:

  Reply With Quote
01-10-13, 06:28 PM   #14
MiRai
A Warpwood Thunder Caller
Join Date: Jul 2011
Posts: 96
Alright, so I feel that the color of the Rage arrow on the Focus Target frame is a little bright for my taste (and the frame itself), so I am trying to get fancy with the power arrow's code:

Code:
local arrow = {[[Interface\Addons\oUF_Fail\media\textureArrow]]}
local arrowDefaultColor = {.6, 0, 0} -- Dark Red

lib.setPowerArrowColor = function(self)
	local _, powerType = UnitPowerType(self.__owner.unit)
	if UnitIsPlayer("focustarget") and UnitPowerType("focustarget") == "RAGE" then
		self.arrow:SetVertexColor(unpack(arrowDefaultColor))
		self.arrow:Show()
	elseif UnitIsPlayer(self.__owner.unit) then
		self.arrow:SetVertexColor(unpack(oUF.colors.power[powerType]))
		self.arrow:Show()
	else
		self.arrow:Hide()
	end
end

I want the arrow to only show on the frames of players, which I can get working just fine; but, in addition to that, I'd also like the power arrow of the Focus Target frame to take on the default arrow color (which is a darker red) when the power type is Rage (Warriors/Druids). The above code is not working for classes who use Rage and are in the Focus Target frame -- The arrow is still taking on the default bright red color of Rage.
  Reply With Quote
01-10-13, 07:25 PM   #15
Phanx
Cat.
 
Phanx's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2006
Posts: 5,617
Why would you want the arrow to be a different color on the focustarget frame than any other frame?

Anyway, assuming that's what you really want, your function has two issues:

(1) You're calling UnitPowerType a second time (instead of using the value you already got from calling it on the preceding line) and comparing its first return value against the string "RAGE"; since the first return value is a number, it will never match. Calling functions is basically the most expensive (CPU wise) thing you can do in Lua, so you should avoid doing it when you can. If you see a function being called multiple times inside the same block of code, you should refactor the block to call the function once, store its return value(s) in a variable, and use the variable instead of calling the function again.

(2) If your focus has a target with rage, then your function will color the arrow dark red on any unit's frame. Instead, you'd want to check to see if the unit of the frame being updated is "focustarget", and go from there.

Try this:

Code:
lib.setPowerArrowColor = function(self)
	local unit = self.__owner.unit -- store this to avoid extra table lookups
	local _, powerType = UnitPowerType(unit)
	if powerType and UnitIsPlayer(unit) then -- make sure powerType is non-nil
		local color
		if unit == "focustarget" and powerType == "RAGE" then
			color = arrowDefaultColor
		else
			color = oUF.colors.power[powerType] or arrowDefaultColor -- fall back to default color for undefined power types
		end
		self.arrow:SetVertexColor(color[1], color[2], color[3]) -- 3 table lookups is still faster than 1 function call
		self.arrow:Show()
	else
		self.arrow:Hide()
	end
end
If you always want rage arrows to be darker on all frames, just remove the unit == "focustarget" and part.
__________________
Retired author of too many addons.
Message me if you're interested in taking over one of my addons.
Don’t message me about addon bugs or programming questions.
  Reply With Quote
01-10-13, 10:03 PM   #16
MiRai
A Warpwood Thunder Caller
Join Date: Jul 2011
Posts: 96
Originally Posted by Phanx View Post
Why would you want the arrow to be a different color on the focustarget frame than any other frame?
Well, the default bright red arrow for rage was kind of sticking out like a sore thumb (as can be seen in image I posted above) and I only realized this after the fact that the arrows began correctly working on all frames.

As for your code, it's working as intended (also tested with other classes). Thank you.

  Reply With Quote
01-11-13, 08:37 AM   #17
Rainrider
A Firelord
AddOn Author - Click to view addons
Join Date: Nov 2008
Posts: 454
Without looking at your code, could it be that you use the background multiplier for the power bars? So when you have some rage your arrow would still have the color of the background instead of that of the fill.
  Reply With Quote

WoWInterface » Featured Projects » oUF (Otravi Unit Frames) » Need help coloring "widget" again :(


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off