Сначала
- 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).
Либо упрощенный(Fullscreen)
Есть также 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