
 Сообщение от 
Попкина_Сладость
					 
				 
				Спасибо фурычит!
А можно ещё сюда запихать иконку класса?
С возможностью регулировать размер иконке в коде? 
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 g + b == 0 then -- red
        return "enemy"
    elseif r + b == 0 then -- green
        return "friend_pvp"
    elseif r + g == 0 then -- blue
        return "friend_nopvp"
    elseif r + g > 1.99 and b == 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*ACCURACY) then
                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,b = self:GetStatusBarColor()
    if not (r == self.r and g == self.g and b == self.b) then
        healthbar_UpdateClassIcon(self,r,g,b)
        self.r,self.g,self.b = 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