Пару лет назад проходил всю серию игр, после прохождения последней части решил питоновские скрипты поглядеть, просто из любопытства. Оказывается, в 9-й части есть тестовый режим, можно активировать правкой init.pyc в HEX-редакторе.
Изначально там стоят такие значения:
Код:
if _release_version:
_play_aviblock = 1
_gameeditor = 0
_test_enable = 0
_fullscreen = 1
else ...
Я сделал так (после // смещение от начала файла):
Код:
_play_aviblock = 0 //0x4A
_gameeditor = 0 //0x50
_test_enable = 1 //0x56
_fullscreen = 0 //0x5C
Картинка, чтоб было понятнее: imgur.com/gI1X7fI. То есть, начальные ролики не проигрываются, активирован тестовый режим и игра открывается в окне. Если кому надо, исправленный init.pyc здесь: disk.yandex.ru/d/h4shqv6NOoNrjA.
Когда _test_enable = 1, доступно следующее:
F5 - вкл./выкл. 3D-хэлперы.
F6 - вкл./выкл. рендер-кубы.
F7 - вкл./выкл. рендер-сетку.
F8 - вкл./выкл. DOS-консоль.
F9 - вкл./выкл. отладочную инфу. При включенной инфе можно управлять видом с камеры: стрелки, q, a. Переключение камер: x - протестить автокамеры, c - камеры карты, f - камера 'CAMERA'. F11 меняет экраны с информацией, прокрутка текста - {,}.
По Enter открывается игровая консоль и доступны следующие команды:
Цитата:
help - Help, подсказка команд
ll, loadlevel - LoadLevel, загрузка сцены (аргументы: levelname, portal = 'portal0') //список уровней: level_Bunker, level_mario, level_tennis, level_TV, level_Villa, level_WW, level_zoo; тестовые: level_test (загрузится, если подкинуть TempScn\link_test.scn), levelXX (не грузится)
jump - Jump, прыжок по локации (аргументы: portal)
at, addtool - AddTool, добавление предмета (аргументы: tool, например Vodka_t) //список предметов есть в GUI.pyc
rt, remtool - RemTool, удаление предмета (аргументы: tool, например Vodka_t) //список предметов есть в GUI.pyc
unlock - Unlock, деблокировка
var - MVar, уст/печать глобала тек. модуля (аргументы: var, value = None)
varl - MVarLevel, уст/печать глобала в модуле (аргументы: levelname, var, value = None)
faces - Faces, скрыть/показать иконки (аргументы: flg=0/1)
cam - Camera, установить активную камеру (аргументы: cam = '')
lmap - LMap, установить карту путей (аргументы: map_name)
active - Active, вкл/выкл объект (аргументы: name, flg=0/1)
ac - AssignControls, привязать анимацию (аргументы: anmname, targetname, subname = 'Assign', action = '')
uc - UnAssignControls, отвязать анимацию (ошибка, функция не прописана)
ta - TestAutoCams, протестить автокамеры (аргументы: pers = '', time_pause = '200')
rp - SetRP, изменить настройки теней персонажей (аргументы: param = '5', param1 = '9')
dovt - DoVT, записать инфо о тесте на видимость
dovtc - DoVTC, обсчитать оптимизацию на тек. камеру
opt - Optimize, вкл/выкл оптимизацию в камере (аргументы: flg = '0')
rfx - ReloadFX, перезагрузка шейдеров
Из полезных здесь ll - загрузить и повертеть карты, посмотреть всё в деталях, at/rt - добавлять в инвентарь предметы, послушать лишний раз реплики на действия с ними, var/varl - для хаков, поменять значения каких-то глобалок и посмотреть, что будет. Переменные классов, к сожалению, изменить так не получится.
При включенном тестовом режиме можно пропускать теннис (клавиша 'v'):
Код:
if init._test_enable and key == 86:
if g_super_rocket:
self.Win()
else:
self.Lose()
Чтобы бесконечно играть в теннис, на любой другой карте вызвать
Код:
varl level_tennis _inf_chit 1
потом грузить level_tennis и можно играть до "посинения". В марио ничего нельзя поменять, нет глобалок. Можно загрузить сцену на тестовый уровень и покрутить карту. Видно, что эта мини-игра была обрезана, там на самом деле ещё несколько платформ и вентиляторов и более плавный переход к следующей сцене. Остальные уровни я толком не смотрел, у кого есть желание - pycdc и pycdas хорошо декомпилируют скрипты в читаемые исходники.