Originally Posted by
Mozu
What I am NOT interested in is downloading an addon. Please do not suggest one.
All I'm looking for is a way to resize the default nameplates with a script.
Normally this is as easy as doing something like "PlayerFrame:SetScale(1.0)" but with nameplates, there are hundreds of them (right now on my screen NamePlate561 exists) and they are constantly being renumbered. The frame name in Fstack is called "NamePlate#", so when you do /script NamePlate1:SetScale(1.0) it works, as long as #1 exists and is on-screen. Problem is the renumbering, so I can't simply put thousands of lines of code for this.
I've tried various for loops, but my programming knowledge is barely script kiddie level. Help is appreciated.
You cannot rescale the nameplates hitbox (the area that you click) while in combat. Nameplates are secure. Your code NamePlate1:SetScale() would not work while in combat.
You can however rescale the healthbar and castbar when they show but the textures still don't scale properly. I ripped this code from my addon it will be a start for you.
Code:
local numChildren = -1
local handledFrames = {}
local HEALTH_SCALE, CASTBAR_SCALE = 1, 1
local function HealthBar_OnShow(frame)
frame:SetScale(HEALTH_SCALE)
end
local function CastBar_OnShow(frame)
frame:SetScale(CASTBAR_SCALE)
end
local function manageFrame(frame)
local hp, cb = frame:GetChildren()
for i=1, frame:GetNumRegions() do
local region = select(i, frame:GetRegions())
if region then
region:SetParent(hp)
end
end
if not frame.healthBar then
hp:HookScript("OnShow", HealthBar_OnShow)
frame.healthBar = hp
end
if not frame.castBar then
cb:HookScript("OnShow", CastBar_OnShow)
frame.castBar = cb
end
HealthBar_OnShow(hp)
CastBar_OnShow(cb)
end
local function HookFrames(...)
for index = 1, select('#', ...) do
local frame = select(index, ...)
local name = frame:GetName()
if name and (not handledFrames[name] and (name:find("NamePlate%d"))) then
manageFrame(frame:GetChildren())
handledFrames[name] = frame
end
end
end
local f = CreateFrame("Frame")
f:SetScript("OnUpdate", function(self, elapsed)
local count = WorldFrame:GetNumChildren()
if(count ~= numChildren) then
numChildren = count
HookFrames(WorldFrame:GetChildren())
end
end)
All healthbar regions are parented to the healthbar's parent. You can try to reparent them to the healthbar to see if that will correct the scale. Otherwise you may have to create duplicate textures/fontstrings for the healthbar and remove the default blizzard ones.