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

Структура модуля

Папочный модуль — обычная директория внутри Modules. Минимальный клиентский проект выглядит так:

MyModule/
├── module.json
└── scripts/
└── main.lua

После создания через игру также появляются каталоги ресурсов и настройки редактора:

MyModule/
├── module.json
├── config.json # необязательно
├── inputs.json # необязательно
├── localization.csv # необязательно
├── images/
├── sounds/
├── scripts/
│ ├── main.lua
│ └── server.lua # только для Reflex
├── ui/ # добавляется при необходимости
└── .vscode/
Путь Назначение
module.json Обязательные метаданные и тип модуля.
scripts/main.lua Точка входа клиентской части.
scripts/server.lua Серверная часть Reflex-модуля.
config.json Настройки, отображаемые пользователю.
inputs.json Собственные действия и начальные привязки ввода.
localization.csv Строки модуля на разных языках.

Подробные форматы дополнительных файлов описаны на страницах Config, InputAction и Localization. Разделение main.lua и server.lua разобрано в архитектуре Reflex, а подключение дополнительных клиентских файлов — в организации Lua-кода.

Пример метаданных обычного модуля:

{
"Id": "d70e52dc-2fa0-4b53-a040-a36c987b9adb",
"Name": "MyModule",
"Version": "0.1.0",
"Author": "YourName",
"Description": "My first KILLSCRIPT module",
"IsReflex": false,
"Tags": []
}
Поле Описание
Id Уникальный идентификатор. Игра создаёт его автоматически.
Name Отображаемое имя модуля.
Version Версия модуля.
Author Имя автора.
Description Краткое описание или null.
IsReflex true, если модулю нужна серверная часть.
Tags Категории функциональности модуля.

Не копируйте один и тот же Id в разные проекты. При создании нового модуля через игру идентификатор генерируется автоматически.

Теги помогают игре обнаружить модули, которые решают одну задачу. Совпадение тега показывает предупреждение о возможном конфликте, но не запрещает одновременный запуск.

Тег Назначение
Minimap Миникарта
PingMarks Метки и ping
OverheadLabels Подписи над объектами
Crosshair Прицел
Health Здоровье
Notifications Уведомления
MatchStatus Состояние матча
CombatReport Боевой отчёт
Scoreboard Таблица счёта
Loadout Экипировка
BuyMenu Меню покупки
GrenadePreview Предпросмотр гранат
Chat Чат
ThreatIndicator Индикаторы угроз
KillFeed Лента убийств
Spectator Режим наблюдателя
DebugInfo Отладочная информация
Каталог Поддерживаемые файлы
images/ .png, .jpg, .jpeg
sounds/ .wav, .mp3, .ogg
scripts/ .lua
ui/ .uxml, .uss

Специальные изображения:

  • images/Icon.png — иконка модуля;
  • images/DescriptionImage.png — изображение в подробном описании.

Имена и регистр файлов лучше сохранять точно такими, как указано. Правила путей к изображениям разобраны на странице Texture.

  • один файл ресурса — не больше 10 MiB;
  • весь модуль — не больше 50 MiB;
  • config.json — не больше 64 KiB.

У отдельных API могут быть дополнительные ограничения. Например, загрузчик текстур проверяет формат и размеры изображения.

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

Не рассчитывайте на остальные стандартные глобальные функции без проверки. В частности, pcall и type недоступны. Доступность игрового API также зависит от клиентского или Reflex server-контекста.