- 1,687
- 1,547
moonly – менеджер проектов для MoonLoader
Что это такое?
moonly — это менеджер проектов для разработки Lua-скриптов под MoonLoader. Он предоставляет структуру, похожую на полноценные языки программирования, позволяя писать чище, масштабнее и удобнее. В отличие от традиционного подхода, где все скрипты лежат в одной папке moonloader, moonly предлагает создавать отдельные проекты в своей собственной директории, что помогает лучше организовать код, использовать модули, работать с зависимостями и интегрироваться с редакторами. Также moonly ведет логгирование в moonloader/moonly.log и имеет конфигурацию по пути moonloader/moonly.json.Для кого это?
Moonly идеально подходит для:- Разработчиков, создающих большие проекты (от 1000 строк и выше)
- Тех, кто хочет избежать хаоса в папке
moonloader - Пользователей, желающих воспользоваться возможностями IDE, такими как IntelliSense, линтингом, навигацией
- Командных разработок и проектов, которые нужно экспортировать в сторонние репозитории (BlastHack и др.)
Как работает moonly
Перед запускомinit.lua проекта, moonly внедряет в пространство имен несколько изменений:getWorkingDirectory()теперь возвращает путь к проектуpackage.pathиpackage.cpathдополняются путями кsrc/иlib/внутри проектаffi.load(...)адаптирована для корректной работы с библиотеками изlib/- Добавлены глобальные переменные:
MOONLY_ENVIRONMENT— указывает, что скрипт выполняется в рамках проекта moonlyMOONLY_VERSION— содержит текущую версию установленного moonlygetMoonloaderDirectory()— возвращает путь к оригинальной папкеmoonloader
Функционал moonly
- Загрузка проектов из корневой папки игры
По умолчанию moonly ищет проекты в%game%/moonly. Каждый проект — это отдельная папка с файломproject.json. - Поддержка внешних директорий
Вmoonly.jsonможно указывать дополнительные пути, где будут храниться проекты. Это позволяет использовать несколько рабочих зон: ноутбук, домашний компьютер, внешний диск и т.д. - Hot-reloading проектов в runtime
При изменении любого файла вsrc/илиlib/, проект автоматически перезагружается. Новые файлы добавляются в список сканирования. - Логгинг для дебаггинга
Поддерживается вывод подробных логов, что облегчает поиск ошибок и анализ поведения скрипта. - Пользовательские модули
Модули — это Lua-файлы, реализующие методы: initialize(config), register(project), unregister(project), tick(), save(config), unload(). Они расширяют функционал moonly и должны быть указаны вmoonly.json.
Пример структуры проекта
Код:
my-moonloader-project/
├── project.json
├── src/
│ ├── init.lua
│ ├── ui.lua
│ └── utils/
│ └── helper.lua
└── lib/
└── mylib.lua
src/, пользовательские библиотеки — в lib/, а точкой входа является init.lua.Конфигурационные файлы
moonly.json (на уровне пользователя):
{
"moonly.runtime.path": [
"C:\\Games\\GTA San Andreas\\moonly"
],
"moonly.runtime.modules": [
"autoreboot",
"console"
],
"moonly.autoreboot.delay": 1000,
"moonly.console.key": "`",
"moonly.console.singleplayer.auto-enable": true,
"moonly.console.enable": true,
"moonly.console.window.x": 0,
"moonly.console.window.y": 0,
"moonly.console.window.width": 400,
"moonly.console.window.height": 300
}
project.json (внутри каждого проекта):
{
"name": "my-moonloader-project",
"library": "lib",
"source": "src",
"distribute": {
"output": "dist",
"additionalDirs": [],
"ignoredDirs": [],
"additionalFiles": [],
"constants": {
"MOONLY_BUNDLED": true,
"MOONLY_BUNDLE_TIMESTAMP": "<$date>"
}
}
}
Как использовать?
Используйте moonly как менеджер проектов для своих MoonLoader-скриптов:- Создаёте новый проект:
moonly init -n my-project - Разрабатываете код в папке
src/, используя модульную структуру - Тестируете логику в MoonLoader, используя
init.luaкак точку входа - Когда проект готов, собираете его командой:
moonly bundle - Полученный файл помещается в папку
moonloaderи используется как обычный скрипт
Установка
- Перейдите на страницу GitHub Releases.
- Скачайте файл
moonly.luaиз раздела Assets. - Поместите его в папку
moonloaderкорня игры.
Инструменты
Для управления проектами рекомендуется использовать moonly CLI:- Скачайте её с официального репозитория .
- Добавьте её в системные переменные
PATH. - Используйте команду
moonly --help, чтобы узнать доступные действия.
Зависимости
- LuaFileSystem (встроена в скрипт) — нужна для работы с файловой системой.
Последнее редактирование: