Как написать худ гаррис мод

  • #1

Добрый вечер,уважаемые кодеры и не хацкеры!Сегодня я вам покажу,как создать свой хад и настроить его.
1.Введение:
Для того чтобы написать вам хад,вам нужно знать Glua!(Если,кто-то не знает что такое Glua,я вам в краце расскажу.Glua-Язык программирование для Garry’s mod,позволяющие писать свои скрипты или мелкие коды.)
Хуки,Коды,Derma:
Garry’s Mod

2.Начало писание 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 урока,продолжение следует!

  • #2

Годная информация, ждем 2 урока.

Neon

  • #3

Хорошее начало. Еще опиши функции, чтобы люди понимали что происходит

  • #4

Не много не понял, можно продолжение?

  • #5

Хорошее начало. Еще опиши функции, чтобы люди понимали что происходит

Конечно опишу эти функции,когда 2 урок запилю:))))

  • #6

Не много не понял, можно продолжение?

Да,скоро будет 2 урок!

Hikka

  • #8

а чему равна переменная? Если ты даже неправильно ее прописал. 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)

Последнее редактирование: 11 Окт 2017

  • #9

а чему равна переменная? Если ты даже неправильно ее прописал. 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

  • #11

Первично стоило бы провести максимально краткую (иль развернутую) теорию по позиционированию элементов на экране.

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)

[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

Обновлено: 03.03.2023

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

Спецаильно для наших уважаемых посетителей, мы собираем лучшие советы и рекомендации которые помогут справится с той или иной проблемой. Как мы уже сказали раньше, даже если вы столкнулись с самыми редкими вылетами, даже если при запуске игры процесс находится в задачах но ничего не происходит, мы все равно найдем оптимальное решение которое подойдет каждому. Ах да, мы забыли упомянуть о самом главном, часто любители поиграть в 3D игры сталкиваются с такой ситуацией когда при попытке зайти в игровое приложение, у них просто происходит вылет или крэш на рабочий стол — с этим мы тоже знаем как боротся.

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

LUA:Hud Tutorial

Thanks for viewing this tutorial, today we will be creating a DarkRP HUD. Firstly, this is a TUTORIAL and you are meant to learn from it. It’s not supposed to be actually used in a practical example no matter how tempting it may be.

This shows you where to start in creating your own hud, and show’s a mighty fine example.

Preface

This tutorial is about making heads-up-displays, or HUDs in short. I’ve seen a lot of you young scripters and even some of the old ones making huds, but only a few of you make them right.

This tutorial is going to show you how to make a small and well laid out health and armor display. Now, we are going to approach this by not slapping everything into one HUDPaint event. We are going to do it in a modular way — by making a few functions for drawing similar panels and then use those functions to draw the hud itself.

Getting started

To make the code tidy, we’ll be putting every variable and function in a table, so lets start off with making the table.

I’m going to assume that you know about gmod’s file structure and where everything goes.

The bar

Next, we’ll make a function for drawing a bar.

X, Y, W and H are fairly obvious, but if you don’t know what they are — X is the horizontal coordinate on the screen, Y is the vertical coordinate on the screen, W is the width, H is the height. Next we have colors. Colors for us will be a table with four elements — border, background, fill, shade. I will explain these later. And the last argument — value — is going to indicate how far the bar is gone from 0 width to W width. Lets go and fill the function up!

What we’re doing here is basically just putting some function calls into one function and doing some small math. But wait, did you notice? There’s a small function called «clr» that you have never heard of before. That’s right.

This function just takes a color object and splits it up into multiple returns. This is specifically for the «surface» functions, since none of them accept a color object.

To the hud, I used the following setup.

And the outcome looks like this.

Outcome of good_hud.PaintBar

This is just an example of what the function does, we won’t be using that color setup in the end.

The box

We don’t want to leave our bars just hanging there, they need a background! Don’t fear, here is how we draw the background.

It is as simple as that. X, Y, W and H I already explained. Colors is almost the same, except that it only needs two fields — border and background.

Using the following code.

It looks like this.

Outcome of good_hud.PaintPanel

But wait.. it looks similar to the one we already made. Yes, it does. I thought you said something about optimised and well laid out stuff.. Yeah, I did, I thought you would figure that out yourself, but I guess I’ll have to do it myself.

Now our PaintBar function uses our new PaintPanel function to draw some common parts. Works exactly the same, except it now has less code. And if we wanted to change how the background looks( maybe add an image or something ), we wouldn’t have to change it in two different places.

The message

We have the bars and stuff done, now it’s time for text. We already have some functions in the draw library that handle text, but for the sake of the tutorial we’ll make our own.

The PaintText function draws a piece of text with a small shadow. X and Y I already explained, text is the text we want to draw, font is the font and colors is again a table of colors, except with different fields — shadow — color of the text shadow, text — color of the text itself.

Using the following code.

The output looks like this.

Putting it all together

So, we went through how each component works, added a convenience function and made one component interact with the other. Now it’s time to put everything together, so it looks like this.

Outcome of this tutorial

Here is the code you should have fiddled together by now.

After tinkering with the hud, I decided to add this function as well.

It basically just gets width and height of the given text using the given font.

The hud

This is where we start making our hud.

Now, the vars table is where we will keep our sizes and offsets, and colors is where we’ll keep our colors. We are going to make this dependant on the screen resolution, so there won’t be any direct sizes stored.

This is how it looks like.

Font is the font we’ll be using for our text, padding will be the inner space between bars and text and the border, marging is the space between the hud element and the screen sides, text_spacing is the space between text and its bar, bar_spacing is the space between a bar and the next text line, bar_height is the height of a bar and width is the width of the element relative to the screen width.

Here are the colors. The bar colors aren’t really as good as I wanted them to be, but this is just an example, so the colors are up to you.

And finally here is our HUDPaint event.

I hope this tutorial helped you understand how to make a proper hud. There are some parts that could have been done better, but I’ll leave that up to you.

PS: I just realized that some of my comments aren’t explaining stuff correctly, but the coding is pretty straight-forward and doesn’t need much explanation.

Preface

This tutorial is about making heads-up-displays, or HUDs in short. I’ve seen a lot of you young scripters and even some of the old ones making huds, but only a few of you make them right.

This tutorial is going to show you how to make a small and well laid out health and armor display. Now, we are going to approach this by not slapping everything into one HUDPaint event. We are going to do it in a modular way — by making a few functions for drawing similar panels and then use those functions to draw the hud itself.

Workspace

Now you’ve got the custom icons your ready to go! First let’s set up our workspace, we need to get rid of that stupid, old, deprecated hud that some godforsaken person drew up (No offence, but it’s terrible).

The file’s we need to edit are simply cl_hud.lua, located usually in darkrp/gamemode/cl_hud.lua. If you do not have this file, you need to update to the latest DarkRP SVN as the hud system is totally different. You will end up getting considerably confused.

Getting started

To make the code tidy, we’ll be putting every variable and function in a table, so lets start off with making the table.

I’m going to assume that you know about gmod’s file structure and where everything goes.

The bar

Next, we’ll make a function for drawing a bar.

X, Y, W and H are fairly obvious, but if you don’t know what they are — X is the horizontal coordinate on the screen, Y is the vertical coordinate on the screen, W is the width, H is the height. Next we have colors. Colors for us will be a table with four elements — border, background, fill, shade. I will explain these later. And the last argument — value — is going to indicate how far the bar is gone from 0 width to W width. Lets go and fill the function up!

What we’re doing here is basically just putting some function calls into one function and doing some small math. But wait, did you notice? There’s a small function called «clr» that you have never heard of before. That’s right.

This function just takes a color object and splits it up into multiple returns. This is specifically for the «surface» functions, since none of them accept a color object.

To the hud, I used the following setup.

And the outcome looks like this.

Outcome of good_hud.PaintBar

This is just an example of what the function does, we won’t be using that color setup in the end.

The box

We don’t want to leave our bars just hanging there, they need a background! Don’t fear, here is how we draw the background.

It is as simple as that. X, Y, W and H I already explained. Colors is almost the same, except that it only needs two fields — border and background.

Using the following code.

It looks like this.

Outcome of good_hud.PaintPanel

But wait.. it looks similar to the one we already made. Yes, it does. I thought you said something about optimised and well laid out stuff.. Yeah, I did, I thought you would figure that out yourself, but I guess I’ll have to do it myself.

Now our PaintBar function uses our new PaintPanel function to draw some common parts. Works exactly the same, except it now has less code. And if we wanted to change how the background looks( maybe add an image or something ), we wouldn’t have to change it in two different places.

The message

We have the bars and stuff done, now it’s time for text. We already have some functions in the draw library that handle text, but for the sake of the tutorial we’ll make our own.

The PaintText function draws a piece of text with a small shadow. X and Y I already explained, text is the text we want to draw, font is the font and colors is again a table of colors, except with different fields — shadow — color of the text shadow, text — color of the text itself.

Using the following code.

The output looks like this.

Putting it all together

So, we went through how each component works, added a convenience function and made one component interact with the other. Now it’s time to put everything together, so it looks like this.

Outcome of this tutorial

Here is the code you should have fiddled together by now.

After tinkering with the hud, I decided to add this function as well.

It basically just gets width and height of the given text using the given font.

Files

Once you have downloaded the file, look for money.vtf, money.vmt, money_add.vtf and money_add.vmt. Copy them over to your garrysmod/garrysmod/materials/gui/silkicons folder. If it does not exist, create it and place your icons in.

Coding

Removing the Shitty Hud

We need to go to cl_hud.lua now and find the area containing the default hud, which should be located near:

Inside this area, cut out all these lines:

Congratulations, you’ve freed yourself from the oppression of the default HUD.

Paving the way

Now we need to setup our hud and make sure it’s called, under the whole:

We’ve added our function, but it won’t get called on it’s own, Near:

So Far

DoActualHUD() MUST BE ABOVE the DrawHUD() function, or you will get an error along these lines [DarkRPgamemodecl_hud.lua:212] attempt to call global ‘DoActualHUD’ (a nil value)(Hook: HUDPaint)

We need to calculate our money and salary in advance, so let’s add that to our DoActualHUD() function.

Now we can move on to drawing

Drawing on our canvas

Now it’s time to start drawing, garrysmod draw’s the HUD every frame. Which is measured by your FPS, (frames per seccond). Since garrysmod redraws every frame. If you don’t keep drawing something, it will simply disappear. This moves towards our advantage, as we don’t have to mess around and worrying about our HUD’s not drawing correctly.

First of all, let’s get a background going.

Why not change the colour?

A sudden buzz of code their, basicly, we’re drawing a rounded box with a 5 radius at the bottom left part of the screen. You have to rely on all resolutions, so never make anything bigger than the reasonable 800×600. Another alternative is percentage scaling, so you’re hud will scale it’s size based on the resolution.

But we’re not occupying much space, so we don’t need to.

If you play in singleplayer now, you will see a pretty empty HUD glaring at you with nothing on it. Now it’s time to draw some icons!

This makes sure we draw with no specific colour or transparency. Our HUD does not have an alpha (transparency) so we don’t specify it.

Now we can draw the icons!

As the icons get further ahead, I move closer to the bottom of the screen. Hence the ScrH() — 80 and so on. If you play, you will find a nice, iconed hud in all it’s greatness!

Information

Now we need to display some information, this part is just as easy as the others.

Like the background and the images, that’s alot to take in. Basicly, we’re draw the persons name, with a certain font. At the bottom left corner of the screen and make it white. We also add the correct aligning.

Now we have add the rest!

Result

HUD.jpg

The hud

This is where we start making our hud.

Now, the vars table is where we will keep our sizes and offsets, and colors is where we’ll keep our colors. We are going to make this dependant on the screen resolution, so there won’t be any direct sizes stored.

This is how it looks like.

Font is the font we’ll be using for our text, padding will be the inner space between bars and text and the border, marging is the space between the hud element and the screen sides, text_spacing is the space between text and its bar, bar_spacing is the space between a bar and the next text line, bar_height is the height of a bar and width is the width of the element relative to the screen width.

Here are the colors. The bar colors aren’t really as good as I wanted them to be, but this is just an example, so the colors are up to you.

And finally here is our HUDPaint event.

I hope this tutorial helped you understand how to make a proper hud. There are some parts that could have been done better, but I’ll leave that up to you.

PS: I just realized that some of my comments aren’t explaining stuff correctly, but the coding is pretty straight-forward and doesn’t need much explanation.

Extension & Links

How about making the money show like the default DarkRP Hud, with $5,000 instead of $5000.

Читайте также:

      

  • Как научиться читать мысли в реальной жизни
  •   

  • Path of exile зана где найти
  •   

  • Почему одних людей мы считаем красивыми а других нет
  •   

  • Скайрим ртутная руда где найти
  •   

  • Apex legends mobile сколько весит

5 лучших аддонов по мнению пользователей портала

ОПРОС

Еще к нам будете заходить? :)

Опубликовал: EginKaman — 22 декабрь 2014 (15:57)
Просмотров: 10493

  • 40
  • 1
  • 2
  • 3
  • 4
  • 5

HUD Designer

Упрощение создания HUD’ов.
Интерфейс позволяет создавать код HUD’ов, проектируя всё на вашем экране. Теперь нет необходимости знать луа, чтобы создать что-то своё. Встроенная система автосохранения, которая сохраняет ваш творение каждые 60 секунд в garrysmod/data/hud_designer/autosaves
Переименуйте файл ‘autosave_’ на ‘save_’ и переместите в папку garrysmod/data/hud_designer чтобы его загрузить.
Установка HUD: Сохраните текстовый документ, который должен начинаться с «save_» и скопируйте его в garrysmod/data/hud_designer Например: «save_myhud.txt»
Команды:

  • hd_open — консольная команда для открытия панели дизайнера
  • hd_reset — консольная команда для сброса дизайнера, полезная если что-то пошло не так
  • !hud — команда чата для открытия панели дизайнера

Скоро:

  • Больше форм
  • Внутриигровое тестирование
  • Создатель шрифта
  • Копирование инструмента
  • Создание HUD’a для TTT в редакторе

Как установить

Лицензия:
Нажать на кнопку Workshop, в открывшейся вкладке нажать кнопку «Подписаться».
Пиратка:
Открываем архив, там будет папка HUD Designer, её извлекаем в garrysmodgarrysmodaddons
Пример: D:Program FilesGarrys Modgarrysmodaddons

Похожие новости:

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

  GM:HUDPaint()

Description

Called whenever the HUD should be drawn.

Called right before GM:HUDDrawScoreBoard and after GM:HUDPaintBackground.

Not called when the Camera SWEP is equipped, or when the main menu is visible. GM:PostDrawHUD does not have this behavior.

See also GM:DrawOverlay.

Gets called only when r_drawvgui and CHudGMod are enabled and the game is not paused

This is a rendering hook which provides a 2d rendering context.

Example

Draws a transparent black box in the top left corner of the screen.

Kapellius

Всем привет! Данная статья предназначена больше для новичков и начинающих, нежели для более опытных художников. Я в большей степени самоучка, не претендую на реальное качество того что я делаю и не утверждаю что мои действия абсолютно точны и верны. Короче- как я умею, так я и делаю, и вам показываю

Конечный итог Постера

Конечный итог Постера

Спойлер

СТАВЬ ЛАЙК!!!

Разделы:

  • Общий разбор проблем
  • Сцена и тени
  • Фотошоп и прочие Кибер-Штучки

Разбор проблем

Все те 2 тыс. часов что я в общей сложности насидел в Gmod`е я могу назвать по большей части провальными (если речь идёт исключительно про создание постеров), ибо смотря на практически все мои старые работы- хочется взять и отмудохать самого себя чем-нибудь потяжелее. И вот вам маленькое пояснение- созданная с нуля сцена позволит вам гораздо точнее и лучше передать то, что вы хотели показать. А хороший и качественный свет лучше отобразит детали и мелочи, которые собственно и радуют наши с вами глаза.
С вашего позволения для наглядности я создам ремейк моего старого постера на тему всё того же Побега из Таркова. Ссылки на аддоны будут в конце этой статьи.

Старая работа ( Для сравнений )

Старая работа ( Для сравнений )

Сцена

Сразу хочу сказать, что создание постера на основе готовой карты- крынж чистой воды. Почему? Ну хотя бы потому что оригинальное освещение карты мешает настраивать ваше собственное, да и рельеф с окружением не настроить под свои хотелки и фантазию. А ведь стоит помнить, что редко какая работа создаётся без каких-либо изменений в процессе.
Критикуя- предлагай. Все ровные мужчины создают свои фотокарточки на такой замечательной карте как gm_black- это огромная тёмная коробка без какого-либо освещения в принципе. Фишкой это карты является то, что вы можете настраивать небо и освещение самостоятельно С НУЛЯ. Ну и помимо этого пол на карте не изменяется, что это явно намекает на использование моделей пола, земли и прочего из сторонних модов. Итак, мы зашли на эту карту. Для начала работы заглянем в раздел «Энтити», пункт «Editors»- это специальные редакторы для настройки скайбокса. Однако в первую очередь выбираем инструмент «Источник света». Поэкспериментируйте, выставьте адекватные для себя параметры и создайте лампочку- благодаря ей мы будем видеть в выставленном вам радиусе созданные вами предметы. В дальнейшем до создания освещения мы будем использовать этот инструмент для подсвечивания сцены. Вернёмся к редакторам. Выберите и заспавньте «Sky editor» (редактор неба), дабы мы могли понять где небо и земля. После- «Sun Editor» (редактор солнца), и «Fog editor» (редактор тумана). Нажав на Правую Кнопку Мыши на одном из кубиков мы увидим множество различных ползунков. Откройте свойства редактора тумана, и выставьте такое любое значение в шкале «fog end», чтобы появившийся туман полностью исчез (если и создавать туман- то только в фотошопе). Кубик редактора неба не трогайте, ибо мы будем использовать сторонние модели неба, а кубик солнца направьте стрелкой вниз- нам не нужен солнечный блик.

Вот так по итогу выглядит наша самая «основная основа». Не рекомендую  кстати раскидывать кубики далеко друг от друга- вдруг они вам  пригодятся?

Вот так по итогу выглядит наша самая «основная основа». Не рекомендую кстати раскидывать кубики далеко друг от друга- вдруг они вам пригодятся?

Вы наверное заметили что небо появилось, а вот пол чернее чёрного. И что делать? А ничего- мы будем создавать всю сцену с нуля накладывая модели пола поверх всей этой черноты и её не будет видно.
Хорошо, вот мы и готовы создавать сценку. Посмотрели на оригинал…. Ага, что-то типо пром-зоны. Ну, давайте я что-нибудь попробую сообразить.

Не нужно спешить и сразу создавать целую тучу объектов-  сделайте для начала основу вашей работы. Тут, как вы видите, я  попытался воссоздать разбитую, заброшенную дорогу.

Не нужно спешить и сразу создавать целую тучу объектов- сделайте для начала основу вашей работы. Тут, как вы видите, я попытался воссоздать разбитую, заброшенную дорогу.
Не ахти что получается конечно, но мне кажется что  выглядит неплохо. Добавление эффектов мёртвых листьев создаёт ощущение  того, что здесь давно никто не убирался. Ну и обломки тоже на это  намекают, но дальше больше.
Не ахти что получается конечно, но мне кажется что выглядит неплохо. Добавление эффектов мёртвых листьев создаёт ощущение того, что здесь давно никто не убирался. Ну и обломки тоже на это намекают, но дальше больше.
Вообще моя манера создания постеров может показаться  кому-то странной, ведь я не делаю все строго по порядку, а по  вдохновению. Если мне пришло в голову что лучше добавить- то я лучше  сделаю это сразу, а потом продолжу начатое. Таким образом работа у меня  продвигается сразу в нескольких направлениях, что конечно может  окончиться фатально- это конечно если я обнаружу какой-то косяк и мне  придётся много чего переделывать. Тут уже каждый хохочет как он хочет…  Касательно оформления деталей- я стараюсь не использовать те мелочи,  которые могут по своему логическому предназначению не подходить к  окружающей обстановке. К примеру- я не буду ставить обычный  автомобильный аккумулятор рядом с военным грузовиком, т.к понимаю что он  банально физически не подходит под такого рода машину. Зато модель  военного тяжёлого аккумулятора вполне себе для Урала годится.. Не  спрашивайте откуда я знаю о его тяжести :с .
Вообще моя манера создания постеров может показаться кому-то странной, ведь я не делаю все строго по порядку, а по вдохновению. Если мне пришло в голову что лучше добавить- то я лучше сделаю это сразу, а потом продолжу начатое. Таким образом работа у меня продвигается сразу в нескольких направлениях, что конечно может окончиться фатально- это конечно если я обнаружу какой-то косяк и мне придётся много чего переделывать. Тут уже каждый хохочет как он хочет… Касательно оформления деталей- я стараюсь не использовать те мелочи, которые могут по своему логическому предназначению не подходить к окружающей обстановке. К примеру- я не буду ставить обычный автомобильный аккумулятор рядом с военным грузовиком, т.к понимаю что он банально физически не подходит под такого рода машину. Зато модель военного тяжёлого аккумулятора вполне себе для Урала годится.. Не спрашивайте откуда я знаю о его тяжести :с .

Сцена потихоньку начинает обрастать ещё большими  деталями и мелочами. Конечно угол будет подобран такой, что не будет  видно этих чёрных кусков и прочего. Постепенно я буду допиливать  различные мелкие моменты. Ну и про маленькие пасхалочки не забываем- в  данном случае у нас контейнер с драгоценными металлами из Metal Gear  Solid V: The Phantom Pain. Ну, кому нужны 100 единиц драгоценностей?  Налетайте.Теперь перейдём к нашим бравым солдатам- для начала соберём им  пушки. Делается это при помощи установки отдельных моделей через Steam  Workshop, или ручной установки файлов со сторонних ресурсов. С нужной  нам моделью мы манипулируем физической пушкой и инструментом Easy  Bodygroup Tool.
Сцена потихоньку начинает обрастать ещё большими деталями и мелочами. Конечно угол будет подобран такой, что не будет видно этих чёрных кусков и прочего. Постепенно я буду допиливать различные мелкие моменты. Ну и про маленькие пасхалочки не забываем- в данном случае у нас контейнер с драгоценными металлами из Metal Gear Solid V: The Phantom Pain. Ну, кому нужны 100 единиц драгоценностей? Налетайте.Теперь перейдём к нашим бравым солдатам- для начала соберём им пушки. Делается это при помощи установки отдельных моделей через Steam Workshop, или ручной установки файлов со сторонних ресурсов. С нужной нам моделью мы манипулируем физической пушкой и инструментом Easy Bodygroup Tool.
Хорошо. Теперь подготовим наших операторов. Берём  модели из пака ФСБ Альфа, спавним два любых рэгдолла, после чего создаём  модели одежды и экипировки, и при помощи всё того же инструмента Easy  Bodygroup Tool настраиваем всё так, как нужно нам. Соединяем экипировку и  модели оперативников при помощи Easy Bonemerge Tool.
Хорошо. Теперь подготовим наших операторов. Берём модели из пака ФСБ Альфа, спавним два любых рэгдолла, после чего создаём модели одежды и экипировки, и при помощи всё того же инструмента Easy Bodygroup Tool настраиваем всё так, как нужно нам. Соединяем экипировку и модели оперативников при помощи Easy Bonemerge Tool.
Вот такие получаются красавчики. Захватываем модели при  помощи физической пушки и уже начинаем манипулировать с ними- создаём  позу. Если хотите сделать красиво- старайтесь делать позы персонажам  более-менее реалистичные, чтобы это не нарушало общую картину  восприятия. Если вы не знаете как сделать лучше- ищите в интернете  картинки с различными солдатами и воссоздавайте уже их позы, либо  копируйте их с добавлением чего-то своего. Оружие мы «выдаём» в руки в  ручную, без использования всяких там инструментов- так точнее.
Вот такие получаются красавчики. Захватываем модели при помощи физической пушки и уже начинаем манипулировать с ними- создаём позу. Если хотите сделать красиво- старайтесь делать позы персонажам более-менее реалистичные, чтобы это не нарушало общую картину восприятия. Если вы не знаете как сделать лучше- ищите в интернете картинки с различными солдатами и воссоздавайте уже их позы, либо копируйте их с добавлением чего-то своего. Оружие мы «выдаём» в руки в ручную, без использования всяких там инструментов- так точнее.
Вуаля! Вот и заготовочка готова. Как вы видите мне  резко приспичило поменять солдату на переднем плане автомат- у меня  часто такое бывает. (Хочу ещё отметить что FPS у меня стал значительно  просаживаться из-за такого количества предметов с нормальным разрешением  текстур и прочего. Если у вас слабый компьютер- боюсь что подобным  заниматься без кучи убитых нерв у вас на вряд-ли получиться.)
Вуаля! Вот и заготовочка готова. Как вы видите мне резко приспичило поменять солдату на переднем плане автомат- у меня часто такое бывает. (Хочу ещё отметить что FPS у меня стал значительно просаживаться из-за такого количества предметов с нормальным разрешением текстур и прочего. Если у вас слабый компьютер- боюсь что подобным заниматься без кучи убитых нерв у вас на вряд-ли получиться.)

Тени и освещение

Soft Lamp`s- инструмент коварный. Он порядочно роняет ваши кадры, и при этом сразу-то и не понятно как им пользоваться. Ссылки на обучающий материал вы найдёте в конце статьи, а сейчас я вам предлагаю взглянуть на первую пробу этого инструмента на нашем примере.

Заметили? В отличии от обычных фонарей и лампочек у  этого инструмента тени выражены гораздо более ярче и ведь всё по  научному- по преломлению света. Однако не изучив хотя бы поверхностно  этот инструмент- ваши тени будут превращаться в современный пиксельный  камуфляж, который вы замучаетесь потом замазывать в фотошопе, или где вы  там ещё фотокарточки обрабатываете.

Заметили? В отличии от обычных фонарей и лампочек у этого инструмента тени выражены гораздо более ярче и ведь всё по научному- по преломлению света. Однако не изучив хотя бы поверхностно этот инструмент- ваши тени будут превращаться в современный пиксельный камуфляж, который вы замучаетесь потом замазывать в фотошопе, или где вы там ещё фотокарточки обрабатываете.

Долгое и мучительное создание ламп в конечном счёте подошло к концу. Я не вижу смысла показывать вам постепенное создание света, т.к это банально больно мне (в 5 фпс расставлять заглавном меню нажать лампы и ещё скриншоты попутно делать- то ещё удовольствие). Конечный результат приведён выше. Да, где-то темновато, где-то пересвет — в любом случае обработка в ФШ сделает картинку более приятно глазу.Когда всё готово- нужно картинку зарендерить. Нет, не сфотографировать при помощи стандартного фотоаппарата, или кнопки F12- наша задача именно создать картинку в высоком разрешении. Для этого мы открываем консоль (нажимаем на клавишу тильду ~) и вбиваем команду «poster x», где х — значение разрешения. Чем больше число- тем больше будет картинка. А чем больше картинка- тем меньше будет «пиксельных лесенок» и можно будет более тщательнее обработать наш постер. Вбив команду с нужным значением, идём по следующему пути- Steam > steamapps > common > GarrysMod > garrysmod > screenshots. Там мы и находим нашу готовую картинку. Далее просто перекиньте её куда вам угодно- ибо следующим шагом у нас идёт обработка в Фотошопе

однако будьте осторожны, если ваш компьютер, как например мой, не  отличается высокой производительностью- то в конечном счёте может  получиться подобный прикольчик. В таком случае придётся либо уменьшать  количество освещения и объектов, либо ставить разрешение поменьше.

однако будьте осторожны, если ваш компьютер, как например мой, не отличается высокой производительностью- то в конечном счёте может получиться подобный прикольчик. В таком случае придётся либо уменьшать количество освещения и объектов, либо ставить разрешение поменьше.

Фотошоп и прочие кибер-штучки

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

В целом я думаю понятно, что дальше я буду добавлять  ещё больше света, различных эффектов и много чего ещё. Сразу хочу  сказать, что различные блики, огонь и прочее я не делаю сам, а скачиваю  картинки в формате PNG- так проще, и эффект тот же. Найти всё это добро  можно легко и просто в интернете. (например: огонь png, дым png и т.п)Я,  кстати, делаю акцент на всяких необычных мелочах- к примеру не  однородный луч лазерного целеуказателя, или оранжевая линза  коллиматорного прицела. Это всё тоже подсматривается из интернетных  картинок.

В целом я думаю понятно, что дальше я буду добавлять ещё больше света, различных эффектов и много чего ещё. Сразу хочу сказать, что различные блики, огонь и прочее я не делаю сам, а скачиваю картинки в формате PNG- так проще, и эффект тот же. Найти всё это добро можно легко и просто в интернете. (например: огонь png, дым png и т.п)Я, кстати, делаю акцент на всяких необычных мелочах- к примеру не однородный луч лазерного целеуказателя, или оранжевая линза коллиматорного прицела. Это всё тоже подсматривается из интернетных картинок.
Через часа-полтора получается вот такая красота.  Красота для меня конечно же, для вас это может быть что угодно. И  конечный результат более крупным планом.
Через часа-полтора получается вот такая красота. Красота для меня конечно же, для вас это может быть что угодно. И конечный результат более крупным планом.
ИТОГ
ИТОГ

Что я могу сказать напоследок?
Не имея вагона и тележки практики в позинге, сценбилде и обработки в фотошопе — у вас не получится что-то более-менее хорошее. Если хотите добиться успеха- пробуйте себя во всех трёх пунктах, создавайте работы, обрабатывайте их. Рано или поздно у вас начнёт получаться, как начало получаться у меня :)

Спойлер

gm_black: https://steamcommunity.com/sharedfiles/filedetails/?id=531458473
Battlefield V scenebuild megapack: https://steamcommunity.com/sharedfiles/filedetails/?id=1979020217
Escape from Tarkov AK rifles: https://steamcommunity.com/sharedfiles/filedetails/?id=2178599577
Escape from Tarkov MP-153: https://steamcommunity.com/sharedfiles/filedetails/?id=2198229715
Escape From Tarkov Grenades (ящик): https://steamcommunity.com/sharedfiles/filedetails/?id=2178654806
Escape from Tarkov Ural-4320: https://steamcommunity.com/sharedfiles/filedetails/?id=2221101820
Escape from Tarkov prop megapack: https://steamcommunity.com/sharedfiles/filedetails/?id=1999644123
Оперативники ФСБ от Comrad Ivan: https://vk.com/wall-100355872_3589
Easy Bodygroup Tool: https://steamcommunity.com/sharedfiles/filedetails/?id=104604943
Ease Entity Tool: https://steamcommunity.com/sharedfiles/filedetails/?id=170917418
Soft Lamp: https://steamcommunity.com/sharedfiles/filedetails/?id=2044112738
Spec-Ops the line scenebuild megapack: https://steamcommunity.com/sharedfiles/filedetails/?id=1981500595
S.T.A.L.K.E.R. buildings pack: https://steamcommunity.com/sharedfiles/filedetails/?id=105586117

#1

MrAfitol

    Новичок

  • Пользователь
  • Pip

  • 2 сообщений

Отправлено 29 Март 2021 — 12:11

Смотря по гайдам я сделал отображения хп и брони но как сделать отображения патрон я так и не понял как это сделать.
Кто знает подскажите пожалуйста, буду очень благодарен !!!

  • Наверх


#2


Ego Core

Отправлено 29 Март 2021 — 12:32

Патроны(Сколько в обойме):

LocalPlayer():GetActiveWeapon():Clip1()

Патроны(Сколько в запасе)

LocalPlayer():GetAmmoCount(LocalPlayer():GetActiveWeapon():GetPrimaryAmmoType())

Сообщение отредактировал Ego Core: 29 Март 2021 — 12:33

  • MrAfitol это нравится
  • Наверх


#3


MrAfitol

MrAfitol

    Новичок

  • Пользователь
  • Pip

  • 2 сообщений

Отправлено 29 Март 2021 — 12:39

Патроны(Сколько в обойме):

LocalPlayer():GetActiveWeapon():Clip1()

Патроны(Сколько в запасе)

LocalPlayer():GetAmmoCount(LocalPlayer():GetActiveWeapon():GetPrimaryAmmoType())

Спасибо !!!

  • Наверх


#4


Ego Core

Отправлено 29 Март 2021 — 12:49

Спасибо !!!

Если еще нужна будет помощь — спрашивай.

  • Наверх


Понравилась статья? Поделить с друзьями:
  • Как написать цифрами 1200000
  • Как написать хроматическую гамму
  • Как написать цифрами 1100000 рублей
  • Как написать хромает
  • Как написать цифрами 1050000 рублей