SBARINFO — меняем HUD

Сначала

  • SBARINFO — это файл разметки, в нем указывается расположение элементов на экране статусбара.
  • Статус бар имеет разрешение 320×200. Статус бар растягивается до разрешения экрана.Если хотите изменить разрешение статус бара, используйте Resolution x,y, подробнее на вики

Создание SBARINFO

Сперва, создайте файл SBARINFO, через Slade. В качестве Text Language выберите ZDoom StatusBarInfo(для подсветки синтаксиса).

И напишите следующие:

statusbar fullscreen, fullscreenoffsets {
  DrawImage "ARM1A0", -45,-50;
}

Синтаксис statusbar следующий:

statusbar тип_статус_бара {
  ...
  комманды
  ...
}

Что бы понимать что здесь написано, надо понимать что такое statusBar.

Status Bar — это окно состояния, это то самое окошко в котором ты видишь лицо думгая, количество патронов, хп и армор.

Между статус барами, можно переключаться, тем самым ты меняешь тип статус бара

Типы статус баров

Нажимая на «-» или «+» можно получить либо обычный статус бар(Normal).

Normal Status Bar

Либо упрощенный(Fullscreen)

FullScreen Status Bar

Есть также Inventory statusBar, а также InventoryFullscreen statusBar, но это лишь статус бары которые рисуются поверх предыдущих двух.

  • Inventory statusBar рисуется поверх обычного статусбара(Normal)
  • InventoryFullscreen statusBar рисуется поверх упрощенного статусбара(Fullscreen)

Также есть fullscreenoffsets. Это не совсем статус бар, это просто надстройка для Fullscreen статус бара, позволяющая размещать элементы относительно краев экрана. Чуть позже, я разберу преимущества fullscreenoffsets статус бара.

Подробнее о статус барах, на вики.

Разбираемся в коде

statusbar fullscreen, fullscreenoffsets {
  DrawImage "ARM1A0", -45,-50;
}

В первой строке мы указали, что станем изменять fullscreen statusbar, с надстройкой fullscreenoffsets.

DrawImage "ARM1A0", -45,-50;

В этой строке, используется комманда DrawImage, которая (как понятно из названия) рисует картинку, на экране. Синтаксис у неё следующий.

DrawImage "название_картинки", x, y;

Из за того что мы используем относительные координаты x,y (fullscreenoffsets), координаты рассчитываются по другому.

  • Если x == 15, то x отсчитывается как обычно, то-есть начинается с левой стороны экрана.
  • Если x == -15, то x отсчитывается с правой стороны экрана.
  • Если y == 15, то y отсчитывается относительно верхней стороны экрана.
  • Если y == -15, то y отсчитывается относительно нижней стороны экрана.
DrawImage "ARM1A0", -45,-50;

Вот эта комманда дословно значит следующее. Нарисовать картинку ARM1A0, на расстоянии 45 пикселей, от правой стороны экрана по оси X, и на расстоянии 50 пикселей относительно нижней стороны экрана по оси Y. ARM1A0 это изображение взятое с doom2.wad, и выглядит оно так.

Если запустить, то увидим картинку брони, в предполагаемом месте.

Теперь добавим новую комманду, после DrawImage.

DrawNumber 3, HUDFONT_DOOM,Gold, Armor, -70,-67;

Пишем цифры на экране

Синтаксис у комманды DrawNumber следующий:

DrawNumber количество_цифр, шрифт, цвет, значение, x, y;

А теперь по порядку:

количество_цифр — это цифра, указывающая максимальное количество цифр на экране. Если указать 3, то число будет от 0 до 999. Если 2 то число будет от 0 до 99.

шрифт — тут все и так понятно, также, есть несколько предустановленных шрифтов:

  • HUDFONT_DOOM
  • HUDFONT_RAVEN
  • INDEXFONT_RAVEN
  • INDEXFONT_DOOM
  • IntermissionFont_Doom

Также можно добавлять собственные шрифты с помощью FONTDEFS

цвет — тут точно так же как и с шрифтом, есть предустановленный цвет.

А также можно добавлять собственный цвет с помощью TEXTCOLO.

значение — в качестве значения, может быть выбрано здоровье(Health), броня(Armor), патроны(Ammo1), и т.д. Подробнее на вики

x, y — устанавливаются так же, как и в DrawImage, относительно сторон экрана.

Теперь код должен выглядеть так:

statusbar fullscreen,fullscreenoffsets
{
  DrawImage "ARM1A0", -45,-50;
  DrawNumber 3, HUDFONT_DOOM,Gold, Armor, -70,-67;
}

Если запустить, то увидим следующие.

Добавляем mugshot(лицо думера) на экран.

Лицо думера, рисуется коммандой DrawMugShot, синтаксис у неё следующий.

DrawMugShot точность, x, y;
  • точность — это значение от 1 до 9, указывающее сколько уровней крови на лице думмера, будет перед смертью(да, это просто копипаст с вики)
  • x,y — расположение лица думера на экране относительно краев экрана

Тут все и так понятно, добавляем

drawmugshot 5, -60, -40;

Проверяем

DrawKeyBar — добавляем ключи

Комманда DrawKeyBar нужна для отображения поднятых ключей на экране. Синтаксис у неё такой

drawkeybar количество_ключей, ориентация, флаг, размер_инонки, x, y, количество_рядов, количество_столбцов, расстояние_между_рядами_и_столбцами;
  • количество ключей — указывает максимальное количество, отображаемых ключей на экране.
  • ориентация — указывает как будут группироваться ключ вертикально/горизонтально. Может принимать одно из двух значений vertical/horizontal.
  • Флаг — меняет порядок заполнения рядом и столбцов, есть 2 типа флагов reverserows и reverse подробнее на вики
  • Размер иконки — тут все и так понятно, единственное, можно заменить классические x,y иконки словом auto, что автоматически подберет нужный размер.
  • x,y — координаты на экране.
  • Количество рядов — задает количество рядов в кейбаре, 0 значит бесконечность.
  • Количество столбцов — задает количество столбцов в кейбаре, 0 значит бесконечность..
  • Расстояние между рядами и столбцами — здесь смело пишите auto, или если хотите вручную указать расстояние пишите x,y.

Теперь добавьте следующую строку.

drawkeybar 6, horizontal, reverserows, auto, 210, -20, 0, 3, auto;

Здесь:

  • количество ключей — 6
  • ориентация — horizontal
  • Флаг — reverserows
  • Размер иконки — auto
  • x,y — (210, -20)
  • Количество рядов — 0 (бесконечно)
  • Количество столбцов — 3
  • Расстояние между рядами и столбцами — auto

Вот и разобрались, с этой коммандой. Можете запускать wad.

Также, с помощью комманды DrawString, вы можете добавить текст в hud. Которая, имеет следующий синтаксис.

drawString шрифт, трансляция, "текст", x_позиция, y_поизция;

А вот пример, данной комманды. Добавьте его к себе в SBARINFO.

drawString BIGFONT, untranslated, "under-prog.ru", 200, 50;

Теперь, разберем его:

  • шрифт — задает шрифт для текста.
  • трансляция — указывает цвет текста.
  • текст — задает текст, который виден на экране.
  • x_позиция, y_позиция — позиция относительно лево-верхнего угла экрана.

Помимо своей строки, в аргумент текст, вы можете передать заготовленные переменные, такие как:

  • levelname — имя текущего уровня
  • levellump — название карты
  • skillname — имя уровня сложности
  • playerclass — имя класса игрока
  • playername — имя игрока
  • ammo1tag — тег патронов основного оружия.
  • ammo2tag — тег патронов дополнительного оружия.
  • weapontag — тег текущего оружия
  • inventorytag — тег выбранного предмета инвентаря
  • globalvar<число> — выводит глобальную переменную
  • globalarray<число> — выводит строку из глобального массива, по шаблону: array[playernumber()]
  • time — количество времени проведенное на уровне.
  • logtext — текст из логов.

Подробнее на вики.

Итоговый результат

Обладая этими знаниями, вы уже сможете сделать это

Экспериментируйте, пробуйте, и сделайте свой, уникальный статусбар.

Скачать пример: MEGA

Пожалуйста отключи блокировщик рекламы, или внеси сайт в белый список!

Please disable your adblocker or whitelist this site!