Перейти к содержимому

Первый модуль

Создадим обычный клиентский модуль, который пишет сообщение в консоль и показывает текущий тик на экране. Такой пример сразу проверяет загрузку кода, hot reload и доступ к API.

  1. Откройте меню модулей в игре.
  2. Нажмите Create.
  3. Введите имя HelloDebug.
  4. Оставьте Is Reflex выключенным.
  5. Теги пока не добавляйте.
  6. Подтвердите создание и включите модуль.

Имя не может быть пустым или содержать символ @.

Игра создаст папку Modules/HelloDebug/ и начальные файлы. Открыть её можно кнопкой Folder, а редактор — кнопкой VS Code, если он установлен.

Lua-код модуля выполняется внутри игровой сессии, а не в главном меню. Для разработки удобно запустить пользовательский сервер и загрузить любую карту.

После входа в игру стандартный scripts/main.lua напечатает:

Hello world!
  1. Откройте консоль клавишей ~.
  2. Выберите раздел или источник логов вашего модуля.
  3. Если сообщение скрыто, нажмите значок фильтра рядом с полем Search и включите информационные сообщения.
  4. Найдите строку с префиксом [HelloDebug].

Фильтр консоли сохраняет выбранные категории. Если print() ничего не показывает, сначала проверьте именно раздел модуля и значок фильтра.

Откройте Modules/HelloDebug/scripts/main.lua и замените содержимое:

print("HelloDebug loaded")
Scheduler:OnFrame(function()
ImGui:DrawDebugText(
"[HelloDebug] Tick: " .. tostring(Time.Tick)
)
end)

Сохраните файл. Игра автоматически перезагрузит папочный модуль.

В результате:

  • в консоли появится HelloDebug loaded;
  • у края экрана будет обновляться номер текущего тика.

ImGui рисует содержимое только в текущем кадре, поэтому DrawDebugText() вызывается из Scheduler:OnFrame().

Измените текст HelloDebug loaded или подпись перед тиком и снова сохраните файл. Перезапуск игры и повторное включение модуля не требуются — новое содержимое должно появиться после автоматической перезагрузки.

Если перезагрузка не произошла, последовательно проверьте:

  • модуль включён;
  • игровая сессия загружена;
  • редактируется папка внутри текущей установки игры;
  • в консоли нет Lua-ошибки или сообщения о заблокированном файле.