Если вы хотите, чтобы healthbar (полоса здоровья) в Dota 2 была скрыта или работала “по вашим правилам”, то есть два пути: через консоль и через Lua-моддинг в кастомных играх. Ниже — что именно делать, чтобы эффект был предсказуемым и не “залипал” после выхода.


Боль, которая обычно бесит игроков

Представьте ситуацию: вы начинаете кастомку, ХП бар становится другим (или пропадает), а потом:

  • при запуске другой карты HUD внезапно “возвращается”;
  • после выхода из кастомки остаются включённые параметры;
  • или наоборот — настройки не переживают загрузку/перезаход.

Эти проблемы появляются потому, что часть параметров:
1) управляется конфигом/консолью (они живут в клиенте и могут оставаться),
2) а часть — HUD/отрисовкой (они могут сбрасываться движком при смене карты или режима).


Что можно сделать с healthbar

Ниже — практическая “карта решений”: что именно вы хотите получить.

Цель Где управлять Самый частый инструмент Важная оговорка
Полностью отключить полоски здоровья в интерфейсе Консоль/autoexec dota_hud_healthbars Может сбрасываться при смене карты/сессии
Отключить белую “вредную” часть, чтобы урон считался без полосы Консольные параметры HP-индикатора параметры hurt/pain Это не “HUD-отключение”, а настройка поведения отображения урона
Скрывать healthbar именно во время игры в кастомке Lua (modding) + вызов консольных команд Global.SendToConsole Нужно корректно вернуть значение при окончании матча
Сделать так, чтобы после матча вернулось как было “по умолчанию” Lua обработчики событий сброс параметров после завершения Без обработки выхода игрока часто остаётся мусор

Способ 1. Консольное отключение HUD индикаторов здоровья

Самый прямой вариант. В консоли используйте:

Отключить полоски здоровья

dota_hud_healthbars 0

По смыслу это отключает все индикаторы здоровья. На практике это команда из блока HP-bar / healthbars, где также встречается стандартное значение 1 и вариант 3 с делениями.

Включить обратно

dota_hud_healthbars 1

Важно про “сохранение” и повторяемость

Если вы вводите команду вручную, она может:
- исчезнуть после перезапуска игры,
- или конфликтовать с другими настройками.

Поэтому ниже — как фиксировать поведение через конфиг.


Способ 2. Полностью убрать белую полоску при получении урона

В обсуждениях часто хотят не “скрыть индикатор”, а именно убрать белую полосу здоровья (часть hurt/pain отображения). Это обычно делают настройкой параметров hurt decay и pain multiplier.

Типичный набор выглядит так:

+dota_health_hurt_threshold "99999"
+dota_health_hurt_decay_time_max "0"
+dota_health_hurt_decay_time_min "0"
+dota_health_hurt_delay "0"
+dota_pain_decay "0"
+dota_pain_factor "0"
+dota_pain_fade_rate "0"
+dota_pain_multiplier "0"

Куда это вставлять

Вариант, который чаще всего используют в обсуждениях Dota 2 — добавить в параметры запуска Steam (чтобы команда применялась постоянно и не терялась при входе).


Способ 3. Как урезать healthbar через Lua в кастомке

Главная идея

В Lua вы можете послать команду в консоль, а уже консоль сделает изменение HUD.

В обсуждениях по Dota 2 моддингу используется вызов:

  • Global.SendToConsole("dota_hud_healthbars 0")

Пример логики такая:

function HideHPBar()
    GameRules:SendToConsole("dota_hud_healthbars 0")
end

Важно. Название метода в разных примерах встречается через global/Global.SendToConsole. Смысл один: отправить консольную команду из Lua.


Решаем проблему “показывается на другой карте” в кастомке

Это частая ловушка. Если вы просто один раз вызвали dota_hud_healthbars 0, а потом запустили другую карту/матч, HUD может восстановиться или, наоборот, остаться отключенным.

Как правильно сделать

Нужно хранить предыдущее значение и обязательно возвращать его в конце матча.

Ниже — рабочий шаблон логики.

Шаблон “скрыть во время матча и вернуть после”

local hudPrev

local function SetHealthbars(value)
    GameRules:SendToConsole("dota_hud_healthbars " .. tostring(value))
end

function Activate()
    -- запоминаем текущие настройки
    -- В зависимости от ситуации можно держать “по умолчанию” в виде константы,
    -- например считать что default = 1.
    hudPrev = 1

    SetHealthbars(0)
end

function Restore()
    SetHealthbars(hudPrev)
end

Почему “hudPrev = 1”

Потому что “умолчание” обычно ожидается как стандартный вариант. В моддинге чаще выбирают практичную стратегию:
- заранее принять, что базовое состояние dota_hud_healthbars равно 1,
- а при выходе всегда вернуть это значение.

Так вы избегаете ситуации “не знаю, что было до меня”.


Восстановление стандартных настроек HUD после завершения матча

Ключевой момент: консольные параметры и HUD-отрисовка могут жить дольше, чем ваш Lua-код.

Чтобы восстановление работало, вам нужны обработчики окончания матча. В обсуждениях также всплывает идея “поставить слушателя событий на дисконнект игрока” — потому что выход из игры иногда ломает ожидания: скрипт может не успеть вернуть параметры, если матч оборвался неожиданно.

Мини-план событий

Событие Что сделать
матч завершился нормально вызвать Restore()
игрок дисконнектнулся вернуть/проверить настройки, чтобы интерфейс не “залип”
сервер перезапустил раунд/карту всё равно обеспечить возврат через серверные хендлеры

Слушатель событий на дисконнект игрока

Идея из практики моддинга такая: вместо “вернуть в конце матча” добавляют ещё защиту:
- при disconnect — откатить параметры (или хотя бы поставить флаг, что при завершении будет откат).

Хотя точные названия событий зависят от окружения кастомки, общий подход в Dota 2 Lua такой:
1) зарегистрировать listener на серверном уровне,
2) при disconnect запустить логику восстановления.


Как убрать белую полосу через autoexec

Если ваша цель — стабильно убирать белую полосу всегда, то подход — записать команды в конфиг autoexec.cfg.

Как обычно делают

1) Создают autoexec.cfg
2) кладут его в папку ...\steamapps\common\dota 2 beta\dota\cfg
3) добавляют туда команды hurt/pain или параметры для отключения.

Этот подход помогает, потому что настройки применяются после загрузки игры автоматически, и вам не приходится вручную каждый раз “вводить значение”.


Почему “урезание” может отличаться по восприятию урона

Визуальное ощущение демеджа зависит от того, какая именно часть HUD отключена:

Вы меняете Что почувствует игрок Типичный результат
dota_hud_healthbars “сам индикатор здоровья” здоровье просто перестаёт показываться
параметры hurt/pain (hurt delay, decay, pain multiplier) как отображается промежуточная/белая зона урона урон выглядит более “мгновенным” и ровным
комбинацию и индикатор, и его анимации визуал полностью контролируемый, но может стать “не привычным”

Набор консольных команд, которые часто используют вместе с HUD

Ниже — не “про всё подряд”, а то, что в контексте HUD встречается рядом и может быть полезно для теста.

Полный “HUD-нулевой” режим

cl_drawhud 0

Это убирает элементы с экрана, но может ломать управление (в зависимости от контекста).

Параметры, которые используют чтобы избежать “чёрного пространства” после отключения HUD

dota_render_crop_height "0"
dota_render_y_inset "0"

Краткая схема. Что выбрать под вашу задачу

flowchart TD
A[Хочу урезать ХП бар] --> B{Нужно скрыть сам индикатор?}
B -->|Да| C[Используй dota_hud_healthbars 0]
B -->|Нет| D{Нужно убрать белую полоску от урона?}
D -->|Да| E[Настрой hurt/pain параметры (delay/decay/multiplier)]
D -->|Нет| F[Комбинируй: индикатор + hurt/pain]
C --> G{Кастомка?}
G -->|Да| H[Lua отправляет консольную команду и обязательно возвращает после матча]
G -->|Нет| I[Команды через консоль или autoexec]
E --> J[Запиши в autoexec.cfg или в параметры запуска]

Мини-итог

  • Полностью убрать healthbar можно через dota_hud_healthbars 0.
  • Убрать белую полоску урона проще настройкой hurt/pain параметров (через консоль/autoexec или параметры запуска Steam).
  • В кастомных играх через Lua надо отправлять команды в консоль и обязательно делать откат после завершения матча, иначе интерфейс “залипнет” при смене карты.

Это тот случай, когда “работает в одном матче” легко, а “работает стабильно во всей сессии” — требует возврата настроек и обработки выхода.