Welcome to Сообщество игровых серверов NETZONA.ORG

Присоединяйтесь к нам сейчас, чтобы получить доступ ко всем нашим функциям. Зарегистрировавшись и войдя в систему, вы сможете создавать темы, публиковать ответы в существующих темах, давать репутацию другим участникам, получать собственный личный мессенджер и многое другое. Это также быстро и совершенно бесплатно, так чего же вы ждете?
  • Приветствуем на сайте, Гость! Обязательно ознакомьтесь с условиями и правилами Публичной оферты Проекта 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
Возраст
26
Адрес
Nebraska, United States of America
Веб-сайт
www.artyom.xyz
Клан-тег
Gmod Coders
Пол
Род занятий
Glua,LuaDev,Coding
Добрый вечер,уважаемые кодеры и не хацкеры!Сегодня я вам покажу,как создать свой хад и настроить его.
1.Введение:
Для того чтобы написать вам хад,вам нужно знать Glua!(Если,кто-то не знает что такое Glua,я вам в краце расскажу.Glua-Язык программирование для Garry's mod,позволяющие писать свои скрипты или мелкие коды.)
Хуки,Коды,Derma:
Garry's Mod

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:
hook.Add( "HUDPaint", "HUDPaint_DrawHUD",function()
end)
Без хука хад не будет работать,так как он отвечает за создание хада!
Конец 1 урока,продолжение следует!
 
  • Хорошо "0"
Реакции: Neon

Sergei_Krampus

Пользователь
Регистрация
7 Окт 2017
Сообщения
19
Реакции
0
Баллы
17
Возраст
24
Пол
Годная информация, ждем 2 урока.
 

Neon

Создатель
Команда форума
Проверенный
Регистрация
9 Фев 2013
Сообщения
1,394
Реакции
3
Баллы
49
Хорошее начало. Еще опиши функции, чтобы люди понимали что происходит
 

Monopoly

Пользователь
Регистрация
9 Окт 2017
Сообщения
23
Реакции
0
Баллы
18
Возраст
26
Пол
Не много не понял, можно продолжение?
 

[AJ]Art8mka

Пользователь
Регистрация
10 Авг 2017
Сообщения
37
Реакции
0
Баллы
18
Возраст
26
Адрес
Nebraska, United States of America
Веб-сайт
www.artyom.xyz
Клан-тег
Gmod Coders
Пол
Род занятий
Glua,LuaDev,Coding
  • Хорошо "0"
Реакции: Neon

[AJ]Art8mka

Пользователь
Регистрация
10 Авг 2017
Сообщения
37
Реакции
0
Баллы
18
Возраст
26
Адрес
Nebraska, United States of America
Веб-сайт
www.artyom.xyz
Клан-тег
Gmod Coders
Пол
Род занятий
Glua,LuaDev,Coding

Hikka

Модератор
Команда форума
Проверенный
Регистрация
29 Сен 2016
Сообщения
555
Реакции
1
Баллы
60
Возраст
30
Пол
а чему равна переменная? Если ты даже неправильно ее прописал. 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)
 
Последнее редактирование:

Dopler

Пользователь
Регистрация
16 Окт 2017
Сообщения
9
Реакции
0
Баллы
13
Веб-сайт
dopler.myarena.ru
Клан-тег
SFF
Род занятий
Привет, Я Максимка)
а чему равна переменная? Если ты даже неправильно ее прописал. 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
 

DrodA

Пользователь
Проверенный
Регистрация
16 Фев 2017
Сообщения
128
Реакции
0
Баллы
30
Адрес
Sweden
Первично стоило бы провести максимально краткую (иль развернутую) теорию по позиционированию элементов на экране.
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)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху Снизу