Первый HUD

Начинающий
Статус
Оффлайн
Регистрация
5 Сен 2021
Сообщения
5
Реакции[?]
0
Поинты[?]
0
Код:
surface.CreateFont("font", {font = "Roboto", size = 20, weight = 400, antialias = true}) -- Установка шрифта
local Scrw, Scrh = ScrW(), ScrH() -- Установка позиции относительно окна игры
local Elements = { -- Стандартные элементы HUD
    ["CHudAmmo"] = true,
    ["CHudBattery"] = true,
    ["CHudHealth"] = true,
    ["CHudSecondaryAmmo"] = true,
    ["CHudSuitPower"] = true,
    ["CHudCrosshair"] = true,
}
-- Установка цветов --
local color_white = Color(255, 255, 255) -- Просто белый цвет
local color_black = Color(20, 20, 20) -- Чёрный цвет с уходом в серый

local function hudHideElements(name)
    if Elements[name] then return false end -- Если что-либо из элементов стандартного HUD существует, то она скрывается. Если её нет, она будет находится там же где и была
end

hook.Add("HUDShouldDraw", "hudHideElements", hudHideElements) -- Скрывает стандартный HUD
local function ShowHud()
    Health = Lerp(FrameTime() * 10, Health or 0, LocalPlayer():Health()) -- Немного анимации
    local HealthWidth = math.Min(100 * (Health / 100), 100) -- Ширина нижней полоски хп (от заднего фона)
    Armor = Lerp(FrameTime() * 10, Armor or 0, LocalPlayer():Armor()) -- Немного анимации
    local ArmorWidth = math.Min(100 * (Armor / 100), 100) --  Ширина нижней полоски брони (от заднего фона)
    local hp = LocalPlayer():Health().." HP" -- Ваш хп
    local ar = LocalPlayer():Armor().." AR" -- Ваша броня
    local hpsize=surface.GetTextSize(hp) -- Получает длинну текста, ниже будет понятно зачем
    local BG = 100 -- Задний фон
    local color_health = HSVToColor(math.Clamp(LocalPlayer():Health(), 0, LocalPlayer():GetMaxHealth()) / LocalPlayer():GetMaxHealth() * 100, 1, 1) -- Выставляет цвет хп от красного до зелёного. От 1% до 100%
    local color_armor = HSVToColor(math.Clamp(LocalPlayer():Armor(), 78, LocalPlayer():GetMaxArmor()) / LocalPlayer():GetMaxArmor() * 255, 1, 1) -- Выставляет цвет брони от бирюзового до тёмно синего. От 1% до 100%
    if LocalPlayer():Alive() then -- Проверка на жизнь (живы ли вы или нет)
        if LocalPlayer():Health() > 1000 then -- Это сделано для проверки на хп больше 1000
            local BG = hpsize + 30
            draw.RoundedBox(0, 35, Scrh - 75, BG, 30, color_black)
            draw.RoundedBox(0, 35, Scrh - 45, hpsize+30, 5, color_health)
        else -- Если ваше хп не привышает 999, то проверки не будет
            local BG = 100
            draw.RoundedBox(0, 35, Scrh - 75, BG, 30, color_black)
            draw.RoundedBox(0, 35, Scrh - 45, HealthWidth, 5, color_health)
        end
    draw.SimpleText(hp, "font", 50, Scrh - 70, color_white) -- Текст хп и его позиция
    if LocalPlayer():Armor() > 0 then -- Проверка на броню, если её нет, то и рисоваться не будет
        draw.RoundedBox(0, 35, Scrh - 120, ArmorWidth, 5, color_armor) -- Нижняя полоска брони (от заднего фона)
        draw.RoundedBox(0, 35, Scrh - 150, BG, 30, color_black)
        draw.SimpleText(ar, "font", 50, Scrh - 145, color_white) -- ar - текст брони, "font" - шрифт, далее позиция и цвет (color_white)
        end
    end
end

hook.Add("HUDPaint","DrawHud",ShowHud)
 
Начинающий
Статус
Оффлайн
Регистрация
29 Ноя 2021
Сообщения
20
Реакции[?]
2
Поинты[?]
0
Показал бы результат, тем более если я не ошибаюсь тема паста
 
Начинающий
Статус
Оффлайн
Регистрация
24 Июн 2019
Сообщения
26
Реакции[?]
7
Поинты[?]
2K
Сверху Снизу