Исходник [1.4.5] moonly / MoonLoader project manager

kyrtion

Известный
1,324
486
Привет, давно столкнулся с названием скрипта для инициализации сурса (src/init.lua). Я подумал может стоит указать src/init.lua с полным пути? Или такой нет способа исправить?

Вот пример: [string "script_name('inferno-tools')..."]:9
JavaScript:
[ML] (system) Loading script 'C:\Users\nikolay\AppData\Local\Temp\moonly\moonly_inferno-tools.lua'...
[ML] (system) inferno-tools: Loaded successfully.
[ML] (script) inferno-tools: [INFO] [EventService] initialized.
[ML] (script) inferno-tools: [INFO] [PluginService] Plugin FlyHack initialized.
[ML] (script) inferno-tools: [INFO] Script loaded.
[ML] (error) inferno-tools: [string "script_name('inferno-tools')..."]:30: Ticked!
stack traceback:
    [C]: in function 'error'
    [string "script_name('inferno-tools')..."]:30: in function <[string "script_name('inferno-tools')..."]:9>
[ML] (script) inferno-tools: [WARN] [PluginService] Service called method remove all plugins.
[ML] (script) inferno-tools: [INFO] [PluginService] Plugin FlyHack terminated.
[ML] (error) inferno-tools: Script died due to an error. (1066B00C)
 

Musaigen

ihatemyself
Автор темы
Проверенный
1,688
1,548
Релиз 1.1.0.
1. Новая система подгрузки проектов. Раньше подгрузка проектов вне директории игры была реализована через костыль. Теперь она происходит полностью из директорий указанных в JSON конфигурации. (Директория игры будет туда добавлена автоматически при первом запуске)
2. Переделана логика встраивания moonly функционала в скрипт. Теперь такого не должно происходить.
3. Система логов для дебагинга, получения инфо.
4. Система пользовательских модулей. AutoReboot вынесен теперь именно как модуль, но встроенный. В теории, через них можно реализовать загрузку библиотек из интернета на этапе инициализации проекта, не прибегая к модификации moonly, но такой функционал будет очевидно недоступен при бандлинге.
5. Встроен модуль dkjson для базового форматирования JSON файлов.
6. Убран лимит на тип файла у AutoReboot, теперь он захватывает любые файлы.

В планах переписать cli на C++, добавить туда бандлинг .DLL-ок и прочей дичи, что в теории могут прикрыть из-за проблем с модерацией.

Скачать: клик
 
Последнее редактирование:

Musaigen

ihatemyself
Автор темы
Проверенный
1,688
1,548
Релиз V1.2.0.
1. В связи с новым CLI, в скрипт встроена библиотека LuaFileSystem.
2. Улучшена обработка выгрузки скрипта.
3. Убрано создание потоков при выгрузке / перезагрузке скрипта, за счёт этого улучшена стабильность.
4. Откат генератора скриптов к предыдущей реализации.
5. Улучшена стрессоустойчивость скрипта при отсутствующих параметрах в JSON конфигурации.
6. В логгер добавлен вывод миллисекунд.
7. Исправлено поведение модуля AutoReboot, когда он убирал из сканирования проекты, что завершились по ошибке.
8. Таблица "build" в project.json удалена и больше не используется. Также добавлены новые параметры, но об этом всём ниже.

Релиз Moonly CLI V2.0.0.
1. Миграция на С++. Уменьшен вес бинарника в 10 раз по сравнению с Python. (С 7.7 Мбайт до 769 Кбайт)
1. В команде init, создание конфигурации для vscode заменено с флага -vs на -e vscode
2. Команда build переименована в pack.
3. Бандлер теперь бандлит любые файлы, от текстовых (они будут добавлены именно как текстовые файлы) до бинарных. Пока что без сжатия. Подобные файлы будут иметь что-то вроде ленивой инициализации, то есть, будут созданы только если их не существует. Отличие от LuBu в том, что скрипт именно распаковывает из себя DLL файлы создавая их физическую копию на диске. Насколько это лучше, чем создавать временный файл, загружать его и удалять я не думал, если понадобится, метод будет изменен.
4. Добавлен бандлинг констант (json: distribute/constants). Поддерживается null, буль, числа, строки, для указания timestamp можно указать <$date> как строку.
5. Добавлено новое поле additionalFiles в таблицу distribute в JSON конфигурации проекта. Позволяет указывать конкретные файлы для бандлинга.
Скачать: клик (бинарник рекомендуется прописать в PATH, чтобы не копирывать его по проектам).
 
  • Нравится
Реакции: bfix и kyrtion

Musaigen

ihatemyself
Автор темы
Проверенный
1,688
1,548
Обновление Moonly CLI V2.1.0! Скачать (клик).
1. Улучшена загрузка бинарных ресурсов. Теперь они грузятся чанками по 64Кбайт.
2. За счет этого, исправлена проблема, когда бинарный ресурс создавался с размером 0 байт и больше не изменялся.
3. Исправлено поведение, когда ресурс не мог быть создан из-за отсутствующих вложенных директорий.
4. Исправлено поведение, когда бандлер мог зажевать последнюю строчку, если в конце не было новой строки.
5. Улучшен вывод байт в файл.

moonly.lua был перебандлен под это обновление CLI, других изменений нет.
 
  • Нравится
Реакции: kyrtion

Musaigen

ihatemyself
Автор темы
Проверенный
1,688
1,548
Bugfix V1.2.1! Скачать (клик)
Исправлено поведение, когда скрипт падал, если проект, загруженный из внешней директории (т.е не из %gtasa_dir%/moonly"), пытался подгрузить библиотеку через ffi.load (чаще всего это могло происходит при загрузке mimgui).
 

Musaigen

ihatemyself
Автор темы
Проверенный
1,688
1,548
Minor update V1.4.2! При установке стоит удалить старый moonly.json!
1. Пересмотрены стиль сообщений логов, теперь они больше похожи на сообщения от MoonLoader.
2. Добавлены новые уровни логов, такие как system и fatal.
3. Убраны ненужные логи вроде 'read_json -> ...' и другие.
4. Исправлена работа в одиночной игре. Теперь проекты загружаются также как и обычные MoonLoader скрипты, а не только когда функция main будет вызвана (т.е пользователь нажмёт "Новая игра" или "Загрузить игру")
5. Пересмотрен формат конфигурационного файла, новый формат можно посмотреть в первом сообщении топика.
6. Исправлена выгрузка проектов, если скрипт moonly.lua упал с ошибкой. Это нужно, чтобы при перезагрузке скрипты проектов не дублировались по несколько раз.
7. Теперь модули могут сохранять данные в moonly.json, а не только загружать. Пример можно увидеть во встроенном модуле консоли.
8. Улучшена логика отделения корневых модулей от пользовательских, теперь не нужно указывать флаги вроде 'core'.
9. Добавлено окно логов, которое является чем-то вроде замены консоли SAMPFUNCS. Оно создано ради работы в одиночной игре, потому по умолчанию оно отключено и автоматически включится при запуске одиночной игры. Изначально планировалось, что это будет консоль, однако из-за лени и багов в работе скроллинга в imgui было принято решение упразднить консоль до обычного окна с логами, но название не менялось. Может быть, в будущем я добавлю функционал консоли. Для работы требуется upmimgui

Функционал:
1. Цветной текст с поддержкой кириллицы.
2. Копирование текста при нажатии по нему левой кнопкой мыши.
3. Очистка окна при нажатии на ПКМ -> Clear.
4. Внешний вид схожий с консолью SF, почему бы и нет.
5. Использование клиппера для производительности.
6. Работа с встроенным логгером от moonly.
7. Сохранение позиции и размеров в json файл, точно также как это делает SF
 
Последнее редактирование:

четыреста четыре

Известный
130
21
Minor update V1.4.2! При установке стоит удалить старый moonly.json!
1. Пересмотрены стиль сообщений логов, теперь они больше похожи на сообщения от MoonLoader.
2. Добавлены новые уровни логов, такие как system и fatal.
3. Убраны ненужные логи вроде 'read_json -> ...' и другие.
4. Исправлена работа в одиночной игре. Теперь проекты загружаются также как и обычные MoonLoader скрипты, а не только когда функция main будет вызвана (т.е пользователь нажмёт "Новая игра" или "Загрузить игру")
5. Пересмотрен формат конфигурационного файла, новый формат можно посмотреть в первом сообщении топика.
6. Исправлена выгрузка проектов, если скрипт moonly.lua упал с ошибкой. Это нужно, чтобы при перезагрузке скрипты проектов не дублировались по несколько раз.
7. Теперь модули могут сохранять данные в moonly.json, а не только загружать. Пример можно увидеть во встроенном модуле консоли.
8. Улучшена логика отделения корневых модулей от пользовательских, теперь не нужно указывать флаги вроде 'core'.
9. Добавлено окно логов, которое является чем-то вроде замены консоли SAMPFUNCS. Оно создано ради работы в одиночной игре, потому по умолчанию оно отключено и автоматически включится при запуске одиночной игры. Изначально планировалось, что это будет консоль, однако из-за лени и багов в работе скроллинга в imgui было принято решение упразднить консоль до обычного окна с логами, но название не менялось. Может быть, в будущем я добавлю функционал консоли. Для работы требуется upmimgui

Функционал:
1. Цветной текст с поддержкой кириллицы.
2. Копирование текста при нажатии по нему левой кнопкой мыши.
3. Очистка окна при нажатии на ПКМ -> Clear.
4. Внешний вид схожий с консолью SF, почему бы и нет.
5. Использование клиппера для производительности.
6. Работа с встроенным логгером от moonly.
7. Сохранение позиции и размеров в json файл, точно также как это делает SF
авторебут с новой версией у меня перестал выгружать проекты, в итоге каждый раз загружает по новой и оно накапливается, на 1.2.1 в этом плане все было идеально
 

Musaigen

ihatemyself
Автор темы
Проверенный
1,688
1,548
авторебут с новой версией у меня перестал выгружать проекты, в итоге каждый раз загружает по новой и оно накапливается, на 1.2.1 в этом плане все было идеально
Patch update V1.4.3!
1. Исправлено срабатывание ML-Autoreboot на проекты moonly. Изменена логика генерации скрипта-прослойки, что лежит у вас в папке %TEMP%/moonly. Теперь, если папка существует, moonly рекурсивно удалит её со всеми скриптами внутри и создаст пустую. Также если скрипт-прослойка уже создан и находится в папке %TEMP%/moonly, то moonly не будет его создавать заново.
2. Исправлено поведение, когда сообщения от логгера moonly не попадали в консоль после её загрузки.

Patch update V1.4.4!
1. Исправлено срабатывание ML-Autoreboot на проекты moonly в случае, когда moonly.lua перезагружается пользователем.
2. Изменена проверка на открытие консоли, теперь её нельзя открыть только в случае открытого чата.
 
Последнее редактирование:

MrCreepTon

Неизвестный
Всефорумный модератор
2,361
5,374
Прикольная штука, никогда не думал, что буду писать около-бэкендерский код для луа скрипта) Довольно сносно работает, красавчег

Для работы требуется upmimgui
Добавь пожалуйста эту информацию в шапку темы. При первой установке у меня скрипт крашнулся, тогда я (тогда не знавший про наличие moonly.log) пошел смотреть moonloader.log и увидел там какую-то специфичную ошибку. Безуспешно попытавшись прогуглить ее в этой теме, пошел лезть в сурсы и увидел там уже строчку логгера что мне нужна эта либа.
Либо может как-то жирным выделить что есть moonly.log)


Кстати говоря до этого у меня было тут много текста быкующего что команда не регается, но я просто уже забыл что надо бесконечный цикл скрипту делать :d
 

Musaigen

ihatemyself
Автор темы
Проверенный
1,688
1,548
Прикольная штука, никогда не думал, что буду писать около-бэкендерский код для луа скрипта) Довольно сносно работает, красавчег


Добавь пожалуйста эту информацию в шапку темы. При первой установке у меня скрипт крашнулся, тогда я (тогда не знавший про наличие moonly.log) пошел смотреть moonloader.log и увидел там какую-то специфичную ошибку. Безуспешно попытавшись прогуглить ее в этой теме, пошел лезть в сурсы и увидел там уже строчку логгера что мне нужна эта либа.
Либо может как-то жирным выделить что есть moonly.log)


Кстати говоря до этого у меня было тут много текста быкующего что команда не регается, но я просто уже забыл что надо бесконечный цикл скрипту делать :d

можно ещё оставить вывод в консоль как в 1.2.1, ибо у меня внешняя консоль и в хуй не вперлась консоль на имгуи
Patch Update V1.4.5!
1. Исправил краш скрипта, когда логгер пытался загрузить консоль при отсутствующем upmimgui. Теперь скрипт не должен упасть даже если upmimgui нет, как и задумывалось.
2. Также исправил краш скрипта при отсутствующем SAMPFUNCS и загруженной консоли от moonly.

Консоль можно полностью отрубить в moonly.json в поле "moonly.runtime.modules"
Добавил в тему строчки про логгинг и конфигурацию.
Не совсем понял что за "около-бэкендерский" код и "не регающуюся" команду, но ладно.