[Туториал] Создаём hud который использует текстуры вместо шрифта.
 

0 Пользователей и 2 Гостей просматривают эту тему.

  • True Citizen
  • *
  • Сообщений: 623
    • Просмотр профиля
Многие из вас знают что в Half-Life 2 для отображения цифр в hud используются шрифты, но что делать если захотелось использовать текстуры? :D
Тогда этот туториал для вас!

Что нам потребуется?
    Небольшие знания C++

    Знать как работает Source Engine (скрипты, материалы и тд)

    Содержание серого вещества в черепной коробке!


Шаг первый!
Для начала нужно понять как работает оригинальны hud в Half-Life 2!
Spoiler
[свернуть]

Для примера откроем hud_health.cpp, немного пролистав вниз мы увидим что для отображения надписей (HEALTH, ARMOR, AMMO) используется SetLabelText.

Чуть ниже можно встретить StartAnimationSequence (используется для создания анимаций, смены цвета и других няшек) и настраивается он естественно в HudAnimations.txt в папке scripts вашего мода.

Тут всё понятно, но подождите как !@#$ работают цифры? Всё просто!
Поднимаемся в начало файла и видим что базовым классом для hud_health является CHudNumericDisplay (hud_numericdisplay.cpp)
Кто ещё не понял... Сейчас мы должны открыть hud_numericdisplay :D

Из файлы мы видим что для отображения цифр используются следующие параметры:
    SetDisplayValue

    SetShouldDisplayValue

    PaintNumbers

    Paint
[/b]

И так! SetDisplayValue и SetShouldDisplayValue нам не интересны, там и так всё понятно, но вот PaintNumbers и Paint нам очень нужны!

В PaintNumbers настраивается позиция цифры, т.е. к какой стороне они присоединены (поверьте это вам очень пригодится в будующем).

В Paint настраивается уже сам цвет цифр, шрифт и позиция в самом HUD (к примеру digit_xpos, digit_ypos которые вы в дальнейшем сможете найтраивать через HudLayout.res).

Вроде бы с оригинальным hud мы разабрались и теперь можно приступить к чтому чего вы ждали! :D

Для создания цифр из текстур Valve подготовила вам альтернативную версию hud_numericdisplay, CHudBitmapNumericDisplay (hud_bitmapnumericdisplay.cpp)

Открываем hud_bitmapnumericdisplay.cpp и спускаемся к PaintNumbers, где вы и увидите самое главное!

В первом же блоке кода видно что числа ~трансформируются~ в иконки которые используют текстуры, то есть number_%d это название иконки, где % это число.

Сам же внешний вид иконок настраивается очень легко! Для этого нужно открыть mod_textures.txt находящийся в папке scripts и добавить следующее: http://privatepaste.com/7c1eecd438(пример)

Всё с этим более менее всё понятно, но как же теперь сделать что бы hud_health использовал эту систему? Идём обратоно в hud_health.cpp, потом заменяем include hud_numericdisplay на hud_bitmapnumericdisplay и вместо базового класса CHudNumericDisplay мы вписываем CHudBitmapNumericDisplay!

Вот и всё. Теперь наш hud_health будет использовать текстуры для цифр!

P.S. Если есть какие нибудь замечания по туториалу то пишите :D
  • Good Citizen
  • *
  • Сообщений: 79
    • Просмотр профиля
Огромное спасибо!

Можно будет забацать худ как в ртб :)

Cvoxalury

  • *
  • Сообщений: 314
    • Просмотр профиля
«Если есть какие нибудь замечания по туториалу то пишите»

- для отоброжения цифр

Брожение?

- нужно открыть mod_textures.txt находящийся в папке scripts и добавить следующее

Его нет. В нём достаточно чтобы было то, что по ссылке?

Кроме прочего, он (тутор) не работает никуя.
  • True Citizen
  • *
  • Сообщений: 623
    • Просмотр профиля
mod_textures.txt в каком то из GCF файлов есть

И почему же он не работает?
  • *
  • Сообщений: 361
    • Просмотр профиля
А конкретно тутора по воссозданию ХУД'а из бетки нет ?