Вечная жизнь в играх своими руками




Хак на диске - часть 7


Скорее всего, первый справа бит хранит оружие типа "кастет", второй — пистолет, а последний — пилу. Чтобы проверить наше предположение необходимо добыть еще одно оружие, например, дробовик и посмотреть.

raw offset    doomsav1.dsg  doomsav2.dsg

00000000h:    32h    33h

000000A8h:    05h    06h

000000BAh:    01h    02h

0000010Ch:    00h    10h

00000129h:    0Bh    13h

00000145h:    83h    87h

00000642h:    00h    01h

0000064Ch:    00h    34h

Листинг 13 до и после взятия дробовика ("подозреваемая" ячейка выделена полужирным)

Вот черт! Ячейка по смещению 13Dh ушла в туман, но зато ячейка по смещению 145h изменилась с 83h (10000011b) на 87h (10000111b), то есть после взятия дробовика добавился третий бит. Это явно она! Именно здесь храниться все оружие, которое добыл игрок. Вот только ее смещение непостоянно и в разных файлах оно сильно неодинаковое… но мы-то знаем, что в doomsav1.dsg/doomsav2.dsg оно гарантировано равно 145h! Загружаем doomsav2.dsg в hiew и меняем 87h на FFh (все оружие).

Открываем исправленный сэйв и смотрим что из оружие у нас есть. У нас есть все! Вот только патронов не хватает, а что толку от оружия, если оно не стреляет? Приходится хачить!

Как мы помним, у нас есть 73/200 пистолетных патрона и 24/50 патронов для дробовика. Переводим эти числа в hex-форму — 49h/C8h, 18h/32h и смотрим где они в дампе:

00000100:  31 34 35 37-36 33 32 38-49 00 C8 00-18 00 32 00  14576328; E

> 2

00000110:  00 00 2C 01-00 00 32 00-00 00 00 00-00 00 00 00    ,O  2

00000120:  05 00 00 00-02 00 00 00-00 13 00 01-00 00 00 00  ¦   O    ! O

00000130:  00 01 00 00-00 20 00 00-00 00 00 00-00 00 00 01   O             O

Листинг 14 ячейки, ответственные за хранение пистолетных патронов (текущее/максимальное количество) и зарядов для дробовика

Ага! Лежат рядышком! А следом за ними идет 00h 00h 2Ch 01h. Ничего не напоминает? С учетом обратного порядка байт 2Ch 01h равно 12Ch или 300 в десятичном исчислении — максимально возможное количество зарядов плазмогана/BFG на данном уровне.


Содержание  Назад  Вперед