В этой статье я расскажу о трёх способах декомпиляции rpyc- и rpa-файлов. Эти методы просты и не требуют каких-то дополнительных программных средств, но, к сожалению, они не универсальны и не всесильны. Соответственно, если они не смогли справиться с имеющимися в вашем распоряжении архивами, то не стоит унывать, есть и другие утилиты и скрипты (например, unrpec или rpatool), просто они могут быть более сложными в применении и требовать установки дополнительных программ.
Метод 1. Утилита от Vendor’а (тексты)
Эта утилита подойдёт тем, кто хочет перевести небольшую одноязычную новеллу и не хочет разбираться со скриптами.
1. Качаем vendor_utils.zip, распаковываем во временную папку (например, \Katawa Shoujo\_temp) 2. Туда же копируем интересующие файлы. Например, script-a1-monday-RU.rpyc 3. Запускаем GetText.bat, получаем два файла: script-a1-monday-RU.TXT и script-a1-monday-RU.BIN 4. Глумимся над полученным файлом с расширением TXT (в BIN не лезем!!!) 5. Запускаем InsertText.bat, получаем новый вариант файла script-a1-monday-RU.rpyc 6. Перемещаем (это важно, если временную папку вы создали вложенной в главную папку игры, иначе игра будет ругаться на дубликаты, т.к. она найдёт ваш забытый во временной папке rpyc-файл и попытается его подключить к проекту) новый script-a1-monday-RU.rpyc обратно. 7. Запускаем игру…
Ссылку на первоисточник, к сожалению, найти не смог :(
Метод 2. Утилита от lolbot’а (скрипты)
Эта утилита позволяет получить исходники всех скриптов, включая системные, и подойдёт для любого уровня проекта, лишь бы справилась…
1. Качаем lolbot_decompile.zip, распаковываем в папку с игрой (в результате файл decompile.rpy из архива должен оказаться в папке \game, например \Katawa Shoujo\game) 2. Запускаем игру и некоторое время ждём, пока игра не начнётся. Всё, из игры можно выходить. Наигрались :) 3. Если первые два пункта выполнены без ошибок, то в корневой папке игры (например, \Katawa Shoujo) увидите огромное количество файлов с длинными названиями, например _Users_delta_Documents_ks svn_Katawa Shoujo Act 1_game_RU_ui_strings-RU.rpy.txt. Это – исходный код во всей красе. Он менее читабелен, чем полученный в методе 1, зато делать с ним можно ну всё что угодно. В том числе править имена персонажей, меню и прочее. Файл decompile.rpy из папки \game можно удалять, иначе при каждом запуске игра будет генерить эти многочисленные файлы. 4. После внесения изменений вспоминаем, что движок RenPy сам генерит этот файл rpyc из rpy. Итак, в папку игры копируем уже исправленный файл (например, _Users_delta_Documents_ks svn_Katawa Shoujo Act 1_game_RU_ui_strings-RU.rpy.txt) и приводим его название в нормальный вид (например, ui_strings-RU.rpy) 5. Запускаем игру… 6. После запуска получаем свежесгенерённый rpyc-файл, а rpy-файл можно стирать
Очевидно, что описанные выше операции можно проделывать и над другими файлами, например над script-a1-monday-RU.rpyc.
Метод 3. Скрипт от Eliont’а (графика, звук, шрифты и т.п.)
Для небольшой новеллы:
1. В папке \game (например, \Sugars Delight\game) переименовываем файлы script.rpyc и (если есть) script.rpy в script.rpyc_ и script.rpy_, соответственно. 2. В папке \game (например, \Sugars Delight\game) создаём файл script.rpy со следующим содержимым:
Код
init python: image_files = [ fn for dir, fn in renpy.loader.listdirfiles() if not fn.lower().endswith(".rpy") and not fn.lower().endswith(".rpyc") and not fn.lower().endswith(".rpa") and not fn.lower().endswith(".rpyb") if not fn[0] == "_" ]
def unarchive(original_filename, new_filename): import os import os.path
if not os.path.exists(dirname): os.makedirs(dirname)
orig = renpy.file(original_filename) new = file(new_filename, "wb") new.write(orig.read()) new.close() orig.close()
label start: python: for img in image_files: unarchive(img, "extracted/"+img) return
3. Запускаем игру, жмём «Начать» и ждём, пока снова не появится меню (т.е. игра не запустится), после чего выходим из игры. 4. В новой папке \extracted (например, \Sugars Delight\extracted) получаем всё, кроме самих скриптов, т.е. видео, музыку, аудио, шрифты. 5. Удаляем наш script.rpy, переименовываем описанные в п.1 файлы script.rpyc_ и script.rpy_ обратно в script.rpyc и script.rpy.
Для новеллы побольше:
0. Перво-наперво нам понадобятся исходники скриптов, которые можно получить методом 2. 1. Находим файл, содержащий метку label start:. Меняем расширение оригинальному файлу (например, ui_labels.rpyc переименовываем в ui_labels.rpyc_) 2. Копируем полученный по 2-му методу в эту папку одноимённый файл (например, ui_labels.rpy), в котором удаляем блок, начинающийся с label start:. 3. В папке \game (например, \Katawa Shoujo\game) создаём файл script.rpy со следующим содержимым:
Код
init python: image_files = [ fn for dir, fn in renpy.loader.listdirfiles() if not fn.lower().endswith(".rpy") and not fn.lower().endswith(".rpyc") and not fn.lower().endswith(".rpa") and not fn.lower().endswith(".rpyb") if not fn[0] == "_" ]
def unarchive(original_filename, new_filename): import os import os.path
if not os.path.exists(dirname): os.makedirs(dirname)
orig = renpy.file(original_filename) new = file(new_filename, "wb") new.write(orig.read()) new.close() orig.close()
label start: python: for img in image_files: unarchive(img, "extracted/"+img) return
(код идентичен приведённому выше)
4. Запускаем игру, жмём «Начать» и ждём, пока снова не появится меню (т.е. игра не запустится), после чего выходим из игры. 5. В новой папке \extracted (например, \Katawa Shoujo\extracted) получаем всё, кроме самих скриптов, т.е. видео, музыку, аудио, шрифты. 6. Удаляем изменённые файлы, в которых мы удаляли блок (например, ui_labels.rpy, ui_labels.rpyc), а также и сам script.rpy, меняем расширение файла оригинальным файлам (например, ui_labels.rpyc_ обратно в ui_labels.rpyc).
У меня не получается с четвертого пункта способа утилиты от лолбота. Копирую файл в ту же папку и переименовываю, но вообще ничего не выходит. Подскажет, может, кто?
Вот здесь https://attachments.f95zone.to/2018/08/149505_UnRen-v0.7.zip я нашёл пожалуй самое удобное, что есть для взлома ренпи (взлом rpa rpyc и другие полезные функции). Просто разархивируйте файл bat, скопируйте в главную директорию игры или папку game и запустите этот самый файл bat. Единственный минус - вроде бы может не работает с 7 ренпи и новее и с кириллицей в пути тоже не дружит.
Самый простой способ на данный момент: 1. Открываете сайт https://gameresourcesviewer.ru/ 2. Перетаскиваете на сайт .rpa или .rpyc файл. 3. Готово. И не надо скачивать никаких программ.
молодой человек, спасибо вам огромное, я сидела 4 часа, чтобы перевести новеллу для подруги, и вот, наконец, я нашла этот комментарий с ссылкой рабочей СПАСИБО ОГРОМНОЕ ВЫ СПАСЛИ МОЮ ЖИЗНЬ
https://anivisual.net/go? - надо убрать это из веб-строки, и ссылки заработают. Хотя все равно большинство этих утилит уже не работают с современными новеллами.
Комментарии к записи: 23
Копирую файл в ту же папку и переименовываю, но вообще ничего не выходит. Подскажет, может, кто?
https://vk.com/doc152123376_437641741?hash=dbe3b4db635623b4cb&dl=3afb21eb99d61f9432
https://attachments.f95zone.to/2018/08/149505_UnRen-v0.7.zip я нашёл пожалуй самое удобное, что есть для взлома ренпи (взлом rpa rpyc и другие полезные функции). Просто разархивируйте файл bat, скопируйте в главную директорию игры или папку game и запустите этот самый файл bat.
Единственный минус - вроде бы может не работает с 7 ренпи и новее и с кириллицей в пути тоже не дружит.
Рекомендую убрать запятую из внутренней части открывающего тела тега url.
В следующем обновлении серий статей будет добавлено.
1. Открываете сайт https://gameresourcesviewer.ru/
2. Перетаскиваете на сайт .rpa или .rpyc файл.
3. Готово.
И не надо скачивать никаких программ.
СПАСИБО ОГРОМНОЕ ВЫ СПАСЛИ МОЮ ЖИЗНЬ
Вот! помогло декодировать скрипты от renpy 7.4.5, которые локально на ПК старыми методами не декодировались.
Так ничего и не смогу сделать.