- 1,614
- 1,372
moonly - скрипт (a.k.a библиотека, a.k.a супер-кастрированный package-manager типа Cargo и подобных, но для MoonLoader), который подойдёт для разработчиков больших скриптов от 1000 строк и выше (хотя такое условие не обязательно).
Суть: вместо написания одного скрипта в папке moonloader, moonly предлагает свою идентичную папку в корне игры, где термин "MoonLoader" скрипт меняется на "MoonLoader" проект. То есть для каждого скрипта/пакета/проекта создаётся своя директория, а в ней обязательный файл project.json (в него можно ничего не писать, но он должен присутствовать), который указывает поддиректорию с исходниками (src по умолчанию) и кастомными библиотеками (lib по умолчанию). В папке с исходниками создаётся скрипт init.lua, который будет загрузчиком для всего остального и является обязательным.
Плюсы:
GitHub: click
Установка: Скачать с GitHub архив либо по прямой ссылке, moonly.lua из папки src поместить в папку moonloader.
Как воспринимать moonly: в данный момент - как подделку на Lua для моего собственного интереса, не более. В будущем - неизвестно.
Инструменты: moonly-command-tool (утилита для командной строки, которая прописывается в PATH системы). Получить инфо по всем командам --help
Суть: вместо написания одного скрипта в папке moonloader, moonly предлагает свою идентичную папку в корне игры, где термин "MoonLoader" скрипт меняется на "MoonLoader" проект. То есть для каждого скрипта/пакета/проекта создаётся своя директория, а в ней обязательный файл project.json (в него можно ничего не писать, но он должен присутствовать), который указывает поддиректорию с исходниками (src по умолчанию) и кастомными библиотеками (lib по умолчанию). В папке с исходниками создаётся скрипт init.lua, который будет загрузчиком для всего остального и является обязательным.
Плюсы:
- Удобство: лишние файлы больше не будут мозолить глаза при разработке (например, открыл в VSCode папку moonloader, где у тебя установлено 1000 аризона хелперов). Настроить IntelliSense (вроде Lua LS) несложно, достаточно добавить директории с исходниками и библиотеками в "Lua.runtime.path".
- Модульность: особенно актуально для скриптов с кол-вом строк от 1000 и выше. Реализацию скрипта можно растаскать по папкам и классам, оставив главный файл (init.lua) чисто как загрузчик.
- Git, LuaRocks: за счет реализации, moonly вполне удобен при работе с Git и LuaRocks (хоть это и не тестировалось)
- Сильной разницы между реализацией нативно (см. RakLogger, RakEmulator, NS и другие подобные проекты) и через moonly - нет. Moonly не привносит своей реализации менеджера зависимостей, вроде deps. Однако в случае релиза стабильной версии 0.27 (и выше) версии MoonLoader, deps вполне неплохо может дополнить moonly, при этом не нарушая совместимость с обычными MoonLoader скриптами. В общем - подойдёт побаловаться на один вечер,
либо использовать как среду для написания своих MoonLoader проектов, слегка изменяя структуру архива перед выгрузкой на Blasthack.(Теперь есть command-line-tool, который сам всё изменит). Третий вариант - как идея/референс/motivation/power для чего-то большего.
GitHub: click
Установка: Скачать с GitHub архив либо по прямой ссылке, moonly.lua из папки src поместить в папку moonloader.
Как воспринимать moonly: в данный момент - как подделку на Lua для моего собственного интереса, не более. В будущем - неизвестно.
Инструменты: moonly-command-tool (утилита для командной строки, которая прописывается в PATH системы). Получить инфо по всем командам --help
V0.1.1: Подсмотрев у FYP'a, реализовал AutoReboot, работает на все файлы в папке src (или как у вас будет называться в проекте), которые были в момент загрузки. Проверка на изменение файла происходит каждую 1 секунду. Изменить можно в коде moonly.lua. Теперь при выгрузке moonly, все проекты также будут выгружены.
V0.1.2: Реализован moonly-command-tool
V0.1.3:
moonly:
V0.1.4: Исправлена ошибка с getWorkingDirectory, из-за которой некоторые библиотеки (вроде mimgui) могли пытаться искать свои компоненты в папке src. Теперь getWorkingDirectory абсолютно всегда будет возвращать корневую папку проекта, а не папку с исходниками.
V0.1.5: Пропатчен ffi.load для корректной работы с mimgui и другими библиотеками, которые подгружают DLL через getWorkingDirectory
V0.2.0: Теперь при авто-ребуте, moonly проверит на наличие новых файлов в проекте. (пост #1570099)
V0.1.2: Реализован moonly-command-tool
V0.1.3:
moonly:
- Пропатчен getWorkingDirectory, теперь в проектах moonly он всегда будет возвращать
папку с исходникамикорневую директорию вашего проекта. Если нужно получить папку moonloader, используйте getMoonloaderDirectory, либо getGameDirectory() .. "\\moonloader". Функция getMoonloaderDirectory существует только в пределах moonly проекта. - Добавлена функция getMoonlyVersion и константа MOONLY_VERSION (тоже самое). Добавлен флаг MOONLY_ENVIRONMENT (boolean) для проверки на нахождение в контексте moonly. Все эти константы, флаги, функции и так далее существуют только для проектов в пределах папки moonly.
V0.1.4: Исправлена ошибка с getWorkingDirectory, из-за которой некоторые библиотеки (вроде mimgui) могли пытаться искать свои компоненты в папке src. Теперь getWorkingDirectory абсолютно всегда будет возвращать корневую папку проекта, а не папку с исходниками.
V0.1.5: Пропатчен ffi.load для корректной работы с mimgui и другими библиотеками, которые подгружают DLL через getWorkingDirectory
V0.2.0: Теперь при авто-ребуте, moonly проверит на наличие новых файлов в проекте. (пост #1570099)
Последнее редактирование: