Распаковка текста TES RGSS • Распаковка текста из RPG Maker игры с системой TES RGSS (TES本体)

20 Февраля 2020 в 04:49
Вы начали переводить игру и обнаружили что часть текста спрятана в непонятных .rvdata2 файлах, которые ничем не читаются?
Если в скриптах игры имеется TES本体 - значит данные зашифрованы.
Сейчас мы разберём как их расшифровать, перевести и поместить перевод обратно в игру.
Гайд получился немного объёмным, но это потому что я подробно всё расписал, чтобы даже новичок всё понял, ничего сложного там нет.

Прежде чем вы возьмётесь распаковывать вручную, стоит посмотреть на https://github.com/Sinflower/TES-Patcher
Возможно это более удобный варант, но нашёл я его уже после написания статьи, поэтому пусть будет то и другое :D


1. Для манипуляций с файлами вам понадобится Ruby.

1.1 Идём на https://rubyinstaller.org/downloads/ и тыкаем на выделенный пункт Ruby+Devkit 2.6.5-1 (x64).

1.2 Запускаем установщик, тыкаем на I accept the License, жмём Next.

1.3 Cтавим галочку на Use UTF-8 as default external encoding. Можно поменять путь установки, но учтите что в нём не должно быть пробелов и русских букв. Жмём Next.

1.4 Убеждаемся что галочки стоят на обоих пунктах, жмём Next.

1.5 Не снимаем галочку, жмём Finish.

1.6 В окне консоли на любые вопросы жмём Enter, ждём пока всё скачается и окно закроется.

Поздравляю, руби установлен.


2. Теперь расшифруем данные игры.

2.1 Открываем игру в RPG Maker.

2.2 Жмём F11 и ищем в списке скриптов TES本体 , кликаем на него.

2.3 Находим функцию

def self.load_tes_by_tk(dir, filename)
temp = load_data(dir + filename + ".rvdata2")
return Marshal.load(Zlib::Inflate.inflate(x(temp)))
end


и полностью заменяем её на

def self.load_tes_by_tk(dir, filename)
temp = load_data(dir + filename + ".rvdata2")
unpackDir = "./DataUnpacked";
Dir.mkdir(unpackDir) unless File.exists?(unpackDir)
File.open(unpackDir + "/" + filename + ".rvdata2", "wb") { |file| file.write(Zlib::Inflate.inflate(x(temp))) }
return Marshal.load(Zlib::Inflate.inflate(x(temp)))
end


2.4 Запускаем игру один раз и выходим. В папке с игрой должна появиться папка DataUnpacked

2.5 Снова заменяем ту же функцию, на

def self.load_tes_by_tk(dir, filename)
return load_data(dir + "/" + filename + ".rvdata2")
end


Всё готово, сохраняем проект.


3. Осталось перевести текст.

3.1 Качаем архив http://rpgmakerunion.ru/download/rvpacker.zip , распаковываем куда-нибудь.

3.2 Запускаем install.cmd, ждём пока окно не закроется.

3.3 Берём все файлы из DataUnpacked в папке с игрой и перемещаем в Data в папке rvpacker. Папку DataUnpacked удаляем, она больше не нужна.

3.4 Запускаем unpack.cmd, ждём пока закроется.

3.5 Идём в папку YAML, там будут лежать файлы с диалогами. Правим их любым нормальным текстовым редактором (например, Notepad2 http://www.flos-freeware.ch/notepad2.html ). Стандартный блокнот использовать не стоит.
Правим строки осторожно, заменять нужно только фразы, кавычки и прочее оставляем как есть.

3.6 Запускаем pack.cmd, ждём завершения.

3.7 Копируем файлы из папки rvpacker Data в папку Data в директории игры.

Всё, пробуем запустить игру и смотрим изменения :)

Статистика сайта

Яндекс.Метрика