Перейти к содержимому

Добро пожаловать Falcon-Lair.com
Регистрация даст вам полный доступ к возможностям нашего сайта. Зарегистрировавшись или войдя под своим логином, вы сможете создавать темы, оставлять ответы в имеющихся темах, скачивать наши работы, участвовать в обсуждениях наших работ, пользоваться галереей, вести блоги, высказывать свои пожелания и даже принимать участие в развитии нашего проекта SFW и многое другое. Данное сообщение исчезнет, как только вы авторизируетесь. Если у вас возникли какие-либо проблемы с авторизацией (не приходит письмо), воспользуйтесь формой обратной связи.
Войти Регистрация

Информация

  • Добавлена: марта 04 2018 22:54
  • Обновлена: марта 04 2018 23:02
  • Просмотров: 503
 


* * * * *
3 Рейтинг

Как объединить модификации со встроенным MCM-меню.

Адаптация и перевод зарубежной статьи с TTW.

Написано Infest марта 04 2018 22:54
Наверное ни для кого не станет секретом, что модификации с MCM-меню в плане объединения друг с другом имеют множество подводных камней, связанных с особенностями архитектуры и принципами работы "вегасовского" The Mod Configuration Menu.

Так сложилось, что из-за этих особенностей, порой, либо невозможно, либо очень сложно объединить самостоятельно подобные модификации, особенно, когда этот вопрос остро стоит в рамках проекта "Ruined America", да и других мало-мальских крупных проектов. Те крупицы информации, гуляющие на просторах интернета, не давали полной картины решения данной проблемы. Однако на ресурсе TTW, товарищем helpful_visitor была написана статья, довольно информативно описывающая решение этого вопроса.

Итак основная проблема объединения MCM-модов заключается в том, что после слияния плагинов, напрочь отказываются работать нужные скрипты. Отсюда исходят три основные проблемы, из-за которых происходит подобный сценарий, после объединения таких модификаций:
  • MCM-элемент меню (т.н. раздел мода) не имеет своего собственного уникального параметра (MCM-раздел используются в левом столбце The Mod Configuration Menu, для выбора какого-либо мода и изменения определённых параметров игры).
  • В скриптах прописан неверный путь к имени *esp/*esm-файлов.
  • В скриптах не прописана логика, ссылающаяся на работу с MCM-разделом.
Теперь постараемся разобраться, как эти вышеперечисленные проблемы решить.

Шаг 1. Решение проблемы №1. Работа с разделами.
Каждому MCM-разделу необходимо включить и присвоить свой уникальный параметр "Value" - да-да, сколько крышек эта штука будет стоить. В игре отображаться не будет, но для работы скрипта это является важной составляющей. Это необходимо сделать для всех MCM-разделов (для большинства модов, разработчики используют параметр "Misc"), чтобы каждый из них имел свой уникальный параметр "Value".

Изображение

Шаг 2. Исправление скриптов.
Звучит страшновато, но, как говорится, "не так страшен чёрт, как его малюют". В большинстве случаев, данный шаг подразумевает исправление 1-2 строк кода и перекомпиляции в GECK. Наиболее распространённая проблема со скриптами заключается в том, что большинство MCM скриптов ссылаются на имя файла модификации, от которого работает тот или иной MCM-раздел. Это нормальное явление, когда есть одно меню, но когда вы пытается добавить другие меню, движок игры не может понять, что от него хотят и в итоге, мы получаем либо пустые разделы MCM-меню, либо неработающие в разделах параметры, а то и вовсе их отсутствие.

Ниже приведён пример, как выглядит стандартный скрипт.
begin MenuMode 1013
        if IsModLoaded "The Mod Configuration Menu.esp"
        else
                 Return
        endif
        if (GetUIFloat "StartMenu/MCM/_ActiveMod" == GetModIndex "JIP Companions Command & Control.esp")
        Куча кода менюшки и т.д.
Для решения проблемы №2, очевидно можно просто изменить имя мода, однако наши объединённые моды будут иметь разные названия. Поэтому в данной случае существует специальная переменная, позволяющая объединить моды без привязки по именам плагинов. Выглядит это примерно так:

if (GetUIFloat "StartMenu / MCM / _ActiveMod" == GetSelfModIndex )

Но самым главным исправлением является добавление логики, в которой записано, какой MCM-раздел будет привязан к тому или иному скрипту (решение проблемы №3). Большинство скриптов не имеют такой логики, для них пример исправления указан выше. Однако если логика всё же присутствует, то скрипт немного дополняется:

if (GetUIFloat «StartMenu / MCM / _ActiveMod» == GetSelfModIndex && GetUIFloat «StartMenu / MCM / _ActiveMenu» == 40 )

Значение "40", которое было указано в качестве примера, означает, что скрипт будет работать только с MCM-разделом, имеющим параметр (Value) "40" (в примере "JIP Companions Command & Control"). Если вам нужно задействовать другой скрипт, отвечающий за другой элемент MCM-раздела, то нужно ставить другой уникальный параметр (но уже точно не "40", т.к. он уже занят другим элементом).

Если после объединения скриптов у вас не работает MCM-меню, перепроверьте скрипты, возможно автор модификации пихнул ссылку к путям мода в другие места. Данное решение в этой статье будет работать для большинства MCM-модификаций.

Автор оригинальной статьи, благодаря этому способу, смог объединить 12 плагинов в 1. Также автор не рекомендует объединять мод FlashlightNVSE, т.к. при объединении по неизвестным причинам ломаются логики многих скриптов.

Пожалуй на этом всё. Это мой первый перевод статьи. Прошу палками не бить, камнями не кидать. Если нашли ошибку или неточность, сообщите в ЛС :)

Благодарность:
helpful_visitor - автору оригинала за статью.
MagnuMspec - за помощь в техническом переводе.