- cfg: алиасы, бинды и автоexec
- Проверка: почему “не работает” (частые причины)
- Настройка биндов и алиасы: как это выглядит в cfg
- Куда кидать бинды и алиасы (логика по файлам)
- “Layer” (слои) для отдельных биндов (если у вас есть такая система)
- Lua-скрипты (аддоны/кастомные игры): как это работает по файлам
- Часто задаваемая проблема по Lua-отладке (и почему ломается ожидание)
- Мини-чеклист, чтобы быстро довести до рабочего состояния
- Использованные источники
Если коротко: в Dota 2 под “скриптами” обычно имеют в виду cfg-конфиги (консольные команды, бинды, алиасы) и реже Lua-скрипты для кастомных игр/аддонов. Ниже разложено по полочкам, как это настраивается и почему иногда “то работает, то нет”.
cfg: алиасы, бинды и автоexec
Где лежат cfg-файлы
В актуальной установке путь обычно такой:
Steam\steamapps\common\dota 2 beta\game\dota\cfg\
Туда кладут:
- autoexec.cfg (или любой свой .cfg, который вы будете загружать)
- дополнительные файлы, которые грузите через exec
Как запустить cfg автоматически
Вариант 1. Через параметры запуска Steam (автозагрузка)
1) Steam -> Библиотека -> Dota 2 -> Свойства
2) “Установить параметры запуска”
3) Добавить оператор загрузки, например:
+exec autoexec.cfg
Вариант 2. Загрузить во время игры через консоль
Открой консоль и введи:
exec autoexec.cfg
Если консоль не открывается, её обычно включают в параметрах запуска (-console).
Что класть в autoexec.cfg (и как проверить)
Обычно в autoexec.cfg просто набор команд, алиасы и бинды. Минимальный рабочий пример под загрузку будет таким:
// Пример: загрузка настроек
dota_minimap_hero_size 400
Дальше вы проверяете: если команда меняет поведение в игре - значит файл грузится.
Проверка: почему “не работает” (частые причины)
Конфиг загружается, но команды перетираются другим exec
Если у вас в игре загружается несколько конфигов, последняя команда exec имеет приоритет. Поэтому типичная ошибка выглядит так:
- вы меняете значение в своём cfg
- но потом где-то ещё exec-ится другой файл с такими же командами
Что делать: временно закомментировать лишние exec и оставить один, затем добавить команды обратно.
Команды срабатывают не в том месте, не при тех условиях
Например, настройки мини-карты могут вести себя иначе, когда включены опции отображения иконок героев. Практика из обсуждений такая:
- при отключенных иконках меняются “капельки/зум”
- при включенных иконках часть команд может не давать эффекта
Для поиска, что именно влияет на отображение, часто используют дополнительные консольные переменные (пример, который всплывал в гайдах):
_cl_minimapzoom, dota_minimap_always_draw_hero_icons, dota_minimap_show_hero_icon.
Смысл проверки простой: включаете/выключаете и смотрите, какие параметры реально реагируют.
Реально не тот cfg грузится
Иногда файл лежит “рядом”, но грузится другой (другая папка/другое название/другая раскладка). Самая надёжная проверка:
- сделать в конце autoexec.cfg команду, которая точно заметна (например, сообщение в чат/по центру экрана)
- перезапустить лобби/матч и убедиться, что это сообщение появляется
Настройка биндов и алиасы: как это выглядит в cfg
Базовый шаблон
В cfg чаще всего встречается схема:
alias "имя_алиаса" "команды..."
bind "КНОПКА" "имя_алиаса"
Пример с “выполнить конфиг по нажатию кнопки”:
bind "f8" "exec autoexec.cfg"
Это полезно для быстрой перезагрузки настроек в текущей сессии.
Важно: используйте только те алиасы и бинды, которые реально есть в файлах
Если в бинде вызываетcя алиас, но сам алиас не определён, в консоли обычно появится ошибка вида “Unknown command…”. В этом случае проблема не “в настройке доты”, а в том, что alias не успели или не туда вставили.
Куда кидать бинды и алиасы (логика по файлам)
Практический подход такой:
autoexec.cfg- место для загрузки всего “основного”- отдельные
.cfg- для отдельных тематик (например, мини-карта, инвокер, инвентарь, быстрая панель) - далее в
autoexec.cfgвы вызываете их строкамиexec some_file.cfg
Так проще разрулить ситуации, когда вы хотите быстро тестировать: отключили exec - и перестало, включили - вернулось.
“Layer” (слои) для отдельных биндов (если у вас есть такая система)
Иногда люди используют “слои” (когда клавиша временно подгружает другой набор биндов, а при отпускании возвращает исходный).
Общий принцип, который встречается в гайдах:
- есть DEFAULT_LAYER.CFG
- есть LAYER_1.CFG
- по нажатию клавиши делается exec на LAYER_1
- по отпусканию exec возвращает DEFAULT_LAYER
Пример идеи:
alias +keyShift2 "exec dota2_gameplay_mode/dota2_keybinds_alt_pressed.cfg"
alias -keyShift2 "exec dota2_gameplay_mode/dota2_keybinds_default.cfg"
bind "`" +keyShift2
Lua-скрипты (аддоны/кастомные игры): как это работает по файлам
Если вы про Lua (кастомки, аддоны Workshop Tools), там другая схема: Dota запускает файлы аддона в определённом порядке.
Типовая структура
Обычно используются:
- addon_init.lua - выполняется первым, часто там подключают модули (require)
- addon_game_mode.lua - отвечает за инициализацию игрового режима
- основной код лежит в ваших файлах (например addon_main.lua) и подключается из addon_init.lua
События и команды
Для взаимодействия с игрой используют:
- ListenToGameEvent(...) для слушателей событий
- Convars:RegisterCommand(...) для команд, которые можно дергать из UI/клиента на сервер
События приходят с параметрами, обычно в таблице keys, откуда вы читаете PlayerID и прочее.
Часто задаваемая проблема по Lua-отладке (и почему ломается ожидание)
Встречается путаница вокруг отладчика Lua: “подключается к VM, но breakpoints не срабатывают”. Одна из логичных причин, которую отмечают в обсуждениях по Workshop: когда срабатывает breakpoint, движок/цикл событий должен “замирать”, а в Dota это может блокировать выполнение и тянуть за собой зависание/неочевидное поведение.
Ещё один момент - не всегда понятно, к какому компоненту подключать отладчик: клиентскому процессу или серверной части аддона. В разных конфигурациях аддон исполняется на сервере, а UI - на клиенте, поэтому точки останова могут ожидать не там, где вы их ловите.
Если отладчик “видит” VM, но не ловит breakpoints, чаще всего проблема не в Lua-коде, а в:
- конфигурации подключения (client vs server)
- способе запуска аддона/VM
- несовпадении того, где выполняется нужный кусок кода
Официальные гайды Valve по старту Workshop помогают сверить ожидаемую архитектуру, но конкретно про “почему breakpoints не работают именно у вас” обычно требуется сопоставить: где исполняется логика и как именно подключается debugger.
Мини-чеклист, чтобы быстро довести до рабочего состояния
| Что делаете | Как понять, что всё ок | Типичная ошибка |
|---|---|---|
кладёте .cfg в нужную папку |
команды реально меняют настройки | грузится другой файл или другая папка |
добавляете загрузку через +exec |
после старта появляются эффекты | не стоит autoexec.cfg в автозагрузке |
делаете exec вручную в консоли |
изменения видны сразу | конфликты приоритетов (дальше перетирается) |
пишете alias и бинды на него |
консоль не ругается “Unknown command” | алиас не определён / не в том файле |
| тестируете мини-карту/иконки | реагируют конкретные параметры | часть команд не влияет при включенных иконках |
Использованные источники
- Материалы по cfg-использованию и автозагрузке/exec (гайд на Steam): https://steamcommunity.com/sharedfiles/filedetails/?id=171142616
- Обзор запуска и Lua-структуры Workshop (Getting Started): https://developer.valvesoftware.com/wiki/Ru/Dota_2_Workshop_Tools/Scripting/Getting_Started
- Пример обсуждений по cfg/алиасам/биновым проблемам и нюансам мини-карты: https://dota2.ru/forum/threads/gajd-cfg-alias-bind-autoexec-skripty-i-t-d.768002/page-3
- Материал про отладку Lua и breakpoints (обсуждение): https://customgames.ru/forum/threads/%D0%9E%D1%82%D0%BB%D0%B0%D0%B4%D0%BA%D0%B0-lua-%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B2.2723/
Если вы делаете “скрипты на доту” в смысле cfg-конфигов, ключевой успех обычно сводится к трём вещам: правильно загрузить файл (exec/autoexec), убедиться что он реально последний по приоритету, и проверять реакции в конкретных режимах (например, когда включены иконки мини-карты).