Hud сообщение по центру

Обновлено: 30.06.2024

Contents

HUD элементы используют библиотеку VGUI2 для рендеринга их состояния. Это позволяет им не только выглядеть и быть похожими на остальные VGUI элементам в игре, но также позволяет им использовать скриптовые, анимированные компоненты, значительно увеличивая их визуальное качество. Это требует наличия двух компонент на стороне клиента: объявление в коде и скриптовые файлы которые доступны клиенту для выполнения, скрипты - это файлы не входящие в код клиента.

Классы HUD элементов наследуются от базового класса CHudElement . Этот базовый класс работает с обновлением, отрисовкой и скрытием HUD элементов основанных на определенном игровом состоянии (HUD элемент может быть установлен или исчезнуть когда игрок умирает). Этот файл также интерпретирует файл HudLayout.res в папке /scripts вашего мода для определения позиций и поведений элементов. Большинсво элементов наследуются от базового класса vgui::Panel . Он предоставляет им примитивные панели на которых можно отрисовывать текст, формы или текстуры. Для более детальной информации по классу vgui::Panel , обратитесь к документации по VGUI2 предоставленной в данном SDK.

Прототип и тело функции должны содержать данное объявление. Класс bf_read это буффер данных с различными методами запросов. Он используется для передачи неформатированных данных между сервером и клиентом. Сервер использует класс bf_write для передачи данных.

HUD элемент должен также включать определение макроса HOOK_HUD_MESSAGE обычно вызываемый функцией Init() HUD элемента. Продолжая наш пример описанный выше, объявление будет такое:

  • Текстовый идентификатор совпадающий с идентификатором описанным с помощью DECLARE_HUD_MESSAGE в HUD элементе.

Note: Значение -1 подразумевается как размер переменной или неизвестно

Функция UserMessageBegin() определена как:

messagename

Следующие макросы предоставляют функциональность для записи данных в поток отправляемый клиенту. Они должны быть приняты и обработаны в порядке отправления. Макросы записываются так:

Ниже приводится описание всех доступных макросов для отправки данных в поток:

Теперь, когда данные отправлены и получены между клиентом и сервером, функции отрисовки (как описано в документе по VGUI2) могут быть использованы для отрисовки любой информации которая будет нужна на основании полученных данных.

Пример HUD элемента может быть найден в следующих файлах, поставляемых с примером приложения:

В этом случае эта функция может быть добавлена в ваш проект, она полностью снабжена коментариями.

Использование:

У вас должен быть модифицированный RecipientFilter, пожалуйста смотрите здесь для дополнительной информации.

Изображение

На HLTV тоже задавались этим вопросом. Ответа нет, никак это не убрать. Только надеяться, что в новом обновлении это уберут.

Deimos писал(а): На HLTV тоже задавались этим вопросом. Ответа нет, никак это не убрать. Только надеяться, что в новом обновлении это уберут.

да, судя по всему это глобальная проблема, на стим форуме народ активно материться в сторону Valve, за такое чудесное обновление :)

По просьбе: Есть ли замена HudMsg?
Вступление:
В Source движке есть несколько способов вывода информации на экран, но один из способов CCSUsrMsg_HudMsg, случайно или намеренно сломан в CSGO.
На место данного способа пришел более технологичный вывод важной информации, однако рассчитан он больше на локальное использование, что все равно почти не мешает использовать на серверах.

Сразу примеры:

todo: Сделать побольше примеров, например с прикреплением надписи к игроку или энтити. Отображение за стеной, расстояние, эффекты.

Реализация:
Вы можете скачать только include с функцией, или архив с плагином-примером. (только команда с чтением 11 аргументов, и всё.)
Итак 1 единственная функция для вывода:

"Интерфейсная" часть состоит из конфигов и текстур.
Конфиги расположены в папке config\ui, текстуры – в textures\ui.
Прежде чем перейти к детальному описанию, рассмотрим общие понятия.

width – ширина текстуры или надписи
height – высота текстуры или надписи
font – шрифт надписей. В игре есть несколько шрифтов, которые описаны в файле fonts.ltx.
Каждый элемент худа имеет свои координаты по горизонтали "Х" и по вертикали "Y".
Система координат в игре
Начало координат расположено в верхнем левом углу экрана. Ось "Х" расположена горизонтально, и направлена слева - направо. Ось "Y" расположена вертикально и направлена сверху - вниз.

В игре есть абсолютная и относительная системы координат.
Чтобы задать положение элемента на экране, достаточно задать координаты его верхнего левого угла, длину и ширину. Все остальное сделает программа. Это и есть абсолютная система координат.
Теперь рассмотрим относительную систему координат.
Возьмем для примера счетчик НПС на карте. Счетчик состоит из текстуры ui_hud_map_counter и числового значения счетчика.

Как видите, текстура счетчика имеет свои координаты, а вот числовое значение счетчика берет отсчет не от верхнего угла экрана, а от верхнего угла текстуры, на которой он расположен. Теперь если мы изменим координаты текстуры счетчика, его числовое значение "последует" за текстурой.
Вот это и есть относительная система координат.

stretch – данный параметр используется, если нужно чтобы текстура имела определенный (фиксированный) размер. Для этого данному параметру нужно присвоить значение "1".
RGB – цвет шрифта, где R – красный, G – зеленый, B – синий. Так же вместе с этими значениями используется и четвертое – А ("интенсивность" шрифта).
complex_mode – многострочный текст. Данный параметр имеет два значения – "0" и "1". Если длина строки будет больше ширины окна, то чтобы слова перенеслись на следующую строку нужно данному параметру выставить значение в "1".
align – выравнивание текста. Имеет такие значения: l - по левому краю, c - по центру, r - по правому краю
Анимация элемента худа:
параметр – light_anim – тип анимации (ui_pda_contacts, ui_btn_hint, ui_slow_blinking_alpha, credits_head и т.д.),
параметр la_cyclic – повторение анимации (имеет два значения – "0" и "1"),
параметр la_texture – использовать текстуру в анимации (имеет два значения – "0" и "1"),
параметр la_text – использовать текст в анимации (имеет два значения – "0" и "1"),
параметр la_alpha – задействовать альфа-канал (не уверен) в анимации (имеет два значения – "0" и "1").
Основной параметр – light_anim, все остальные параметры, с префиксом la_, идут в одной связке с ним, и без него не работают.
Если нужно убрать текстуру - убираем в конфиге путь к текстуре.
Если нужно убрать текст - либо убираем сам текст, либо в параметрах текста ставим а="0".

maingame.xml

static_health – "подложка" для шкалы "жизнь". Состоит непосредственно из текстуры ui_hud_shkala_health и иконки ui_hud_icon_health.
progress_bar_health – шкала "жизни". В конфиге присутствуют ключи horz="1" (в этом случае шкала будет изменяться по горизонтали, если присвоит значение "0", то по вертикали), min="0" max="100" (минимальное и максимальное значение шкалы).
static_armor - "подложка" для шкалы "броня". Состоит непосредственно из текстуры ui_hud_shkala_armor и иконки ui_hud_icon_armour.
progress_bar_armor – шкала "брони". Так же имеет такой же набор ключей, что и шкала "жизни".
static_weapon – окно патронов. Помимо текстуры самого окна, имеет еще тип патронов.
static_ammo – счетчик патронов
static_wpn_icon – иконка коробки от патронов
car_panel – панель машины (описана в car_panel.xml)
static_pda_online – счетчик НПС на карте. Состоит из текстуры ui_hud_map_counter и числового значения счетчика.
quick_info – обучение в начале игры.
icons_scroll_view – список индикаторов состояния ГГ:

weapon_jammed_static – заклинившее оружие
radiation_static – радиация
wound_static – ранения
starvation_static – голод
psy_health_static – "мораль"
invincible_static – что-то вроде режима "бога"
can_sleep_static – сон
artefact_static – артефакт
Данный список не поддаётся "правке" индивидуально. Правится только всё сразу параметром icons_scroll_view.

flashing_icons - мигающий ПДА
pick_up_item – надпись "поднять предмет"
artefact_panel – панель артефактов
new_contact_snd – звук нового "контакта" (значения) счетчика НПС на карте.

motion_icon.xml

background – подложка для положения ГГ, а так же полоски выносливости, уровня шума и заметности ГГ
state_normal – нормальное положение
state_crouch – в приседе
state_creep – в полном приседе
state_climb – подъем по лестнице
state_run – в движении
state_sprint – бег
power_progress – шкала выносливости ГГ
luminosity_progress – шкала "видимости" ГГ
noise_progress – шкала издаваемого шума ГГ

ui_custom_msgs.xml

zone_map.xml

level_frame – непосредственно сама миникарта
background – подложка карты
dist_text – дистанция до цели
compass – компас на миникарте
center – "точка" ГГ на миникарте

Список задействованных файлов и описание:
inventory_new.xml – содержит основные конфиги инвентаря
inventory_item.xml – описание и параметры предмета в инвентаре
af_params.xml – описание и параметры артефактов в инвентаре
Помимо конфигурационных файлов используются еще файлы текстур: ui_inventory.dds, ui_inventory2.dds. Набор текстур, представленный в данных файлах, расписаны в ui_inventory.xml и ui_inventory2.xml.
Рассмотрим более детально перечисленные файлы.

inventory_new.xml

properties_box – подложка
main – окно инвентаря
belt_slots – слоты
back – сам инвентарь, окно описания и параметров предметов, иконка ГГ в полный рост, параметры костюма
bottom_static – "полоска" внизу экрана
dragdrop_bag – рюкзак, здесь

cell_width, cell_height – ширина и высота ячейки
rows_num – количество строк
cols_num – количество столбцов

unlimited – ограничение рюкзака
group_similar – "группировка" одинаковых предметов
dragdrop_belt – панель артов
dragdrop_outfit – панель костюма
dragdrop_pistol – пистолетный слот
dragdrop_automatic – слот автоматического оружия
В параметрах dragdrop_outfit, dragdrop_pistol и dragdrop_automatic присутствует вот такой ключ custom_placement, который отвечает за пользовательское размещение элемента.
bag_static – надпись "Вес"
money_static – количество денег
descr_static – надпись "Описание"
character_frame_window – окно костюма с надписью "Костюм"
outfit_info – описание параметров костюма, здесь
auto_static – надпись "Параметры"
scroll_view – секция скрола, в которой присутствует параметр always_show_scroll и принимающий значение "0" (не отображать изначально) и "1" (показывать сразу)
Дальше идут описание параметров защиты костюма, которые состоят из иконки и текста. Стоит заметить, что данная секция "зашита" в движок и индивидуальной правке не поддается.
progress_background – подложка для шкал
Дальше идут шкалы здоровья и т.д.
time_static – секция часов, состоящая из текстуры и надписи "Время"
time_static_str – непосредственно сами часы
exit_button – секция кнопки выход, состоящая из текстуры, надписи "Выход" и цвета самой надписи в зависимости от состояния кнопки (обычное, нажатая и т.д.)
action_sounds – секция звуков, в зависимости от выполняемого действия

inventory_item.xml

static_name – название предмета
static_weight – вес предмета
static_cost – цена предмета
static_condition – надпись "Состояние"
descr_list – описание предмета
image_static – иконка предмета
condition_progress – шкала состояния предмета
wpn_params – секция параметров оружия
Каждый параметр оружия состоит из названия и шкалы.

af_params.xml
В этом файле описаны параметры артов. Каждый параметр имеет текстуру и текст.

Список задействованных файлов и описание:
carbody_new.xml – содержит основные конфиги окна обыска
carbody_item.xml – описание и параметры предмета в окне обыска
Рассмотрим более детально перечисленные файлы

carbody_new.xml

static_icon – иконки ГГ и мертвого НПС/мутанта
our_bag_static – рюкзак ГГ
dragdrop_list_our – описание сетки рюкзака ГГ
others_bag_static –
dragdrop_list_other – описание сетки
frame_window – центральная часть окна обыска, состоящая из двух частей:
верхней, где показаны иконка предмета, его состояние, вес и цена, и нижней, где представлено описание предмета
descr_static – окно описания предмета
auto_static – надпись "Описание"
take_all_btn – секция кнопки "Взять все"
bottom_background – текстура полосы вверху окна обыска
top_background – текстура полосы внизу окна обыска

carbody_item.xml

auto – секция, в которой описаны надписи "Вес", "Цена" и "Состояние"
static_name – название предмета
static_weight – числовое значение веса
static_cost – числовое значение цены
descr_list – описание предмета
image_static – иконка предмета
condition_progress – шкала состояния предмета
wpn_params – секция параметров оружия

Список задействованных файлов и описание:
talk.xml – содержит основные конфиги окна разговора
ui_numpad.dds – содержит текстуры для верхней (ui_talk_dialogue) части диалогового окна и для нижней (ui_talk_dialogue2) части.

left_character_icon – подложка для информации о ГГ (иконка, ранг, группировка)
right_character_icon – подложка для информации о НПС/мутанте (иконка, ранг, группировка, отношение)
Вся эта информация описана в файле trade_character.xml
Button – параметры кнопки "Торговать"
В файле присутствует две секции frame_line_window. Одна для верхней части диалогового окна, вторая – для нижней. Каждая из них состоит из текстуры и параметров имени НПС/ГГ.
other_answer_item – секция текста от НПС, здесь


questions_list – положение блока текста в верхней части диалогового окна
answers_list – положение блока текста в нижней части диалогового окна
iconed_trade_info – иконка и текст задания (выбор)
iconed_answer_item – иконка и текст задания (взятие, провал, успешное выполнение). Так же этот блок описывает иконку и текст с наградой.
question_item – цвет текста от ГГ в нижней части диалогового окна. Состоит как бы из двух частей:
первая (общая) - content_text
вторая "частная" - text_color. В этом параметре описаны цвета текста в зависимости от состояния (обычное, при наведении курсора и при нажатии). Если эту часть закомментировать, то цвет текста будет тот, который указан в блоке content_text.

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