Оригинальный LINK - замечательный. Он делает то, для чего предназначен, и делает это чертовски хорошо. Но нет предела совершенству, не так ли? Данный мод представляет собой модифицированную версию LINK (большое спасибо Maskar'у за открытые разрешения). Он расширяет функциональность оригинального LINK, сохраняя при этом полную обратную совместимость с модами, предназначенными для работы с оригинальным LINK (если он работает с LINK, то будет работать и с LINK++).

Что же конкретно расширяет этот мод? Первое и самое главное - он позволяет по-новому определять конфигурационные записи мода для меню LINK через обработчики событий xOBSE. Такой подход дает следующие преимущества:

Нажмите, чтобы показать текст

  • Вы полностью контролируете, когда конфигурация вашего мода станет доступной. Оригинальный подход LINK позволяет конфигурировать любой мод в любое время (даже находясь в главном меню, когда игра еще не запущена!). Это может нарушить логику работы вашего мода, если он не ожидает, что будет сконфигурирован в неинициализированном состоянии. В LINK++ только вы решаете, когда ваш мод может быть сконфигурирован, а когда нет. Вы можете даже временно отключить конфигурацию мода, если он выполняет какую-то тяжелую инициализацию/обновление и не должен быть потревожен при этом.
  • Оригинальный LINK также не дает никаких гарантий того, что обработчик события OnSettingsUpdated будет вызван (вы можете сконфигурировать свой мод до того, как обработчик будет установлен), LINK++ гарантирует это (если, конечно, вы его определите).
  • Это устраняет не явность и обеспечивает большую гибкость. В отличие от оригинального LINK, в котором пути к .cfg и .ini определялись из имени файла мода, в LINK++ вы можете явно определить путь к .cfg файлу и пути к .ini файлам мода (да, теперь вы можете определить несколько или даже ни одного .ini файла для вашего мода).
  • Теперь для одного мода можно задать несколько конфигурационных записей. Это очень полезно, по крайней мере, в двух сценариях: 1 - если у вас очень-очень большой мод, который технически представляет собой один .esp-файл, но он модульный по своей природе и имеет слишком много конфигураций, чтобы уместиться в одном меню (да, я смотрю на вас, MOO). 2 - вы хотите иметь возможность объединить свой мод с другими модами (которые, возможно, также поддерживают LINK) и по-прежнему иметь возможность настраивать их все с помощью LINK.
  • Теперь один мод может определять конфигурационные элементы для других модов. Это очень полезно для добавления поддержки LINK++ в некоторые старые моды, которые уже никто не хочет обновлять (см. например, Configuration Items Begone).
  • Мод может по желанию задать свое отображаемое имя, которое будет показано в меню LINK++, а также описание и версию, которые будут отображаться при наведении курсора мыши.
  • Теперь вы можете задать собственную иконку для вашего мода, которая будет отображаться в меню списка модов! Это также настраивается, вы можете отключить иконки, если хотите.
  • Решает проблему дублирования пунктов меню при наличии файлов .esm и .esp с одинаковыми именами.
  • Позволяет добавить некоторую собственную предварительную обработку перед тем, как будет открыто меню конфигурации мода.

Другие особенности:

Нажмите, чтобы показать текст

  • Добавлен новый тип настроек: кнопка действия. Это кнопка, которая при нажатии запускает свой callback. Пригодится для таких вещей, как предварительный просмотр звуков, показ информации о каком-либо моде, открытие книги с руководством по вашему моду и т.д., возможности ограничены только вашим воображением. Также полезно для переноса на LINK++ старых модов со сложным меню настроек. 
  • Теперь можно указать условия, которые должны выполняться для отображения конфигурации. Условия будут обновляться при каждом изменении настроек. Это, например, может быть полезно, если некоторые настройки становятся неактуальными при включении других настроек, или если некоторые настройки актуальны только при установке определенного мода и т.д.
  • Нажатие кнопки "Назад" в меню настройки мода теперь возвращает вас в меню списка модов (с сохранением предыдущего положения ползунка), а не в меню выхода. Это поведение настраивается.
  • Изменены некоторые настройки LINK по умолчанию, теперь моды сортируются по названиям, а в меню списка модов отображаются только настраиваемые моды. Это делает LINK++ более похожим на MCM.
  • Добавлен простой и понятный API для вызова меню LINK++ из скриптов. Это может быть полезно для интеграции меню LINK++ непосредственно в ваш UI мод. Вот пример того, как Slowpard использовал это в своем моде "Progress tracker":
  • Не сохраняет лишних данных в файле сохранения.
  • Улучшен код, исправлены некоторые возможные ошибки. Добавлена дополнительная валидация, теперь злоупотребить LINK стало немного сложнее.
  • Добавление логирования во многие места с различными уровнями, для устранения неполадок можно настроить уровень логирования в .ini файле или в меню LINK++.

Требования

xOBSEMenuQue - OBSE PluginConScribe (По желанию, если хотите экспортировать/импортировать настройки)

Как установить мод

Распаковать в Data, активировать LINK.esp

Обновление

В отличие от оригинального LINK, LINK++ НЕ поддерживает обновление с предыдущих версий без чистого сохранения (и вообще это плохая идея - обновлять моды таким образом). Если вы хотите обновиться до новой версии или перейти с оригинального LINK:

  • Если у вас установлен ConScribe, экспортируйте текущие настройки. После удаления LINK/LINK++ они будут возвращены к значениям по умолчанию.
  • Удалите ранее установленную версию.
  • Выполните чистое сохранение.
  • Установите новую версию.
  • Если вы ранее экспортировали свои настройки, импортируйте их.

Совместимость

В принципе, то же самое, что и для оригинального LINK: может быть несовместим с модами, изменяющими меню выхода из игры (хотя, кроме оригинального LINK, я о таких не знаю).

  • В настоящее время автоматически поддерживаются следующие моды на UI: DarNified UI, DarkUId DarN, Dark Transparent UI и NorthernUI. Другие UI-моды, вероятно, будут использовать ванильное меню, но это не гарантировано, так как трудно точно определить, какой UI-мод у вас установлен.
  • Несовместим с оригинальным LINK. Если вы хотите перейти с LINK на LINK++, удалите LINK и сделайте чистое сохранение.

Планы на будущее

  • Добавить новый тип настройки для строк с полем ввода текста.
  • Добавить новый тип настройки для чисел с текстовым полем ввода.
  • Добавить новый тип настройки для комбинаций клавиш.
  • Сделать возможным отключение настроек клавиш.
  • Добавить новый тип настройки для всех типов массивов.
  • Добавить новый тип настроек для цветов, позволяющий выбирать RGB-значение с помощью ползунка и просматривать его в реальном времени.
  • Показывать, какие настройки можно экспортировать/импортировать, а какие нет.
  • Добавить возможность добавления обработчика для импорта/экспорта настроек кнопки действия.
  • Реализовать систему профилей импорта/экспорта.
  • Реализовать импорт/экспорт для каждого модуля отдельно.
  • Сделать так, чтобы ванильные модули могли использовать некоторые возможности LINK++ (пользовательские иконки, пользовательское название, пользовательское описание, ограниченные кнопки действий).
  • Улучшить отображение заголовка cfg_setting_title (сделать возможность отображения большего количества символов).
  • Немного оптимизировать работу.
Загрузил:
Devilman
7

Комментарии

Обновил файл.
Сделал более человечный перевод, а ещё в прошлой версии я что-то намудрил и при открытии настроек любого мода в консоль прилетала ошибка :)

Devilman, С кодировкой бывает такая беда

не всегда но бывает так что при входе во вклаку моды игра вылетает

luxeonist, Могу посоветовать только установить этот мод: nexusmods.com/oblivion/mods/26510
А в настройках LINK, хоть через ini, хоть через внутриигровое меню: выставить Уровень логирования в TRACE; Отключить вывод в Нет.
Дальше играть как обычно и после вылета, в папке Data найти папку ConScribe Logs, в ней открыть файл Static Log.log. И либо самому посмотреть в чём проблема, либо скинуть мне)

Devilman, вот как Вы и просили
xOBSE 22.10.0 Loaded Succesfully
[LINK++] [LppInitConstants] [DEBUG]: All constants initialized, LINK++ version: 0.1.4
[LINK++] [LppNotifyModuleOnSettingsUpdate] [DEBUG]: LINK++ module 'LINK++' was updated, but have no onSettingsUpdated handler, do nothing
[LINK++] [LINKOnClickGenericModsConfigMenuReturnFunctionScript] [DEBUG]: Return button pressed in mod config menu, invoking specified callback [22000830].
[LINK++] [LppOnModInfoResponse] [DEBUG]: Received LINK++ modules configs from mod 'LINK.esp', performing validations...
[LINK++] [LppOnModInfoResponse] [TRACE]: Validating mod's 'LINK.esp' config: pluginName='', moduleName='LINK++', cfgPath='Data\ini\LPP\LINK.cfg', onSettingUpdate = [00000000]. Action button handlers:
** Dumping Array #9 **
Refs: 1 Owner 22: LINK.esp
[LINK++] [LppOnModInfoResponse] [DEBUG]: Validation passed!
[LINK++] [LppGenerateUnifiedFormattedModuleList] [DEBUG]: Generating unified formatted modules list. Specified filter is:
** Dumping Array #23 **
Refs: 2 Owner 22: LINK.esp
[LINK++] [LppGenerateUnifiedFormattedModuleList] [DEBUG]: Sorting modules by name
[LINK++] [LppClearModConfigMenuState] [DEBUG]: Cleaning mod config menu state
[LINK++] [LppClearSettingRelatedArrays] [DEBUG]: Clearing setting related variables...
[LINK++] [LINKOnClickGenericModsMenuFunctionScript] [TRACE]: Clicked on 'CFG_return_button' component
[LINK++] [LppOnReturnFromModsListMenu] [DEBUG]: Return pressed in mods list menu
[LINK++] [LppOnReturnFromModsListMenu] [DEBUG]: No on return callback was provided.
[LINK++] [LppClearModsListMenuState] [DEBUG]: Cleaning mods list menu state...
[LINK++] [LppClearModConfigMenuState] [DEBUG]: Cleaning mod config menu state
[LINK++] [LppClearSettingRelatedArrays] [DEBUG]: Clearing setting related variables...
[LINK++] [LppOnModInfoResponse] [DEBUG]: Received LINK++ modules configs from mod 'LINK.esp', performing validations...
[LINK++] [LppOnModInfoResponse] [TRACE]: Validating mod's 'LINK.esp' config: pluginName='', moduleName='LINK++', cfgPath='Data\ini\LPP\LINK.cfg', onSettingUpdate = [00000000]. Action button handlers:
** Dumping Array #20 **
Refs: 1 Owner 22: LINK.esp
[LINK++] [LppOnModInfoResponse] [DEBUG]: Validation passed!
[LINK++] [LppGenerateUnifiedFormattedModuleList] [DEBUG]: Generating unified formatted modules list. Specified filter is:
** Dumping Array #2 **
Refs: 3 Owner 22: LINK.esp
[LINK++] [LppGenerateUnifiedFormattedModuleList] [DEBUG]: Sorting modules by name
[LINK++] [LINKOnClickGenericModsMenuFunctionScript] [TRACE]: Clicked on 'CFG_return_button' component
[LINK++] [LppOnReturnFromModsListMenu] [DEBUG]: Return pressed in mods list menu
[LINK++] [LppOnReturnFromModsListMenu] [DEBUG]: No on return callback was provided.
[LINK++] [LppClearModsListMenuState] [DEBUG]: Cleaning mods list menu state...
[LINK++] [LppClearModConfigMenuState] [DEBUG]: Cleaning mod config menu state
[LINK++] [LppClearSettingRelatedArrays] [DEBUG]: Clearing setting related variables...
[LINK++] [LppOnModInfoResponse] [DEBUG]: Received LINK++ modules configs from mod 'LINK.esp', performing validations...
[LINK++] [LppOnModInfoResponse] [TRACE]: Validating mod's 'LINK.esp' config: pluginName='', moduleName='LINK++', cfgPath='Data\ini\LPP\LINK.cfg', onSettingUpdate = [00000000]. Action button handlers:
** Dumping Array #11 **
Refs: 1 Owner 22: LINK.esp
[LINK++] [LppOnModInfoResponse] [DEBUG]: Validation passed!
[LINK++] [LppGenerateUnifiedFormattedModuleList] [DEBUG]: Generating unified formatted modules list. Specified filter is:
** Dumping Array #2 **
Refs: 3 Owner 22: LINK.esp
[LINK++] [LppGenerateUnifiedFormattedModuleList] [DEBUG]: Sorting modules by name
[LINK++] [LINKOnClickGenericModsMenuFunctionScript] [TRACE]: Clicked on '2' component
[LINK++] [LINKOnClickGenericModsMenuFunctionScript] [DEBUG]: Module #2 with name 'LINK++' clicked
[LINK++] [LppCreateModuleConfigMenu] [DEBUG]: Creating module configuration menu for module with name 'LINK++', callback [22000830]
[LINK++] [LINKOnClickGenericModsMenuFunctionScript] [DEBUG]: Module with name 'LINK++' is LINK++ module, proceeding...
[LINK++] [LppClearSettingRelatedArrays] [DEBUG]: Clearing setting related variables...
[LINK++] [LINKShowMenuConfigUpdateTemplatesFunctionScript] [DEBUG]: Mod menu created
[LINK++] [LINKOnClickGenericModsConfigMenuReturnFunctionScript] [DEBUG]: Return button pressed in mod config menu, invoking specified callback [22000830].
[LINK++] [LppOnModInfoResponse] [DEBUG]: Received LINK++ modules configs from mod 'LINK.esp', performing validations...
[LINK++] [LppOnModInfoResponse] [TRACE]: Validating mod's 'LINK.esp' config: pluginName='', moduleName='LINK++', cfgPath='Data\ini\LPP\LINK.cfg', onSettingUpdate = [00000000]. Action button handlers:
** Dumping Array #37 **
Refs: 1 Owner 22: LINK.esp
[LINK++] [LppOnModInfoResponse] [DEBUG]: Validation passed!
[LINK++] [LppGenerateUnifiedFormattedModuleList] [DEBUG]: Generating unified formatted modules list. Specified filter is:
** Dumping Array #2 **
Refs: 2 Owner 22: LINK.esp
[LINK++] [LppGenerateUnifiedFormattedModuleList] [DEBUG]: Sorting modules by name
[LINK++] [LppClearModConfigMenuState] [DEBUG]: Cleaning mod config menu state
[LINK++] [LppClearSettingRelatedArrays] [DEBUG]: Clearing setting related variables...
[LINK++] [LINKOnClickGenericModsMenuFunctionScript] [TRACE]: Clicked on 'CFG_return_button' component
[LINK++] [LppOnReturnFromModsListMenu] [DEBUG]: Return pressed in mods list menu
[LINK++] [LppOnReturnFromModsListMenu] [DEBUG]: No on return callback was provided.
[LINK++] [LppClearModsListMenuState] [DEBUG]: Cleaning mods list menu state...
[LINK++] [LppClearModConfigMenuState] [DEBUG]: Cleaning mod config menu state
[LINK++] [LppClearSettingRelatedArrays] [DEBUG]: Clearing setting related variables...
===============================================
Game Instance : 1 | Time : 11-22-2023 23-57-05
===============================================
Game Loaded Script Launched

luxeonist, Из этого лога мы понимаем что ничего не понимаем)
По крайней мере никакой ошибки не было залогировано.
А можете скачать оригинальную версию мода? nexusmods.com/oblivion/mods/53352
Если и с ней вылетает, то тут мои познания всё. Вылет же чётко при заходе в меню модов? Или при открытии меню какого-то конкретного мода?

Devilman, с оригинальным тоже вылетает, вылет происходит именно когда я нажимаю на вкладку моды в настройках во время игры, причем когда игра не загружена и я просто захожу в из меню в моды то вылетов нету, только что путем поочередного отключения моих модов на интерфейс выяснилось что вылет происходит когда подключен мод Progress Tracker(скачивал здесь а сайте),начал новую игру и вылеты прекратились, может был какой то конфликт между сохранениями и Progress Tracker, вроде как проблема решена

luxeonist, Действительно странно. А сейвы которые вылетают ещё существуют? Не могли бы оригинальный Progress Tracker (nexusmods.com/oblivion/mods/53328) опробовать? Если с ним вылетов нет, то я мог что-то переводом напортачить. Как не крути, но там скрипты переводились, мог что-то не то ввести например.
Если и с ним вылетает, тогда на лицо и правда порча сохранения. Кто-то из этих модов что-то не то записал и пошли вылеты.

Devilman, с оригинальным тоже вылетает

luxeonist, Спасибо за информацию)
Ну, хоть в новой игре не вылетает, уже хлеб.

luxeonist, а можете сэйв с вылетом выложить куда-нибудь?

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