CONSCRIPT: Как извлечь рандомизированные коды из сохранений

Небольшой скрипт на Python для извлечения таких вещей, как код изображения/музыки/журнала или код жетона и т. д., из вашего файла сохранения.

 

Как это использовать

Это было сделано на Python 3.8, но более поздние версии вероятно работа. YMMV.

  • Сохраните приведенный ниже код в любой файл с расширением `py`.
  • Запустите скрипт, указав путь к файлу сохранения в качестве первого аргумента.
    Если у вас установлен Python и он связан с файлами `py`, вы можете просто перетащить файл на сам файл py.
  • Виола. Просто прочитайте окно вывода.

Пример выходного текста:

Глава 1. Траншея на передовой (Покинуть пост). Код: 3081 Глава 3. Тюремный лагерь. Код: 6771 Глава 6. Форт-Во. Код Львиной двери: 7682 Глава 6. Шкафчик для хранения оружия 1 (слева). Код: 3765 Глава 6. Шкафчик для хранения оружия 3 (справа). Код части 1 (Символы): 1043 Глава 6. Шкафчик для хранения оружия 3 (справа). Код части 2 (Код последнего журнала): 2418

Для последнего кода, кода журнала/картинки, 0 — это музыкальная нота. Перемещайте циферблаты по числам, имея это в виду.

Сохранить местоположение файла

%LOCALAPPDATA%CONSCRIPTSteam

Сценарий

import binascii import json import msvcrt import pathlib import sys import zlib # Расположение сохранения: # %LOCALAPPDATA%CONSCRIPTSteam try: import pydevd DEBUGGING = True except ImportError: DEBUGGING = False if len(sys.argv) < 2: print(«Ошибка: Отсутствует аргумент файла.») exit() saveFile = pathlib.Path(sys.argv[1]) txtFile = pathlib.Path(sys.argv[1]).with_suffix(«.txt») with open(saveFile, «rb») as file: saveBytes = file.read() contents = zlib.decompress(saveBytes) contents = contents.decode(«utf-8»).strip() contents = contents[:-1] # Удалить нулевой терминатор. content = binascii.unhexlify(contents) contents = contents[16:len(contents)] # Удаляем первые 16 байт. #print(contents) #with open(txtFile, «wb») as file: # file.write(contents) # print(f»nContentswritten as: {txtFile}n») class SaveData(object): def __init__(self, j): # `[1]`, потому что первый элемент массива — `roomData`, и мы можем его игнорировать. # Даже в новых играх `roomData` всегда будет присутствовать, даже если он пустой. self.__dict__ = json.loads(j)[1] data = SaveData(contents) print(f»Глава 1 Передовая линия траншеи (Покинуть пост) Код: {int(data.introBattleCode)}») print(f»Глава 3 Тюремный лагерь Код: {int(data.campLockCode)}») print(f»Глава 6 Форт Во Львиная дверь Код: {int(data.isolementCode)}») print(f»Глава 6 Оружейный шкафчик 1 (слева) Код: {int(data.tagLockerCode)}») print(f»Глава 6 Оружейный шкафчик 3 (справа) Код Часть 1 (Символы): {int(data.pierreCodeVal1)}{int(data.pierreCodeVal2)}{int(data.pierreCodeVal3)}{int(data.pierreCodeVal4)}») print(f»Глава 6. Ящик для хранения оружия 3 (справа). Код части 2 (последний код журнала): {int(data.pierreBoxCode)}») если нет ОТЛАДКА: print(«Нажмите любую клавишу для продолжения.») msvcrt.getch()

Admin/ автор статьи
Понравилась статья? Поделиться с друзьями:
Добавить комментарий
Optimized with PageSpeed Ninja