Найти - Пользователи
Полная версия: Нужно вскрыть файл в формате .sav от движка Ren'Py
Начало » Центр помощи » Нужно вскрыть файл в формате .sav от движка Ren'Py
1 2
prisrak_razyma
py.user.next
Я просто не понимаю зачем. И если он просто указывает то как ты представляешь сколько будет занимать такой файл если у 10 видимых диапазон от 0 до 1000000 плюс не видимые переменные. Это во первых, а во вторых как тогда работает сайт http://www.saveeditonline.com/?Если файл .save хранит только указатели? Если ты сам сделаешь свою игру и сохранишь и попробуешь открыть сейв там он все равно откроет(я так делал). То есть у них нет возможности получить твои скрипты/файлы.
Может движок использует указатели как переменные точнее указатель состоит из 2 частей имя переменой и её значение.
А насчет “переопределить метод класса” я просто не вижу смысла.
py.user.next
Отправь sav-файл сюда. Посмотрим, что там.
prisrak_razyma
py.user.next
Вот:
py.user.next
Это вообще zip-архив, его сначала надо распаковать, потом брать log-файл, там он уже распикливается. Но для распикливания надо весь проект иметь доступным (симпортировано должно быть всё, иначе он пытается имена найти и не видит их). Он ещё на втором питоне сделан.
Да и тут вопрос ещё, нужно ли его распаковывать и распикливать потом. Возможно, его можно восстановить обратно через какую-нибудь функцию проекта.
Rodegast
Сам Ren'Py ты установил и проимпортировал? И убери кириллические символы из пути к файлу.
prisrak_razyma
Rodegast
Ты про что?
Rodegast
> Ты про что?

А ты сам как думаешь?
prisrak_razyma
RodegastЯ установил renpy sdk.
FishHook
prisrak_razyma
Смотрите. Запикливаются объекты. Например, есть у меня программа, в ней есть вот такой код:
 class Foo:
    a = "Hello word"    
    def __init__(self):
        self.foo = 1
        self.bar = 1.4534534
        self.baz = "How do you do?"
  
    def getFoo(self):
        self.baz = "How old are you?"
        return self.foo
  
    def getBar(self):
        self.baz = "Where are you from?"
        return self.bar
  
    def getBaz(self):
        self.baz = "Good by!"
        return self.baz
  
obj = Foo()
obj.getBaz()
  
import pickle
print(pickle.dumps(obj))
Вы можете увидеть что получается после пикла

'\x80\x03ctest\nFoo\nq\x00)\x81q\x01}q\x02(X\x03\x00\x00\x00fooq\x03K\x01X\x03\x00\x00\x00barq\x04G?\xf7AXZ4(\xfcX\x03\x00\x00\x00bazq\x05X\x08\x00\x00\x00Good by!q\x06ub.'

Если внимательно присмотреться, то в этих байтах зашифровано название класса и состояние переменных объекта. Нет здесь ни методов, ни переменных самого класса. Восстановить мы по этой информации можем точно такой же объект. Но только если у нас в наличии есть класс. Модуль создаст объект этого класса и заполнит поля значениями из сдампленой строки. Если у вас нет этого класса, то раздампить у вас никак не выйдет.

prisrak_razyma
FishHook
то есть надо найти в ренпи класс переменных?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB