Что это?

Этот мод позволяет загрузить плагины для F4SE до инициализации игры.

Нужен ли мне этот мод и какой смысл в его установке?

Нет! Вам не нужен этот мод до тех пор пока вы не установите мод, который явно зависит от этого. Нет никакого смысла устанавливать прелоадер просто так. На текущий момент только PrivateProfileRedirector F4 и Buffout 4 требует прелоадер. Никакой другой причины нет. Прелоадер позволяет плагинам для F4SE изменить код игры до того как игра воспользуется этим кодом.

Установка

Поместите файлы WinHTTP.dll и xSE PluginPreloader.xml в корневую папку Fallout 4 (где находится Fallout4.exe), НЕ в папку Data.

Удаление

Удалите установленные файлы. Любой мод который зависит от этого прекратит работать корректно.

Как это работает?

Библиотека WinHTTP.dll, загружаемая игрой автоматически инициализирует плагины, а потом перенаправляет вызовы к оригинальному файлу WinHTTP.dll в C:\Windows\System32.

Настройка

Прелоадер сделан как прокси-библиотека для WinHTTP.dll и таким образом несовместим с любыми другими модами которые меняют эту же DLL (нет на данный момент). В таком случае вам нужно переименовать WinHTTP.dll от другого мода и указать новое имя файла в xSE PluginPreloader.xml. Смотрите этот XML файл для более детального описания.

Откройте файл xSE PluginPreloader.xml и измените метод загрузки на OnThreadAttach или на ImportAddressHook если метод по умолчанию не работает. Если вы используете Mod Organizer 2, вероятно вам нужно использовать OnThreadAttach или ImportAddressHook.

 

Чтобы изменить метод загрузки, отредактируйте атрибут Name в XML файле.

<LoadMethod Name="ImportAddressHook">
    ...
</LoadMethod>

Если, например, вам нужно сменить метод на OnThreadAttach (или на OnProcessAttach) измените файл слебующим образом.
<LoadMethod Name="OnThreadAttach">
    ...
</LoadMethod>

<LoadMethod Name="OnProcessAttach">
    ...
</LoadMethod>

Вопросы пользователей

Q: Имеет ли прелодаер какое-либо влияние на производительность или какие-либо другие проблемы?
A: Ничего что было замечено.

Q: Он совместим с ENB?
A: Да.

Q: Требуется ли ENB
A: Нет.

Q: Не будет ли проблемой что преладер загрузит плагины F4SE перед F4SE?
A: Прелоадер загружает только те плагины, которые имеют в комплекте специальный файл который служит маркером того, что прелоадер должен загрузить этот плагин. Вы не должны создавать этот файл сами, разработчик плагина сам решает требует ли его плагин предзагрузки или нет.

Q: У меня проблема, плагин не предзагружается когда он должен.
A: Найдите файл xSE PluginPreloader.log в корневой папке игры и загрузите его вместе со своим отчётом о проблеме. Я попробую разобраться в чём дело.

Вопросы разработчиков плагинов

Q: Как мне сделать чтобы мой плагин был предзагружен.
A: Пусть ваш плагин это MyPlugin.dll и он в папке Data/F4SE/Plugins, тогда создайте текстовый файл MyPlugin_preload.txt в Data/F4SE/Plugins. Содержимое файла значения не имеет.

Q: Как именно плагин будет предзагружен?
A: Загрузчик WinHTTP.dll вызовет функцию LoadLibrary которая загрузит ваш плагин до инициализации игры. Загрузчик не вызовет функции F4SEPlugin_Query и F4SEPlugin_Load, они аозже будут вызваны F4SE. Это значит вы должны сделать всё что вам надо сделать до инициализации игры в функции DllMain.

Q: F4SE вызывает LoadLibrary ещё раз, это будет проблемой?
A: Нет, LoadLibrary может быть вызвана несколько раз и загрузит DLL только один раз если это одна и та же DLL.

Q: Могу ли я установить такой плагин (включая *_preload.txt) используя Mod Organizer/Wrye Bash?
A: Страница SKSE Plugin Preloader говорит что вы можете. Учитывая что паковка плагинов идентична я думаю что это применимо и здесь. Так же и с Wrye Bash:
Не забудьте сказать пользователям чтобы они отметили "Override Skips" в установщике чтобы .txt установились вместе с F4SE-плагином.

Исходный код доступен на GitHub.

Благодарности:
Nukem - библиотека Detours.
meh321 - шаблон для описания.
Augh - тестирование.

Загрузил:
Karandra
9

Комментарии

Авторизуйтесь, чтобы оставить новый комментарий. Или зарегистрируйтесь.