Цитата Сообщение от Попкина_Сладость Посмотреть сообщение
Спасибо фурычит!


А можно ещё сюда запихать иконку класса?
С возможностью регулировать размер иконке в коде?
Screenshot_1.jpg

PHP код:
local CLASSICON_SIZE 28
local ACCURACY 
8
local CLASS_ICON_TCOORDS 
CLASS_ICON_TCOORDS
local UnitClass 
UnitClass
local pairs 
pairs


local math_round
do
    
local math_floor math.floor
    math_round 
= function(x)
        return 
math_floor(x+0.5)
    
end
end

local 
function GetUnitTypeByNameplateRGB(r,g,b)
    if 
== 0 then -- red
        
return "enemy"
    
elseif == 0 then -- green
        
return "friend_pvp"
    
elseif == 0 then -- blue
        
return "friend_nopvp"
    
elseif 1.99 and == 0 then -- yellow
        
return "neutral"
    
else
        return 
"enemy_player"
    
end
end

local GetClassByRGB
do
    
local RAID_CLASS_COLORS RAID_CLASS_COLORS
    GetClassByRGB 
= function(r,g,b)

        for class,
tbl in pairs(RAID_CLASS_COLORS) do
            if 
math_round(tbl.r*ACCURACY) == math_round(r*ACCURACY)
                and 
math_round(tbl.g*ACCURACY) == math_round(g*ACCURACY)
                and 
math_round(tbl.b*ACCURACY) == math_round(b*ACCURACYthen

                
return class
            
end
        end
    end
end

local 
function healthbar_UpdateClassIcon(self,r,g,b)
    if 
GetUnitTypeByNameplateRGB(r,g,b) == "enemy_player" then
        local 
class = GetClassByRGB(r,g,b)
        if class 
then
            self
.classIcon:SetTexCoord(unpack(CLASS_ICON_TCOORDS[class]))
            
self.classIcon:Show()
            return
        
end
    end

    self
.classIcon:Hide()
end

local 
function healthbar_valuechanged_cb(self,value)
    
self.text:SetText(value)
end

local 
function healthbar_show_cb(self)
    
self.text:SetText(self:GetValue())
end

local 
function healthbar_update_cb(self)
    
local r,g,self:GetStatusBarColor()
    if 
not (== self.and == self.and == self.bthen
        healthbar_UpdateClassIcon
(self,r,g,b)
        
self.r,self.g,self.r,g,b
    end
end

local 
function nameplate_update_cb(self)
    
self:SetAlpha(1)
end

local 
function InitNamePlate(frame)
    
local healthbar frame:GetChildren()
    
healthbar.text healthbar:CreateFontString(nil,"ARTWORK")
    
healthbar.text:SetFont("Fonts\\FRIZQT__.TTF",11,"OUTLINE")
    
healthbar.text:SetPoint("CENTER")

    
healthbar.classIcon healthbar:CreateTexture(nil,"BORDER")
    
healthbar.classIcon:SetPoint("RIGHT",healthbar,"LEFT",-4,0)
    
healthbar.classIcon:SetSize(CLASSICON_SIZE,CLASSICON_SIZE)
    
healthbar.classIcon:SetTexture("Interface\\TargetingFrame\\UI-Classes-Circles")
    
healthbar.classIcon:Hide()

    
healthbar_show_cb(healthbar)
    
healthbar:SetScript("OnValueChanged",healthbar_valuechanged_cb)
    
healthbar:SetScript("OnShow",healthbar_show_cb)
    
healthbar:SetScript("OnUpdate",healthbar_update_cb)
    
frame:SetScript("OnUpdate",nameplate_update_cb)
end

local 
function IdentifyFrame(self)
    if 
self:GetName() then return end
    
if self.GetRegions then
        local region 
self:GetRegions()
        if 
region.GetTexture then
            local texturePath 
region:GetTexture()
            if 
texturePath == "Interface\\TargetingFrame\\UI-TargetingFrame-Flash" then
                
return "NamePlate"
            
elseif texturePath == "Interface\\Tooltips\\ChatBubble-Background" then
                
return "ChatBubble"
            
end
        end
    end
end

local 
function iterateChildrens(object,...)
    if 
not object then return end

    local type 
IdentifyFrame(object)
    if 
type == "NamePlate" then
        InitNamePlate
(object)
    elseif 
type == "ChatBubble" then
        
--InitChatBubble(object)
    
end

    
return iterateChildrens(...)
end


local select
,WorldFrame select,WorldFrame
local lastWorldFrameChildsCount 
0
CreateFrame
("frame"):SetScript("OnUpdate",function()
    
local worldFrameChildsCount WorldFrame:GetNumChildren()
    if 
worldFrameChildsCount ~= lastWorldFrameChildsCount then
        iterateChildrens
(select(lastWorldFrameChildsCount+1,WorldFrame:GetChildren()))
        
lastWorldFrameChildsCount worldFrameChildsCount
    end
end

Вот вроде, пробуй. Если классы будет неверно определять - поиграйся с значением константы ACCURACY