rpyc чем открыть для редактирования

Rpyc чем открыть для редактирования

rpyc чем открыть для редактирования. Смотреть фото rpyc чем открыть для редактирования. Смотреть картинку rpyc чем открыть для редактирования. Картинка про rpyc чем открыть для редактирования. Фото rpyc чем открыть для редактирования

Декомпиляция rpyc- и rpa-файлов. Утилиты от Vendor’а, Lolbot’а и скрипт от Eliont’а.

В этой статье я расскажу о трёх способах декомпиляции 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 со следующим содержимым:

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
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

new_filename = config.basedir + «/» + new_filename
dirname = os.path.dirname(new_filename)

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 со следующим содержимым:

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
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

new_filename = config.basedir + «/» + new_filename
dirname = os.path.dirname(new_filename)

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

Источник

Как декомпилировать игры

Маленькое пособие для тех, кто интересуется, как устроены их любимые интерактивные работы. Разберём все популярные и не очень популярные движки.

rpyc чем открыть для редактирования. Смотреть фото rpyc чем открыть для редактирования. Смотреть картинку rpyc чем открыть для редактирования. Картинка про rpyc чем открыть для редактирования. Фото rpyc чем открыть для редактированияФотоиллюстрация статьи: Alexander Andrews

Ren’Py

Сначала при помощи rpatool нужно разархивировать файлы RPA:

Так легко посмотреть аудио и изображения из игры. Но так как нас интересуют скрипты, придётся пойти дальше. Скачайте файл un.rpyc и положите его в папку с игрой, а затем запустите саму игру. После этого она сама декомпилирует все .rpyc файлы в обычные .rpy на Питоне.

Z-машина

С Inform всё хитро, потому что у него две виртуальных машины: Z-машина и Glulx. Начнём со старенького.

В общем случае для файлов Z1-Z8 есть дезассемблер TXD, который входит в пакет ztools. Его придётся собирать из исходников на Си, но после этого всё довольно просто: ему достаточно указать адрес файла, и он выдаст его код. Сам код даётся в опкодах для Z-машины, поэтому он ничего не скажет непосвящённым людям, а вот полный список используемых строк в игре будет очень полезен. Это очень полезно, например, при переводах парсерок.

К сожалению, на играх RInform txd падает (по segfault) как только доходит до русских строк.

Самые старые файлы Z1-Z3 также открываются онлайн при помощи интерпретатора Encrusted. Просто откройте файл, нажмите на «гамбургер-меню» справа и выберите галочку «Show object tree», которая покажет дерево всех объектов в игре. Это не декомпиляция, но тоже интересно.

Для glulx есть декомпилятор mrifk. Он даёт полный псевдокод игры, вместе с комнатами, объектами, параметрами и глаголами, но тоже очень не любит RInform.

> «Sfbf 5so-nibtew ntgno( — rpqa7icafs Xlli- — Sfbf pqacea tgf poqa rpasw»-

Кроме того, есть онлайн-декомпилятор glulx-strings, который даёт полный список строк из игр Glulx, Z-машины, TADS 2 и TADS 3. Он не ломается на русских играх, но текст игр на RInform-Z6 будет зашифрован подстановкой. Пытливый читатель легко поймёт, из какой игры была цитата выше.

Формат QSP открывается QGen’ом. Этого достаточно, чтобы сделать патч к какой-нибудь чужой заброшенной игре.

Если игра защищена паролем, то можно воспользоваться декодером от AleksVersus.

Ink использует машиночитаемый формат JSON, в котором всё довольно прозрачно для человека, хотя трудно разобрать логику. По крайней мере, видны все строки. Обратной трансформацией пока никто не занимался.

Unity

Конечно, уже существует платный обфускатор, который делает код менее читабельным.

Ресурсы распаковываются, например, через Unity Assets Explorer.

INSTEAD

Игры на INSTEAD шифруются как текст. Кодирование исходников идёт в обратную сторону при запуске игры, и в проекте с открытым исходным кодом легко посмотреть, как же оно устроено. И относительно легко повторить.

В отличие от других движков, INSTEAD ещё не настолько популярен, чтобы в интернете были легко упакованные программы для распаковки игр. Поэтому вам понадобится консоль, компилятор Си и кусок кода из instead.c. Кусок с побитовым сдвигом нужно поставить в простую программу чтения файла в консоли. (Оставлю это упражнение пытливому читателю.) В полученном коде сохраняются даже комментарии автора.

Справедливости ради, существует вариант с реальной компиляцией кода Lua, но им никто не пользуется, потому что байтовый код непереносим: пришлось бы выпускать несколько версий игры для каждой архитектуры (отдельно 32 бита, 64 бита, Android и так далее).

Незашифрованные игры на URQ достаточно открыть в текстовом редакторе. Опытные игроки называют это «прохождение в блокноте».

Алгоритмы декодирования QS1 и QS2 можно взять из исходников FireURQ.

Законченных декодеров, конечно, нет в публичном доступе, но наш пытливый читатель на уровне начинающего программиста, конечно, справится с этой задачей.

В ЯРИЛ тоже есть шифрование игр, и, что неожиданно, оно использует реальную криптографию — ключи DES. Написать собственный декодировщик DES уже гораздо сложнее чем пять раз перепройти «Комсомольца», так что ЯРИЛ останется единственной неприступной платформой в этом списке.

Twine

Пропустим другие HTML-платформы, потому что код игр на Javascript и HTML уже достаточно читабелен. Но вот Twine стоит подробного осмотра.

Во-первых, все игры Twine открываются в самом редакторе Twine. Игры Twine 1 открываются только в редакторе Twine 1 и то же самое для второй версии. Поэтому если вы хотите посмотреть исходники какой-нибудь игры, её достаточно импортировать в редактор.

Кроме того, при помощи программы tweego HTML-файл можно преобразовать в приличный человеческий черновик для редактирования.

TADS 2 (дополнение)

Кроме вышеупомянутой страницы, которая достаёт все строки из игры, есть ещё один скрипт на Perl, который полностью декомпилирует игру. Если запустить его в командной строке, то вы получите файл .t со всеми функциями игры.

Скрипт даёт читабельный вывод даже на русской RTADS, но в моём тестировании исходник скомпилировался без ошибок только для игры на английском.

Источник

Расширение файла RPYC

Оглавление

Мы надеемся, что вы найдете на этой странице полезный и ценный ресурс!

1 расширений и 0 псевдонимы, найденных в базе данных

✅ RenPy Compiled Script

Другие типы файлов могут также использовать расширение файла .rpyc.

По данным Поиск на нашем сайте эти опечатки были наиболее распространенными в прошлом году:

Это возможно, что расширение имени файла указано неправильно?

Мы нашли следующие аналогичные расширений файлов в нашей базе данных:

Если дважды щелкнуть файл, чтобы открыть его, Windows проверяет расширение имени файла. Если Windows распознает расширение имени файла, файл открывается в программе, которая связана с этим расширением имени файла. Когда Windows не распознает расширение имени файла, появляется следующее сообщение:

Windows не удается открыть этот файл:

Чтобы открыть этот файл, Windows необходимо знать, какую программу вы хотите использовать для его открытия.

Если вы не знаете как настроить сопоставления файлов .rpyc, проверьте FAQ.

🔴 Можно ли изменить расширение файлов?

Изменение имени файла расширение файла не является хорошей идеей. Когда вы меняете расширение файла, вы изменить способ программы на вашем компьютере чтения файла. Проблема заключается в том, что изменение расширения файла не изменяет формат файла.

Если у вас есть полезная информация о расширение файла .rpyc, напишите нам!

Источник

Rpyc чем открыть для редактирования

rpyc чем открыть для редактирования. Смотреть фото rpyc чем открыть для редактирования. Смотреть картинку rpyc чем открыть для редактирования. Картинка про rpyc чем открыть для редактирования. Фото rpyc чем открыть для редактирования

unrpa is a tool to extract files from the RPA archive format (from the Ren’Py Visual Novel Engine).

It can also be used as a library.

The best way to install unrpa is through your package manager, if a package is available for your operating system. I maintain an AUR package for Arch Linux users.

You can also install unrpa through pip, the Python package manager. You can do this on Windows with:

You can also download the latest release and extract it.

You will need Python 3.7 or later in order to run it (either install through your package manager or directly from python.org).

If you are trying to extract more exotic RPA archives, there may be additional dependencies. unrpa should instruct you how to install them if required.

Package maintainers can see setup.py for a complete set of dependencies.

When installed through your package manager or pip, you should be able to use unrpa by opening a terminal or command prompt and doing something like:

If you are running from source, you will need execute python directly:

On most unix systems, open a terminal in the directory containing unrpa then:

On most Windows systems, open a Command Prompt in the directory containing unrpa then:

Command line usage

If something goes wrong while extracting an archive, please make an issue.

About

A program to extract files from the RPA archive format.

Источник

Основы языка программирования (Language Basics)

Содержание

Прежде чем мы сможем описать язык программирования на движке Ren’Py, сначала мы должны рассказать о структуре скрипта визуальной новеллы, созданной на данном движке. Структура скрипта включает информацию о том, как файлы разбиваются на блоки, состоящие из строк, и как эти строки разделяются на элементы, которые образуют операторы.

Файлы (Files) [ править ]

Скрипт игры на Ren’Py состоит из всех файлов, найденных в папке игры, с расширением .rpy. Ren’Py рассмотрит каждый из этих файлов (в порядке Юникода) и использует содержимое файлов в качестве скрипта.

Как правило, нет разницы между скриптом, разбитым на несколько файлов, и скриптом, состоящим из одного большого файла. Управление между файлами может передаваться через прыжки (оператор jump) или вызов метки в другом файле. Это делает разделение скрипта на файлы делом вкуса, так как некоторые разработчики игр предпочитают маленькие файлы (к примеру, по файлу на событие или день), тогда как другие предпочитают один большой скрипт.

Базовый каталог (Base Directory) [ править ]

Базовый каталог – каталог, содержащий все файлы, распространяемые вместе с игрой (может также содержать некоторые не распространяемые вместе с игрой файлы). Такие файлы, как README, должны быть помещены в базовый каталог, откуда они будут распространены.

Базовый каталог создаётся внутри директории Ren’Py и называется именем вашей игры. К примеру, если папка с Ren’Py называется «renpy-6.11.2», а ваша игра – «HelloWorld», то базовый каталог этой игры будет «renpy-6.11.2/HelloWorld».

Директория игры (Game Directory) [ править ]

Директория игры почти всегда является папкой с названием «game» внутри базового каталога. К примеру, если базовый каталог – «renpy-6.11.2/HelloWorld», то директория игры будет «renpy-6.11.2/HelloWorld/game».

Однако следует учитывать, что Ren’Py выполняет поиск директорий в следующем порядке:

Тем не менее Ren’Py Launcher будет корректно распознавать папки «game» и «data».

Директория игры содержит все файлы, используемые в игре. Она, включая все подкаталоги, сканируется Ren’Py на наличие файлов .rpy и .rpyc и они объединяются для создания скрипта игры. Директория игры сканируется на наличие архивных файлов .rpa и они автоматически используются игрой. Наконец, когда игра указывает путь к файлу загрузки, он загружается относительно директории игры (но учтите, что config.searchpath может изменить это).

Комментарии (Comments) [ править ]

Скрипт Ren’Py может содержать комментарии. Комментарий начинается со знака решётки и заканчивается в конце строки, содержащей комментарий. В порядке исключения комментарий не может быть частью строки, заключенной в двойные кавычки.

Ren’Py игнорирует комментарии, так что скрипт обрабатывается так, словно в нём нет комментария.

Логические строки (Logical Lines) [ править ]

Файл скрипта разбивается на логические строки. В файле логическая строка всегда начинается с начала строки. Логическая строка заканчивается в конце строки, кроме тех случаев, когда:

После того, как логическая строка заканчивается, следующая логическая строка начинается с начала следующей строки.

Большинство операторов на языке Ren’Py состоять из одной логической строки, в то время как некоторые операторы состоят из нескольких строк.

Пустые логические строки игнорируются Ren’Py.

Отступы и блоки (Indentation and Blocks) [ править ]

Отступы – имя, которое мы даем пространству в начале каждой логического строки, которое используется для выравнивания операторов Ren’Py. В Ren’Py отступы должны состоять только из пробелов.

Отступы используется для группировки операторов в блоки. Блок представляет собой группу строк и часто группу операторов.

Правила для разделения файла на блоки:

Отступ очень важен для Ren’Py и является причиной синтаксических или логических ошибок, когда расположен неправильно. В то же время использование отступов для передачи структуры блока дает нам возможность указывать на эту структуру, не перегружая текст скрипта.

Инициализация (Init) [ править ]

Оператор init используется для выполнения блоков операторов Ren’Py до того, как скрипт будет запущен. Блоки инициализации используются для определения изображений и персонажей, настройки структуры постоянных данных игры и персонализации Ren’Py. Внутренний код блоков инициализации не должен взаимодействовать с пользователем или изменять какие-либо слои, как и содержать операторы say, menu, scene, show и hide, а также вызывать любую функцию, которая может выполнить вышеуказанное.

Указатель приоритета используется для определения порядка выполнения кода в блоке инициализации. Блоки инициализации выполняются в приоритетном порядке возрастания номеров. В пределах файла скрипта, блоки инициализации с одинаковым приоритетом выполняются в порядке от верхней части файла вниз. Порядок оценки последовательности выполнения приоритетных блоков с одинаковым приоритетом между файлами скрипта не определен.

Блоки инициализации исполняются только один раз, во время специальной фазы инициализации. Когда контроль достигает конца такого блока во время нормального выполнения кода скрипта, его выполнение заканчивается. Если оператор init возникает во время нормального выполнения файла скрипта, такой блок инициализации не выполняется. Вместо этого управление передается следующему оператору.

Элементы операторов Ren’Py (Elements of Statements) [ править ]

Операторы Ren’Py состоят из нескольких основных частей:

Общий синтаксис для оператора (Common Statement Syntax) [ править ]

Большинство операторов Ren’Py имеют общий синтаксис. За исключением оператора say, операторы начинаются с ключевого слова, которое вводит оператор в код. За ключевым словом следует параметр, если оператор его принимает.

После параметра следует одно или несколько свойств. Свойства могут быть заданы в любом порядке, при условии, что каждое свойство задается только один раз. Свойство начинается с ключевого слова. Для большинства свойств за именем свойства следует один из приведенных выше элементов синтаксиса.

Синтаксис выражения языка Python (Python Expression Syntax) [ править ]

Заметка: Возможно, вам нет необходимости внимательно читать данный раздел прямо сейчас. Вместо этого, пропустите его и если окажется, что вы не в состоянии понять пример или хотите выяснить, как что-то фактически работает, вы сможете вернуться к разделу и ознакомиться с ним.

Многие элементы Ren’Py принимают выражения языка Python. Например, определение нового персонажа связано с вызовом функции Character. Хотя выражения Python очень эффектны, только часть возможностей необходима для написания базовой игры на движке Ren’Py.

Вот краткий обзор выражений Python:

При чтении этой документации, вы можете заметить сигнатуру функции как:

Sample (name, delay, position=(0, 0), **properties) Пример функции, которая фактически не существует в Ren’Py, но используется только в документации.

Поскольку функция заканчивается на **properties, это значит, что она может принимать свойства стиля в качестве дополнительных именованных аргументов. Другими специальными значениями являются *args (означает, что функция принимает произвольное число позиционных параметров) и **kwargs (означает, что именованные аргументы описаны в документации).

Python является гораздо более мощным языком программирования, чем поместилось в этом руководстве. Чтобы изучить Python более подробно, мы рекомендуем начать с учебника по Python, который доступен на сайте python.org. Хотя мы и не считаем, что глубокое знание языка Python необходимо для работы с движком Ren’Py, основные положения о операторах и выражениях языка Рython часто оказываются полезными.

Источник [ править ]

Статья «Language Basics» на английском языке.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *