Доброго времени суток. В этой статье я Вам расскажу о том, как же устроен .ipl-файл в GTA San Andreas (Криминальная Россия) и для чего он предназначен.
[size=175]Предназначение[/size]
.ipl ([b]I[/b]tem [b]PL[/b]acement) предназначен для расстановки объектов на игровой карте, а также определяет зоны, пути, гаражи, маркеры интерьеров и многое другое. Если IPL файл находится в текстовом виде, то его можно открыть и отредактировать в любом текстовом редакторе, например в Блокноте. А если он находится в бинарном (скомпилированном) виде, то, понятное дело, для его изменения (если не хочется танцевать с бубном) уже используют специальные редакторы, либо программы, конвертирующие двоичные IPL в текстовые и обратно. Ну, или как вариант, HEX-редактор в руки и пошли в шахту!
Данный тип файла используется во всех играх серии GTA, начиная с третьей части (кроме GTA5), а точнее — GTA 3, GTA VC, GTA SA/CR (в текстовом и двоичном виде), GTA LCS (в двоичном виде), GTA VCS (в двоичном виде), GTA 4 (в текстовом и двоичном виде).
[i][b]Примечание.[/b] Двоичный .ipl-файл в GTA4 имеет расширение .wpl, однако ни строение, ни предназначение не изменились.[/i]
[size=175]Структура[/size]
Файлы .ipl разделены на несколько секций. Они могут быть не обязательны, или даже могут быть пустыми. Каждая секция начинается и идентификатора секции и заканчивается ключевым словом end. Строка секции разделяется запятыми, между которыми записаны значения каждой ячейки строки. Каждая ячейка может содержать либо целое или дробное число, либо одно слово:
[code]inst

end[/code]

[size=125]Секция INST[/size]
Отвечает за расположение и свойства статических и динамических (object.dat) объектов карты. Имеет следующий вид:
[code]inst
ModelId, NULL, Interior, PosX, PosY, PosZ, RotX, RotY, RotZ, RotW, LOD
end[/code]

[list]

  • [*]ModelId — уникальный идентификатор модели. Должен соответствовать идентификатору в IDE файле. Тип — DWORD.

  • [*]NULL — пустое значение строки, игнорируется игрой. Может содержать любой мусор (обычно туда записывают имя DFF файла для совместимости с MAP_IO). Тип — string[24].

  • [*]PosX, PosY, PosZ — координаты объекта относительно центра карты. Тип — float.

  • [*]1, 1, 1 — множители для масштабирования модели в игре, движком не используются, всегда равны или .dff. Определяется как кватернион, для перевода в Эйлеровы углы необходимы довольно сложные математические вычисления. Масштабируется только сама модель, модель коллизии не масштабируется! (при этом в игре появляются глюки с камерой). Тип — float

  • [*]Interior — Номер интерьера, для которого используется модель (объекты с другими номерами интерьеров при этом не подгружаются на карту при попадании игрока в данный интерьер). Для основной карты номер интерьера = 0. Тип — WORD.

  • [*]LOD — номер строки в текущем IPL файле для LODа, принадлежащего этой модели. Первый объект прописанный в IPL это строка «0», второй объект – «1» и так далее… Значение «-1» означает что LOD не используется. Тип — DWORD
  • [/list]
    [size=125]Cекция CULL[/size]
    В GTA3, GTA VC, GTA SA/CR существуют 4 таблицы с куллингами. В третей части первая таблица находится в бинарном виде в CULLZONE.DAT и содержит параметры загрузки куллингов в память и их глобальные координаты. Начинается с оффсета 0x04 и занимает в файле 6800 байт. Без редактирования exe, максимальное количество зон в первой таблице = 512 строк.
    Вторую таблицу можно найти в бинарном виде в CULLZONE.DAT и в текстовом файле CULL.IPL, причём в GTA3 она грузится из бинарного, а в GTA VC и GTA SA/CR — из текстового вида. Декомпилировать первую и вторую таблицу из CULLZONE.DAT можно с помощью отечественной программы «CULLZONE COMPILER/DECOMPILER by Majestic», а можно модифицировать их вручную, через HEX-редактор (в винде это может быть HEX Editor, а ближайший аналог в Debian-подобных (Debian, Ubuntu, Mint, Kununtu, Lubuntu, Xubuntu и ещё несколько) — это gHEX).
    Выглядит всё это дело вот так:
    [code]cull
    centerX, centerY, centerZ, 0 (какой-то поворот), Ywidth, bottomZ, Xwidth, 0 (какой-то поворот), topZ, Flag1, Flag 2
    centerX, centerY, centerZ, 0 (какой-то поворот),Ywidth, bottomZ, Xwidth, 0 (какой-то поворот), topZ, Flag, Vx, Vy, Vz, Cm
    end[/code]

    Границы Cull зон точно соотвествуют мировым координатам.
    З.Ы. Второй формат секции CULL используется в основном для зеркал.
    [table=1][trow][titem][b]
    [center] Двоичное счисление [/center]
    [/b][/titem]
    [titem][b]
    [center] Флаг [/center]
    [/b][/titem]
    [titem][b]
    [center] Описание [/center]
    [/b][/titem]
    [/trow]

    [trow][titem]1111 1111 1111 1111[/titem][titem]-1[/titem][titem]Все параметры включены[/titem][/trow]
    [trow][titem]0000 0000 0000 0000[/titem][titem]0[/titem][titem]Все параметры выключены[/titem][/trow]
    [trow][titem]0000 0000 0000 0001[/titem][titem]1[/titem][titem]Блокируется опция смены камеры для игрока и авто[/titem][/trow]
    [trow][titem]0000 0000 0000 0010[/titem][titem]2[/titem][titem]Камера фиксируется вне зоны и следит за игроком[/titem][/trow]
    [trow][titem]0000 0000 0000 0100[/titem][titem]4[/titem][titem]«Низкая» камера на игроке и авто[/titem][/trow]
    [trow][titem]0000 0000 0000 1000[/titem][titem]8[/titem][titem]Игнорирование погодных эффектов типа тумана и дождя[/titem][/trow]
    [trow][titem]0000 0000 0001 0000[/titem][titem]16[/titem][titem]Полиция не видит игрока во время уровня розыска[/titem][/trow]
    [trow][titem]0000 0000 0010 0000[/titem][titem]32[/titem][titem]Игнорирование блокировки путей педов[/titem][/trow]
    [trow][titem]0000 0000 0100 0000[/titem][titem]64[/titem][titem]Честно говоря, сам не знаю[/titem][/trow]
    [trow][titem]0000 0000 1000 0000[/titem][titem]128[/titem][titem]Активирует рендеринг подземных тоннелей (автомобильных и метро)[/titem][/trow]
    [trow][titem]0000 0001 0000 0000[/titem][titem]256[/titem][titem]Сотрудники полиции всегда выходят из своих автомобилей, если игрок находится на высоком уровне розыска[/titem][/trow]
    [trow][titem]0001 0000 0000 0000[/titem][titem]4096[/titem][titem]Увеличение уровня розыска до 5 звёзд[/titem][/trow][/table]

    [size=125]Секция GRGE[/size]
    Тут создаются гаражи для дальнейшего использования в main.scm. Используется только в San Andreas, хотя не было убрано и в Criminal Russia.
    [code]grge
    X1, Y1, Z1, frontX, frontY, X2, Y2, Z2, Door, Type, Name
    end[/code]

    [list]
  • [*]X1, Y1, Z1 — нижний левый передний угол

  • [*]frontX, frontY — нижний правый передний угол

  • [*]X2, Y2, Z2 — верхний левый задний

  • [*]Door — тип дверей

  • [*]Type — тип гаража

  • [*]Name — имя гаража. используется для редактирования гаражей через SCM
  • [/list]

    [size=125]Секция ENEX[/size]
    Данная секция отвечает за создание соединений между интерьерами и внешним игровым пространством.
    [code]enex
    X1, Y1, Z1, ROT, W1, W2, C8, X2, Y2, Z2, Rot2, Int, Flag, Name, Sky, I2, Time On, Time Off
    end[/code]

    [list]
  • [*]X1, Y1, Z1 — месторасположение входа

  • [*]ROT — Поворот

  • [*]W1 — X Радиус входа

  • [*]W2 — Y Радиус выхода

  • [*]C8 — неизвестно. Значение всегда = 8

  • [*]X2, Y2, Z2 — Местоположение выхода

  • [*]Rot2 — вращение выхода в градусах

  • [*]Int — номер целевого интерьера

  • [*]Flag — тип маркера

  • [*]Name — название интерьера

  • [*]Sky — изменение цвета неба

  • [*]I2 — Неизвестный параметр выраженный целым числом, возможно связано с погодой

  • [*]Time On — Время включения действия маркера

  • [*]Time Off — Время отключения действия маркера
  • [/list]

    [table=1][trow][titem][b]
    [center]Флаг[/center]
    [/b][/titem]
    [titem][b]
    [center]Имя[/center]
    [/b][/titem]
    [titem][b]
    [center]Описание[/center]
    [/b][/titem]
    [/trow]

    [trow][titem]1[/titem][titem]неизвестный интерьер[/titem][titem]Используется только для маркеров[/titem][/trow]
    [trow][titem]2[/titem][titem]unknown pairing[/titem][titem]используется только для маркеров телепорта в интерьер[/titem][/trow]
    [trow][titem]4[/titem][titem]Create linked pair[/titem][titem]Pair with unflagged mate during new game start[/titem][/trow]
    [trow][titem]8[/titem][titem]Reward interior[/titem][titem]Sets flag 0010 on pair mate when used[/titem][/trow]
    [trow][titem]16[/titem][titem]Used reward entrance[/titem][titem]Set by accessing reward interior[/titem][/trow]
    [trow][titem]32[/titem][titem]Cars and aircraft[/titem][titem]Enable for cars and aircraft[/titem][/trow]
    [trow][titem]64[/titem][titem]Bikes and motorcycles[/titem][titem]Enable for bikes and motorcycles[/titem][/trow]
    [trow][titem]128[/titem][titem]Disable on foot[/titem][titem]No foot traffic. Use for cars and/or bikes only[/titem][/trow]
    [trow][titem]256[/titem][titem]Accept NPC group[/titem][titem]Group members accepted at destination of pair (passengers stripped)[/titem][/trow]
    [trow][titem]512[/titem][titem]Food date flag[/titem][titem]Set and cleared by food date (cut-scene related)[/titem][/trow]
    [trow][titem]1024[/titem][titem]unknown burglary[/titem][titem]Set on Bayside and Temporary Burglary doors[/titem][/trow]
    [trow][titem]2048[/titem][titem]Disable exit[/titem][titem]Player can enter but cannot exit a two-way pair[/titem][/trow]
    [trow][titem]4096[/titem][titem]Burglary access[/titem][titem]Enabled and disabled during Burglary[/titem][/trow]
    [trow][titem]8192[/titem][titem]Вход без выхода[/titem][titem]Создаётся только пикап входа. См. вход в ТЦ «Анашан» (Южный район) и психиатрическую больницу в селе Батырево (Арзамасский район).[/titem][/trow]
    [trow][titem]16384[/titem][titem]Активирован по стандарту[/titem][titem]Активируется по стандарту; часто очищается скриптам[/titem][/trow]
    [trow][titem]32768[/titem][titem]Удаляется после использования[/titem][titem]Встаём на enex, он выполняет действие и исчезает[/titem][/trow][/table]

    [size=125]Секция PICK[/size]
    Эта секция создаёт пикапы оружия. В San Andreas использовалась лишь для огнетушителей в ресторанах фаст-фуда.
    [code]pick
    ID, X, Y, Z
    end[/code]

    [list]
  • [*]ID — ID оружия

  • [*]X, Y, Z — координаты пикапа
  • [/list]

    [size=125]Секция JUMP[/size]
    Создаёт уникальный прыжок, заданный через минимальные и максимальные координаты для точки старта и приземления. Этот формат соответствует формату, который используется в опкоде 0814.
    [code]startXmin, startYmin, startZmin, startXmax, startYmax, startZmax, landXmin, landYmin, landZmin,
    landXmax, landYmax, landZmax, camX, camY, camZ, reward[/code]

    [size=125]Секция TCYC[/size]
    Точной информации по TCYC пока нет. Возможно, секция управляет погодными эффектами в зоне. Внутри используется объект типа BOX.
    [code]tcyc
    X1, Y1, Z1, X2, Y2, Z2, ?, ?, ?, ?, ?
    end[/code]

    [size=125]Секция AUZO[/size]
    Секция создаёт в зоне музыку. См. развлекательный центр «8-BIT» (г. Южный).
    [code]auzo
    Name, ID, Switch, X1, Y1, Z1, X2, Y2, Z2
    Name, ID, Switch, X, Y, Z, Volume
    end[/code]

    [list]
  • [*]Name — имя зоны

  • [*]ID — идентификатор музыки. С помощью него проигрывается определённая музыка в зоне.

  • [*]Switch — делает музыку всегда включённой или выключенной. Не может быть принуждён использованием опкода 0917.

  • [*]Volume — максимальная дистанция, с которой слышно музыку.
  • [/list]

    [size=125]Секция MULT[/size]
    Неизвестная секция, использовавшаяся только в GTA SA/CR и 4.
    [size=125]Секция CARS[/size]
    Секция CARS используется для размещения автомобиля на карте. Для этого нужно вписать координаты на карте, поворот модели, информацию о цветах и прочее. В GTA San Andreas/Криминальной России для расстановки машин чаще всего регулярно используется бинарный формат .IPL. Его, понятное дело, можно открыть только HEX-редактором. А декомпиляторов, к сожалению, не существует.
    [code]4b — FLOAT — Позиция X
    4b — FLOAT — Позиция Y
    4b — FLOAT — Позиция Z
    4b — FLOAT — Угол (Вокруг оси-Z)
    4b — INT32 — ID объекта
    4b — INT32 — Основной цвет
    4b — INT32 — Вторичный цвет
    4b — INT32 — Появление автомобиля
    4b — INT32 — Сигнализация
    4b — INT32 — Свойство закрытых дверей
    4b — INT32 — Unknown1
    4b — INT32 — Unknown2[/code]

    Да, и ещё. Не ройтесь слишком много в /data, всё равно ничего не найдёте. Скомпилированные .ipl сидят в архиве /models/gta3.img.

    От danilasar

    Это я

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *