kNamePlates
A tiny name plate addon:
Relatively simple addon for my own use, recreates my Aloft nameplates but without all the extra gunk to make it take 2MB. It is unlikely that I'll be adding features or the ability to edit options in game.
Features
- Lowfoot memory print (18kb)
- Compact Frames
- Name and Level text inside status bar
- Level = level if unit HP is 100%, otherwise shows remaining HP
- Custom Threat Highlighting (same as Aloft default override)
- Stacking points text
- Druids: Combo Points (cat), Lacerate (bear)
- Warriors: Sunder Armor
- Rogues: Combo Points
- Paladins: Seal of Vengeance/Corruption stacks
Bug Reports
Please direct all support requests to Wowace.
Be specific as to the version number of knameplates, revision (found in the TOC file), WoW version
Provide a complete stack trace from an addon like Bug Grabber
Customizing
No in game options
For custom options, create a new file in the addon folder named CustomOptions.lua. Include any of the following variables and change their value (currently the shown values are the defaults)
kNPCustom_frameheight = 11 kNPCustom_framewidth = 120 kNPCustom_castbarheight = kNPCustom_frameheight * 0.8 kNPCustom_agrocolors = { -- alpha is not currently used here, these are really just placeholders [0] = { 1.00, 0.00, 0.00 }, -- "gray" equivalent (translate gray glow to red, the default hostile nameplate color; low aggro) [1] = { 0.00, 1.00, 1.00 }, -- "yellow" equivalent (tranlate glow to a bright cyan; you are at risk of pulling/losing aggro) [2] = { 1.00, 0.00, 1.00 }, -- "orange" equivalent (tranlate glow to a bright magenta; you are really close to pulling/losing aggro) [3] = { 1.00, 0.67, 0.00 }, -- "red" equivalent (tranlate glow to a bright orange; this target is securely yours) } kNPCustom_barTexture = [[Interface\Addons\kNamePlates\media\Smoothv2]] kNPCustom_glowTexture = [[Interface\Addons\kNamePlates\media\Outline]] kNPCustom_font = [[Interface\Addons\kNamePlates\media\Calibri1.ttf]] kNPCustom_fontSize = 9 kNPCustom_fontOutline = "OUTLINE" kNPCustom_stackedPointsfontSize = kNPCustom_fontSize + 3 kNPCustom_castbarfontsize = 8 kNPCustom_thousandstext = "%.1fk" kNPCustom_millionstext = "%.1fm" kNPCustom_HPValuefunction = function(value, minhp, maxhp) if value < 10000 then return value elseif value >= 10000 and value < 1000000 then return string.format(thousandstext, value / 1000) elseif value >= 1000000 and value < 1000000000 then return string.format(millionstext, value / 1000000) else return value end end
- frameheight: the height of the healthbar
- framewidth: the width of the healthbar
- castbarheight: the height of the casting bar, width is same as framewidth
- agrocolors table: r,g,b values in percent for a color, changes the agro outline coloring
- bartexture: the statusbar texture to use
- glowtexture: the agro border texture
- font, fontSize, fontOutline: font face to use, size, what kind of outline to use
- stackedPointsfontSize: the stacking points number size
- castbarfontsize: cast bar timer font size
- thousandstext: a formatted string used in the hp of a mob
- millionstext : a formatted string used in the hp of a mob
- HPValuefunction: a function that is called when updating the HP/level of a mob, used for custom formatting
This addon is still being updated on wowinterface.
http://www.wowinterface.com/downloads/info19390-KuiNameplates.html
Great addon. Needs update.
love kNP's simple layout :) plz update
thx dare
ty.
kNPCustom_hundreds = "%02d"
kNPCustom_HPValuefunction = function(value, minhp, maxhp)
if value < 10000 then
return value.."/"..string.format(kNPCustom_hundreds, (value*100)/maxhp).."%"
elseif value >= 10000 and value < 1000000 then
return string.format(thousandstext, value / 1000).."/"..string.format(kNPCustom_hundreds, (value*100)/maxhp).."%"
elseif value >= 1000000 and value < 1000000000 then
return string.format(millionstext, value / 1000000).."/"..string.format(kNPCustom_hundreds, (value*100)/maxhp).."%"
else
return value
end
end
I installed knameplates a couple of weeks ago, along with many other things, and was very happy about it. However, about at the same time, I started to notice severe performances degradation sometimes, at the end of some raid nights (Putricide, Lana'thel, Festergut mainly, we clean almost all icc on thursday and ends up with the Plague hall).
Using KPM, I measured resources consumptions of my addons to identify the culprit during Putricide fight. I was shocked to discover that knameplates came first, by far, with 40% of the main core usage ! This was especially surprising since I only display enemy frames. KPM reported this was caused by the bits of code reacting to events, not to OnUpdate. I play a warrior.
So I gave a look at the code. I noticed that, on any event, you perform a full frame update. However, there can be many events between two successive frames. Seems like it would be better, on events, to just flag for update ("update_required = true" for example) and, on every OnUpdate call, to check this flag and perform the actual update when required.
Besides, since you force the BliĀ² nameplates to subscribe new events, I'm not sure those frames are garbage collected. I guess, at the end of the night, anytime someone gains an aura in the raid or among foes, updates are triggered for hundreds of left frames. Again, flagging for updates would solve most of the problem since OnUpdate is never called for hidden frames.
Besides, you could save a lot of updates if you were just performing some more checks on events : for a warrior, you subscribe UnitAura just for monitoring sunders. So you could check the unit whose auras changed is the player's target. Or even allow us to disable that sunders and combo points display to prevent UnitAuras subscriptions. In the same way, you update threat on every frame rather than just when the client receives updated threat informations.
You created this addon to be a lightweight version of Aloft. It certainly uses 1.5 MB less memory than Aloft (out of my 4GB) but, in its present state, it seems you totally missed the point in the end. Hope I don't look rude, your addon is promising and I like it but, unfortunately, I will have to fix it or use Aloft instead, should its code be more optimized. :-(