TL;DR: Чтобы помочь в тестировании, скачайте файлы из вложений, распакуйте содержимое архива в папку moonloader и скопируйте скрипт туда же. Запустите игру и согласитесь на первый запрос установки, затем на следующий, он должен выдать ошибку. Если что-то пошло не так, пожалуйста, сообщите об этом в теме. И временно отключите AntiStealer, он блокирует работу установщика.
Это предрелиз менеджера зависимостей для MoonLoader, который после тщательного тестирования станет обязательным компонентом дистрибутива MoonLoader. Он реализован на основе LuaRocks - широко распространённого пакетного менеджера для Lua. Такой выбор был сделан по двум причинам: во-первых, LuaRocks - готовый и проверенный проект, он имеет всю необходимую функциональность и даже больше; во-вторых, на данный момент на сервер LuaRocks загружено 2300 модулей, которые можно устанавливать через этот менеджер зависимостей.
Предназначен он только для установки библиотек и не реализовывает систему автообновления и автоустановки скриптов.
Составляющие
Проект состоит из нескольких компонентов, все они необходимы для работы менеджера зависимостей:
Установка
Установить MoonLoader v.027.
Использование
Запросить зависимости из скрипта можно так:
При выполнении этого кода исполнение скрипта и загрузка игры будут приостановлены и пользователю будет показано окно с вопросом согласия на установку. В случае отказа или ошибок при установке, скрипт будет завершён.
Установка модулей производится только когда требования скрипта не удовлетворены, проверка и установка осуществляются по следующим критериям:
Версия указывается через символ @ после названия пакета. Помимо версии также можно указать сервер перед названием пакета через символ : . Сервер может быть записан в короткой форме - тогда он будет означать имя пользователя на сайте luarocks.org, или длинной форме - полный адрес rocks-сервера. Указанный сервер будет приоритетным при поиске запрошенного пакета.
Пример с применением всех параметров:
К сожалению, у всей этой системы есть один досадный недостаток - невозможно устанавливать dll-модули из исходников (а они как правило только в форме исходников и распространяются), потому что для этого требуются инструменты разработки, которые очевидно у обычных пользователей не установлены. Однако LuaRocks позволяет загружать на сервер бинарные (скомпилированные) пакеты, которые устанавливаются безо всяких проблем. Это добавляет возни с ними, но зато решает проблему.
Репортить о том, что у вас не устанавливается dll-модуль из исходников не нужно - это не баг.
Я вскоре залью некоторые важные библиотеки, и инструкцию по сборке и заливу бинарных пакетов тоже сделаю, если кто-то попросит.
Создание пакета и загрузка его на luarocks.org
Если у вас есть своя библиотека, которую вы хотели бы добавить в систему LuaRocks.
Фрагмент с созданием git-репозитория необязателен, исходники можно запаковать в zip-архив и залить куда угодно, а в файле .rockspec в значение переменной source.url указать прямую ссылку на этот архив.
На сайте luarocks есть недочёт, который не был учтён в видео - файл .src.rock не заливается вместе с .rockspec, его надо заливать отдельно для каждой версии пакета.
Обратите внимание, что после загрузки пакета на luarocks.org, он удаляется из манифеста "root" - это важно сделать, чтоб модули, созданные для MoonLoader, не были доступны для установки тем, кому они не нужны. Если ваш модуль универсальный и выполнен качественно, удалять его из манифеста конечно же нет нужды.
Тестирование
Менеджер зависимостей будет добавлен в состав MoonLoader только после основательного тестирования и устранения всех серьёзных проблем, ведь в противном случае разработчики будут избегать его использования из-за нестабильности.
Проверить необходимо следующее:
Сообщить о проблеме можно в этой теме или на GitHub, желательно подробно и обязательно с текстом или скриншотом ошибки.
Известные проблемы
Это предрелиз менеджера зависимостей для MoonLoader, который после тщательного тестирования станет обязательным компонентом дистрибутива MoonLoader. Он реализован на основе LuaRocks - широко распространённого пакетного менеджера для Lua. Такой выбор был сделан по двум причинам: во-первых, LuaRocks - готовый и проверенный проект, он имеет всю необходимую функциональность и даже больше; во-вторых, на данный момент на сервер LuaRocks загружено 2300 модулей, которые можно устанавливать через этот менеджер зависимостей.
Предназначен он только для установки библиотек и не реализовывает систему автообновления и автоустановки скриптов.
Составляющие
Проект состоит из нескольких компонентов, все они необходимы для работы менеджера зависимостей:
- настроенный пакетный менеджер LuaRocks. Он запускается из модуля deps.lua при установке зависимостей, но его также можно использовать отдельно через терминал
- модуль deps.lua - основной модуль установщика зависимостей, сверяет наличие требуемых библиотек и устанавливает их из интернета при необходимости
- предустановленные библиотеки luafilesystem, luasec, luasocket, lzlib, md5, mimetypes - необходимы для работы LuaRocks, но поскольку они установлены в стандартную папку для библиотек, их можно использовать в своих скриптах. Удаление любого из этих модулей или неправильная переустановка нарушат работу установщика
- LuaJIT с SDK - интерпретатор LuaJIT необходим для запуска LuaRocks в отдельном процессе, а его SDK требуется для компиляции модулей из исходников. Запустить можно скриптом lua.bat из папки luajit
Установка
Установить MoonLoader v.027.
Использование
Запросить зависимости из скрипта можно так:
Lua:
require 'deps' {
'inspect', -- первая зависимость
'penlight', -- вторая
-- и так далее сколько угодно
}
-- далее нужно загрузить модули этих библиотек как обычно через require
Установка модулей производится только когда требования скрипта не удовлетворены, проверка и установка осуществляются по следующим критериям:
- если требуемая версия не указана и пакет не установлен, устанавливается последняя версия
- если требуемый пакет установлен, а версия не указана, ничего не устанавливается (даже при наличии на сервере более новой)
- когда версия указана, но установлена версия старее требуемой, устанавливается пакет именно запрошенной версии
- и ничего не устанавливается, если версия указана, но установлен пакет более новой версии
Версия указывается через символ @ после названия пакета. Помимо версии также можно указать сервер перед названием пакета через символ : . Сервер может быть записан в короткой форме - тогда он будет означать имя пользователя на сайте luarocks.org, или длинной форме - полный адрес rocks-сервера. Указанный сервер будет приоритетным при поиске запрошенного пакета.
Пример с применением всех параметров:
Lua:
require 'deps' {
'fyp:lume@2.3.0-1', -- то же самое что и
'http://luarocks.org/manifests/fyp:lume@2.3.0-1'
}
К сожалению, у всей этой системы есть один досадный недостаток - невозможно устанавливать dll-модули из исходников (а они как правило только в форме исходников и распространяются), потому что для этого требуются инструменты разработки, которые очевидно у обычных пользователей не установлены. Однако LuaRocks позволяет загружать на сервер бинарные (скомпилированные) пакеты, которые устанавливаются безо всяких проблем. Это добавляет возни с ними, но зато решает проблему.
Репортить о том, что у вас не устанавливается dll-модуль из исходников не нужно - это не баг.
Я вскоре залью некоторые важные библиотеки, и инструкцию по сборке и заливу бинарных пакетов тоже сделаю, если кто-то попросит.
Создание пакета и загрузка его на luarocks.org
Если у вас есть своя библиотека, которую вы хотели бы добавить в систему LuaRocks.
Фрагмент с созданием git-репозитория необязателен, исходники можно запаковать в zip-архив и залить куда угодно, а в файле .rockspec в значение переменной source.url указать прямую ссылку на этот архив.
Код:
git clone https://gitlab.com/THE-FYP/moonloader-bind.git
cd moonloader-bind
../../luarocks/luarocks.bat write_rockspec moonloader-bind 1.0.0 . --lua-versions=5.1,5.2,5.3
git add -A
git commit -m "Add source and rockspec"
git tag v1.0.0
git push && git push --tags
../../luarocks/luarocks.bat pack moonloader-bind-1.0.0-1.rockspec
Обратите внимание, что после загрузки пакета на luarocks.org, он удаляется из манифеста "root" - это важно сделать, чтоб модули, созданные для MoonLoader, не были доступны для установки тем, кому они не нужны. Если ваш модуль универсальный и выполнен качественно, удалять его из манифеста конечно же нет нужды.
Тестирование
Менеджер зависимостей будет добавлен в состав MoonLoader только после основательного тестирования и устранения всех серьёзных проблем, ведь в противном случае разработчики будут избегать его использования из-за нестабильности.
Проверить необходимо следующее:
- интерфейс (выводится ли окно запроса установки, нет ли трудностей во взаимодействии с ним)
- установку зависимостей (устанавливаются ли все файлы из пакета; загружаются ли установленные модули через require)
- проверку установленных зависимостей (ошибочный запрос подтверждения установки при наличии этих зависимостей; проверка требуемых версий; ошибки при проверке)
- не нарушается ли работа игры (вылеты и зависания при старте; ненормальное поведение окна игры)
- не нарушается ли работа Lua скриптов
- работу на Windows XP
Сообщить о проблеме можно в этой теме или на GitHub, желательно подробно и обязательно с текстом или скриншотом ошибки.
Известные проблемы
- для Windows XP не реализована функция изменения прав доступа к созданным и скачанным файлам. Для большинства систем это несущественно, но в редких случаях это может быть причиной проблем установки модулей
Последнее редактирование: