• Приветствуем на сайте, Гость! Обязательно ознакомьтесь с условиями и правилами Публичной оферты Проекта NetZONA.org: https://netzona.org/help/public-offer/

  • Приветствуем на сайте, Гость! Обязательно ознакомьтесь с условиями и правилами использования Ваших файлов cookie на Проекте NetZONA.org: https://netzona.org/help/cookies/

  • Приветствуем на сайте, Гость! Обязательно ознакомьтесь с Политикой конфиденциальности Проекта NetZONA.org: https://netzona.org/pages/privacy-policy/

  • Ответы на основные вопросы: https://netzona.org/threads/populjarnye-voprosy-i-otvety-na-nix.6122/

  • Приветствуем на сайте, Гость! Приобрести (купить) Информационную услугу (в том числе группу "Проверенный") на Проекте NetZONA.org: https://netzona.org/account/upgrades

Обсуждение Создание своего HUD(Glua Tutorials#1)

Статус
В этой теме нельзя размещать новые ответы.

[AJ]Art8mka

Пользователь
Регистрация
10 Авг 2017
Сообщения
37
Реакции
0
Баллы
18
Возраст
27
Адрес
Nebraska, United States of America
Веб-сайт
www.artyom.xyz
Клан-тег
Gmod Coders
Пол
Род занятий
Glua,LuaDev,Coding
Добрый вечер,уважаемые кодеры и не хацкеры!Сегодня я вам покажу,как создать свой хад и настроить его.
1.Введение:
Для того чтобы написать вам хад,вам нужно знать Glua!(Если,кто-то не знает что такое Glua,я вам в краце расскажу.Glua-Язык программирование для Garry's mod,позволяющие писать свои скрипты или мелкие коды.)
Хуки,Коды,Derma:
Эта ссылка скрыта от группы "Гость" (группа пользователей, которые еще не прошли регистрацию или авторизацию на Проекте). Чтобы увидеть эту ссылку Вам требуется авторизоваться или пройти регистрацию на Проекте (зарегистрироваться).

2.Начало писание HUD:
Вот мы приступили уже написание своего хада и теперь начнем!
-Нам щас нужно,сделать переменную

Код:
local hud =
Без переменной,код не сможет понять откуда будет идти подключение!
Сейчас мы напишем не большой код:
Код:
local hud =
    surface.SetDrawColor(0,0,0,PanelOpacity)
    surface.DrawRect(0, 0, self:GetWide(), self:GetTall())

    surface.SetDrawColor(255, 255, 255, 7)
    surface.DrawOutlinedRect(1, 1, self:GetWide()-2, self:GetTall()-2)
draw.RoundedBox(4, 10, 10, ScrW() - 20, 110, Color(0,0,0,220))
draw.DrawText("Жизнь", "PlyHealth", 5, 5, Color(255,255,255,255), 0)
draw.DrawText("Броня", "PlyArmor", 5, 35, Color(200,200,200,255), 0)
3.Хук HUDPAINT:
Эта ссылка скрыта от группы "Гость" (группа пользователей, которые еще не прошли регистрацию или авторизацию на Проекте). Чтобы увидеть эту ссылку Вам требуется авторизоваться или пройти регистрацию на Проекте (зарегистрироваться).
( "HUDPaint", "HUDPaint_DrawHUD",function()
end)
Без хука хад не будет работать,так как он отвечает за создание хада!
Конец 1 урока,продолжение следует!
 
  • Хорошо "0"
Реакции: Neon
  • Хорошо "0"
Реакции: Neon
а чему равна переменная? Если ты даже неправильно ее прописал. local hud = (что-то ты пропустил), если не объявить чему равно, будет писать nil, а вообще ты ее в коде не используешь так что убери.

Если уж писать туториалы, то писать вполне себе прилично, объясняя почти или каждый шаг.

Код:
hook.Add("HUDPaint", "HUDPaint_Tutorial_1", function()
    local client = LocalPlayer() -- создаем переменную client
    local cHP = math.Clamp(client:Health(), 0, client:GetMaxHealth()) -- здесь храним здоровье игрока. math.Clamp чтобы хп не уходило в минус.
    local cArmor = math.Clamp(client:Armor(), 0, 255)
  
    surface.SetDrawColor(0,0,0, 255)
    surface.DrawRect(0, 0, self:GetWide(), self:GetTall())
    surface.SetDrawColor(255, 255, 255, 7)
    surface.DrawOutlinedRect(1, 1, self:GetWide()-2, self:GetTall()-2)
  
    draw.RoundedBox(4, 10, 10, ScrW() - 20, 110, Color(0,0,0,220))
    draw.DrawText(string.format("HP: %d", cHP), "Тут_используемый_шрифт_вами", 5, 5, Color(255,255,255,255), 0)
    draw.DrawText(string.format("Armor: %d", cArmor), "Тут_используемый_шрифт_вами", 5, 35, Color(200,200,200,255), 0)
  
    -- string.format служит форматированием строки. (код красивее становится)
    -- типы формат-переменных [ http://www.cplusplus.com/reference/cstdio/printf/ ]
    -- %d - форматирует в число; %s - в строку (текст, string)
end)
 
Последнее редактирование:
а чему равна переменная? Если ты даже неправильно ее прописал. local hud = (что-то ты пропустил), если не объявить чему равно, будет писать nil, а вообще ты ее в коде не используешь так что убери.

Если уж писать туториалы, то писать вполне себе прилично, объясняя почти или каждый шаг.

Код:
hook.Add("HUDPaint", "HUDPaint_Tutorial_1", function()
    local client = LocalPlayer() -- создаем переменную client
    local cHP = math.Clamp(client:Health(), 0, client:GetMaxHealth()) -- здесь храним здоровье игрока. math.Clamp чтобы хп не уходило в минус.
    local cArmor = math.Clamp(client:Armor(), 0, 255)
 
    surface.SetDrawColor(0,0,0, 255)
    surface.DrawRect(0, 0, self:GetWide(), self:GetTall())
    surface.SetDrawColor(255, 255, 255, 7)
    surface.DrawOutlinedRect(1, 1, self:GetWide()-2, self:GetTall()-2)
 
    draw.RoundedBox(4, 10, 10, ScrW() - 20, 110, Color(0,0,0,220))
    draw.DrawText(string.format("HP: %d", cHP), "Тут_используемый_шрифт_вами", 5, 5, Color(255,255,255,255), 0)
    draw.DrawText(string.format("Armor: %d", cArmor), "Тут_используемый_шрифт_вами", 5, 35, Color(200,200,200,255), 0)
 
    -- string.format служит форматированием строки. (код красивее становится)
    -- типы формат-переменных [ http://www.cplusplus.com/reference/cstdio/printf/ ]
    -- %d - форматирует в число; %s - в строку (текст, string)
end)


Это не работает выдает ошибку
[ERROR] Dopler<hud3.lua>:7: attempt to call method 'GetWide' (a nil value)
1. fn - Dopler<hud3.lua>:7
2. unknown - addons/ulx_ulib/lua/ulib/shared/hook.lua:109
 
Первично стоило бы провести максимально краткую (иль развернутую) теорию по позиционированию элементов на экране.
image.png
Нуль (0) — начальная точка, которая начинается с левого верхнего угла.
ScrW() — конечная точка ширины разрешения.
ScrH() — конечная точка высоты разрешения.

Поделив ширину и высоту на два, элемент на экране будет помещен в центр. По крайнее мере, элемент будет помещен до первоначальной точки курсора мыши.
Для того, чтобы элемент был помещен точно и полностью в середину, востребуется ширину и высоту элемента поделить также на два, и отнять данное от ширины и высоты самого разрешения. На схеме суть определенно ясна.

И уже после стоит накидывать с десяток практических задач.
HUDPaint() — Рендеринг-хук в 2D-пространстве. Используется для отрисовки всякого непотребства на ваших экранах.

Код:
-- color_green играет роль удобства, красоты и тд и тп.
-- Тут нужен Hikka, который пояснит за оптимизацию элементов.
local color_green = Color(0, 255, 0)
hook.Add("HUDPaint", "Practice", function()
    -- Задаем scrW, scrH, как ширину и высоту разрешения монитора.
    local scrW, scrH = ScrW(), ScrH()
    -- Определяем client, как локального игрока. Удобство в использовании.
    local client = LocalPlayer()
    -- Проверяем, существует ли игрок? Живой ли он? Если нет, то и показывать ничего не будет.
    if !IsValid(client) or !client:Alive() then return end

    -- Задаем w, h для ширины и высоты элементов.
    -- Поиграйтесь с локалями w, h. Любое значение все равно будет регулироваться.
    local w, h = 128, 128

    -- Ежели нужно сменить цвет, то вновь же стоит задать SetDrawColor.
    surface.SetDrawColor(color_green)
    -- Позиционирование зеленого квадрата в левом верхнем углу.
    surface.DrawRect(0, 0, w, h)

    -- Задаете локаль для цвета? Не делайте этого в самой функции. Используйте пример color_green.
    local bad_color = Color(0, 0, 255)
    surface.SetDrawColor(bad_color)
    -- Позиционирование синего квадрата в правом верхнем углу.
    surface.DrawRect(scrW - w, 0, w, h)

    surface.SetDrawColor(Color(120, 60, 124))
    -- Позиционирование сиреневого(?) квадрата в левом нижнем углу.
    surface.DrawRect(0, scrH - h, w, h)

    surface.SetDrawColor(Color(255, 255, 0))
    -- Позиционирование желтого квадрата в правом нижнем углу.
    surface.DrawRect(scrW - w, scrH - h, w, h)

    surface.SetDrawColor(Color(255, 0, 0))
    -- Позиционирование красного квадрата по центру.
    surface.DrawRect((scrW / 2) - (w / 2), (scrH / 2) - (h / 2), w, h)
end)
 
Статус
В этой теме нельзя размещать новые ответы.
Главная Регистрация
Назад
Сверху