Предварительный релиз версии .027.
Я не успел завершить работу над реконструкцией системы импорта и системой сборки до начала работы над форумом, и теперь сложно сказать, когда смогу вернуться к работе над мунлоадером, т.к. работы по сайту оказалось много. Но поскольку обновление уже давно ждут, было решено выложить его предварительно без этих изменений. Версия .027 должна была включать ещё перенос всех опкодов на луа и расширение стандартной библиотеки луа, но это пришлось отложить для следующих обновлений.
Итак, изменения перечислю только основные, полный список изменений будет при релизе.
Ключевым изменением в этой версии стало добавление установщика зависимостей на основе пакетного менеджера Lua -
Luarocks. Все подробности о менеджере зависимостей пока что здесь (позже будут на вики):
https://blast.hk/threads/26945/. Установщик зависимостей был значительно улучшен с момента его тестового релиза, теперь он не создаёт процессов (поэтому работает быстрее), журналирует все действия, предотвращает возможность поломки из-за переустановки необходимых для его работы библиотек и т.д.
Все предустановленные библиотеки теперь располагаются в отдельном каталоге
moonloader/libstd
-
настоятельно рекомендуется ничего не удалять/не менять/не добавлять внутри него, а также не распространять его отдельно от дистрибутива MoonLoader, пользовательские библиотеки, как и раньше, находятся в
moonloader/lib
.
Модули
inicfg
и
memory
переписаны на луа, скорость взаимодействия с памятью через модуль
memory
возросла в десятки раз!
Изменения в работе скриптов и API: при ошибке в скрипте в нём гарантировано не выполнится больше никакой код, кроме события
onScriptTerminate
(ранее могли выполниться другие события), функция
isPlayerPlaying
встроена и теперь проверяет существование игрока, благодаря чему можно проверять внутри событий, началась ли игра (раньше такое использование вызывало краш), убрана возможность ставить скрипт на паузу, соответственно
script.frozen, script:pause(), script:resume
больше не имеют эффекта, но оставлены для обратной совместимости,
consumeWindowMessage
теперь позволяет скипать оконные сообщения для событий
onWindowMessage
в других скриптах.
Многочисленные исправления: вылет игры при завершении скрипта, выполняющего скачивание файлов, окна с ошибками при старте игры, сброс настроек микшера, функции получения/изменения кватерниона игровых сущностей, возвращена возможность инжекта (была нарушена в версии .023) и другие мелкие исправления.
Множество внутренних изменений: переписана система логирования с целью повысить производительность, обновлены все библиотеки, в числе которых глобальное обновление sol2(3), улучшен хук DirectX, переделана система информации о скриптах с целью снизить расход ресурсов и повысить производительность, и прочее.
Несколько новых функций:
isCursorActive, getPickupModel, getPickupType, getPickupPointer, getPickupPointerHandle, getAllPickups, logdebug
.
Также прошу обратить внимание на
mimgui - аналог уже не обновляющегося Moon ImGui. Релиз ещё не состоялся, но библиотека работает совершенно стабильно. Она реализует новейшую версию dear imgui и предоставляет возможности, которых не было ранее. Примеры использования есть на гитхабе:
https://github.com/THE-FYP/mimgui/tree/master/examples
Установите через менеджер зависимостей, добавив в свой скрипт строку
require 'deps' {'fyp:mimgui'}
!
Скачать MoonLoader:
https://blast.hk/moonloader/files/moonloader-027.0-preview3.zip
Установить: разархивировать содержимое в папку с игрой.
Для работы теперь необходим
Microsoft Visual C++ Redistributable for Visual Studio 2017 x86 (предустановлен в большинстве систем, но не во всех).