
Script Merger
Зачем нужен Script Merger
Когда у вас есть несколько модов, которые изменяют один и тот же файл игры, TW3 загружает только одну версию того файла. Такой вид конфликта является распространенным и ломает модификации, т.е. при запуске игры выскакивает ошибка, и игра просто не запускается. Эта программа пытается исправить данную проблему.
Версия 0.6.5
- Исправлена ошибка, из-за которой объединенная папка модов не удалялась из папки Mods при удалении всех слияний.
- Первоначальное обнаружение аргументов (это еще нигде не используется должным образом, но это некоторая фоновая работа), включая обнаружение того, когда Vortex начинает слияние.
- Исправлена ошибка, из-за которой слияние скриптов приводило к сбою, если пользователь переместил свою директорию игры W3.
Версия 0.6.2
- Добавлено распознавание в обновлении слияния исходных файлов и базовой строки для удаления пораженного слияния.
- Добавлена валидация mods.settings.
- Заново добавлена информация о выполнении в файле config. Надеюсь TypeLoadException избежит при пуске.
- Исправлено: ложная ошибка "missing file" после успешного пакетного слияния 3+ модов.
- Исправлено: пункт меню "Dependency Locations" перестал работать в 0.6.1.
- Исправлена ошибка: сбой при попытке открыть относительные пути к файлу.
- Исправлено: отключены флажки модов в некоторых ситуациях.
Журнал изменений:
- Добавлено меню с опциями открыть определенные файлы / папки, переупаковать объединенные bundle или выйти и запустить игру.
- Эстетичный статус-бар.
- Быстрая функциональность "Set Priority".
- Убраны флажки с отключенных модов.
- Добавлен запрос на удаление слияния, включающий отключенные моды.
- Добавлен прогресс-бар на панель задач (Windows Vista или более поздняя версия).
- Добавлены всплывающие подсказки в контекстное меню.
- Спрятан пункт контекстного меню "Select / Expand All" для правой кнопки мыши.
- Отключение отсутствующих приоритетов мода дает 9999, а самый низкий приоритет + 1.
- Добавлено ожидание пути отсутствия диалога выбора файла для устранения неисправностей.
- Исправлено: возможное обрушение конфликта разрешается в порядке загрузки всех разрушенных конфликтов.
- Исправлено: контекстное меню "Open Vanilla" было показано при отсутствующем файле ванили.
- Исправлено: неправильный цвет текста при нажатии правой кнопкой мыши и выборе флажка.
- Улучшена обработка пользовательского порядка загрузки.
- Добавлены элементы контекстного меню по установке приоритетов модов, включить/выключить, удалить из порядка загрузки.
- Конфликты, разрешающиеся в пользовательском порядке загрузки, выделяются фиолетовым цветом.
- Моды, имеющие приоритет в пользовательском порядке загрузки, выделяются серым цветом.
- Моды, отключенные в пользовательском порядке загрузки, выделяются курсивом.
- Добавлена опция автоустранения конфликтов, разрешающихся с помощью пользовательского порядка загрузки.
- Добавлена опция отключения проверки пользовательского порядка загрузки.
- Исправлены min и max ограничения приоритета в соответствии с документацией CDPR.
- Удалены опции и предложения отключения пользовательского порядка загрузки.
- Исправлено: подтверждение порядка загрузки крашилось при пустом файле mods.settings.
- Добавлена горячая клавиша F5 для обновления конфликтов.
- Переименование "unsupported" в "not mergeable".
- Допустимое исправление для смещенных иконок в отчете слияния
- Исправлено: модификация пользовательского порядка загрузки была сломана (mod0000_MergedFiles крашился и переназначал существующие приоритеты неправильно).
- Исправлено: Bundled файлы XML были интерпретированы не верно.
- Добавлена поддержка для non-bundled файлов XML.
- Добавлено исправление, когда модификация пользовательского порядка загрузки (файл mods.settings) не загружала в первую очередь слитые файлы.
- Переименована настройка ScriptsDirectory в VanillaScriptsDirectory, потому что для некоторых пользователей было не понятно.
- "Witcher 3 Directory" перемещен в текстовое поле над UI.
- Добавлены знак плюс, стрелка и цветной текст, чтобы отчет об объединении был более ясен.
- Добавлены всплывающие подсказки к пунктам меню Options.
- Добавлено сообщение об ошибке об отсутствующем файле сonfig.
- Исправлено: неправильные цифры прогресса при слиянии нескольких game файлов.
- Исправлено: пустая категория конфликта оставалась для обновления после разрешения конфликта за пределами Script Merger.
- Возможно исправлена ошибка, где каталог tempbundlecontent не существовал, в результате чего QuickBMS незаметно запрашивал подтверждение.
- Добавлена поддержка bundled файлов CSV и TXT.
- Добавлен звук при завершении слияния или упаковки (новый параметр в меню Options и в config файле).
- Сообщение процесса слияния: "конфликт Х c Y, файла N c М", если это применимо.
- Убрана рекомендация копировать скрипты из wcc_lite, потому что они устарели.
- Исправлено: элементы контекстного меню для удаления слияния не работали.
Что делает Script Merger
Script Merger обнаруживает конфликты в обоих .ws скриптах и .bundle пакетах. Затем она создает объединенную версию конфликта .ws скриптов или .xml файлов внутри .bundle. Также обнаруживает конфликты текстур и моделей, но не может объединить их.
В ней также используется 3 другие программы:
- KDiff3 от Joachim Eibl – объединяет текстовые файлы.
- QuickBMS от Luigi Auriemma - сканирует и распаковывает .bundle файлы.
- wcc_lite от CD Projekt RED – упаковывает объединенные XML в .bundle файлы.
Примечание:
- При объединении KDiff3 просто делает текстовое слияние. Во многих случаях это хорошо работает. Но т.к. данная программа фактически не понимает код, иногда она объединяет в неправильном порядке. В таком случае объединение нужно произвести вручную.
- Кроме того, в скриптовых модах могут быть логические конфликты, которые не может обнаружить программа. В этом случае, даже если текст объединяется без прямых конфликтов, в результате скрипт не будет работать должным образом. Например, если MодА пытается скрыть HUD, а MодB выводит на экран HUD, то MодA не будет работать. В таком случае объединение нужно произвести также вручную.
Инструкция:
1. При первом запуске программы нужно указать путь к папке игры "The Witcher 3 Wild Hunt".
- Steam-версия - \Steam\steamapps\common\The Witcher 3.
- GOG-версия - \GOG]\The Witcher 3 Wild Hunt.
2. Откроется окошко с двумя половинками.
3. Нажать кнопку "Refresh" выше списка "Conflicts".
4. Если имеются какие-либо конфликты модов, в левом окне будут показаны эти моды. Правое окно будет пока пустое. После объединения модов в этом окне будут показаны уже объединенные моды. Отметить галочкой моды, которые нужно объединить.
5. Нажать кнопку "Create Selected Merge".
6. Если программа все сама объединила без проблем, выскочит маленькое окошко "Conflicts" с указанием количества конфликтующих строк, в последней строчке будет написана цифра "0". В этом случае спокойно жмем "ОК". Затем выскочит еще одно окошко побольше с названием модов, которые были объединены в новый мод "mod0000_MergedFiles". Также нажать "ОК".
7. Бывает так, что программа сама не справляется с объединением. Выбор должны сделать мы. После того, как выскочит маленькое окошко, в третьей строчке появятся цифры, показывающие, сколько строк программа не объединила и которые нужно объединить вручную. Нажать также "OK".
8. Выскочит большое окно, разделенное на 3 (бывает и 2) вертикальные колонки: A, B, C. Окно A как правило показывает строки из самой игры (оригинал), В и C - строки из объединяемым модов. Программа сама выделит конфликтующие строки желтым цветом, нужно в нижней части большого окна нажать на выделенную надпись <Merge Conflict> правой кнопкой мыши и выбрать один из вариантов - В или С, т.е. какой мод предпочтителен. Иногда бывает, что нужно выбрать В и С или С и В. Если конфликтующих строк больше, чем одна, нужно пролистать ползунок нижнего горизонтального окна вниз пока не встретится опять надпись <Merge Conflict> или воспользоваться стрелками в виде треугольничков на Панели инструментов, и произвести объединение. Если крайний треугольничик имеет красный цвет, то значит есть еще не объединенные строки.
9. Затем закрыть окно. Выскочит маленькое окошко, нажать "Save & Quit". Программа сделает сохранение и большое окно закроется. Также можно просто сохранить, нажав на иконку на Панели инструментов или зайдя в "Файл", а потом "Выйти".
Если объединяется несколько модов, то программа продолжит объединение дальше. Если программа отказывается записывать файлы и закрываться, значит осталась какая-то не объединенная строчка. Нужно пролистать еще раз строки в нижнем окошке и найти строку <Merge Conflict>. После того, как все будет объединено, выскочит еще одно окно, показывающее, что идет слияние модов. Нажать "ОК".
10. Все объединенные моды переместятся в правое окошко.
11. Закрыть Script Merger и запустить игру. TW3 должен загрузить сначала объединенные файлы, игнорируя не объединенные версии.
Если при запуске игры выскакивают ошибки - объединение прошло неправильно или версии модов не соответствуют версии игры и не адаптированы под нее.
ВАЖНО!
Перед тем как удалить или обновить один из модов, включенных в "Merge", т.е. который объединен с каким-либо другим модом, нужно убрать объединение, поставив галочки на группе модов в правом окошке Script Merger и нажать на "Delete Selected Merge". Все моды переместятся в левое окошко. Тогда можно спокойно удалять или обновлять моды, после чего открыть Script Merger и заново объединить моды.
Пример:
Мод 1 - modFOVTweak
content\scripts\game\player\r4Player.ws
Мод 2 - modManualCam
content\scripts\game\cameras\combat\customCamera.ws
content\scripts\game\player\playerInput.ws
content\scripts\game\player\r4player.ws
Мод 3 - modNoWitcherSense
content\scripts\game\player\r4Player.ws
Если объединение всех 3-х версий r4Player.ws прошло успешно, Script Merger поставит объединенный скрипт r4Player.ws по умолчанию.
Новый мод - mod0000_MergedFiles
content\scripts\game\player\r4Player.ws
Новый мод начинается с "0000_", чтобы объединенный мод загружался первым (все моды в папке "mods" находятся в алфавитном порядке), не объединенные версии будут просто игнорироваться игрой.
Чтобы отменить все слияния и возвратить моды к их исходному состоянию, нужно удалить объединенную папку "mod0000_MergedFiles".
При обновлении:
Нужно отменить слияние всех модов, папка "mod0000_MergedFiles" должна сама удалиться из папки "mods", удалить папку "Witcher Script Merger" из папки корня игры. А затем установить обновленный Script Merger, после чего запустить ярлык программы и объединить все моды заново.
Установка:
Распаковать архив и закинуть папку "Witcher Script Merger" в папку с игрой "The Witcher 3 Wild Hunt" (не в папку "Mods"). Для удобства ярлык программы можно вывести на Рабочий стол.
Удаление:
Чтобы полностью удалить Script Merger с компьютера, нужно удалить папку "Witcher Script Merger" из папки корня игры, а также сгенерированный файл MergeInventory.xml.
ДОПОЛНИТЕЛЬНО:
Иногда даже при успешном слиянии модов, при запуске игры может выскочить окошко с ошибками. Поэтому по дополнительной ссылке можно скачать скрипты, которые могут устранить эту ошибку. В этом случае нужно заменить папку scripts из игры по пути: The Witcher 3 Wild Hunt/Content/content0/ на папку scripts из архива, предварительно удалив папку scripts из игры.
Советую предварительно сделать бэкап папки scripts из игры на тот случай, если ошибка все равно будет выскакивать, чтобы вернуть игровые скрипты обратно (если она имеется в наличии).
Witcher Script Merger : О программе, и как пользоваться.
Учебник: видео на английском
общего пользования
(спасибо Gopher и wghost81)
Примечание: Туториал Gopher'а весьма полезен в целом, но его совет редактирования файла config Script Merge вручную не нужен, т.к. это увеличивает вероятность неправильной настройки.
Использование KDiff3
Это видео показывает пару основ KDiff3. Это видео более подробное.
Запустил Script Merger, он выявил между этими модами конфликты, я выполнил устранение этих конфликтов в автоматическом режиме как показано на видео, но в результате игра запускается, но не отображается карта мира по нажатию клавиши "М", вместо неё просто открывается меню и отображается просто чёрный.
Возможно ли что эти два мода даже после разрешения конфликта в скриптах не совместимы?
Возможно кто-нибудь и переведет, наверное, автор должен дать на это добро.
Если второе, то я пас.