-
Автор темы
- #1
Код:
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)