Originally Posted by Xhelius
Just a quick question....Maybe i should start a new topic but it is directly related to what this post is about...What is the advantage of using LUA code to display name versus using the tags that exist in STUF already?
|
Well, it's mostly for doing things that
StUF's (fairly limited) tag system won't handle.
For example, this is what I use for my text1
Code:
function(unit, cache, textframe)
local cc = RAID_CLASS_COLORS[select(2, UnitClass("player"))]
if UnitExists(unit) then
cc = RAID_CLASS_COLORS[select(2, UnitClass(unit))]
end
local curhp, maxhp = UnitHealth(unit), UnitHealthMax(unit)
if curhp ~= maxhp then
local perchp, diffhp = 100 * curhp / maxhp, maxhp - curhp
return "|cff%02x%02x%02x%.0f|r%% | |cffff0000-%s|r",cc.r*255,cc.g*255,cc.b*255,perchp,diffhp
else
local name = UnitName("player")
if UnitExists(unit) then
name = UnitName(unit)
end
return "|cff%02x%02x%02x%s|r",cc.r*255,cc.g*255,cc.b*255,string.gsub(name, '%s?(.)%S+%s', '%1. ')
end
end
This text, for one, has some things in it to catch "stupid
StUF errors" when you use custom
lua in "Config Mode" (initializing the class color to the player's class before checking to see if there's an actual unit to get a class color for, same with the name -
StUF throws
lua errors in config mode otherwise, which can stop some frames from showing up in config).
What this mainly does, however, is it gives you a class-colored name. Multiple-word names ("Angry Guardsman") gives an abbreviated version ("A. Guardsman"). However, if you are not at full HP, it shows an HP Deficit text, a pipe, and then HP Percent.
The only part of that, really, that I needed to use custom
Lua for was the abbreviation of the names. However, because of that, I had to write the rest in
Lua as well.
Here's a more interesting text that I use (my "Power" text).
Code:
function(unit, cache, textframe)
local powtype, maxmp, curmp = UnitPowerType(unit), UnitPowerMax(unit), UnitPower(unit)
local cc = PowerBarColor[powtype]
local permp = 100*curmp/maxmp
if (powtype == 1 or powtype == 3) then
local _, class = UnitClass(unit)
if (class == "DRUID" and unit == "player") then
local maxdmp, curdmp, ccd = UnitPowerMax(unit,0), UnitPower(unit,0), PowerBarColor[0]
if curdmp ~= maxdmp then
return "|cff%02x%02x%02x%.0f|r%% | |cff%02x%02x%02x%s|r",ccd.r*255,ccd.g*255,ccd.b*255,100*curdmp/maxdmp,cc.r*255,cc.g*255,cc.b*255,curmp
else
return "|cff%02x%02x%02x%s|r",cc.r*255,cc.g*255,cc.b*255,curmp
end
else
return "|cff%02x%02x%02x%s|r",cc.r*255,cc.g*255,cc.b*255,curmp
end
elseif curmp ~= maxmp then
return "|cff%02x%02x%02x%.0f|r%%",cc.r*255,cc.g*255,cc.b*255,permp
elseif powtype == 0 then
return "|cff%02x%02x%02x%s|r",cc.r*255,cc.g*255,cc.b*255,maxmp
end
end
This one is rather fun. Basically, if you're a druid in shapeshift form, it shows your rage/energy - and if you're below full mana, it shows your mana as a percentage (separated by a pipe character). If you're a Warrior or Rogue, it just shows your rage/energy.
If you're anything else, it shows your percentage of power - but if you're at full power, it just shows your maximum power. (ie, 99% OR 78532, for example).
And, yes, all you
Lua coders out there, please feel free to take a look at it and give me advice on how to make it better.
I haven't really done any programming since 1997, and
Lua wasn't very common back then, so this is all sorta tossed together with half-remembered scraps of programming theory and style.