Обновляем моды под нужный аддон
Преамбула:
Моды исправляют ошибки разработчиков. Моды добавляют игре новые возможности. Моды делают мир симов еще более прекрасным. Моды облегчают или усложняют жизнь нашим подопечным, в конце концов...
Но, к сожалению, моды зависят от версии установленной у нас игры. Поднимите руку, кто ни разу не сталкивался с тем, что после официального патча или установки нового аддона полюбившиеся моды теряли свою функциональность и, тем паче, ломали существующую у игры?
Разумеется, обычно авторы модов стараются поддерживать свои творения и обновляют их для совместимости с последними версиями. Однако, по разным причинам, полюбившийся мод может и не дождаться обновления (у создателя просто нет нужного аддона/патча, нет времени, нет желания больше этим заниматься, etc.) либо обновиться значительно позднее, чем бы хотелось.
Что остается делать в этом случае? Правильный ответ - брать инициативу в свои руки!
Фабула: Let's update them!
Итак, нам понадобятся:
- Уже знакомый всем редактор s3pe
- Утилита для сравнения файлов. В линуксе можно делать это прямо из консоли, под виндой придется установить одну из утилит, например Files Compare Tool 2.7 - я буду пользоваться именно ею, но это дело вкуса.
- Немного терпения, усидчивости и внимательности.
Шаг 1.
Открываем в s3pe интересующий нас мод:
Для примера я выбрала мод, разрешающий покупать в магазине все фрукты, Amb означает версию для аддона "Карьеры".
Устанавливаем внизу чекбоксы (галки) "Sort", "Name" и "Tags".
Нужные нам файлы имеют расширения _XML и ITUN:
ВНИМАНИЕ! Если вы видите расширение S3SA (запакованная .dll-библиотека), это значит, что мод скриптовой, т.е. затрагивает ядро игры: для его исправления нужно знать как минимум основы С/С++/С#. С другой стороны, скриптовые моды обычно не требуют адаптации под новую версию игры; если же файл все же вызывает ее падение, то стоит обратиться к создателю мода и/или в ветку с обсуждениями данного хака.
Шаг 2
Экспортируем наш _XML/ITUN файл (кликаем на него правой кнопкой мыши и выбираем "Export -> to file...", либо из меню "Resource -> Export -> to file...", либо сочетанием клавиш Ctrl+Shift+X). Сохраняем в выбранную нами папку, не меняя названия!
В моем случае в package всего одна строка, но если их несколько, то повторяем процесс для всех файлов.
Шаг 3
Открываем еще одну копию программы s3pe. Теперь нам надо открыть файл GameplayData.package из директории "Корневой каталог:\...\Папка последнего аддона\Game\Bin\Gameplay":
На скрине для наглядности показаны свойства файла со страшным путем до него (в моем случае).
Кликаем по закладке "Instance", чтобы отсортировать строки по значениям данного столбца.
Теперь находим в этом списке строки с точно таким же (это важно!) значением Instance, какие были у файлов, экспортированных на предыдущем шаге. Экспортируем в ту же папку, если s3pe предложит заменить файлы, жмем "Нет" и добавляем к названию какой-нибудь префикс, чтобы отличить файлы экспорта от уже имеющихся.
s3pe можно закрыть.
Шаг 4
Открываем утилиту для сравнения файлов и перетаскиваем туда два наших экспортированных xml-документа: один из GameplayData, второй - из нашего мода. Определяем, какой из них слева, какой справа (сверху над текстовым полем есть строка состояния, показывающая полный путь и имя файла).
Программа подсветит различающиеся фрагменты этих двух файлов.
Слева в рабочей области программы есть ползунок, показывающий разрывами, где найдены различия: кликаем по нему для быстрого перемещения между ними.
Теперь смотрим на выделенные строки. Если они практически одинаковы слева и справа (различия в строковой/числовой константе), то мод совместим с текущей версией игры.
Если с одной стороны строки есть, а с другой - пусто, то возможны два случая: либо автор мода удалил строки для внесения изменений, либо мод несовместим с данной версией игры. (Стоит ориентированиться по функции данного хака) В моем случае в файле мода, например, отсутсвует описание вампирского фрукта. Исправляем это простым копированием/вставкой нужного фрагмента.
В принципе, аналогичным образом можно "понизить" совместимость мода до какого-либо аддона, просто убрав из его файла лишние строки, которых нет в GameplayData.
Сохраняем наши изменения и выходим из программы.
Шаг 5
Возвращаемся в s3pe к файлу нашего мода и импортируем измененные файлы (внимание: следите, чтобы это были именно файлы мода!): "Resource -> Import -> from file...".
Проверяем, что стоит переключатель "Replace duplicates", жмем ОК.
Сохраняем, помещаем мод в нужную папку и тестируем работоспособность в игре.
Extra:
Таким же способом можно лечить конфликтующие из-за общего ресурса моды. Скажем, мод для изменения цвета воды в районе и мод для более приближенных к реальности ночей изменяют INI файлы из одной таблицы, поэтому вместе работать не могут. А хочется иметь в игре оба эффекта! Что ж, нет ничего проще: таким же способом вносим изменения в совпадающие файлы одного из модов (разница лишь в том, что теперь мы сравниваем мод не с файлом игры, а с другим модом), и, если остались какие-то еще, импортируем их тоже.
Вуаля! Наслаждаемся морским бризом и романтическими сумерками в игре.