Bioshock 1 (2007) образец 192: берём неберущееся / Lot 192 bug

Если вы играли в первый Биошок, и грешили, используя трейнер, то скорее всего столкнулись с проблемой, когда невозможно взять второй образец 192, необходимый для полного освобождения от контроля Фонтейна, т.к. у Вас в инвентаре его 98 штук, ну или 998, в зависимости от трейнера. Как только не решали люди эту проблему - искали сохранение после этого квеста, включали режим прохода сквозь стены, чтобы перейти на следующий уровень, лишь бы не потерять прогресс (хотя слоты плазмидов всё-таки терялись). В худшем случае приходилось переустанавливать игру и проходить всё заново. Неопытные несовершеннолетние люди кричали, что это "разработчики наказывают за использование читов" (нет) (на самом деле - это у них получилось случайно).
Справедливости ради надо сказать, что я находил сообщения и на форумах Steam, и на форумах 2K, где люди писали, что сталкивались с подобной проблемой и без использования трейнера, но, нельзя сказать наверняка, были ли они искренними, когда писали эти сообщения.
Я пытался решить эту проблему с разных сторон: и путём редактирования сохранений (их формат мне так и не удалось до конца разобрать), и исследуя скрытые команды и консоль (функции убирающей предмет из инвентаря там не оказалось), но в итоге решил идти напролом - отредактировав исполняемый код игры.
Благодаря таблицам с форума CheatEngine обнаружить функцию, вызываемую при поднятии какого-либо предмета удалось сравнительно быстро (прямого упоминания её там нет, но она оказалась рядом, к слову говоря, в тех таблицах ошибка с образцом 192 учтена).
По адресу Bioshock.exe+0x373EF7 есть недвусмысленный текст:
Так что, чтобы найти место можно было даже мозги не включать.
Требуемая проверка находилась чуть выше (Bioshock.exe+0x373DF9):
Достаточно поменять её на что-нибудь, что всегда ставит флаг ZF в 1, например:
И вуаля, предмет поднялся, сюжетный скрипт сработал, квест пройден.
Согласен, сработал грубо, можно было, например, найти место, в котором считывается кол-во предметов в инвентаре и подставить туда 0, либо сделать так, чтобы при поднятии второго образца 192 туда записывался 0, но не в простоте ли гениальность?

Долго не решался в виде чего реализовать исправление, в итоге подумал немного посмеяться над горе-клепателями трейнеров (которые не могли добавить простую проверку на образец 192) и сделал трейнер +1 исправляющий этот баг.


Скачать: MediaFire GDrive
Инструкция: запустить трейнер, запустить игру, загрузить сохранение, нажать F12, поднять второй Образец 192, нажать F12 ещё раз, трейнер закроется.

Использованные инструменты:

x32dbg
Game Trainer Studio


P.S. Работает только на репаках, на стим-версии или, тем более, на лицензии - работать не будет.

Комментарии

  1. не работает.первый и последний трейнер наверное.

    ОтветитьУдалить
  2. А чтобы не изгаляться, находим актуальные таблицы с полным набором функций. И там в разделе инвентаря ставим значение в 0.

    ОтветитьУдалить
  3. Супер огромное спасибо, это просто вау, что вы даже написали программку)

    ОтветитьУдалить
  4. Огромное спасибо, добрый человек.)

    ОтветитьУдалить

Отправить комментарий

Популярные сообщения