Что это?

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

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

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

Установка

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

Удаление

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

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

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

Настройка

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

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

 

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

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

Если, например, вам нужно сменить метод на OnThreadAttach измените файл слебующим образом.
<LoadMethod Name="OnThreadAttach">
    ...
</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: Загрузчик IpHlpAPI.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-плагином.

История версий

Версия 0.2.3
  • Исправлено сообщение об ошибке загрузки файла DComp.dll на Windows 7.
Версия 0.2.2
  • Исправлена ошибка с загрузкой фпйла конфигурации (подробнее здесь).
  • Добавлено логгировнаие вресии системы и некоторой другой информации.
Версия 0.2.1
  • Улушено логгирование во время загрузки файла конфигурации.
  • Теперь если файл конфигурации не найден или не может быть загружен, он будет восстановлен испльзуя файл с настройками по умолчанию, хранящийся внутри DLL файла.
  • Многие указатели и им подобные значения теперь записываются в лог в шестнадцатеричной форме (0x12abcdef).
Версия 0.2
  • Переписано с использованием KxFramework.
  • Добавлено больше информации выводимой в лог.
  • Добавлен фильтр процессов, которым разрешено загружать плагины.
  • Возвращён метод загрузки основанный на перехвате функции в таблице иморта (Import Address Table - IAT).
  • Файл конфигурации теперь использует формат XML вместо INI.

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

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

Загрузил:
Кербер
7

Комментарии

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