[5] Garrys Mod Lua. Удаляем стандартный HUD и добавляем свой
Урок 4: https://gamesubject.com/question/3109
Удалим HUD хп и брони, и создадим свой.
Писать будем в клиентской части.
Создаём таблицу, в которую засовываем HUD хп и брони:
local hide = {
CHudHealth = true,
CHudBattery = true
}

CHudHealth - HUD хп.
CHudBattery - HUD брони.
Создаём hook, который вызывается при создании HUD:
hook.Add("HUDShouldDraw","hudhide",function(name)
HUDShouldDraw - hook, который вызывается при создании HUD. Работает только в клиентской части.
function(name) - в переменную name, засовывается HUD.
Сделаем так, что бы HUD из нашей таблицы, имел значение false:
if hide[name] then
return false

if hide[name] - если в таблице есть HUD из переменной name.
return false - возвращает false.
Создаём hook рисования HUD:
hook.Add("HUDPaint","player",function()
Создаём переменную, в которую помещаем игрока:
local ply = LocalPlayer()
Создаём переменную, в которую помещаем хп игрока:
local health = ply:Health()
ply:Health() - возвращает хп игрока. Работает в клиентской и серверной части.
Создаём переменную, в которую помещаем максимальное количество хп:
local healthmax = ply:GetMaxHealth()
ply:GetMaxHealth() - возвращяет максимальное количество хп. Работает в клиентской и серверной части.
Создаём переменную, в которую помещаем броню игрока:
local armor = ply:Armor()
ply:Armor() - возвращает броню игрока. Работает в клиентской и серверной части.
Рисуем HUD:
draw.RoundedBox(3,30,910,260,140,Color(60,60,60,240))
draw.RoundedBox(0,0,945,30,20,Color(60,60,60,240))
draw.RoundedBox(0,0,995,30,20,Color(60,60,60,240))
draw.RoundedBox(3,60,940,healthmax*2,30,Color(40,40,40,240))
draw.RoundedBox(3,60,990,200,30,Color(40,40,40,240))
draw.RoundedBox(3,60,940,health*2,30,Color(255,0,0,255))
draw.RoundedBox(3,60,990,armor*2,30,Color(0,0,255))

Код который у нас получился:
if CLIENT then
local hide = {
CHudHealth = true,
CHudBattery = true
}
hook.Add("HUDShouldDraw","hudhide",function(name)
if hide[name] then
return false
end
end)
hook.Add("HUDPaint","player",function()
local ply = LocalPlayer()
local health = ply:Health()
local healthmax = ply:GetMaxHealth()
local armor = ply:Armor()
draw.RoundedBox(3,30,910,260,140,Color(60,60,60,240))
draw.RoundedBox(0,0,945,30,20,Color(60,60,60,240))
draw.RoundedBox(0,0,995,30,20,Color(60,60,60,240))
draw.RoundedBox(3,60,940,healthmax*2,30,Color(40,40,40,240))
draw.RoundedBox(3,60,990,200,30,Color(40,40,40,240))
draw.RoundedBox(3,60,940,health*2,30,Color(255,0,0,255))
draw.RoundedBox(3,60,990,armor*2,30,Color(0,0,255))
end)
end
16047 просмотров
больше 3 лет назад
Garry’s Mod
4 ответа
6
2
Чел, а как сделать вертикальный HUD Чтобы полоска здоровья отнималась с верху вниз? Так как ось y идёт с верху вниз, то полоска твоим методом будет отниматся сверху вниз. Можно ли как-нибудь инверсировать ось y или по другому реализовать HUD?
Ответ дан
13 дн. назад
0
Ответ от незарегистрированного пользователя
Like like always.
Ответ дан
больше 3 лет назад
0
Согласен с Инвокером хД
Ответ дан
больше 3 лет назад
0
Чувак да ты действительно псих)
Ответ дан
больше 3 лет назад
0
Введите ваш ответ
Символов нужно 2