Давным давно у меня была мечта попасть на маяк в GTA III (и ещё в пару интересных мест вроде города-призрака, обсерватории, стадиона и т.д.), но разработчики сделали это практически невыполнимым, из авиа техники там был только самолетик Додо без крыльев, на котором было очень сложно летать. Потом вышла часть Liberty City Stories для PS2 (с практически тем же игровым городом) – приставки у меня не было (жили мы тогда бедно) и игра попала в мой список игр. Спустя много лет я купил приставку и прошел её, вертолётов там не оказалось тоже, но я сделал их себе там сам и нашёл кое-что ещё.
Хотя эта игра вышла давно, думаю, эта статья будет многим интересна и может кого-то вдохновит на достижение его старых целей. Лично у меня если цель поставлена — я выполню её всё равно, рано или поздно. Тогда же появилась идея написать статью про то что получилось. Потом на пару-тройку лет меня затянуло в работу, но про статью я не забыл, и вот она.
При написании статьи я нашел еще одну классную вещь для ПК версии GTA III, про которую почти нет информации в русском интернете и получил ещё немного приятных воспоминаний из детства.
Я не хотел читать прохождения и просто прошел Liberty City Stories на PS2 до конца. Вертолётов и самолётов там не оказалось, а трюк с угоном вертолёта в одной из миссий (как я узнал потом) был уже недоступен для меня, перепроходить заново я не хотел. После поиска читовсохраненийредакторов я понял что для этой части на PS2 нет практически ничего, есть немного для PSP, но покупать ее я не хотел.
К тому моменту я уже приучил мою PS2 читать игры по сети, она мне досталась в отличном состоянии и чипованная. Как только я увидел сетевой порт на приставке, я почувствовал, что что-то подобное должно быть, и не зря. Это была отдельная радость, которую может понять только железячник или кто-то такой же бережливый, как и я — никакого износа лазера и легко переключаться между играми, приставка стала почти вечной (правда друзья и родственники моей радости не разделяли, ну и ладно). А также я мог заходить в её карту памяти файловым менеджером (ulaunchelf).
И я решил, что смогу достать вертолет и так – у меня была полная уверенность в том, что он в игре был. Я сделал несколько сохранений в одном и том же гараже с разными автомобилями (чтоб были разные ID) и скопировал их с карты памяти на флешку (та версия загрузчика игр, которую я тогда использовал, не могла ещё делать виртуальные карты памяти).
Интернета в том доме, где я жил, тогда не было – пришлось нести флешку на работу, где меня ждал ещё один сюрприз – в именах сохранений были двоеточия, FAT32 нормально принимает такие файлы, но все наши компьютеры работали под виндой (имя файла вроде «1: The Sicilian Gambit» не принимается), и только сервер стоял на убунте… Закончилось тем, что я просто воткнул флешку в сервер и скопировалпереименовал всё на нем.
Попробовал поискать по ID из предыдущей игры – Vice City – не вышло ничего, некоторые были одинаковые, некоторые отличались (на произвольную величину). Как ни странно, я смог нагуглить «GTA LCS Vehicles IDs», на какой-то по счету странице был правильный список. Можно было достать его и из файлов игры, но это было бы сложнее, а так это сэкономило порядочно времени.
После пары отсевов я обнаружил, что даже при том, что в гараже сохранялся каждый раз только один транспорт, он мог сохраняться в разные места файла. Например по одному ID находим 100 значений, а после отсева по адресам в другом файле – ни одного. Мне повезло, что хотя бы некоторые файлы совпали и записали ID транспорта по одному и тому же адресу, это подтверждалось; а также очень повезло, что файл вообще никак не зашифрован, просто в своем формате. В конце концов я нашёл, что одна из позиций в гараже находится по адресу 0000DCF4, 4-х байтовое целое:
Изменил значение (с 210 на 213 — ID Hunter'a, военного вертолёта), порадовался и пошёл домой. Скопировал дома файл обратно на карту памяти и меня ждал облом – «файл сохранения поврежден». На следующий день каким-то чудом удалось найти формат файла сохранения Vice City, про LCS найти не было даже шансов и я подумал, что хотя ID авто и отличаются, сейвы должны быть примерно одинаковые (ох уж эта программистская лень), так и оказалось.
Оказывается, в конце файла (по адресу 00018FFC) находится простая проверка — побайтовая сумма всего файла в 4-байтовом поле. Написал на PHP простой скрипт, который просуммировал весь файл как байтовые значения (просто открыть как строку и сумму ord() всех символов кроме последних четырёх) и это подтвердило, что в последней ячейке такая сумма.
Домой в тот вечер я реально спешил. Как оказалось, двоеточие в имени файла можно заменить на что угодно и игра всё равно его «поймёт», например, «1_ The Sicilian Gambit» тоже ею понимается нормально. И радости не было предела, когда в открывшемся гараже вывалился хвост вертолёта.
Домашние долго не могли понять, что в этом такого, от чего у меня весь вечер улыбка до ушей. В игре военный вертолёт нигде не использовался и не появлялся, он просто валялся в игре, полностью рабочий, с пулемётом и ракетами. Это был долгий радостный вечер, я побывал на маяке и почти везде, где хотел, увидел, почему вертолёты и самолёты были убраны (большинство крыш без текстур и коллизий) и устроил настоящий погром.
Добраться получилось практически везде, кроме города призрака (его не оказалось, он есть только в третьей части) и обсерватории (в этой части игры низкий потолок высоты и туда не добраться никак). Это было три года назад и тогда у меня не было времени на эту статью.
Сейчас я поискал информацию и не нашёл опять ничего толком для PS2. Зато нашёл отличную новость для тех, кто как и я, хочет доисследовать GTA III – оказывается уже год назад группа людей выпустила дополнение для ПК версии этой игры, называется «GTA III Aircraft», в её версии «Assisted Installation» надо просто скопировать все её файлы в папку с игрой и в ней появятся вертолёты и самолёты. Странно, что в русскоязычном интернете про этот мод толком не было ничего. Чтоб вертолёты появились в нескольких местах, надо найти в интернете файл CLEO.asi (загрузчик дополнительных скриптов) и скопировать в папку с игрой, иначе вертолёты и самолёты в самой игре будут, но спавниться нигде не будут. После всех действий первый вертолёт можно найти на скале напротив маяка, под ним – водный самолет Скиммер, остальные разбросаны по карте.
С этим модом я смог добраться до обсерватории (потолок высоты в ПК версии GTA III большой) и даже смог забраться на маяк.
Как оказалось, маяк в третьей части и в LCS – не одно и то же. Если в LCS вокруг него можно ходить и спускаться по лестнице, то в третьей части у него вообще нет коллизии (каркаса взаимодействия). Он плоский сверху и дальше игрок просто стекает по нему в воду, даже на ступеньках и основании нельзя задержаться. Я ждал от моей детской мечты большего, помню как мы с братом часами атаковали маяк на самолётике Додо с обрезанными крыльями, пытаясь забраться на него, но так и не смогли на него попасть (то ли тот самолетик и правда ужасно управлялся, то ли виновата коллизия маяка).
Так или иначе я рад, что сделал то, что давно хотел, пролетел везде, где можно в этом городе и написал эту статью. И кстати, я специально не прикрепляю фото с обсерваторией или городом-призраком, может кто-то отправится туда сам.
А у вас есть подобные детские мечты? И кто-то хочет попробовать переделать лимит высоты для приставочного исполняемого файла в LCS? Говорят, он захардкожен внутри него…
Автор: aegelsky