DTZ — различия между версиями
Материал из GTAModding.ru
Majestic (обсуждение | вклад) (→Структура версии VCS) |
|||
(не показана 21 промежуточная версия 4 участников) | |||
Строка 4: | Строка 4: | ||
Данный файл представляет особый интерес в силу того, что что в нем содержатся конфигурационные данные, а также элементы интерфейса и модели некоторых игровых объектов (в основном это бинарные аналоги текстовых файлов в папке data и моделей с текстурными архивами в папке models из [[GTA VC]]). | Данный файл представляет особый интерес в силу того, что что в нем содержатся конфигурационные данные, а также элементы интерфейса и модели некоторых игровых объектов (в основном это бинарные аналоги текстовых файлов в папке data и моделей с текстурными архивами в папке models из [[GTA VC]]). | ||
+ | |||
+ | == Заголовок == | ||
+ | |||
+ | === Версия GTA LCS === | ||
+ | |||
+ | В приведенной ниже таблице дана расшифровка заголовка DTZ: | ||
+ | |||
+ | 0x0 [4b FourCC] - Сигнатура DTZ, читается как GTAG. | ||
+ | 0x4 [4b int] - неизвестно, обычно = 1. | ||
+ | 0x8 [4b int] - размер DTZ. | ||
+ | 0xC [4b int] - размер данных без учёта таблиц для перераспределения файла в памяти. | ||
+ | 0x10 [4b int] - таблица смещений для перераспределения указателей в памяти (Reallocation Table). | ||
+ | 0x14 [4b int] - количество смещений в Reallocation Table. | ||
+ | 0x18 [4b int] - ссылается на таблицу смещений на хеши jenkins, которые заменяются на указатели на таблицы виртуальных методов (vmt). | ||
+ | 0x1C [2b short] - количество хешей jenkins в 1 секции таблицы. | ||
+ | 0x1E [2b short] - количество хешей jenkins во 2 секции таблицы (методы рендера в Atomic моделей). | ||
+ | 0x20 [4b int] - '''gpThePaths''' (пути). | ||
+ | 0x24 [4b int] - '''CPools::ms_pBuildingPool''' (смещение на данные, относящиеся к размещению статичных обьектов (Buildings IPL)). | ||
+ | 0x28 [4b int] - смещение на данные, относящиеся к размещению дорог (Treadable IPL). | ||
+ | 0x2C [4b int] - смещение на данные, относящиеся к размещению динамических объектов (Dummy IPL). | ||
+ | 0x30 [4b int] - EntryInfoNodes (связана со стримингом динамических объектов карты). | ||
+ | 0x34 [4b int] - PtrNodes (связвна со стримингом карты, ссылается на IPL из секций Buildings, Treadables, Dummys). | ||
+ | 0x38 [4b int] - количество IDE. | ||
+ | 0x3C [4b int] - таблица смещений на бинарные IDE (ID присваивается по счетчику смещений от 0 до количества IDE). | ||
+ | 0x40 [4b int] - таблица классов авто (normal, poorfamily...), 11 классов с возможностью указания 25 IDE ID авто для класса. | ||
+ | 0x44 [4b int] - количество ID авто в каждом классе вышеуказанной таблицы. | ||
+ | 0x48 [4b int] - смещение на данные игровых зон ('''info.zon''', '''navig.zon'''). | ||
+ | 0x4C [4b int] - '''CWorld::ms_aSectors''' Данные игровых секторов, ссылается на PtrNode | ||
+ | 0x50 [4b int] - '''CWorld::ms_bigBuildingsList''' 4 указателя на PtrNode | ||
+ | 0x54 [4b int] - количество строк в таблице 2dfx. | ||
+ | 0x58 [4b int] - смещение на таблицу 2dfx эффектов для объектов из default.ide (строка 64 байт). | ||
+ | 0x5С [4b int] - смещение на массив hardcoded индексов моделей. | ||
+ | 0x60 [4b int] - смещение на блок загрузки текстурных архивов CHK (TexList). | ||
+ | 0x64 [4b int] - неизвестно, равно 0. | ||
+ | 0x68 [4b int] - смещение на блок загрузки COL2 файлов. | ||
+ | 0x6C [4b int] - неизвестно, равно 0. | ||
+ | 0x70 [4b int] - смещение на коллизию-пустышку. | ||
+ | 0x74 [4b int] - смещение на аналог '''object.dat''' (строка 32 байта, 117 шт.). | ||
+ | 0x78 [4b int] - смещение на палитру RGBA цветов, используемых в '''carcols.dat''', 256 цветов. | ||
+ | 0x7C [4b int] - '''CStreamingInfo CStreaming::ms_aInfoForModel[]''' (аналог GTA3PS*HR.DIR). | ||
+ | 0x80 [4b int] - смещение на блок загрузки ANIM файлов и анимаций ('''ped.ifp'''). | ||
+ | 0x84 [4b int] - '''fistfite.dat''' | ||
+ | 0x88 [4b int] - '''PedAnimInfo[]''' | ||
+ | 0x8C [4b int] - аналог '''ped.dat'''. | ||
+ | 0x90 [4b int] - аналог '''pedstats.dat'''. | ||
+ | 0x94 [4b int] - количество строк в '''cull.ipl'''. | ||
+ | 0x98 [4b int] - смещение на аналог '''cull.ipl''' (строка 16 байт). | ||
+ | 0x9C [4b int] - относится к окклюзиям (не используется, равно 0). | ||
+ | 0xA0 [4b int] - относится к окклюзиям (не используется, равно 0). | ||
+ | 0xA4 [4b int] - смещение на аналог '''waterpro.dat'''. | ||
+ | 0xA8 [4b int] - смещение на аналог '''HANDLING.CFG'''. | ||
+ | 0xAC [4b int] - смещение на аналог '''surface.dat'''. | ||
+ | 0xB0 [4b int] - смещение на аналог '''timecyc.dat'''. | ||
+ | 0xB4 [4b int] - смещение на аналог '''pedgrp.dat'''. | ||
+ | 0xB8 [4b int] - смещение на аналог '''particle.cfg'''. | ||
+ | 0xBC [4b int] - смещение на аналог '''weapon.dat'''. | ||
+ | 0xC0 [4b int] - таблица смещений на клампы встроенных в DTZ MDL файлов. | ||
+ | 0xC4 [4b int] - смещение на аналог '''CUTS.DIR'''. | ||
+ | 0xC8 [4b int] - смещение на аналог '''ferry.dat''' (пути для парома). | ||
+ | 0xCС [4b int] - смещение на аналоги '''tracks.dat''' и '''tracks2.dat'''. | ||
+ | 0xD0 [4b int] - смещение на аналог '''flight.dat'''. | ||
+ | 0xD4 [4b int] - смещение на '''menu.chk''' (сжат Deflate/ZLib алгоритмом). | ||
+ | 0xD8 [4b int] - размер '''fonts.chk''' (реальный). | ||
+ | 0xDС [4b int] - смещение на '''fonts.chk''' (сжат Deflate/ZLib алгоритмом). | ||
== Краткое описание содержимого == | == Краткое описание содержимого == | ||
Строка 73: | Строка 137: | ||
| radarNN.txd | | radarNN.txd | ||
| - | | - | ||
− | | | + | | только в [[GTA VCS]], запакованы deflate/zlib алгоритмом |
|- | |- | ||
| colspan="4" | <b>Анимация</b> | | colspan="4" | <b>Анимация</b> | ||
Строка 99: | Строка 163: | ||
| colspan="4" | <b>Коллизия</b> | | colspan="4" | <b>Коллизия</b> | ||
|- | |- | ||
− | | коллизии пешеходов | + | | коллизии пешеходов (**) |
| peds.col | | peds.col | ||
| | | | ||
− | | | + | | одна за всех :) |
|- | |- | ||
− | | коллизии автотранспорта | + | | коллизии автотранспорта (**) |
| vehicles.col | | vehicles.col | ||
| | | | ||
| | | | ||
|- | |- | ||
− | | коллизии оружия | + | | коллизии оружия (**) |
| weapons.col | | weapons.col | ||
| | | | ||
| | | | ||
+ | |- | ||
+ | | коллизии ко всем моделям из MasterWRLD, а так же к скриптовым объектам из GTA3XXX.IMG архива (**) | ||
+ | | generic.col | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | коллизии всех остальных объектов в игре (**) | ||
+ | | | ||
+ | | | ||
+ | | содержат только ограничивающие коробку и сферу, всё остальное - в стиминг-COL2 из GTA3XXX.IMG | ||
|- | |- | ||
| colspan="4" | <b>Модели</b> | | colspan="4" | <b>Модели</b> | ||
|- | |- | ||
− | | стрелка | + | | обруч (***) |
+ | | race_ring.dff | ||
+ | | VCS PS2: E02E3F | ||
+ | |[[Изображение:Race ring.PNG|150px|обруч]] | ||
+ | |- | ||
+ | | стрелка (***) | ||
| Shape .dff | | Shape .dff | ||
| LCS PS2: 30643F | | LCS PS2: 30643F | ||
+ | VCS PS2: 28233F | ||
|[[Изображение:Dtz1.PNG|150px|стрелка]] | |[[Изображение:Dtz1.PNG|150px|стрелка]] | ||
|- | |- | ||
− | | цилиндр | + | | длинный цилиндр (***) |
+ | | zonecyla.dff | ||
+ | | VCS PS2: С4223F | ||
+ | |[[Изображение:Zonecyla.PNG|150px|длинный цилиндр]] | ||
+ | |- | ||
+ | | шарик (***) | ||
+ | | zoneaphr.dff | ||
+ | | VCS PS2: E8B03E | ||
+ | |[[Изображение:Zoneaphr.PNG|150px|шарик]] | ||
+ | |- | ||
+ | | конус входа (***) | ||
+ | | entercone.dff | ||
+ | | VCS PS2: A0B03E | ||
+ | |[[Изображение:Entercone.PNG|150px|конус входа]] | ||
+ | |- | ||
+ | | цилиндр (***) | ||
| zonecylb.dff | | zonecylb.dff | ||
| LCS PS2: 64EA3F | | LCS PS2: 64EA3F | ||
+ | VCS PS2: 70AD3E | ||
|[[Изображение:Dtz2.PNG|150px|цилиндр]] | |[[Изображение:Dtz2.PNG|150px|цилиндр]] | ||
|- | |- | ||
− | | стрелка 2 | + | | стрелка 2 (***) |
| arrow.dff | | arrow.dff | ||
| LCS PS2: 800643 | | LCS PS2: 800643 | ||
− | |[[Изображение:Dtz3.PNG|150px|стрелка | + | VCS PS2: 882938 |
+ | 9C7D3E | ||
+ | |[[Изображение:Dtz3.PNG|150px|стрелка LCS]] | ||
+ | [[Изображение:Arrow.PNG|150px|стрелка VCS]] | ||
|- | |- | ||
− | | ЛОДы колес | + | | ЛОДы колес (***) |
| wheels.dff | | wheels.dff | ||
| LCS PS2: 800643 | | LCS PS2: 800643 | ||
Строка 142: | Строка 241: | ||
|[[Изображение:Dtz4.PNG|150px|ЛОДы колес]] | |[[Изображение:Dtz4.PNG|150px|ЛОДы колес]] | ||
|- | |- | ||
− | | колесо 1 | + | | колесо 1 (***) |
| wheels.dff | | wheels.dff | ||
| LCS PS2: 80С249 | | LCS PS2: 80С249 | ||
|[[Изображение:Dtz5.PNG|150px|колесо 1]] | |[[Изображение:Dtz5.PNG|150px|колесо 1]] | ||
|- | |- | ||
− | | колесо 2 | + | | колесо 2 (***) |
| wheels.dff | | wheels.dff | ||
| LCS PS2: B4C249 | | LCS PS2: B4C249 | ||
|[[Изображение:Dtz6.PNG|150px|колесо 2]] | |[[Изображение:Dtz6.PNG|150px|колесо 2]] | ||
|- | |- | ||
− | | колесо 3 | + | | колесо 3 (***) |
| wheels.dff | | wheels.dff | ||
| LCS PS2: 1CC349 | | LCS PS2: 1CC349 | ||
|[[Изображение:Dtz7.PNG|150px|колесо 3]] | |[[Изображение:Dtz7.PNG|150px|колесо 3]] | ||
|- | |- | ||
− | | колесо 4 | + | | колесо 4 (***) |
| wheels.dff | | wheels.dff | ||
| LCS PS2: 84C349 | | LCS PS2: 84C349 | ||
|[[Изображение:Dtz8.PNG|150px|колесо 4]] | |[[Изображение:Dtz8.PNG|150px|колесо 4]] | ||
|- | |- | ||
− | | колесо 5 | + | | колесо 5 (***) |
| wheels.dff | | wheels.dff | ||
| LCS PS2: 20C449 | | LCS PS2: 20C449 | ||
|[[Изображение:Dtz9.PNG|150px|колесо 5]] | |[[Изображение:Dtz9.PNG|150px|колесо 5]] | ||
|- | |- | ||
− | | колесо 6 | + | | колесо 6 (***) |
| wheels.dff | | wheels.dff | ||
| LCS PS2: 54C449 | | LCS PS2: 54C449 | ||
|[[Изображение:Dtz10.PNG|150px|колесо 6]] | |[[Изображение:Dtz10.PNG|150px|колесо 6]] | ||
|- | |- | ||
− | | | + | | LOD самолета (***) |
| air_vlo.dff | | air_vlo.dff | ||
| LCS PS2: 2CEB49 | | LCS PS2: 2CEB49 | ||
|[[Изображение:Dtz11.PNG|150px|крылатый карандаш]] | |[[Изображение:Dtz11.PNG|150px|крылатый карандаш]] | ||
|- | |- | ||
− | | колесо 7 | + | | колесо 7 (***) |
| wheels.dff | | wheels.dff | ||
| LCS PS2: 60EB49 | | LCS PS2: 60EB49 | ||
Строка 184: | Строка 283: | ||
| colspan="4" | <b>IDE / IPL / DAT</b> | | colspan="4" | <b>IDE / IPL / DAT</b> | ||
|- | |- | ||
− | | аналог [[IDE]] | + | | аналог [[IDE]] (**) |
| *.ide | | *.ide | ||
| | | | ||
− | | содержит все | + | | содержит все данные инициализации моделей, текстур и коллизий |
|- | |- | ||
− | | аналог [[IPL]] | + | | аналог [[IPL]] (**) |
| *.ipl | | *.ipl | ||
| | | | ||
− | | содержит все координаты для расстановки коллизий в игре | + | | содержит все координаты для расстановки коллизий и генерика в игре |
|- | |- | ||
− | | цвета автомобилей | + | | цвета автомобилей (**) |
| carcols.dat | | carcols.dat | ||
| | | | ||
| | | | ||
|- | |- | ||
− | | цвета пешеходов | + | | цвета пешеходов (**) |
− | | | + | | pedcols.dat |
| | | | ||
| только в [[GTA VCS]] | | только в [[GTA VCS]] | ||
Строка 214: | Строка 313: | ||
| | | | ||
|- | |- | ||
− | | handling data | + | | handling data (**) |
| handling.dat | | handling.dat | ||
| LCS PS2: <code>0x1647A0</code> | | LCS PS2: <code>0x1647A0</code> | ||
Строка 266: | Строка 365: | ||
<code>0x3B1F10</code> | <code>0x3B1F10</code> | ||
− | | характеристики пешеходов | + | | характеристики пешеходов |
LCS PS2: | LCS PS2: | ||
Строка 317: | Строка 416: | ||
* Оффсеты указаны для распакованного game.dtz. | * Оффсеты указаны для распакованного game.dtz. | ||
* Данные, помеченные (*) открываются при помощи [[GTA Stories Texture Explorer]]. | * Данные, помеченные (*) открываются при помощи [[GTA Stories Texture Explorer]]. | ||
+ | * Данные, помеченные (**) просматриваются при помощи [[Stories WRLD Tool]]. | ||
+ | * Данные, помеченные (***) импортируются в 3D MAX при помощи [[MDL importer]]. | ||
== Структуры == | == Структуры == | ||
Строка 322: | Строка 423: | ||
Ниже представлены некоторые структуры описанных выше данных. | Ниже представлены некоторые структуры описанных выше данных. | ||
+ | === IDE === | ||
+ | |||
+ | IDE в DTZ представлена в виде глобальной бинарной таблицы, имеющей данные для всех моделей в игре, будь то автомобили, пешеходы или простые объекты. | ||
+ | |||
+ | Количество IDE и смещение на таблицу IDE можно узнать в DTZ по смещениям 0x38 и 0x3C для всех консольных игр. | ||
+ | Таблица IDE представляет собой указатели на бинарные строки IDE, ID модели присваивается по счетчику указателей от 0 до кол-ва IDE. Если указатель равен 0 - значит данный ID свободен. | ||
+ | |||
+ | ==== Структура бинарной строки IDE ==== | ||
+ | |||
+ | Каждая бинарная строка IDE имеет глобальные данные и побочные, зависящие от типа загружаемой IDE. | ||
+ | |||
+ | Глобальные данные занимают 44 байт и имеют структуру: | ||
+ | |||
+ | 4b - Свободное место для размещения указателя в памяти. | ||
+ | 4b - Свободное место для размещения указателя в памяти. | ||
+ | 4b - имя IDE/модели, хешированное по CRC32 алгоритму. | ||
+ | 4b - Свободное место для размещения указателя в памяти. | ||
+ | 1b - тип IDE, определяет какие побочные данные нужно загружать после глобальных данных. | ||
+ | 1b - кол-во 2dfx. | ||
+ | 2b - unknown. | ||
+ | 4b - смещение на коллизию модели. | ||
+ | 2b - 2dfx ID | ||
+ | 2b - unknown (0xFFFF) | ||
+ | 2b - unknown (обычно нули). | ||
+ | 2b - номер наименования текстурного файла в таблице TexList. | ||
+ | 4b - хеш типа секции. | ||
+ | 4b - unknown (обычно нули). | ||
+ | 4b - Дистанция прорисовки (у автомобилей и пешеходов = 0xFFFFFFFF). | ||
+ | |||
+ | Побочные данные: | ||
+ | |||
+ | Секция типа 1 (objs) | ||
+ | |||
+ | Секция типа 3 (tobj) | ||
+ | |||
+ | Секция типа 6 (cars) | ||
+ | |||
+ | |||
+ | 1b - текущий ID primary цвета машины (в памяти) в файле всегда = 0 | ||
+ | 1b - текущий ID secondary цвета машины (в памяти) в файле всегда = 0 | ||
+ | 14b - имя авто в GXT | ||
+ | 4b - размер колеса | ||
+ | 2b - ID модели колеса | ||
+ | 2b - номер строки в бинарной HANDLING.CFG | ||
+ | 1b - Количество дверей | ||
+ | 1b - Class (-1 - ignore, 0 - normal, 1 - poorfamily, 2 - richfamily, 3 - executive, 4 - worker, 5 - big, 6 - taxi, 7 - moped, 8 - motorbike, 9 - leisureboat, 10 - workerboat) | ||
+ | 1b - Level | ||
+ | 1b - unknown | ||
+ | 4b - Frequency | ||
+ | 4b - unknown (обычно нули). | ||
+ | 16b - (3x float single + 4b выравнивание) - позиция headlights | ||
+ | 16b - (3x float single + 4b выравнивание) - позиция taillights | ||
+ | 16b - (3x float single + 4b выравнивание) - позиция ped_frontseat | ||
+ | 16b - (3x float single + 4b выравнивание) - позиция ped_backseat | ||
+ | 16b - (3x float single + 4b выравнивание) - позиция exhaust | ||
+ | 4b - CompRules | ||
+ | 4b - unknown (0x4479FF5C) возможно идентификатор секции указателей перекраски авто. | ||
+ | 100b (25х longint) - глобальный массив указателей на цвета материалов модели, окрашенных primary цветом (заполняется указателями из аналогичной секции самой модели, при обнулении в памяти машина перестанет менять цвет). | ||
+ | 100b (25х longint) - глобальный массив указателей на цвета материалов модели, окрашенных secondary цветом (заполняется указателями из аналогичной секции самой модели, при обнулении в памяти машина перестанет менять цвет). | ||
+ | 8b - массив ID primary цветов из палитры carcols.dat | ||
+ | 8b - массив ID secondary цветов из палитры carcols.dat | ||
+ | 1b - общее кол-во используемых цветов. | ||
+ | 1b - индекс цветовой схемы машины из массивов цветов (в памяти постоянно рандомизируется от 0 до кол-ва цветов) в файле всегда = 0 | ||
+ | 1b - текущий ID primary цвета машины (в памяти) в файле всегда = -1 | ||
+ | 1b - текущий ID secondary цвета машины (в памяти) в файле всегда = -1 | ||
+ | 4b - amount the normals are splayed by to improve the environment mapping on PSP | ||
+ | 4b - unknown | ||
+ | 4b - Anims ID (van, bikeh ,bikev и т.д.; -1 = null) | ||
+ | |||
+ | Секция типа 7 (peds) | ||
+ | |||
+ | === cull.ipl === | ||
+ | |||
+ | Строка занимает 16 байт и выглядит следующим образом: | ||
+ | (Координаты содержат реальные округленные значения) | ||
+ | |||
+ | 2b: Box Lower X Coord | ||
+ | 2b: Box Upper X Coord | ||
+ | 2b: Box Lower Y Coord | ||
+ | 2b: Box Upper Y Coord | ||
+ | 2b: Box Lower Z Coord | ||
+ | 2b: Box Upper Z Coord | ||
+ | 2b: Flag 1 | ||
+ | 2b: Flag 2 | ||
+ | |||
+ | === ped.dat === | ||
+ | |||
+ | 4b dword: MaskID | ||
+ | 4b float: Walkspeed* | ||
+ | 4b float: Runspeed* | ||
+ | 4b float: Fastrunspeed* | ||
+ | 4b float: Flee Distance | ||
+ | 4b float: Heading Change | ||
+ | 4b dword: Threats Mask | ||
+ | 4b dword: Avoid Mask | ||
+ | |||
+ | * умножить на 50 | ||
+ | |||
=== weapons data === | === weapons data === | ||
Строка 505: | Строка 704: | ||
<source lang="cpp">typedef struct lcs_handling_item | <source lang="cpp">typedef struct lcs_handling_item | ||
{ | { | ||
− | float fMass; | + | float fMass; //B |
− | float fTurnMass; | + | float fTurnMass; //C |
− | float fTractionMultiplier; | + | float fTractionMultiplier;//J |
− | float | + | float fCollisionDamageMultiplier; (fCollisionDamageMultiplier = (fMass/2000.0)*fCollisionDamageMultiplier) //ab |
− | DWORD | + | DWORD CarId; |
− | float | + | float 1/fMass; |
− | float fDragMult; | + | float fDragMult; //D |
− | float _f1C; | + | float _f1C; //null |
− | float CentreOfMassX; | + | float CentreOfMassX; //F |
− | float CentreOfMassY; | + | float CentreOfMassY; //G |
− | float CentreOfMassZ; | + | float CentreOfMassZ; //H |
− | float _f2C; | + | float _f2C; //null |
− | int nPercentSubmerged | + | int nPercentSubmerged //I |
− | float | + | float (fMass*0.8)/nPercentSubmerged; |
− | float _f38; | + | float _f38; //дублирует значение _f94 //выставляет движок |
− | float _f3C; | + | float _f3C; //0xBC23D70A //выставляет движок |
− | float _f40; | + | float _f40; //дублирует значение _f94 //выставляет движок |
− | float _f44; | + | float _f44; //Unknown, transmission gear 1 related |
− | float _f48; | + | float _f48; //Unknown, transmission gear 1 related |
− | float _f4C; | + | float _f4C; //0xBC23D70A //выставляет движок |
− | float _f50; | + | float _f50; //Unknown, transmission gear 2 related |
− | float _f54; | + | float _f54; //Unknown, transmission gear 2 related |
− | float _f58; | + | float _f58; //Unknown, transmission gear 2 related |
− | float _f5C; | + | float _f5C; //Unknown, transmission gear 3 related |
− | float _f60; | + | float _f60; //Unknown, transmission gear 3 related |
− | float _f64; | + | float _f64; //Unknown, transmission gear 3 related |
− | float _f68; | + | float _f68; //Unknown, transmission gear 4 related |
− | float _f6C; | + | float _f6C; //Unknown, transmission gear 4 related |
− | float _f70; | + | float _f70; //Unknown, transmission gear 4 related |
− | float _f74; | + | float _f74; //Unknown, transmission gear 5 related |
− | float _f78; | + | float _f78; //Unknown, transmission gear 5 related |
− | float _f7C; | + | float _f7C; //Unknown, transmission gear 5 related |
− | char cDriveType_TransmissionData; | + | char cDriveType_TransmissionData; //Q |
− | char cEngineType_TransmissionData; | + | char cEngineType_TransmissionData; //R |
− | byte nNumberOfGears_TransmissionData; | + | byte nNumberOfGears_TransmissionData;//M |
− | byte | + | byte padding; //null |
− | float | + | float fEngineAcceleration; fEngineAcceleration=fEngineAcceleration*2500*5(*2 for 4wd) //O |
− | float fEngineInertia; | + | float fEngineInertia; //P |
− | float | + | float fMaxVelocity; fMaxVelocity=fMaxVelocity*180.0 |
− | float | + | float fMaxVelocity/1.2; |
− | float _f94; | + | float _f94 //=-0.2 для всего транспорта, -0.05 для байков; //выставляет движок |
float _f98; | float _f98; | ||
− | float | + | float fBrakeDeceleration; fBrakeDeceleration=fBrakeDeceleration*2500; //S |
− | float fBrakeBias; | + | float fBrakeBias; //T |
− | float | + | float bABS; //U |
− | float fSteeringLock; | + | float fSteeringLock; //V |
− | float fTractionLoss; | + | float fTractionLoss; //K |
− | float fTractionBias; | + | float fTractionBias; //L |
− | float _fB4; // | + | float _fB4; //null |
− | float fSuspensionForceLevel; | + | float fSuspensionForceLevel; //a |
− | float fSuspensionDampingLevel; | + | float fSuspensionDampingLevel; //b |
− | float fSuspensionUpperLimit; | + | float fSuspensionUpperLimit; //d |
− | float fSuspensionLowerLimit; | + | float fSuspensionLowerLimit; //e |
− | float fSuspensionBias; | + | float fSuspensionBias; //f |
− | float fSuspensionAntiDive; | + | float fSuspensionAntiDive; //g |
− | DWORD dwflags <format=hex>; | + | DWORD dwflags <format=hex>; //ag |
− | float fSeatOffsetDistance; | + | float fSeatOffsetDistance; //aa |
− | DWORD dwMonetaryValue; | + | DWORD dwMonetaryValue; //ac |
− | byte bFrontLights; | + | byte bFrontLights; //ah |
− | byte bRearLights; | + | byte bRearLights; //ai |
byte padding[18]; | byte padding[18]; | ||
}; | }; | ||
Строка 573: | Строка 772: | ||
==== Структура версии VCS ==== | ==== Структура версии VCS ==== | ||
− | + | <source lang="html4strict"> | |
+ | |||
+ | 0x0 4b float ? =-0.2 for cars and -0.05 for bikes (set by engine) | ||
+ | 0x4 4b float ? = 0xBC23D70A (set by engine) | ||
+ | 0x8 4b float ? =-0.2 for cars and -0.05 for bikes (set by engine) | ||
+ | 0xC 4b float ? Unknown, Gear 1 ratio | ||
+ | 0x10 4b float ? Unknown, Gear 1 ratio | ||
+ | 0x14 4b float ? = 0xBC23D70A (set by engine) | ||
+ | 0x18 4b float ? Unknown, Gear 2 ratio | ||
+ | 0x1C 4b float ? Unknown, Gear 2 ratio | ||
+ | 0x20 4b float ? Unknown, Gear 2 ratio | ||
+ | 0x24 4b float ? Unknown, Gear 3 ratio | ||
+ | 0x28 4b float ? Unknown, Gear 3 ratio | ||
+ | 0x2C 4b float ? Unknown, Gear 3 ratio | ||
+ | 0x30 4b float ? Unknown, Gear 4 ratio | ||
+ | 0x34 4b float ? Unknown, Gear 4 ratio | ||
+ | 0x38 4b float ? Unknown, Gear 4 ratio | ||
+ | 0x3C 4b float ? Unknown, Gear 5 ratio | ||
+ | 0x40 4b float ? Unknown, Gear 5 ratio | ||
+ | 0x44 4b float ? Unknown, Gear 5 ratio | ||
+ | 0x48 4b float N fEngineAcceleration; fEngineAcceleration=fEngineAcceleration*12500(*2 for 4wd vehicles) | ||
+ | 0x4C 4b float P TransmissionData.fEngineInertia | ||
+ | 0x50 4b float ? Unknown, seems to be max gear ratio (all gear ratios are calculated using this value and number of gears) | ||
+ | 0x54 4b float ? value above /1.2 | ||
+ | 0x58 4b float ? =-0.2 for cars and -0.05 for bikes (set by engine) | ||
+ | 0x5C 1b char Q TransmissionData.nDriveType | ||
+ | 0x5D 1b char R TransmissionData.nEngineType | ||
+ | 0x5E 1b int M TransmissionData.nNumberOfGears | ||
+ | 0x5F 1b - - Padding | ||
+ | 0x60 4b float R fBrakeDeceleration; fBrakeDeceleration=fBrakeDeceleration*2500 | ||
+ | 0x64 4b float T fBrakeBias | ||
+ | 0x68 4b float V fSteeringLock | ||
+ | 0x6C 4b float K fTractionLoss | ||
+ | 0x70 4b float L fTractionBias | ||
+ | 0x74 4b float a fSuspensionForceLevel | ||
+ | 0x78 4b float b fSuspensionDampingLevel | ||
+ | 0x7C 4b float d suspension upper limit | ||
+ | 0x80 4b float e suspension lower limit | ||
+ | 0x84 4b float f suspension bias between front and rear | ||
+ | 0x88 4b float g suspension anti-dive multiplier | ||
+ | 0x8C 4b float aa fSeatOffsetDistance | ||
+ | 0x90 4b int ac nMonetaryValue | ||
+ | 0x94 1b int ah front lights | ||
+ | 0x95 1b int ai rear lights | ||
+ | 0x96 2b - Padding | ||
+ | 0x98 4b float D fDragMult | ||
+ | 0x9C 4b - Padding (maybe...) | ||
+ | 0xA0 4b float F CentreOfMass.x | ||
+ | 0xA4 4b float G CentreOfMass.y | ||
+ | 0xA8 4b float H CentreOfMass.z | ||
+ | 0xAC 4b - padding | ||
+ | 0xB0 4b int I nPercentSubmerged | ||
+ | 0xB4 4b float ? = fMass*0.8/nPercentSubmerged | ||
+ | 0xB8 4b float N TransmissionData.fMaxVelocity | ||
+ | 0xBC 4b float B fMass | ||
+ | 0xC0 4b float C fTurnMass | ||
+ | 0xC4 4b float J fTractionMultiplier | ||
+ | 0xC8 4b float Y fCollisionDamageMultiplier; fCollisionDamageMultiplier=fMass/2000*fCollisionDamageMultiplier | ||
+ | 0xCC 4b int ag handlingFlags | ||
+ | 0xD0 4b int af modelFlags | ||
+ | 0xD4 12b - Padding | ||
+ | |||
+ | |||
+ | </source> | ||
=== particle data === | === particle data === | ||
Строка 653: | Строка 915: | ||
Общее число записей: равно количеству автотранспорта в игре. Является частью структуры [[IDE]] секции cars. | Общее число записей: равно количеству автотранспорта в игре. Является частью структуры [[IDE]] секции cars. | ||
− | Размер | + | Размер массивов данных: 8. Если количество расцветок авто меньше 8, то пустые значения заполнены нулями. |
− | <source lang="cpp">typedef struct | + | <source lang="cpp">typedef struct carcolors1 |
{ | { | ||
byte ColorID1; //Номер первого цвета; | byte ColorID1; //Номер первого цвета; | ||
+ | };</source> | ||
+ | |||
+ | <source lang="cpp">typedef struct carcolors2 | ||
+ | { | ||
byte ColorID2; //Номер второго цвета; | byte ColorID2; //Номер второго цвета; | ||
};</source> | };</source> | ||
Строка 663: | Строка 929: | ||
{{Заготовка}} | {{Заготовка}} | ||
+ | |||
+ | Текстовую версию, декомпилированную с помощью [[Stories WRLD Tool]], можно [http://gtamodding.ru/w/images/8/88/Vcscols.rar cкачать] из архива gtamodding.ru. | ||
{{GTA_Stories-navi}} | {{GTA_Stories-navi}} | ||
[[Категория:GTA LCS]][[Категория:GTA VCS]][[Категория:Моддинг консольных версий]][[Категория:Форматы файлов]] | [[Категория:GTA LCS]][[Категория:GTA VCS]][[Категория:Моддинг консольных версий]][[Категория:Форматы файлов]] |
Текущая версия на 21:31, 22 марта 2018
*.dtz
- дамп памяти консоли, содержащий основные игровые ресурсы GTA LCS и GTA VCS. Файл GAME.dtz
упакован при помощи алгоритма сжатия deflate/zlib.
Данный файл представляет особый интерес в силу того, что что в нем содержатся конфигурационные данные, а также элементы интерфейса и модели некоторых игровых объектов (в основном это бинарные аналоги текстовых файлов в папке data и моделей с текстурными архивами в папке models из GTA VC).
Содержание |
Заголовок
Версия GTA LCS
В приведенной ниже таблице дана расшифровка заголовка DTZ:
0x0 [4b FourCC] - Сигнатура DTZ, читается как GTAG. 0x4 [4b int] - неизвестно, обычно = 1. 0x8 [4b int] - размер DTZ. 0xC [4b int] - размер данных без учёта таблиц для перераспределения файла в памяти. 0x10 [4b int] - таблица смещений для перераспределения указателей в памяти (Reallocation Table). 0x14 [4b int] - количество смещений в Reallocation Table. 0x18 [4b int] - ссылается на таблицу смещений на хеши jenkins, которые заменяются на указатели на таблицы виртуальных методов (vmt). 0x1C [2b short] - количество хешей jenkins в 1 секции таблицы. 0x1E [2b short] - количество хешей jenkins во 2 секции таблицы (методы рендера в Atomic моделей). 0x20 [4b int] - gpThePaths (пути). 0x24 [4b int] - CPools::ms_pBuildingPool (смещение на данные, относящиеся к размещению статичных обьектов (Buildings IPL)). 0x28 [4b int] - смещение на данные, относящиеся к размещению дорог (Treadable IPL). 0x2C [4b int] - смещение на данные, относящиеся к размещению динамических объектов (Dummy IPL). 0x30 [4b int] - EntryInfoNodes (связана со стримингом динамических объектов карты). 0x34 [4b int] - PtrNodes (связвна со стримингом карты, ссылается на IPL из секций Buildings, Treadables, Dummys). 0x38 [4b int] - количество IDE. 0x3C [4b int] - таблица смещений на бинарные IDE (ID присваивается по счетчику смещений от 0 до количества IDE). 0x40 [4b int] - таблица классов авто (normal, poorfamily...), 11 классов с возможностью указания 25 IDE ID авто для класса. 0x44 [4b int] - количество ID авто в каждом классе вышеуказанной таблицы. 0x48 [4b int] - смещение на данные игровых зон (info.zon, navig.zon). 0x4C [4b int] - CWorld::ms_aSectors Данные игровых секторов, ссылается на PtrNode 0x50 [4b int] - CWorld::ms_bigBuildingsList 4 указателя на PtrNode 0x54 [4b int] - количество строк в таблице 2dfx. 0x58 [4b int] - смещение на таблицу 2dfx эффектов для объектов из default.ide (строка 64 байт). 0x5С [4b int] - смещение на массив hardcoded индексов моделей. 0x60 [4b int] - смещение на блок загрузки текстурных архивов CHK (TexList). 0x64 [4b int] - неизвестно, равно 0. 0x68 [4b int] - смещение на блок загрузки COL2 файлов. 0x6C [4b int] - неизвестно, равно 0. 0x70 [4b int] - смещение на коллизию-пустышку. 0x74 [4b int] - смещение на аналог object.dat (строка 32 байта, 117 шт.). 0x78 [4b int] - смещение на палитру RGBA цветов, используемых в carcols.dat, 256 цветов. 0x7C [4b int] - CStreamingInfo CStreaming::ms_aInfoForModel[] (аналог GTA3PS*HR.DIR). 0x80 [4b int] - смещение на блок загрузки ANIM файлов и анимаций (ped.ifp). 0x84 [4b int] - fistfite.dat 0x88 [4b int] - PedAnimInfo[] 0x8C [4b int] - аналог ped.dat. 0x90 [4b int] - аналог pedstats.dat. 0x94 [4b int] - количество строк в cull.ipl. 0x98 [4b int] - смещение на аналог cull.ipl (строка 16 байт). 0x9C [4b int] - относится к окклюзиям (не используется, равно 0). 0xA0 [4b int] - относится к окклюзиям (не используется, равно 0). 0xA4 [4b int] - смещение на аналог waterpro.dat. 0xA8 [4b int] - смещение на аналог HANDLING.CFG. 0xAC [4b int] - смещение на аналог surface.dat. 0xB0 [4b int] - смещение на аналог timecyc.dat. 0xB4 [4b int] - смещение на аналог pedgrp.dat. 0xB8 [4b int] - смещение на аналог particle.cfg. 0xBC [4b int] - смещение на аналог weapon.dat. 0xC0 [4b int] - таблица смещений на клампы встроенных в DTZ MDL файлов. 0xC4 [4b int] - смещение на аналог CUTS.DIR. 0xC8 [4b int] - смещение на аналог ferry.dat (пути для парома). 0xCС [4b int] - смещение на аналоги tracks.dat и tracks2.dat. 0xD0 [4b int] - смещение на аналог flight.dat. 0xD4 [4b int] - смещение на menu.chk (сжат Deflate/ZLib алгоритмом). 0xD8 [4b int] - размер fonts.chk (реальный). 0xDС [4b int] - смещение на fonts.chk (сжат Deflate/ZLib алгоритмом).
Краткое описание содержимого
В текущий момент известно, что в GAME.dtz
содержатся следующие данные:
Описание | Аналогия из предыдущих частей серии | Оффсет на ресурс | Комментарии |
---|---|---|---|
Текстуры | |||
текстуры меню | frontend.txd | LCS PS2: 0x4E4A30
LCS PSP: VCS PS2: VCS PSP: |
директория с текстурами меню, запакована deflate/zlib алгоритмом (*) |
текстуры шрифтов (fonts.chk) | fonts.txd | LCS PS2: 0x4EF4D8
LCS PSP: VCS PS2: VCS PSP: |
директория с текстурами шрифтов, запакована deflate/zlib алгоритмом (*) |
текстуры particle-эффектов | particle.txd | LCS PS2: 0x4A1C28
LCS PSP: VCS PS2: VCS PSP: |
содержит все текстуры particle-эффектов (*) |
generic-текстуры | generic.txd, wheels.txd, vehicle.txd | LCS PS2: 0x4A1BFC
LCS PSP: VCS PS2: VCS PSP: |
содержит общие текстуры для автотранспорта и все текстуры колес (*) |
значки радара | hud.txd | LCS PS2: 0x4A1BE4
LCS PSP: VCS PS2: VCS PSP: |
содержит текстуры для hud-а (*) |
текстуры радара | radarNN.txd | - | только в GTA VCS, запакованы deflate/zlib алгоритмом |
Анимация | |||
? | ped.ifp | ||
? | swim.ifp | только в GTA VCS | |
? | fight.ifp | только в GTA VCS | |
? | driveby.ifp | только в GTA VCS | |
Коллизия | |||
коллизии пешеходов (**) | peds.col | одна за всех :) | |
коллизии автотранспорта (**) | vehicles.col | ||
коллизии оружия (**) | weapons.col | ||
коллизии ко всем моделям из MasterWRLD, а так же к скриптовым объектам из GTA3XXX.IMG архива (**) | generic.col | ||
коллизии всех остальных объектов в игре (**) | содержат только ограничивающие коробку и сферу, всё остальное - в стиминг-COL2 из GTA3XXX.IMG | ||
Модели | |||
обруч (***) | race_ring.dff | VCS PS2: E02E3F | |
стрелка (***) | Shape .dff | LCS PS2: 30643F
VCS PS2: 28233F |
|
длинный цилиндр (***) | zonecyla.dff | VCS PS2: С4223F | |
шарик (***) | zoneaphr.dff | VCS PS2: E8B03E | |
конус входа (***) | entercone.dff | VCS PS2: A0B03E | |
цилиндр (***) | zonecylb.dff | LCS PS2: 64EA3F
VCS PS2: 70AD3E |
|
стрелка 2 (***) | arrow.dff | LCS PS2: 800643
VCS PS2: 882938 9C7D3E |
|
ЛОДы колес (***) | wheels.dff | LCS PS2: 800643
E8C249 50C349 B8C349 ECC349 88C449 94EB49 |
|
колесо 1 (***) | wheels.dff | LCS PS2: 80С249 | |
колесо 2 (***) | wheels.dff | LCS PS2: B4C249 | |
колесо 3 (***) | wheels.dff | LCS PS2: 1CC349 | |
колесо 4 (***) | wheels.dff | LCS PS2: 84C349 | |
колесо 5 (***) | wheels.dff | LCS PS2: 20C449 | |
колесо 6 (***) | wheels.dff | LCS PS2: 54C449 | |
LOD самолета (***) | air_vlo.dff | LCS PS2: 2CEB49 | |
колесо 7 (***) | wheels.dff | LCS PS2: 60EB49 | |
IDE / IPL / DAT | |||
аналог IDE (**) | *.ide | содержит все данные инициализации моделей, текстур и коллизий | |
аналог IPL (**) | *.ipl | содержит все координаты для расстановки коллизий и генерика в игре | |
цвета автомобилей (**) | carcols.dat | ||
цвета пешеходов (**) | pedcols.dat | только в GTA VCS | |
cullzone data | cullzone.dat | ||
fistfite data | fistfite.dat | ||
handling data (**) | handling.dat | LCS PS2: 0x1647A0
LCS PSP: VCS PS2: VCS PSP: |
в LCS и VCS структуры отличаются |
info.zon | |||
map.zon | |||
object data | object.dat | ||
particle data | particle.cfg | LCS PS2: 0x3917D0
|
характеристики спецэффектов |
pedstats data | pedstats.dat | LCS PS2:
часть 1 - часть 2 - часть 3 - LCS PSP:
VCS PS2: часть 1 - часть 2 - VCS PSP:
|
характеристики пешеходов
LCS PS2: часть 1 - 15 items часть 2 - 18 items часть 3 - 9 items LCS PSP: 42 items VCS PS2: часть 1 - 6 items часть 2 - 36 items VCS PSP: 42 items |
timecyc data | timecyc.dat | характеристики погоды | |
waterpro data | waterpro.dat | данные водных поверхностей | |
weapon data | weapon.dat | LCS PS2:0x40A980 VCS PS2: |
|
Разное | |||
SDT-файлы. | LCS:0x377720
|
только в PSP-версиях |
Внимание!
- Оффсеты указаны для распакованного game.dtz.
- Данные, помеченные (*) открываются при помощи GTA Stories Texture Explorer.
- Данные, помеченные (**) просматриваются при помощи Stories WRLD Tool.
- Данные, помеченные (***) импортируются в 3D MAX при помощи MDL importer.
Структуры
Ниже представлены некоторые структуры описанных выше данных.
IDE
IDE в DTZ представлена в виде глобальной бинарной таблицы, имеющей данные для всех моделей в игре, будь то автомобили, пешеходы или простые объекты.
Количество IDE и смещение на таблицу IDE можно узнать в DTZ по смещениям 0x38 и 0x3C для всех консольных игр. Таблица IDE представляет собой указатели на бинарные строки IDE, ID модели присваивается по счетчику указателей от 0 до кол-ва IDE. Если указатель равен 0 - значит данный ID свободен.
Структура бинарной строки IDE
Каждая бинарная строка IDE имеет глобальные данные и побочные, зависящие от типа загружаемой IDE.
Глобальные данные занимают 44 байт и имеют структуру:
4b - Свободное место для размещения указателя в памяти. 4b - Свободное место для размещения указателя в памяти. 4b - имя IDE/модели, хешированное по CRC32 алгоритму. 4b - Свободное место для размещения указателя в памяти. 1b - тип IDE, определяет какие побочные данные нужно загружать после глобальных данных. 1b - кол-во 2dfx. 2b - unknown. 4b - смещение на коллизию модели. 2b - 2dfx ID 2b - unknown (0xFFFF) 2b - unknown (обычно нули). 2b - номер наименования текстурного файла в таблице TexList. 4b - хеш типа секции. 4b - unknown (обычно нули). 4b - Дистанция прорисовки (у автомобилей и пешеходов = 0xFFFFFFFF).
Побочные данные:
Секция типа 1 (objs)
Секция типа 3 (tobj)
Секция типа 6 (cars)
1b - текущий ID primary цвета машины (в памяти) в файле всегда = 0 1b - текущий ID secondary цвета машины (в памяти) в файле всегда = 0 14b - имя авто в GXT 4b - размер колеса 2b - ID модели колеса 2b - номер строки в бинарной HANDLING.CFG 1b - Количество дверей 1b - Class (-1 - ignore, 0 - normal, 1 - poorfamily, 2 - richfamily, 3 - executive, 4 - worker, 5 - big, 6 - taxi, 7 - moped, 8 - motorbike, 9 - leisureboat, 10 - workerboat) 1b - Level 1b - unknown 4b - Frequency 4b - unknown (обычно нули). 16b - (3x float single + 4b выравнивание) - позиция headlights 16b - (3x float single + 4b выравнивание) - позиция taillights 16b - (3x float single + 4b выравнивание) - позиция ped_frontseat 16b - (3x float single + 4b выравнивание) - позиция ped_backseat 16b - (3x float single + 4b выравнивание) - позиция exhaust 4b - CompRules 4b - unknown (0x4479FF5C) возможно идентификатор секции указателей перекраски авто. 100b (25х longint) - глобальный массив указателей на цвета материалов модели, окрашенных primary цветом (заполняется указателями из аналогичной секции самой модели, при обнулении в памяти машина перестанет менять цвет). 100b (25х longint) - глобальный массив указателей на цвета материалов модели, окрашенных secondary цветом (заполняется указателями из аналогичной секции самой модели, при обнулении в памяти машина перестанет менять цвет). 8b - массив ID primary цветов из палитры carcols.dat 8b - массив ID secondary цветов из палитры carcols.dat 1b - общее кол-во используемых цветов. 1b - индекс цветовой схемы машины из массивов цветов (в памяти постоянно рандомизируется от 0 до кол-ва цветов) в файле всегда = 0 1b - текущий ID primary цвета машины (в памяти) в файле всегда = -1 1b - текущий ID secondary цвета машины (в памяти) в файле всегда = -1 4b - amount the normals are splayed by to improve the environment mapping on PSP 4b - unknown 4b - Anims ID (van, bikeh ,bikev и т.д.; -1 = null)
Секция типа 7 (peds)
cull.ipl
Строка занимает 16 байт и выглядит следующим образом: (Координаты содержат реальные округленные значения)
2b: Box Lower X Coord 2b: Box Upper X Coord 2b: Box Lower Y Coord 2b: Box Upper Y Coord 2b: Box Lower Z Coord 2b: Box Upper Z Coord 2b: Flag 1 2b: Flag 2
ped.dat
4b dword: MaskID 4b float: Walkspeed* 4b float: Runspeed* 4b float: Fastrunspeed* 4b float: Flee Distance 4b float: Heading Change 4b dword: Threats Mask 4b dword: Avoid Mask * умножить на 50
weapons data
Состоит из двух CWeaponModelInfo. Чтение происходит напрямую из заголовка DaTa Zlib.
Структура версии LCS
Заголовок
typedef struct Weapon_lcs_header { offset CWeaponModelInfo1; offset CWeaponModelInfo2; };
данные weapons
Общее число записей: 38
typedef struct vFireOffset{ float x; float y; float z; }; typedef struct vTimeStrc{ float a; float b; float c; }; typedef struct weapondata{ int iFireType; float fRange; int iFiringRate; int iReload; int iAmountOfAmmunition; int iDamage; float fSpeed; float fRadius; float fLifeSpan; float fSpread; DWORD dwPadding1; DWORD dwPadding2; vFireOffset FireOffset; DWORD dwZero; DWORD dwAnim_id; vTimeStrc time1; vTimeStrc time2; float unk; DWORD dwModelID; DWORD dwModelID2; DWORD dwweapon_slot; DWORD dwFlags <format=hex>; };
Структура версии VCS
Общее число записей: 40
typedef struct vFireOffset{ float x; float y; float z; }; typedef struct vTimeStrc{ float a; float b; float c; }; typedef struct weapondata{ DWORD dwType; int iFireType; float fRange; int iFiringRate; int iReload; int iAmountOfAmmunition; int iDamage; float fSpeed; float fRadius; float fLifeSpan; float fSpread; DWORD dwPadding; //padding (0xAA) vFireOffset m_vFireOffset; //вектор DWORD _f3C; //всегда нуль DWORD _f40; //целочисленное значение DWORD _f44; //DWORD ? unknown vTimeStrc m_vTimeStrc; vTimeStrc m_vTimeStrc; float unk; DWORD dwModelID; DWORD dwModel2ID; DWORD dwWeaponSlot DWORD _f6C; //padding (0xAA) };
pedstats data
Структура версии LCS
Заголовок
Размер массива адресов: 42. Чтение происходит напрямую из заголовка DaTa Zlib.
typedef struct pedstat_lcs_header { offset Pedstat_offset; };
данные pedstats
На PS2 разделены на три фрагмента: 15+18+9=42. Общее число записей: 42.
typedef struct pedstat_lcs{ int iNumber; char name[24]; float fFleeDistance; float fHeadingChangeRate; byte btFear; byte btTemper; byte btLawfullness; byte btView; float fAttackStrength; float fDefendWeakness; WORD btStatFlags; byte padding[2]; };
Структура версии VCS
Общее число записей: 42.
На PS2 разделены на два фрагмента: 6+36=42
typedef struct pedstat_vcs{ int iNumber; float fFleeDistance; float fHeadingChangeRate; float fAttackStrength; float fDefendWeakness; byte btStatFlags; byte btZero; byte btFear; byte btTemper; byte btLawfullness; byte btView; char name[26]; };
handling data
Структура версии LCS
Заголовок
Чтение происходит напрямую из заголовка DaTa Zlib.
typedef struct lcs_handling_header { float unknow; float unknow; float unknow; float unknow; float unknow; float null; float null; float null; };
данные handling
Общее число записей: 81.
typedef struct lcs_handling_item { float fMass; //B float fTurnMass; //C float fTractionMultiplier;//J float fCollisionDamageMultiplier; (fCollisionDamageMultiplier = (fMass/2000.0)*fCollisionDamageMultiplier) //ab DWORD CarId; float 1/fMass; float fDragMult; //D float _f1C; //null float CentreOfMassX; //F float CentreOfMassY; //G float CentreOfMassZ; //H float _f2C; //null int nPercentSubmerged //I float (fMass*0.8)/nPercentSubmerged; float _f38; //дублирует значение _f94 //выставляет движок float _f3C; //0xBC23D70A //выставляет движок float _f40; //дублирует значение _f94 //выставляет движок float _f44; //Unknown, transmission gear 1 related float _f48; //Unknown, transmission gear 1 related float _f4C; //0xBC23D70A //выставляет движок float _f50; //Unknown, transmission gear 2 related float _f54; //Unknown, transmission gear 2 related float _f58; //Unknown, transmission gear 2 related float _f5C; //Unknown, transmission gear 3 related float _f60; //Unknown, transmission gear 3 related float _f64; //Unknown, transmission gear 3 related float _f68; //Unknown, transmission gear 4 related float _f6C; //Unknown, transmission gear 4 related float _f70; //Unknown, transmission gear 4 related float _f74; //Unknown, transmission gear 5 related float _f78; //Unknown, transmission gear 5 related float _f7C; //Unknown, transmission gear 5 related char cDriveType_TransmissionData; //Q char cEngineType_TransmissionData; //R byte nNumberOfGears_TransmissionData;//M byte padding; //null float fEngineAcceleration; fEngineAcceleration=fEngineAcceleration*2500*5(*2 for 4wd) //O float fEngineInertia; //P float fMaxVelocity; fMaxVelocity=fMaxVelocity*180.0 float fMaxVelocity/1.2; float _f94 //=-0.2 для всего транспорта, -0.05 для байков; //выставляет движок float _f98; float fBrakeDeceleration; fBrakeDeceleration=fBrakeDeceleration*2500; //S float fBrakeBias; //T float bABS; //U float fSteeringLock; //V float fTractionLoss; //K float fTractionBias; //L float _fB4; //null float fSuspensionForceLevel; //a float fSuspensionDampingLevel; //b float fSuspensionUpperLimit; //d float fSuspensionLowerLimit; //e float fSuspensionBias; //f float fSuspensionAntiDive; //g DWORD dwflags <format=hex>; //ag float fSeatOffsetDistance; //aa DWORD dwMonetaryValue; //ac byte bFrontLights; //ah byte bRearLights; //ai byte padding[18]; };
Текстовую версию, декомпилированную с помощью Stories WRLD Tool, можно cкачать из архива gtamodding.ru.
Структура версии VCS
0x0 4b float ? =-0.2 for cars and -0.05 for bikes (set by engine) 0x4 4b float ? = 0xBC23D70A (set by engine) 0x8 4b float ? =-0.2 for cars and -0.05 for bikes (set by engine) 0xC 4b float ? Unknown, Gear 1 ratio 0x10 4b float ? Unknown, Gear 1 ratio 0x14 4b float ? = 0xBC23D70A (set by engine) 0x18 4b float ? Unknown, Gear 2 ratio 0x1C 4b float ? Unknown, Gear 2 ratio 0x20 4b float ? Unknown, Gear 2 ratio 0x24 4b float ? Unknown, Gear 3 ratio 0x28 4b float ? Unknown, Gear 3 ratio 0x2C 4b float ? Unknown, Gear 3 ratio 0x30 4b float ? Unknown, Gear 4 ratio 0x34 4b float ? Unknown, Gear 4 ratio 0x38 4b float ? Unknown, Gear 4 ratio 0x3C 4b float ? Unknown, Gear 5 ratio 0x40 4b float ? Unknown, Gear 5 ratio 0x44 4b float ? Unknown, Gear 5 ratio 0x48 4b float N fEngineAcceleration; fEngineAcceleration=fEngineAcceleration*12500(*2 for 4wd vehicles) 0x4C 4b float P TransmissionData.fEngineInertia 0x50 4b float ? Unknown, seems to be max gear ratio (all gear ratios are calculated using this value and number of gears) 0x54 4b float ? value above /1.2 0x58 4b float ? =-0.2 for cars and -0.05 for bikes (set by engine) 0x5C 1b char Q TransmissionData.nDriveType 0x5D 1b char R TransmissionData.nEngineType 0x5E 1b int M TransmissionData.nNumberOfGears 0x5F 1b - - Padding 0x60 4b float R fBrakeDeceleration; fBrakeDeceleration=fBrakeDeceleration*2500 0x64 4b float T fBrakeBias 0x68 4b float V fSteeringLock 0x6C 4b float K fTractionLoss 0x70 4b float L fTractionBias 0x74 4b float a fSuspensionForceLevel 0x78 4b float b fSuspensionDampingLevel 0x7C 4b float d suspension upper limit 0x80 4b float e suspension lower limit 0x84 4b float f suspension bias between front and rear 0x88 4b float g suspension anti-dive multiplier 0x8C 4b float aa fSeatOffsetDistance 0x90 4b int ac nMonetaryValue 0x94 1b int ah front lights 0x95 1b int ai rear lights 0x96 2b - Padding 0x98 4b float D fDragMult 0x9C 4b - Padding (maybe...) 0xA0 4b float F CentreOfMass.x 0xA4 4b float G CentreOfMass.y 0xA8 4b float H CentreOfMass.z 0xAC 4b - padding 0xB0 4b int I nPercentSubmerged 0xB4 4b float ? = fMass*0.8/nPercentSubmerged 0xB8 4b float N TransmissionData.fMaxVelocity 0xBC 4b float B fMass 0xC0 4b float C fTurnMass 0xC4 4b float J fTractionMultiplier 0xC8 4b float Y fCollisionDamageMultiplier; fCollisionDamageMultiplier=fMass/2000*fCollisionDamageMultiplier 0xCC 4b int ag handlingFlags 0xD0 4b int af modelFlags 0xD4 12b - Padding
particle data
Структура версии LCS
Общее число записей: 82. Заголовок секции отсутствует. Чтение происходит напрямую из заголовка DaTa Zlib.
typedef struct particle { DWORD dwID; char Name[20]; //A; float CreateRange; //CR; float DefInitRadius; //E; float ExpRate; //F; word InitAngle; //GZA; word ChangeTimeA; //IZA; word AngleChangeAmount; //HZA; word InitZRadius; //HZR; float ChangeTimeZ; //GZR; float ZRadiusChangeAmount; //IZR; word FadeTime; //H; word InitInten; //G; word FadeAmount; //I; word InitIntenA; //GA; word FadeTimeA; //HA; word FadeAmountA; //IA; byte StartAnimFr; //K; byte FinalAnimFr; //L; word AnimSpeed; //J; int RotSpeed; //M; float GravitAccel; //N; int DragFrictDeccel; //O; int DefLifeSpan; //P; float PosRandomError; //Q; float VelRandomError; //R; float ExpRateError; //S; int RotRateError; //T; int LSErrorShape; //U; float TrailLengthMult; //V; int Flags <format=hex>; //Z; byte ColourR; //B; byte ColourG; //C; word ColourB; //D; byte InitColourVar; //CV; byte FadeColourR; //B2; byte FadeColourG; //C2; byte FadeColourB; //D2; DWORD unk1; int ColourFadeTime; //FT; float StretchTexX; //WX; float StretchTexY; //WY; float WindFactor; //WI; DWORD unk2; };
Структура версии VCS
carcols data
Структура версии LCS
Секция col
Общее число записей: 1. Заголовок секции отсутствует. Чтение происходит напрямую из заголовка DaTa Zlib.
Размер массива данных: 102. Лимит: 256 (кушает в памяти 1024 байт)
typedef struct colors { byte Red; //Kрасный цвет; byte Grey; //Зелёный цвет; byte Blue; //Синий цвет; byte Alpha; //Альфа канал цвета; };
Секция car
Общее число записей: равно количеству автотранспорта в игре. Является частью структуры IDE секции cars.
Размер массивов данных: 8. Если количество расцветок авто меньше 8, то пустые значения заполнены нулями.
typedef struct carcolors1 { byte ColorID1; //Номер первого цвета; };
typedef struct carcolors2 { byte ColorID2; //Номер второго цвета; };
Структура версии VCS
Текстовую версию, декомпилированную с помощью Stories WRLD Tool, можно cкачать из архива gtamodding.ru.