- 1,676
- 1,514
moonly – менеджер проектов для MoonLoader
Что это такое?
moonly
— это менеджер проектов для разработки Lua-скриптов под MoonLoader. Он предоставляет структуру, похожую на полноценные языки программирования, позволяя писать чище, масштабнее и удобнее. В отличие от традиционного подхода, где все скрипты лежат в одной папке moonloader
, moonly предлагает создавать отдельные проекты в своей собственной директории, что помогает лучше организовать код, использовать модули, работать с зависимостями и интегрироваться с редакторами.Для кого это?
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(), register(project), unregister(project), tick(), 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 (на уровне пользователя):
{
"modules": [
{
"name": "autoreboot",
"core": true,
"options": {
"delay": 1000
}
}
],
"runtime": {
"path": ["C:\\Games\\GTA San Andreas\\moonly"]
}
}
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 (встроена в скрипт) — нужен для работы с файловой системой.
Последнее редактирование: