Адреса Памяти (SA) — различия между версиями
Материал из GTAModding.ru
DK22 (обсуждение | вклад) (→Ссылки) |
НикИТОС (обсуждение | вклад) |
||
(не показана 151 промежуточная версия 6 участников) | |||
Строка 1: | Строка 1: | ||
− | |||
{{TocRight}} | {{TocRight}} | ||
− | Указанные ниже '''адреса памяти''' действительны только для GTA San andreas (gta_sa.exe) версии 1.0, если не указано иное. В других версиях игры | + | Указанные ниже '''адреса памяти''' действительны только для GTA San andreas (gta_sa.exe) версии 1.0, если не указано иное. В других версиях игры, адреса могут не совпадать или не работать. |
== Список статичных адресов == | == Список статичных адресов == | ||
Строка 18: | Строка 17: | ||
* 0x8CB7A5 - [byte] Текущая радиостанция - ID | * 0x8CB7A5 - [byte] Текущая радиостанция - ID | ||
* 0xB700F0 - [dword] Текущий автомобиль - ID (из vehicle.ide) - не для мотоциклов | * 0xB700F0 - [dword] Текущий автомобиль - ID (из vehicle.ide) - не для мотоциклов | ||
− | * 0x863984 - [ | + | * 0x863984 - [float] Гравитация (стандартное значение - 0.008) |
* 0xB7CB84 - [dword] Глобальный таймер в ms (миллисекунды) | * 0xB7CB84 - [dword] Глобальный таймер в ms (миллисекунды) | ||
* 0xB7CB64 - [float] Скорость игры в процентах | * 0xB7CB64 - [float] Скорость игры в процентах | ||
Строка 31: | Строка 30: | ||
* 0xB6F065 - [byte/boolean] Широкий экран (вид во время катсцен в миссиях, это не опция дисплея) | * 0xB6F065 - [byte/boolean] Широкий экран (вид во время катсцен в миссиях, это не опция дисплея) | ||
* 0xA4A948 - Очки в миссий Лоурайдер (Танцы на машинах) | * 0xA4A948 - Очки в миссий Лоурайдер (Танцы на машинах) | ||
− | * 0xA4EC20 - Очки в | + | * 0xA4EC20 - Очки в мини игре танцев |
* 0xB790B8 - [byte] Число фотографий разных мест (4 bytes) | * 0xB790B8 - [byte] Число фотографий разных мест (4 bytes) | ||
* 0xA9AD74 - [byte] Число закрашенных граффити (4 bytes) | * 0xA9AD74 - [byte] Число закрашенных граффити (4 bytes) | ||
* 0xB791E4 - [byte] Число найденных подков (4 bytes) | * 0xB791E4 - [byte] Число найденных подков (4 bytes) | ||
* 0xB791EC - [byte] Число найденных ракушек(4 bytes) | * 0xB791EC - [byte] Число найденных ракушек(4 bytes) | ||
+ | '''Примечание:''' | ||
+ | Если задать максимальное значение в адресах некоторых статистических данных, то игра покажет сообщение и выдаст бонусы (например, за все найденные ракушки). | ||
* 0x716642 - [float] Изменить тяжёлые облака (?) | * 0x716642 - [float] Изменить тяжёлые облака (?) | ||
Строка 52: | Строка 53: | ||
* 0xA49F10 - [dword] Прогресс с Millie | * 0xA49F10 - [dword] Прогресс с Millie | ||
'''Примечание:''' | '''Примечание:''' | ||
− | + | Эти шесть адресов для девушек используются только с оригинальным main.scm. Установка значения на 100 (100%) даст вас 100 прогресс с опр. девушкой и разблокирует её подарки. | |
* 0xB79108 - Количество свиданий с девушками | * 0xB79108 - Количество свиданий с девушками | ||
* 0xB79100 - Текущее количество подружек | * 0xB79100 - Текущее количество подружек | ||
Строка 72: | Строка 73: | ||
* 0xB6F980 - Указатель на начало пула транспорта (CVehicle) | * 0xB6F980 - Указатель на начало пула транспорта (CVehicle) | ||
* 0xB74494 - Содержит указатель. Этот указатель: | * 0xB74494 - Содержит указатель. Этот указатель: | ||
− | * +0 = Содержит указатель на первый элемент в пуле CVehicle | + | ** +0 = Содержит указатель на первый элемент в пуле CVehicle |
− | * +4 = Содержит указатель на карту байтов показывающую какие элементы сейчас используются в пуле CVehicle | + | ** +4 = Содержит указатель на карту байтов показывающую какие элементы сейчас используются в пуле CVehicle |
− | * +8 = [dword] максимальное кол-во элементов в пуле CVehicle | + | ** +8 = [dword] максимальное кол-во элементов в пуле CVehicle |
− | * +12 = [dword] текущее кол-во элементов в пуле CVehicle | + | ** +12 = [dword] текущее кол-во элементов в пуле CVehicle |
* 0x86329C - список доступных имён команд (?) | * 0x86329C - список доступных имён команд (?) | ||
* 0xC17054 - HWND на главное окно игры | * 0xC17054 - HWND на главное окно игры | ||
Строка 88: | Строка 89: | ||
** 0 = Включено | ** 0 = Включено | ||
** 1 = Отключено | ** 1 = Отключено | ||
+ | * 0xA444A0 - Включён ли HUD опкодом 0826: | ||
+ | ** 0 - выключен | ||
+ | ** 1 - включён | ||
* 0xC813E0 - [float] Скорость ветра по оси X | * 0xC813E0 - [float] Скорость ветра по оси X | ||
* 0xC813E4 - [float] Скорость ветра по оси Y | * 0xC813E4 - [float] Скорость ветра по оси Y | ||
Строка 276: | Строка 280: | ||
**1 = мышь + клавиатура | **1 = мышь + клавиатура | ||
− | == | + | ===Интерфейс=== |
+ | * 0x866B74 - [float] Ширина радара (ось X) | ||
+ | * 0x866B78 - [float] Длина радара (ось Y) | ||
+ | * 0xBAB22C - [byte] Строка здоровья/цвет противника/красный маркер/любой красный текст (RGBA, 4 байта) | ||
+ | * 0xBAB230 - [byte] Цвет денег/цвет названия машины/любой зелёный текст (RGBA, 4 байта) | ||
+ | * 0xBAB238 - [byte] Белый цвет (RGBA, 4 байта) | ||
+ | * 0xBAB240 - [byte] Main menu title border (RGBA, 4 байта) | ||
+ | * 0xBAB244 - [byte] Уровень розыска/жёлтый цвет (RGBA, 4 байта) | ||
+ | * 0xBAB24C - [byte] Цвет названия радиостанции (RGBA, 4 байта) | ||
+ | '''Примечание''': изменяется интерфейс в хекс, поэтому значение необходимо писать так: | ||
+ | [color=darkred]0xFFFFFFFF[/color] | ||
+ | RGBA кодировку следует писать наоборот (например, 00FF00FF (зеленый) --> FF00FF00) | ||
+ | |||
+ | ===Указатели на CParticleData=== | ||
+ | * 0xA9AE00 = [dword] Указатель на prt_blood (CParticleData) | ||
+ | * 0xA9AE04 = [dword] Указатель на prt_boatsplash (CParticleData) | ||
+ | * 0xA9AE08 = [dword] Указатель на prt_bubble (CParticleData) | ||
+ | * 0xA9AE0C = [dword] Указатель на prt_cardebris (CParticleData) | ||
+ | * 0xA9AE10 = [dword] Указатель на prt_collisionsmoke (CParticleData) | ||
+ | * 0xA9AE14 = [dword] Указатель на prt_gunshell (CParticleData) | ||
+ | * 0xA9AE18 = [dword] Указатель на prt_sand (CParticleData) | ||
+ | * 0xA9AE1C = [dword] Указатель на prt_sand2 (CParticleData) | ||
+ | * 0xA9AE20 = [dword] Указатель на prt_smoke_huge (CParticleData) | ||
+ | * 0xA9AE24 = [dword] Указатель на prt_smokeII_3_expand (CParticleData) | ||
+ | * 0xA9AE28 = [dword] Указатель на prt_spark (CParticleData) | ||
+ | * 0xA9AE2C = [dword] Указатель на prt_spark_2 (CParticleData) | ||
+ | * 0xA9AE30 = [dword] Указатель на prt_splash (CParticleData) | ||
+ | * 0xA9AE34 = [dword] Указатель на prt_wake (CParticleData) | ||
+ | * 0xA9AE38 = [dword] Указатель на prt_watersplash (CParticleData) | ||
+ | * 0xA9AE3C = [dword] Указатель на prt_wheeldirt (CParticleData) | ||
+ | * 0xA9AE40 = [dword] Указатель на prt_glass (CParticleData) | ||
+ | |||
+ | ==Классы и структуры== | ||
===CPlaceable (Перемещаемые обьекты)=== | ===CPlaceable (Перемещаемые обьекты)=== | ||
− | + | ||
− | + | 0x0000 | DWORD __vmt // Указатель на виртуальную таблицу методов для этого объекта | |
− | + | 0x0004 | RwV3D pos // Позиция [http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#RwV3D RwV3D] | |
− | + | 0x0010 | float angle // Угол по оси Z | |
− | + | 0x0014 | RwMatrix *matrix // Указатель на матрицу позиции и вращения | |
− | * | + | |
===CEntity (Игровые субьекты)=== | ===CEntity (Игровые субьекты)=== | ||
Строка 310: | Строка 345: | ||
* CPhysical +0xA0 = [float] Плавучесть | * CPhysical +0xA0 = [float] Плавучесть | ||
* CPhysical +0xA4 = [RwV3D] Центр массы | * CPhysical +0xA4 = [RwV3D] Центр массы | ||
− | * CPhysical +0xB9 = [word] | + | * CPhysical +0xB9 = [word] Количество субьектов, с которыми соприкасается субьект |
+ | * CPhysical +0xBC = [24 bytes] 6 субьектов, с которыми соприкасается субьект | ||
* CPhysical +0xD8 = [float] Величина урона | * CPhysical +0xD8 = [float] Величина урона | ||
− | * CPhysical +0xDC = [dword] Субьект, который нанёс урон этому субьекту (CPhysical) | + | * CPhysical +0xDC = [dword] Субьект, который нанёс урон этому субьекту ([http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#CPhysical_.28.D0.A4.D0.B8.D0.B7.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D0.B5_.D1.81.D1.83.D0.B1.D1.8C.D0.B5.D0.BA.D1.82.D1.8B.29 CPhysical]) |
* CPhysical +0xE0 = [RwV3D] Координаты столкновения объекта в локальной системе координат | * CPhysical +0xE0 = [RwV3D] Координаты столкновения объекта в локальной системе координат | ||
* CPhysical +0xEC = [RwV3D] Координаты столкновения объекта | * CPhysical +0xEC = [RwV3D] Координаты столкновения объекта | ||
Строка 329: | Строка 365: | ||
** 10 - правое крыло? | ** 10 - правое крыло? | ||
** 17 - правая передняя фара? | ** 17 - правая передняя фара? | ||
− | * CPhysical +0xFС = [dword] | + | * CPhysical +0xFС = [dword] Субьект, к которому прикреплён этот субьект ([http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#CPhysical_.28.D0.A4.D0.B8.D0.B7.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D0.B5_.D1.81.D1.83.D0.B1.D1.8C.D0.B5.D0.BA.D1.82.D1.8B.29 CPhysical]) |
* CPhysical +0x100 = [RwV3D] Координаты прицепления субьекта | * CPhysical +0x100 = [RwV3D] Координаты прицепления субьекта | ||
− | * CPhysical + | + | * CPhysical +0x10C = [RwV3D] Углы прицепления субьекта |
+ | * CPhysical +0x128 = [dword] Субьект, столкновения с которым игнорируются ([http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#CPhysical_.28.D0.A4.D0.B8.D0.B7.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D0.B5_.D1.81.D1.83.D0.B1.D1.8C.D0.B5.D0.BA.D1.82.D1.8B.29 CPhysical]) | ||
+ | * CPhysical +0x12C = [float] Уровень освещённости поверхности, с которой соприкасается субьект (0.0 - 0.5) | ||
+ | * CPhysical +0x134 = [CShadowData*] Указатель на структуру, которая содержит информацию о тени для физического субьекта (обычно, педа) | ||
===CPed (Пешеходы)=== | ===CPed (Пешеходы)=== | ||
Строка 342: | Строка 381: | ||
** 154 = спринт (бежит с ускорением) | ** 154 = спринт (бежит с ускорением) | ||
** 205 = бежит | ** 205 = бежит | ||
+ | * CPed +0x294 Класс CPedSound (размер - 0x100 байт) | ||
* CPed +0x46C = [dword] Проверка игрока: | * CPed +0x46C = [dword] Проверка игрока: | ||
** 0 = в воздухе/воде | ** 0 = в воздухе/воде | ||
Строка 364: | Строка 404: | ||
** 9 = не создавать пикап оружия после смерти | ** 9 = не создавать пикап оружия после смерти | ||
* CPed +0x47C = Указатель на структуру анимации | * CPed +0x47C = Указатель на структуру анимации | ||
− | * CPed +0x4D4 = [dword] | + | * CPed +0x4D4 = [dword] Идентификатор animGroup |
* CPed +0x4DF = Статус проигрывания текущей анимации: | * CPed +0x4DF = Статус проигрывания текущей анимации: | ||
** 0 = ничего | ** 0 = ничего | ||
** 61 = начало/остановка | ** 61 = начало/остановка | ||
** 62 = идёт цикл | ** 62 = идёт цикл | ||
− | * CPed +0x4F4 = [dword] | + | * CPed +0x4F4 = [dword] Текущее оружие (RpClump) |
− | * CPed +0x4F8 = [dword] | + | * CPed +0x4F8 = [dword] Вспышка текущего оружия (RpClump) |
− | * CPed + | + | * CPed +0x4FC = [dword] Очки (RpClump) |
− | ** | + | * CPed +0x500 = [dword] Указатель на тип очков |
− | * | + | * CPed +0x504 = [word] Мультипликатор прозрачности вспышки оружия (первое оружие) |
+ | * CPed +0x508 = [word] Мультипликатор прозрачности вспышки оружия (второе оружие) | ||
* CPed +0x50C = начало класса CPedIK | * CPed +0x50C = начало класса CPedIK | ||
** CPed +0x50C = [dword] Указатель на этого педа (CPed) | ** CPed +0x50C = [dword] Указатель на этого педа (CPed) | ||
Строка 379: | Строка 420: | ||
** CPed +0x514 = [float] Поворот туловища по оси X (радианы) | ** CPed +0x514 = [float] Поворот туловища по оси X (радианы) | ||
** CPed +0x518 = [float] m_fSlopePitch | ** CPed +0x518 = [float] m_fSlopePitch | ||
− | ** CPed + | + | ** CPed +0x51C = [float] m_fSlopePitchLimitMult |
** CPed +0x520 = [float] m_fSlopeRoll | ** CPed +0x520 = [float] m_fSlopeRoll | ||
** CPed +0x524 = [float] m_fBodyRoll | ** CPed +0x524 = [float] m_fBodyRoll | ||
Строка 404: | Строка 445: | ||
* CPed +0x544 = [float] Максимальное здоровье | * CPed +0x544 = [float] Максимальное здоровье | ||
* CPed +0x548 = [float] Броня | * CPed +0x548 = [float] Броня | ||
− | * CPed +0x558 = [float] Угол игрока по Z | + | * CPed +0x558 = [float] Угол игрока по оси Z (в радианах) |
+ | * CPed +0x55C = [float] Угол игрока по оси Z при прицеливании (в радианах) | ||
+ | * CPed +0x560 = [float] Скорость поворота | ||
* CPed +0x568 = [dword] Текущая машина, с которой вы находитесь в контакте | * CPed +0x568 = [dword] Текущая машина, с которой вы находитесь в контакте | ||
* CPed +0x584 = [dword] Текущий Entity (объект), с которым вы находитесь в контакте | * CPed +0x584 = [dword] Текущий Entity (объект), с которым вы находитесь в контакте | ||
* CPed +0x58C = [dword] Последняя или текущая машина, которую вы водили/ведёте (CarPointer) | * CPed +0x58C = [dword] Последняя или текущая машина, которую вы водили/ведёте (CarPointer) | ||
− | * CPed +0x598 = [byte] | + | * CPed +0x598 = [byte] ПедТип |
− | * CPed +0x5A0 = [ | + | * CPed +0x5A0 = [364 bytes] 13 структур [http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#CWeaponSlot_.28.D0.A1.D0.BB.D0.BE.D1.82_.D0.BE.D1.80.D1.83.D0.B6.D0.B8.D1.8F.29 CWeaponSlot] по 28 байт |
+ | * CPed +0x70C = [dword] ID оружия в режиме "турель" | ||
* CPed +0x718 = [byte] Текущий слот оружия | * CPed +0x718 = [byte] Текущий слот оружия | ||
+ | * CPed +0x71A = [byte] Точность стрельбы | ||
+ | * CPed +0x71C = [dword] Нацеленный обьект ([http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#CObject_.28.D0.94.D0.B8.D0.BD.D0.B0.D0.BC.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D0.B5_.D0.BE.D0.B1.D1.8C.D0.B5.D0.BA.D1.82.D1.8B.29 CObject]) | ||
* CPed +0x72C = [byte] Навык владения оружием (0-4) | * CPed +0x72C = [byte] Навык владения оружием (0-4) | ||
+ | * CPed +0x72D = [byte] Стиль борьбы #1 | ||
+ | * CPed +0x72E = [byte] Стиль борьбы #2 | ||
+ | * CPed +0x730 = [dword] Указатель на прицепленный огонь (CFire) | ||
* CPed +0x740 = [byte] ID текущего оружия (из [[default.dat]]) | * CPed +0x740 = [byte] ID текущего оружия (из [[default.dat]]) | ||
* CPed +0x756 = [word] Количество денег | * CPed +0x756 = [word] Количество денег | ||
− | * CPed +0x760 = [dword] Оружие, которым | + | * CPed +0x760 = [dword] Оружие, которым убит пед |
− | * CPed +0x764 = [dword] Указатель на педа, который | + | * CPed +0x764 = [dword] Указатель на педа, который убил этого педа (CPed) |
+ | * CPed +0x76C = [RwV3D] Офсет от обьекта/транспорта в режиме "турель" | ||
+ | * CPed +0x778 = [word] Угол стрельбы в режиме "турель" А | ||
+ | * CPed +0x77С = [float] Угол стрельбы в режиме "турель" Б (в радианах) | ||
+ | * CPed +0x780 = [dword] Вид позиции в режиме "турель" | ||
+ | * CPed +0x784 = [dword] Количество патронов в режиме "турель" | ||
+ | * CPed +0x79C = [dword] Нацеленный пешеход ([http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#CPed_.28.D0.9F.D0.B5.D1.88.D0.B5.D1.85.D0.BE.D0.B4.D1.8B.29 CPed]) | ||
− | ===CVehicle | + | ===CVehicle=== |
Каждый транспорт как объект, равняется 2584 (0xA18) байтам и начинается с 0xC502AA0. | Каждый транспорт как объект, равняется 2584 (0xA18) байтам и начинается с 0xC502AA0. | ||
* [http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#CPhysical_.28.D0.A4.D0.B8.D0.B7.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D0.B5_.D1.81.D1.83.D0.B1.D1.8C.D0.B5.D0.BA.D1.82.D1.8B.29 Класс CPhysical] | * [http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#CPhysical_.28.D0.A4.D0.B8.D0.B7.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D0.B5_.D1.81.D1.83.D0.B1.D1.8C.D0.B5.D0.BA.D1.82.D1.8B.29 Класс CPhysical] | ||
− | * +0x3BB = [byte] ID анимации для проигрывания | + | * +0x390 Начало класса CCarCtrl |
+ | ** +0x394 = [dword] Starting route node index (dwFirstNode) | ||
+ | ** +0x3A4 = [word] ID текущей точки пути | ||
+ | ** +0x3A6 = [word] ID следующей точки пути | ||
+ | ** +0x3A8 = [word] ID предыдущей точки пути | ||
+ | ** +0x3AC = [dword] TimeOfLastMoving (последний момент времени, когда автомобиль перемещался) | ||
+ | ** +0x3B7 = [byte] текущая полоса движения | ||
+ | *** 0 - единственная полоса на обычных дорогах / левая полоса на шоссе | ||
+ | *** 1 - правая полоса на шоссе | ||
+ | ** +0x3B8 = [byte] будущая полоса движения? | ||
+ | ** +0x3B9 = [byte] trafficBehaviour (опкод 00AE) | ||
+ | ** +0x3BA = [byte] driverBehaviour (опкод 00AF) | ||
+ | ** +0x3BB = [byte] ID анимации для проигрывания | ||
'''Примечание:''' | '''Примечание:''' | ||
После применения анимации это значение обнуляется. | После применения анимации это значение обнуляется. | ||
− | * +0x3BC = [dword] Время анимации для проигрывания | + | ** +0x3BC = [dword] Время анимации для проигрывания |
+ | ** +0x3D0 = [byte] максимальная скорость, м/с | ||
+ | ** +0x3DB = [dword] Traffic flag | ||
+ | *** ((dwTrafficFlag >> 6) & 1 = bFollowPath) | ||
+ | ** +0x3DC = [byte] VehicleIsNotOnPath | ||
+ | *** 0 - автомобиль на пути | ||
+ | *** 1 - автомобиль не на пути | ||
+ | ** +0x3EC = [float] Destination X (fDestX) | ||
+ | ** +0x3F0 = [float] Destination Y (fDestY) | ||
+ | ** +0x3F4 = [float] Destination Z (fDestZ) | ||
+ | ** +0x3F8 = [dword] Array of the last 8 route nodes (dwNodeList[8]) | ||
+ | ** +0x418 = [short] Amount of remaining route nodes (sSteps) | ||
* +0x428 = [byte] Флаги: | * +0x428 = [byte] Флаги: | ||
** 2 = Полицейский транспорт | ** 2 = Полицейский транспорт | ||
Строка 432: | Строка 510: | ||
** 64 = Включены фары (за исключением стоп-сигналов автомобиля) | ** 64 = Включены фары (за исключением стоп-сигналов автомобиля) | ||
* +0x42D = [byte] Сирена включена/отключена | * +0x42D = [byte] Сирена включена/отключена | ||
− | + | 0x0434 BYTE colorPrimary | |
− | + | 0x0435 BYTE colorSecondary | |
− | + | 0x0436 BYTE colorTertiary | |
− | + | 0x0437 BYTE colorQuaternary | |
− | + | 0x0438 BYTE extra[2] | |
− | + | 0x043A WORD upgrade[15] | |
− | + | 0x0458 float wheelSize | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
* +0x45C = [dword] Время до окончания действия сигнализации | * +0x45C = [dword] Время до окончания действия сигнализации | ||
* +0x460 = [dword] Указатель на водителя (CPed) | * +0x460 = [dword] Указатель на водителя (CPed) | ||
Строка 469: | Строка 541: | ||
** 5 = заряженная бомба с датчиком зажигания двигателя | ** 5 = заряженная бомба с датчиком зажигания двигателя | ||
'''Примечание:''' | '''Примечание:''' | ||
− | Радиоуправляемая бомба (3) можно только узнать, установлена она или нет. Установка значения | + | Радиоуправляемая бомба (3) можно только узнать, установлена она или нет. Установка значения 3 ничего не даст. |
− | + | Вы можете установить значения выше 0 и 1, чтобы дать машине бомбу. Некоторые флаги дают возможность установить бомбу, если она у вас присутствует. Если вы установили это значение на 4, то не сможете убрать бомбу. | |
* +0x4B4 = [dword] Передача | * +0x4B4 = [dword] Передача | ||
* +0x4C0 = [float] Здоровье машины: | * +0x4C0 = [float] Здоровье машины: | ||
− | ** меньше 250.0 - | + | ** меньше 250.0 - Машина горит |
− | ** 1000.0 - | + | ** 1000.0 - Не повреждена |
* +0x4C8 = [dword] Указатель на прицеп (CVehicle) | * +0x4C8 = [dword] Указатель на прицеп (CVehicle) | ||
* +0x4F8 = [dword] Статус дверей машины: | * +0x4F8 = [dword] Статус дверей машины: | ||
Строка 482: | Строка 554: | ||
** 0 = выключена | ** 0 = выключена | ||
** 1 = включена | ** 1 = включена | ||
+ | * +0x51C = [[http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#CStoredCollPoly_.28.D0.9F.D0.BE.D0.BB.D0.B8.D0.B3.D0.BE.D0.BD_.D0.BA.D0.BE.D0.BB.D0.BB.D0.B8.D0.B7.D0.B8.D0.B8.29 CStoredCollPoly]] Поверхность, с которой контактирует передняя часть транспорта? | ||
+ | * +0x548 = [[http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#CStoredCollPoly_.28.D0.9F.D0.BE.D0.BB.D0.B8.D0.B3.D0.BE.D0.BD_.D0.BA.D0.BE.D0.BB.D0.BB.D0.B8.D0.B7.D0.B8.D0.B8.29 CStoredCollPoly]] Поверхность, с которой контактирует задняя часть транспорта? | ||
+ | * +0x574 = [byte] Освещённость поверхности, с которой контактирует левая передняя часть транспорта | ||
+ | * +0x575 = [byte] Освещённость поверхности, с которой контактирует левая задняя часть транспорта | ||
+ | * +0x576 = [byte] Освещённость поверхности, с которой контактирует правая передняя часть транспорта | ||
+ | * +0x577 = [byte] Освещённость поверхности, с которой контактирует правая задняя часть транспорта | ||
* +0x584 = [dword] Статус фар: | * +0x584 = [dword] Статус фар: | ||
** 1 - передняя правая включена | ** 1 - передняя правая включена | ||
Строка 487: | Строка 565: | ||
** 4 - задняя правая включена | ** 4 - задняя правая включена | ||
** 8 - задняя левая включена | ** 8 - задняя левая включена | ||
− | * +0x590 = [byte] | + | * +0x588 = [dword] Текстура номерного знака (RwTexture) |
− | + | * +0x590 = [byte] Класс транспорта: | |
− | + | 0 CAutomobile | |
− | * | + | 5 CBoat |
− | * | + | 6 CTrain |
+ | 9 CBike | ||
+ | * +0x594 = [dword] Суб-класс транспорта | ||
+ | 0 CAutomobile | ||
+ | 1 CMtruck | ||
+ | 2 CQuad | ||
+ | 3 CHeli | ||
+ | 4 CPlane | ||
+ | 5 CBoat | ||
+ | 6 CTrain | ||
+ | 7 CFHeli // неиспользуемый класс | ||
+ | 8 CFPlane // неиспользуемый класс | ||
+ | 9 CBike | ||
+ | 10 CBMX | ||
+ | 11 CTrailer | ||
+ | * +0x598 = [word] ID txd с текстурой покрасочной работы | ||
+ | * +0x59C = [dword] Текстура покрасочной работы (RwTexture) | ||
===CAutomobile (Автомобили)=== | ===CAutomobile (Автомобили)=== | ||
− | + | 0x0000 | CVehicle vehicle | |
− | + | 0x05A0 | CDamageManager m_sDamageManager | |
− | + | 0x05B8 | CDoor m_sDoor[6] | |
− | * | + | 0x0648 | RwFrame *m_pFrame[25] |
− | + | 0x06AC | CPanel m_sPanel[3] | |
− | + | 0x070C | CDoor m_sSwingingChassis | |
− | + | 0x0724 | CColPoint m_swheelColPoint[4] // Точки соприкосновения колес автомобиля с поверхностью | |
− | + | 0x07D4 | float wheelsDistancesToGround1[4] // Расстояния между колесами и поверхностью | |
− | + | 0x07E4 | float wheelsDistancesToGround2[4] | |
− | + | 0x07F4 | float _f7F4 | |
− | + | 0x0804 | DWORD _f804 | |
− | + | 0x0808 | DWORD _f808 | |
− | + | 0x080C | DWORD _f80C | |
− | + | 0x0810 | BYTE _f810[24] | |
− | + | 0x0828 | DWORD _f828[4] | |
− | + | 0x0838 | BYTE _f838[16] | |
− | + | 0x0848 | DWORD _f848 | |
− | + | 0x084C | float fRotorSpeed // Скорость вращения ротора (0.22 - ротор при работе) | |
− | + | 0x0850 | DWORD _f850 | |
− | + | 0x0854 | DWORD _f854 | |
− | + | 0x0858 | BYTE _f858[16] | |
− | + | 0x0868 | BYTE TaxiAvaliable | |
− | + | 0x0869 | BYTE _f869 | |
− | + | 0x086A | WORD _f86A | |
− | + | 0x086C | WORD _f86C | |
− | + | 0x086E | WORD _f86E | |
− | + | 0x0870 | DWORD someEndTime | |
− | + | 0x0874 | DWORD someStartTime | |
− | + | 0x0878 | DWORD _f878 | |
− | + | 0x087C | BYTE _f87C[28] | |
− | + | 0x0898 | float fHeightAboveRoad | |
− | + | 0x089C | float fRearHeightAboveRoad | |
− | + | 0x08A0 | float _f8A0 | |
− | + | 0x08A4 | float fNitroValue | |
− | + | 0x08A8 | BYTE _f8A8[8] | |
− | + | 0x08B0 | DWORD _f8B0 | |
− | + | 0x08B4 | BYTE _f8B4[48] | |
− | + | 0x08E4 | DWORD burnTimer | |
− | + | 0x08E8 | DWORD _f8E8 | |
− | + | 0x08EC | BYTE _f8EC[96] | |
− | + | 0x094C | DWORD _f94C | |
− | + | 0x0950 | DWORD _f950 | |
− | + | 0x0954 | float fForcedHeading | |
− | + | 0x0958 | BYTE _f958[8] | |
− | + | 0x0960 | BYTE numContactWheels | |
− | + | 0x0961 | BYTE allWheelsOnGround | |
− | + | 0x0962 | BYTE _f962 | |
− | + | 0x0963 | BYTE _f963 | |
− | * | + | 0x0964 | DWORD _f964 |
− | * | + | 0x0968 | DWORD _f968[4] |
− | + | 0x0978 | CParticle *pNitroParticle1 | |
− | + | 0x097C | CParticle *pNitroParticle2 | |
− | + | 0x0980 | BYTE _f980 | |
− | + | 0x0981 | BYTE _f981 | |
− | + | 0x0982 | WORD _f982 | |
+ | 0x0984 | DWORD _f984 | ||
− | === | + | ===CBike (Мотоциклы и велосипеды)=== |
* [http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#CVehicle_.28.D0.A2.D1.80.D0.B0.D0.BD.D1.81.D0.BF.D0.BE.D1.80.D1.82.29 Класс CVehicle] | * [http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#CVehicle_.28.D0.A2.D1.80.D0.B0.D0.BD.D1.81.D0.BF.D0.BE.D1.80.D1.82.29 Класс CVehicle] | ||
− | * | + | * CBike +0x5A0 = [dword] Кламп модели (RpClump) |
− | **За данной точкой находится задний габарит модели, если поезд направлен по порядку точек. | + | * CBike +0x5A4 = [dword] Компонент chassis_dummy (RwFrame) |
− | + | * CBike +0x5A8 = [dword] Компонент forks_front (RwFrame) | |
− | + | * CBike +0x5AC = [dword] Компонент forks_rear (только для мотоциклов) (RwFrame) | |
− | + | * CBike +0x5B0 = [dword] Компонент wheel_front (RwFrame) | |
− | + | * CBike +0x5B4 = [dword] Компонент wheel_rear (RwFrame) | |
− | + | * CBike +0x5B8 = [dword] Компонент mudguard (для велосипедов - handlebars) (RwFrame) | |
− | + | * CBike +0x5BC = [dword] Компонент handlebars (для велосипедов - chainset) (RwFrame) | |
− | + | * CBike +0x5D0 = [dword] Компонент pedal_r (только для велосипедов) (RwFrame) | |
− | + | * CBike +0x5D4 = [dword] Компонент pedal_l (только для велосипедов) (RwFrame) | |
− | + | * CBike +0x5CC = [RwMatrix] Матрица позиции и поворота | |
− | + | ||
− | + | ===CTrain=== | |
− | + | 0x0000 | CVehicle vehicle // [http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#CVehicle_.28.D0.A2.D1.80.D0.B0.D0.BD.D1.81.D0.BF.D0.BE.D1.80.D1.82.29 CVehicle] | |
− | + | 0x05A0 | WORD pathPointID // Текущий номер точки маршрута (номер строчки в tracks, нумерация от нуля) | |
− | + | 0x05A2 | BYTE[2] _pad1 | |
− | + | 0x05A4 | float acceleration // Ускорение | |
+ | 0x05A8 | float distanceTravelled // Расстояние, пройденное от начала маршрута в метрах | ||
+ | 0x05AC | DWORD _f5AC | ||
+ | 0x05B0 | float _f5B0 | ||
+ | 0x05B4 | float _f5B4 | ||
+ | 0x05B8 | BYTE flags1 | ||
+ | 0x05B9 | BYTE wreckedFlags | ||
+ | 0x05BA | BYTE[2] _f5BA | ||
+ | 0x05BC | DWORD someTime | ||
+ | 0x05C0 | BYTE trackID // Номер маршрута поезда: 0 - tracks, 1 - tracks3, 2 - tracks2, 3 - tracks4 | ||
+ | 0x05C1 | BYTE[3] _pad2 | ||
+ | 0x05C4 | DWORD timeCreated // Игровое время создания поезда | ||
+ | 0x05C8 | WORD _f5C8 | ||
+ | 0x05CA | BYTE _f5CA | ||
+ | 0x05CB | BYTE passengerFlags | ||
+ | 0x05CC | CPed *passenger | ||
+ | 0x05D0 | DWORD previousCarriage // Предыдущий вагон | ||
+ | 0x05D4 | DWORD nextCarriage // Следующий вагон | ||
+ | 0x05D8 | CAutomobileDoor[6] doors | ||
+ | 0x0668 | RwFrame *frameArray[17] // RwFrame | ||
+ | ''Примечание (Текущий номер точки маршрута):'' | ||
+ | *За данной точкой находится задний габарит модели, если поезд направлен по порядку точек. | ||
+ | *Если поезд направлен в обратную сторону, то номер точки фиксируется относительно переднего габарита модели. | ||
+ | ''Примечание (Ускорение):'' | ||
+ | *Независимо от первоначальной ориентации поезда - | ||
+ | **при движении по порядку точек - больше нуля, | ||
+ | **при движении против порядка точек - меньше нуля. | ||
+ | ''Примечание (Расстояние, пройденное от начала маршрута в метрах):'' | ||
+ | *При нуле задний габарит модели находится на первой точке маршрута - если поезд направлен по порядку точек. | ||
+ | *При нуле передний габарит модели находится на первой точке маршрута - если поезд направлен в обратную сторону. | ||
===CHeli (Вертолёты)=== | ===CHeli (Вертолёты)=== | ||
* [http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#CAutomobile_.28.D0.90.D0.B2.D1.82.D0.BE.D0.BC.D0.BE.D0.B1.D0.B8.D0.BB.D0.B8.29 Класс CAutomobile] | * [http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#CAutomobile_.28.D0.90.D0.B2.D1.82.D0.BE.D0.BC.D0.BE.D0.B1.D0.B8.D0.BB.D0.B8.29 Класс CAutomobile] | ||
− | * CHeli +0x9A8 = [float] Максимальная высота | + | * CHeli +0x9A8 = [float] Максимальная высота полёта |
− | * CHeli +0x9B0 = [float] Минимальная высота | + | * CHeli +0x9B0 = [float] Минимальная высота полёта |
+ | |||
+ | ===CObject (Динамические обьекты)=== | ||
+ | * [http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#CPhysical_.28.D0.A4.D0.B8.D0.B7.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D0.B5_.D1.81.D1.83.D0.B1.D1.8C.D0.B5.D0.BA.D1.82.D1.8B.29 Класс CPhysical] | ||
+ | * CObject +0x140 = [dword] Флаги | ||
+ | **бит 10 = обьект сломан | ||
+ | **бит 11 = включен сигнал поезда | ||
+ | **бит 12 = обьект сфотографирован камерой | ||
+ | **бит 13 = обьект можно поднимать, переносить | ||
+ | **бит 18 = обьект можно прицепить к магниту | ||
+ | **бит 22 = иммунитет к педам (не включая игрока) | ||
+ | * CObject +0x144 = [byte] Эффект повреждения | ||
+ | **0 = нет эффекта | ||
+ | **1 = происходит смена модели | ||
+ | **20 = разрушается | ||
+ | **21 = изменяется модель, затем разрушается | ||
+ | **200 = ломается | ||
+ | **202 = ломается и удаляется | ||
+ | * CObject +0x148 = [byte] Оружие, которое нанесло урон обьекту. [http://gtamodding.ru/wiki/Номера_оружия#San_Andreas Номера оружия] | ||
+ | **255 = обьект не был повреждён, либо не может быть повреждённым | ||
+ | * CObject +0x154 = [float] Здоровье обьекта | ||
+ | * CObject +0x15C = [float] Коэффициент размера обьекта | ||
+ | * CObject +0x160 = [dword] Указатель на структуру, которая содержит информацию об обьекте из object.dat (CObjectInfo) | ||
+ | |||
+ | ===CBuilding (Статичные обьекты)=== | ||
+ | |||
+ | 0x0000 | CEntity _parent // [http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#CEntity_.28.D0.98.D0.B3.D1.80.D0.BE.D0.B2.D1.8B.D0.B5_.D1.81.D1.83.D0.B1.D1.8C.D0.B5.D0.BA.D1.82.D1.8B.29 CEntity] | ||
+ | |||
+ | ===CWeapon (Слот оружия)=== | ||
+ | |||
+ | 0x0000 | eWeaponType m_Type // Тип оружия | ||
+ | 0x0004 | DWORD m_dwState // Статус: 0 - ожидание, 1 - стреляет, 2 - перезарядка | ||
+ | 0x0008 | DWORD m_dwAmmoInClip // Патронов в обойме | ||
+ | 0x000C | DWORD m_dwTotalAmmo // Патронов всего | ||
+ | 0x0010 | DWORD m_dwTimeForNextShot // Время для следующего выстрела (время последнего выстрела + время ожидания) | ||
+ | 0x0014 | BYTE _f14 | ||
+ | 0x0015 | BYTE _f15 | ||
+ | 0x0016 | BYTE _f16 | ||
+ | 0x0017 | BYTE _f17 | ||
+ | 0x0018 | CParticle * m_pParticle // Прикреплённый эффект | ||
+ | |||
+ | ===CBone (Кости скелета)=== | ||
+ | Кости создаются при инициализации анимированного клампа. | ||
+ | 0x0000 | BYTE m_bFlags | ||
+ | 0x0004 | CVector m_vOffset // Статичное смещение относительно родительской кости | ||
+ | 0x0010 | СHAnimIFrame *m_pIFrame // Указатель на структуру, которая содержит интерполированные данные о положении кости | ||
+ | 0x0014 | DWORD m_dwNodeId // Специальный идентификатор кости | ||
+ | ===СHAnimIFrame=== | ||
+ | Эта структура содержит интерполированные данные о положении кости | ||
+ | 0x0000 | CQuat m_qOrientation | ||
+ | 0x0010 | CVector m_vTranslation | ||
− | === | + | ===CScriptParticle (Скриптовые эффекты частиц)=== |
− | + | ||
− | + | 0x0000 | BYTE isExist // Флаг существования | |
− | + | 0x0001 | WORD ID // Уникальный идентификатор | |
− | + | 0x0002 | CParticleData* pData // Указатель на структуру информации об этом эффекте частиц | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ===CStoredCollPoly (Полигон коллизии)=== | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | 0x0000 | RwV3D posVertexA // Координаты первой вершины треугольника [http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#RwV3D RwV3D] | |
− | + | 0x000C | RwV3D posVertexB // Координаты второй вершины треугольника [http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#RwV3D RwV3D] | |
+ | 0x0018 | RwV3D posVertexC // Координаты третьей вершины треугольника [http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#RwV3D RwV3D] | ||
+ | 0x0024 | BYTE isActual // Что-то в этом роде, устанавливается в 1 при создании | ||
+ | 0x0025 | BYTE[3] _padding | ||
+ | 0x0028 | DWORD lighting // Освещённость, при чтении из структуры транспорта используется только первый байт | ||
+ | ===CWanted (Розыск)=== | ||
* +0x0 = Счетчик злости копов: | * +0x0 = Счетчик злости копов: | ||
** свыше 50 = 1 звезда | ** свыше 50 = 1 звезда | ||
Строка 649: | Строка 791: | ||
* CCamera+C0 = [float] True View Distance (true arm length) | * CCamera+C0 = [float] True View Distance (true arm length) | ||
− | === | + | ===CPlayerData=== |
− | + | ||
− | + | ||
* +0x1E = [byte/boolean] Игрок игнорируется копами | * +0x1E = [byte/boolean] Игрок игнорируется копами | ||
* +0x298 = [byte/boolean] Игрок игнорируется всеми | * +0x298 = [byte/boolean] Игрок игнорируется всеми | ||
− | ==Pools== | + | ===Pools=== |
− | 0x550F10 - | + | 0x550F10 - Расположение функций пула. Здесь хранятся основные лимиты игры. |
* 00B74484 - PtrNode Single | * 00B74484 - PtrNode Single | ||
* 00B74488 - PtrNode Double | * 00B74488 - PtrNode Double | ||
* 00B7448C - EntryInfoNode | * 00B7448C - EntryInfoNode | ||
− | * 00B74490 - Peds | + | * 00B74490 - Peds. |
− | * 00B74494 - Vehicles | + | * 00B74494 - Vehicles. |
− | * 00B74498 - Buildings | + | * 00B74498 - Buildings. |
* 00B7449C - Objects | * 00B7449C - Objects | ||
* 00B744A0 - Dummys | * 00B744A0 - Dummys | ||
Строка 676: | Строка 816: | ||
* 00B744C4 - PedAttractors | * 00B744C4 - PedAttractors | ||
− | |||
− | |||
− | |||
− | |||
− | |||
===Характеристики машин=== | ===Характеристики машин=== | ||
− | 0xC2B9DC - Handling | + | 0xC2B9DC - Начало блока Handling'а. Каждый слот имеет 224 байта данных. |
− | * +0x0 = [dword] | + | * +0x0 = [dword] Индекс/Идентификатор |
* +0x4 = fMass | * +0x4 = fMass | ||
* +0x8 = 1.0 / fMass | * +0x8 = 1.0 / fMass | ||
Строка 744: | Строка 879: | ||
* +0x10 = [dword] modelId2 | * +0x10 = [dword] modelId2 | ||
* +0x14 = [dword] slot | * +0x14 = [dword] slot | ||
− | * +0x18 = [dword] flags. | + | * +0x18 = [dword] flags. |
+ | |||
+ | '''Примечание''' : изменяя флаги, убедитесь, что установленная анимационная группа поддерживает все определенные действия, иначе игра будет вылетать. Массив флагов: | ||
+ | |||
**0 - CANAIM. Возможность целиться из оружия. | **0 - CANAIM. Возможность целиться из оружия. | ||
**1 - AIMWITHARM. Сиджей, когда целится, водит рукой. | **1 - AIMWITHARM. Сиджей, когда целится, водит рукой. | ||
− | **2 - 1STPERSON. Вид от первого лица при прицеливании (как у | + | **2 - 1STPERSON. Вид от первого лица при прицеливании (как у гранатомёта и снайперской винтовки). |
**3 - ONLYFREEAIM. | **3 - ONLYFREEAIM. | ||
**4 - MOVEAIM. Возможность передвигаться при прицеливании. | **4 - MOVEAIM. Возможность передвигаться при прицеливании. | ||
**5 - MOVEFIRE. Возможность передвигаться при стрельбе. | **5 - MOVEFIRE. Возможность передвигаться при стрельбе. | ||
− | **6 - | + | **6 - Не используется. |
− | **7 - | + | **7 - Не используется. |
**8 - THROW. | **8 - THROW. | ||
− | **9 - HEAVY. Тяжелое оружие. Когда в руках, нельзя бегать спринтом. | + | **9 - HEAVY. Тяжелое оружие. Когда оно в руках, нельзя бегать спринтом. |
**10 - CONTINUOUSFIRE. | **10 - CONTINUOUSFIRE. | ||
**11 - TWIN_PISTOL. Рендерить оружие в обоих руках. | **11 - TWIN_PISTOL. Рендерить оружие в обоих руках. | ||
Строка 760: | Строка 898: | ||
**13 - CROUCHFIRE. Перезарядка сидя. | **13 - CROUCHFIRE. Перезарядка сидя. | ||
**14 - RELOAD2START. Перезарядка сразу после выстрела (как у дробовика). | **14 - RELOAD2START. Перезарядка сразу после выстрела (как у дробовика). | ||
− | **15 - LONG_RELOAD. | + | **15 - LONG_RELOAD. Перезарядка происходит дольше. |
**16 - SLOWSDWN. | **16 - SLOWSDWN. | ||
**17 - RANDSPEED. | **17 - RANDSPEED. | ||
Строка 799: | Строка 937: | ||
** 42 - 'flowers_1' | ** 42 - 'flowers_1' | ||
** 43 - 'csaw_1' | ** 43 - 'csaw_1' | ||
− | * +0x20 = [word] | + | * +0x20 = [word] Количество патронов в обойме |
* +0x22 = [word] Повреждения | * +0x22 = [word] Повреждения | ||
* +0x24 = [dword] fireOffset.x | * +0x24 = [dword] fireOffset.x | ||
Строка 819: | Строка 957: | ||
* +0x54 = [dword] animLoop2 fire | * +0x54 = [dword] animLoop2 fire | ||
* +0x58 = [dword] breakoutTime | * +0x58 = [dword] breakoutTime | ||
− | * +0x5C = [dword] Скорость | + | * +0x5C = [dword] Speed. Скорость стрельбы. |
* +0x60 = [dword] radius | * +0x60 = [dword] radius | ||
* +0x64 = [dword] lifespan | * +0x64 = [dword] lifespan | ||
Строка 828: | Строка 966: | ||
** 8 - "Бита" | ** 8 - "Бита" | ||
** 9 - "Нож" | ** 9 - "Нож" | ||
− | ** 10 - " | + | ** 10 - "Клюшка для гольфа" |
** 11 - "Катана" | ** 11 - "Катана" | ||
** 12 - "Бензопила" | ** 12 - "Бензопила" | ||
Строка 877: | Строка 1015: | ||
* +31 = [byte] Неизвестно | * +31 = [byte] Неизвестно | ||
− | === | + | ===CRegisteredCorona=== |
+ | {| | ||
+ | |Начало | ||
+ | |0xC3E058 | ||
+ | |- | ||
+ | |Кол-во | ||
+ | |64 | ||
+ | |- | ||
+ | |Размер | ||
+ | |0x3C | ||
+ | |} | ||
+ | 0x0000 | RwV3D position // RwV3D | ||
+ | 0x000C | DWORD uniqueID // Уникальный идентификатор | ||
+ | 0x0010 | RwTexture *texture // RwTexture | ||
+ | 0x0014 | float size | ||
+ | 0x0018 | float normalAngle // Возможно, не влияет на корону | ||
+ | 0x001C | float farClip | ||
+ | 0x0020 | float nearClip | ||
+ | 0x0024 | float heightAboveGround | ||
+ | 0x0028 | float fadeSpeed | ||
+ | 0x002C | RwRGBA color // RwRGBA | ||
+ | 0x0030 | BYTE fadeState // Статус затемнения (0 или 255) | ||
+ | 0x0031 | BYTE registeredThisFrame | ||
+ | 0x0032 | BYTE flareType // Тип вспышки (lensflare) | ||
+ | 0x0033 | BYTE usesReflection // Наличие отражения (отражения действуют при влажной погоде) | ||
+ | 0x0034 | BYTE flags1 | ||
+ | 0x0035 | BYTE justCreared | ||
+ | 0x0036 | BYTE flags2 | ||
+ | 0x0037 | BYTE _pad | ||
+ | 0x0038 | void *attachedTo // Транспорт, к которому прицеплена корона | ||
− | + | ''Набор флагов 1 (flags1):'' | |
+ | 0x0001 | CHECK_OBSTACLES // Если между камерой и короной есть преграда, корона не будет отрисована | ||
+ | 0x0002 | OFF_SCREEN | ||
− | + | ''Набор флагов 2 (flags2):'' | |
− | + | 0x0001 | FLASH_WHILE_FADING // В режиме "затухание" корона будет мигать | |
− | + | 0x0002 | ONLE_FROM_BELOW // Корону видно только снизу | |
− | + | 0x0004 | HAS_VALID_HEIGHT_ABOVE_GROUND // Используется при создании отражений корон на дороге | |
− | + | 0x0008 | DRAW_WITH_WHITE_CORE // Вероятно, не используется | |
− | + | 0x0010 | IS_ATTACHED_TO_VEHICLE // Прицеплена ли корона к транспорту. Флаг включается автоматически | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | === | + | ===CPointlight=== |
+ | {| | ||
+ | |Начало | ||
+ | |0xC3F0E0 | ||
+ | |- | ||
+ | |Кол-во | ||
+ | |32 | ||
+ | |- | ||
+ | |Размер | ||
+ | |0x30 | ||
+ | |} | ||
+ | 0x0000 | RwV3D pos // Позиция [http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#RwV3D RwV3D] | ||
+ | 0x000C | RwV3D direction // Направление [http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#RwV3D RwV3D] | ||
+ | 0x0018 | float radius // Радиус | ||
+ | 0x001C | float red // 0.0 - 1.0 | ||
+ | 0x0020 | float green // 0.0 - 1.0 | ||
+ | 0x0024 | float blue // 0.0 - 1.0 | ||
+ | 0x0028 | CEntity *entityAffected // Игровой субьект, на который распространяется свет от источника [http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#CEntity_.28.D0.98.D0.B3.D1.80.D0.BE.D0.B2.D1.8B.D0.B5_.D1.81.D1.83.D0.B1.D1.8C.D0.B5.D0.BA.D1.82.D1.8B.29 CEntity] | ||
+ | 0x002C | BYTE type // Тип источника света | ||
+ | 0x002D | BYTE fogType | ||
+ | 0x002E | BYTE generateShadows // Включить создание дополнительных теней для автомобиля игрока | ||
+ | 0x002F | BYTE _pad | ||
+ | ''Типы источников света (type):'' | ||
+ | ID Название Описание | ||
+ | 0 Обычный Источник света использует позицию и радиус | ||
+ | 1 Направлённый Источник света использует позицию и радиус, используется направление | ||
+ | 2 Тень Используется чёрный цвет | ||
+ | 4 Глобальный Источник света использует только позицию | ||
− | + | ===CRegisteredShadow=== | |
+ | {| | ||
+ | |Начало | ||
+ | |0xC40430 | ||
+ | |- | ||
+ | |Кол-во | ||
+ | |48 | ||
+ | |- | ||
+ | |Размер | ||
+ | |0x34 | ||
+ | |} | ||
+ | 0x0000 | RwV3D position | ||
+ | 0x000C | float rotationX1 // Эти параметры определяют разворот и размер | ||
+ | 0x0010 | float rotationY1 | ||
+ | 0x0014 | float rotationX2 | ||
+ | 0x0018 | float rotationY2 | ||
+ | 0x001C | float zDistance // Максимальное расстояние между позицией тени и поверхностью, на которую падает тень | ||
+ | 0x0020 | float scale // Масштабирование относительно одного из углов | ||
+ | 0x0024 | RwTexture *texture | ||
+ | 0x0028 | CShadowData *shadowData // Используется только для теней педов | ||
+ | 0x002C | WORD intensity | ||
+ | 0x002E | BYTE type | ||
+ | 0x002F | BYTE red | ||
+ | 0x0030 | BYTE green | ||
+ | 0x0031 | BYTE blue | ||
+ | 0x0032 | WORD flags | ||
+ | ''Типы теней (type)'' | ||
+ | ID Описание Source-Blend Dest-Blend | ||
+ | 0 5 6 | ||
+ | 1 Тень (чёрный цвет) 2 2 | ||
+ | 2 Свет (цвет RGB) 1 4 | ||
+ | 3 5 6 | ||
+ | 4 5 6 | ||
+ | 5 5 6 | ||
+ | 6 | ||
+ | 7 5 6 | ||
+ | 8 | ||
− | + | ===CGlass (Осколки стекла)=== | |
− | + | Начало: 0xC3E058 | |
− | + | Размер одного элемента: 112 байт | |
− | + | * CGlass +0x0 = [RwMatrix] Матрица поворота и позиции | |
− | + | * CGlass +0x60 = [dword] Время создания | |
− | + | * CGlass +0x6D = [byte] Флаг существования | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | * + | + | |
− | * + | + | |
− | * + | + | |
− | === | + | ===CStencilShadow=== |
+ | {| | ||
+ | |Начало | ||
+ | |0xC6A198 | ||
+ | |- | ||
+ | |Кол-во | ||
+ | |64 | ||
+ | |- | ||
+ | |Размер | ||
+ | |0x1C | ||
+ | |} | ||
+ | 0x0000 | CPhysical *owner | ||
+ | 0x0004 | WORD numShadowFaces | ||
+ | 0x0006 | BYTE type // 1 - map object, 2 - vehicle | ||
+ | 0x0007 | BYTE _pad | ||
+ | 0x0008 | DWORD sizeOfShadowFacesData // numShadowFaces * 15 | ||
+ | 0x000C | DWORD currentShadowFace | ||
+ | 0x0010 | void *shadowFacesData // sizeof() = sizeOfShadowFacesData * 12 | ||
+ | 0x0014 | CStencilShadow *next | ||
+ | 0x0018 | CStencilShadow *prev | ||
− | + | ===CRegisteredMotionBlurStreak=== | |
+ | {| | ||
+ | |Начало | ||
+ | |0xC7CA08 | ||
+ | |- | ||
+ | |Кол-во | ||
+ | |4 | ||
+ | |- | ||
+ | |Размер | ||
+ | |0x54 | ||
+ | |} | ||
+ | 0x0000 | CEntity *owner | ||
+ | 0x0004 | RwRGBA color | ||
+ | 0x0008 | RwV3D pointAA | ||
+ | 0x0014 | RwV3D pointAB | ||
+ | 0x0020 | RwV3D pointAC | ||
+ | 0x002C | RwV3D pointBA | ||
+ | 0x0038 | RwV3D pointBB | ||
+ | 0x0044 | RwV3D pointBC | ||
+ | 0x0050 | BYTE needsUpdate | ||
+ | 0x0051 | BYTE _f51 | ||
+ | 0x0052 | BYTE _f52 | ||
+ | 0x0053 | BYTE _pad | ||
− | + | ===CLuminousPolygon (Многоугольники светофора)=== | |
− | + | 0xC7CB58 - Начало блока многоугольников светофора. Количество элементов - 32. Размер одного элемента - 56 байт. | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | 0x0000 | RwV3D position // Позиция [http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#RwV3D RwV3D] | |
− | + | 0x000C | RwV3D right // Вектор Right [http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#RwV3D RwV3D] | |
− | + | 0x0018 | RwV3D top // Вектор Top [http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#RwV3D RwV3D] | |
− | + | 0x0024 | RwV3D at // Вектор At [http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#RwV3D RwV3D] | |
− | + | 0x0030 | float distanceToCamera // Расстояние до камеры | |
− | + | 0x0034 | BYTE colorID // Цвет: 1 - зелёный, 2 - жёлтый, 3 - красный | |
− | + | 0x0035 | BYTE _f35 | |
− | + | 0x0036 | BYTE _f36 | |
− | + | 0x0037 | BYTE _f37 | |
− | + | ||
− | ===Маркеры=== | + | ===C3DMarker (3D-Маркеры)=== |
0xC7DD58 - Начало блока маркеров. Количество элементов - 32. Размер одного элемента - 160 байт. | 0xC7DD58 - Начало блока маркеров. Количество элементов - 32. Размер одного элемента - 160 байт. | ||
Строка 1061: | Строка 1283: | ||
* +42 = [word] Неизвестно (0) | * +42 = [word] Неизвестно (0) | ||
− | ===Снаряды=== | + | ===CProjectile (Снаряды)=== |
− | + | {| | |
− | 0xC891A8 | + | |Начало |
− | + | |0xC891A8 | |
− | + | |- | |
− | + | |Кол-во | |
− | + | |32 | |
− | + | |- | |
− | + | |Размер | |
− | + | |0x24 | |
− | + | |} | |
− | + | 0x0000 | eWeaponType m_WeaponType // Тип снаряда | |
− | * | + | 0x0004 | CEntity * m_pLauncher // Указатель на транспорт/педа, запустившего/кинувшего снаряд |
− | * | + | 0x0008 | CVehicle * m_pTargetVehicle // Указатель на нацеленную машину (для тепловых ракет) |
− | + | 0x000C | DWORD m_dwTimeToDestroy // Время для уничтожения снаряда | |
− | + | 0x0010 | BYTE m_nState // Статус снаряда: 0 - Не существует/Взорван, 1 - Летит | |
− | + | 0x0011 | BYTE pad[3]; | |
− | + | 0x0014 | CVector m_vPosn // Позиция | |
− | + | 0x0020 | CParticle * m_pParticle // Прикреплённый партикл | |
− | + | ||
− | * | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
===Гаражи и парковка=== | ===Гаражи и парковка=== | ||
− | '''Обратите внимание, что адреса памяти для гаражей могут варьироваться в зависимости от скрипта SCM, который вы используете''' | + | '''Обратите внимание, что адреса памяти для гаражей могут варьироваться в зависимости от скрипта в файле SCM, который вы используете''' |
− | Всего в игре [[Гараж#San_Andreas_2|50 гаражей]]. Каждый гараж | + | Всего в игре [[Гараж#San_Andreas_2|50 гаражей]]. Каждый гараж содержит: |
* Позицию | * Позицию | ||
* Детали | * Детали | ||
Строка 1101: | Строка 1317: | ||
* Направление | * Направление | ||
* Координаты нижнего левого угла | * Координаты нижнего левого угла | ||
− | * Координаты высшего правого угла | + | * Координаты высшего правого угла |
* Использование игроком | * Использование игроком | ||
* Какому имуществу (safe house) он принадлежит | * Какому имуществу (safe house) он принадлежит | ||
− | * | + | * ID машины, которая может храниться в этом гараже |
− | * Состояние двери (закрытая, открытая, | + | * Состояние двери (закрытая, открытая, открывающаяся и закрывающаяся дверь) |
+ | |||
These are found in the garage object of 212 bytes. The memory locations where the garages start are: | These are found in the garage object of 212 bytes. The memory locations where the garages start are: | ||
Строка 1112: | Строка 1329: | ||
* 0x96C120 (start of final garage) | * 0x96C120 (start of final garage) | ||
− | + | Здесь опубликован список известных оффсетов гаражей: | |
− | + | * +0 = [float] X координата левого нижнего угла | |
− | + | * +4 = [float] Y координата левого нижнего угла | |
− | + | * +8 = [float] Z координата левого нижнего угла | |
− | + | ||
− | * +0 = [float] X | + | |
− | * +4 = [float] Y | + | |
− | * +8 = [float] Z | + | |
* +12 = [float] X Value of direction vector 1 | * +12 = [float] X Value of direction vector 1 | ||
* +16 = [float] Y Value of direction vector 1 | * +16 = [float] Y Value of direction vector 1 | ||
Строка 1127: | Строка 1340: | ||
* +32 = [float] Normalized Width of the garage | * +32 = [float] Normalized Width of the garage | ||
* +36 = [float] Normalized Depth of the garage | * +36 = [float] Normalized Depth of the garage | ||
− | * +40 = [float] | + | * +40 = [float] Левый угол (X) координаты |
− | * +44 = [float] | + | * +44 = [float] Правый угол (X) координаты |
− | * +48 = [float] | + | * +48 = [float] Передний угол (Y) координаты |
− | * +52 = [float] | + | * +52 = [float] Задний угол (Y) координаты |
− | * +56 = [float] | + | * +56 = [float] Позиция двери гаража |
− | * +60 = [dword] | + | * +60 = [dword] Неизвестно(Таймер) |
− | * +64 = [dword] | + | * +64 = [dword] Неизвестно (не сохраняется) |
− | * +68 = [chars] | + | * +68 = [chars] Название гаража (7 байтовая нуль-терминированная строка) |
− | * +76 = [byte] | + | * +76 = [byte] Тип гаража |
− | * +77 = [byte] | + | * +77 = [byte] Значения состояния двери гаража: |
− | ** 0 = | + | ** 0 = дверь закрыта |
− | ** 1 = | + | ** 1 = дверь открыта |
− | ** 2 = | + | ** 2 = дверь закрывается |
− | ** 3 = | + | ** 3 = дверь открывается |
− | * +78 = [byte] | + | * +78 = [byte] Флаги двери |
− | ** 0x01 | + | ** 0x01 используется в гараже модификаций (?) |
− | ** 0x02 | + | ** 0x02 дверь неактивна |
− | ** 0x04 | + | ** 0x04 используется в Pay'n'Spray (?) |
− | ** 0x08 | + | ** 0x08 маленькая дверь (reflective?) |
− | ** 0x10 | + | ** 0x10 дверь открывается вверх и внутрь |
− | ** 0x20 | + | ** 0x20 камера следит за игроком |
− | ** 0x40 | + | ** 0x40 дверь закрыта |
− | ** 0x80 | + | ** 0x80 гараж перекраски подружки |
* +79 = [byte] Original Type | * +79 = [byte] Original Type | ||
The direction vector 3 is completely left out, I think because the garages are always even to the ground. I think that is also why the Z values of the direction vectors are also left-out. | The direction vector 3 is completely left out, I think because the garages are always even to the ground. I think that is also why the Z values of the direction vectors are also left-out. | ||
Note: Direction Vectors marked above may be Quaternions. | Note: Direction Vectors marked above may be Quaternions. | ||
− | + | Статические адреса стандартных гаражей и их названий: | |
* 0x96C048 - Commerce Region, Loading Bay Garage (Life's a Beach) | * 0x96C048 - Commerce Region, Loading Bay Garage (Life's a Beach) | ||
* 0x96C120 - LSPD Police Impound Garage | * 0x96C120 - LSPD Police Impound Garage | ||
Строка 1258: | Строка 1471: | ||
* 0x96B818 - LSPD Impound Car 2 | * 0x96B818 - LSPD Impound Car 2 | ||
* 0x96B858 - LSPD Impound Car 3 | * 0x96B858 - LSPD Impound Car 3 | ||
− | * 0x96B898 - LSPD Impound | + | * 0x96B898 - LSPD Impound (не используется) |
* 0x96B8D8 - SFPD Impound Car 1 | * 0x96B8D8 - SFPD Impound Car 1 | ||
* 0x96B918 - SFPD Impound Car 2 | * 0x96B918 - SFPD Impound Car 2 | ||
* 0x96B958 - SFPD Impound Car 3 | * 0x96B958 - SFPD Impound Car 3 | ||
− | * 0x96B998 - SFPD Impound | + | * 0x96B998 - SFPD Impound (не используется) |
* 0x96B9D8 - LVPD Impound Car 1 | * 0x96B9D8 - LVPD Impound Car 1 | ||
* 0x96BA18 - LVPD Impound Car 2 | * 0x96BA18 - LVPD Impound Car 2 | ||
* 0x96BA58 - LVPD Impound Car 3 | * 0x96BA58 - LVPD Impound Car 3 | ||
− | * 0x96BA98 - LVPD Impound | + | * 0x96BA98 - LVPD Impound (не используется) |
* 0x96BAD8 - Calton Heights Car 1 | * 0x96BAD8 - Calton Heights Car 1 | ||
* 0x96BB18 - Calton Heights Car 2 | * 0x96BB18 - Calton Heights Car 2 | ||
Строка 1288: | Строка 1501: | ||
* 0x96BF98 - Verdant Meadows Airport Car 4 | * 0x96BF98 - Verdant Meadows Airport Car 4 | ||
− | == | + | ===CVector=== |
− | + | ||
− | + | 0x0000 | RwV3D vector // [http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#RwV3D RwV3D] | |
− | + | ||
− | + | ===CompressedVector=== | |
− | + | ||
− | + | 0x0000 | word x | |
− | + | 0x0002 | word y | |
− | + | 0x0004 | word z | |
− | + | ||
+ | ===RwV3D=== | ||
+ | |||
+ | 0x0000 | float x | ||
+ | 0x0004 | float y | ||
+ | 0x0008 | float z | ||
==Меню== | ==Меню== | ||
Строка 1365: | Строка 1583: | ||
==Относящееся к SCM== | ==Относящееся к SCM== | ||
− | * 0xA49960 - | + | {{Заготовка}} |
− | * 0xA7A6A0 - | + | * 0xA49960 - Начало SCM блока (0xA49960 + (4 * номер пер.) указывает на конкретную переменную) |
− | * 0x464080 - GetOpcodeParameters() | + | * 0xA7A6A0 - Начало блока миссий (69000 байтов) |
− | * 0xA447F4 - | + | * 0x464080 - GetOpcodeParameters() - ''Получить параметры опкода'' |
+ | * 0xA447F4 - Количество команд | ||
* 00469F00 - CRunningScript_ProcessOneCommand | * 00469F00 - CRunningScript_ProcessOneCommand | ||
* 0x464080 - CRunningScript_CollectParameters | * 0x464080 - CRunningScript_CollectParameters | ||
* 0x4859D0 - CRunningScript_UpdateCompareFlag | * 0x4859D0 - CRunningScript_UpdateCompareFlag | ||
− | * 0x469390 - Game_Script_Thread struct | + | * 0x469390 - Game_Script_Thread struct - ''Структура потоков'' |
− | * 0xA43C78 - | + | * 0xA43C78 - Располагаются значения параметров опкода. Максимальное кол-во параметров - 16. |
− | * 0x8A6168 - | + | * 0x8A6168 - Таблица переходов. Каждый dword указывает на 1 из 27 различных функций, которая обращается к 100 опкодов. |
− | * 0x466C50 - | + | * 0x466C50 - Опкоды 0000 - 0063. Массив dword'ов, каждый из которых указывает функцию для этих опкодов |
− | * 0x468364 - | + | * 0x468364 - Опкоды 0064 - 00C4. Массив dword'ов, каждый из которых указывает функцию для этих опкодов |
− | * 0x469E4C - | + | * 0x469E4C - Опкоды 00D6 - 0129. Массив байтов, каждый байт это индекс для массива dword'ов по адресу 0x469DD4, который указывает на функцию опкода |
− | * 0x47D1B4 - Opcodes 0137 - 018F. | + | * 0x47D1B4 - Opcodes 0137 - 018F. Массив байтов, каждый байт это индекс для массивов dword по адресу 0x47D0F4, |
− | * 0x47DFE0 - Opcodes 0190 - 01F3. | + | * 0x47DFE0 - Opcodes 0190 - 01F3. Массив байтов, каждый байт это индекс для массивов dword по адресу 0x47DF58, который указывает на функцию опкода |
− | * 0x47F304 - Opcodes 01F4 - 0256. | + | * 0x47F304 - Opcodes 01F4 - 0256. Массив байтов, каждый байт это индекс для массивов dword по адресу 0x47F24C, который указывает на функцию опкода |
− | * 0x47FA04 - Opcodes 0292 - 02B8. | + | * 0x47FA04 - Opcodes 0292 - 02B8. Массив байтов, каждый байт это индекс для массивов dword по адресу 0x47F9BC, который указывает на функцию опкода |
− | * 0x480FD8 - Opcodes 02BE - 031D. | + | * 0x480FD8 - Opcodes 02BE - 031D. Массив байтов, каждый байт это индекс для массивов dword по адресу 0x480F10, который указывает на функцию опкода |
− | * 0x4836B8 - Opcodes 0320 - 0382. | + | * 0x4836B8 - Opcodes 0320 - 0382. Массив байтов, каждый байт это индекс для массивов dword по адресу 0x483600, который указывает на функцию опкода |
(Нет времени закончить сейчас, закончим позже) | (Нет времени закончить сейчас, закончим позже) | ||
− | ===Потоки=== | + | =====Потоки===== |
0xA8B430 - Старт пула потоков. Существуют активные и неактивные потоки. | 0xA8B430 - Старт пула потоков. Существуют активные и неактивные потоки. | ||
− | 0xA8B42C - Поинтер к первому активному | + | <br> |
+ | 0xA8B42C - Поинтер к первому активному SCM потоку. | ||
+ | <br> | ||
0xA8B428 - Поинтер к первому неактивному скрипту. | 0xA8B428 - Поинтер к первому неактивному скрипту. | ||
− | + | Каждый поток имеет размер 224 (0xE0) байтов | |
* +0 = [void*] Поинтер к следующему потоку. | * +0 = [void*] Поинтер к следующему потоку. | ||
* +4 = [void*] Поинтер к предыдущему потоку. | * +4 = [void*] Поинтер к предыдущему потоку. | ||
− | * +8 = [char] | + | * +8 = [char] Имя потока (назначается опкодом [[03A4]]), char = 8 |
− | * +16 = [dword] | + | * +16 = [dword] Основной поток IP (используется в миссиях и во внешних скриптах для вычисления глобального адреса локального оффсета) |
− | * +20 = [dword] | + | * +20 = [dword] Нынешний IP |
− | * +24 = [dword] | + | * +24 = [dword] Вернуться к стеку (сохраняет текущий IP, когда gosub выполнен), dword = 8. |
− | * +56 = [word] | + | * +56 = [word] Последний индекс элемента, вернувшийся к стеку. |
− | * +60 = [dword] | + | * +60 = [dword] Массив локальных перемен, dword = 32 |
− | * +188 = [dword] | + | * +188 = [dword] Автоматически увеличивает таймер, dword = 2 |
− | * +196 = [boolean] | + | * +196 = [boolean] Действующий флаг потока |
− | * +197 = [boolean] Условие | + | * +197 = [boolean] Условие |
* +198 = [boolean] Флаг миссий | * +198 = [boolean] Флаг миссий | ||
* +199 = [boolean] Флаг внешнего скрипта | * +199 = [boolean] Флаг внешнего скрипта | ||
− | * +200 = [boolean] Неизвестный флаг (в меню?) | + | * +200 = [boolean] Неизвестный флаг (в меню?), (используется опкодом [[03E5]]). |
* +201 = [boolean] Неизвестный флаг (ID присоединенного скрипта?) | * +201 = [boolean] Неизвестный флаг (ID присоединенного скрипта?) | ||
− | * +204 = [dword] | + | * +204 = [dword] Время (назначается опкодом [[0001]]) |
− | * +208 = [word] Номер IF (условия) ( | + | * +208 = [word] Номер IF (условия) (назначается опкодом [[00D6]]) |
− | * +210 = [boolean] | + | * +210 = [boolean] Не флаг (условие для проверки опкодов, выше ли они чем 0x7FFF) |
− | * +211 = [boolean] | + | * +211 = [boolean] Проверка на включенный флаг, задержан ли игрок или убит. (назначается опкодом [[0111]]); '''только для миссий''' |
* +212 = [boolean] Игрок задержан или убит; '''только для миссий''' | * +212 = [boolean] Игрок задержан или убит; '''только для миссий''' | ||
− | * +216 = [dword] | + | * +216 = [dword] Пропустить IP сцену (используется опкодами [[0707]], [[0701]]) |
* +220 = [boolean] Флаг миссии | * +220 = [boolean] Флаг миссии | ||
− | ===Информация о внешних скриптах=== | + | =====Информация о внешних скриптах===== |
− | 0xA47B60 | + | 0xA47B60 - Начало информации пула о внешних скриптах. Всего 82 элемента, каждый из которых равен 32 байтам. |
− | * +0 = [dword] | + | * +0 = [dword] Скрипт IP |
− | * +4 = [word] | + | * +4 = [word] Статус (может быть получен опкодом [[0926]]) |
− | * +6 = [word] | + | * +6 = [word] Индекс в SCM (число, которое определено в SCM заголовке) |
− | * +8 = [char] | + | * +8 = [char] Имя, char = 20 |
* +28 = [dword] Размер | * +28 = [dword] Размер | ||
− | 0xA485A0 | + | 0xA485A0 - [dword] Размер самого большого внешнего скрипта<br> |
− | 0xA485A4 | + | 0xA485A4 - [dword] Количество внешних скриптов |
− | ===Другое=== | + | =====Другое===== |
− | 0xA4892C | + | 0xA4892C - Начало пула, который расположен в хэндлах автомобиля. Здесь хранится шесть элементов, каждый из которых: |
− | * +0 = [dword] | + | * +0 = [dword] Хэндл автомобиля для проверки, если она переворачивается. Используется опкодом [[0190]]. |
− | * +4 = [dword] | + | * +4 = [dword] Время (в мс), пройденное с того момента, когда автомобиль перевернулся. Используется опкодом [[018F]]. |
− | 00A90850 | + | |
− | * +0 = [byte] | + | 00A90850 - Start of the mission cleanup list. This list keeps the handles of any entities created during a mission. When the opcode [[00D8]] executed (normally it happens at the end of any mission), the game reads this list and destroys everything being stored there. Maximum items on the list is 75. Each item has the following structure: |
− | ** 1 - | + | * +0 = [byte] Типы энтитов: |
− | ** 2 - | + | ** 1 - автомобиль |
− | ** 3 - | + | ** 2 - актер |
− | ** 4 - | + | ** 3 - объект |
− | ** 5 | + | ** 4 - эффект частиц |
− | ** 7 | + | ** 5 - группа ([[062F]]) |
+ | ** 7 - AS_origin ([[061D]]) | ||
** 8 - action_sequence | ** 8 - action_sequence | ||
** 9 - decision maker | ** 9 - decision maker | ||
− | ** 11 - | + | ** 11 - прожектор |
** 13 - txd_dictionary | ** 13 - txd_dictionary | ||
− | * +4 = [dword] | + | * +4 = [dword] Хэндл энтити (индекс в соответствующем пуле) |
==Погода== | ==Погода== | ||
Строка 1451: | Строка 1673: | ||
0xC81320 - [word] Текущая погода.<br> | 0xC81320 - [word] Текущая погода.<br> | ||
<br> | <br> | ||
− | Следующие значения связаны с файлом [[timecycp.dat]] | + | Следующие значения связаны с файлом [[timecycp.dat]]. Несколько видов погодных условий отличаются(например: UNDERWATER). Погода может влиять на дальность просмотра, цвет неба, яркость тумана, облака и прочее. |
<br> | <br> | ||
Строка 1486: | Строка 1708: | ||
* 30 до 32 = Вариаций темно-облачно-бирюзовой погоды | * 30 до 32 = Вариаций темно-облачно-бирюзовой погоды | ||
* 33 = Темная, облачная, коричневая вариация | * 33 = Темная, облачная, коричневая вариация | ||
− | * 34 = | + | * 34 = Небо с голубым и пурпурным цветом |
− | * 35 = Тускло- | + | * 35 = Тускло-коричневое небо |
− | * 36 до 38 = | + | * 36 до 38 = Ярко-облачное небо с оранжевым оттенком |
* 39 = Очень яркое небо | * 39 = Очень яркое небо | ||
− | * 40 до 42 = | + | * 40 до 42 = Голубые и пурпурные облака |
− | * 43 = Темное | + | * 43 = Темное небо с токсичным оттенком |
− | * 44 = | + | * 44 = Черно-белое небо |
− | * 45 = | + | * 45 = Черно-пурпурное небо |
− | '''Предупреждение: Если Вы попробуете установить | + | '''Предупреждение: Если Вы попробуете установить значения, которые отсутствуют в списке, то последствия будут неприятны: черный экран, мерцание, вылет игры и т.д.''' |
+ | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==Ссылки== | ==Ссылки== | ||
Строка 1507: | Строка 1725: | ||
* [http://modsforgta.ucoz.ru/forum/10-43-1 Документация по адресам gta_sa.exe 1.0US] - Тема на modsforgta.ucoz.ru. | * [http://modsforgta.ucoz.ru/forum/10-43-1 Документация по адресам gta_sa.exe 1.0US] - Тема на modsforgta.ucoz.ru. | ||
* [http://www.gtamodding.com/index.php?title=Memory_Addresses_(SA) GTAModding.com SA Memory Adresses] - Статья на английском языке. | * [http://www.gtamodding.com/index.php?title=Memory_Addresses_(SA) GTAModding.com SA Memory Adresses] - Статья на английском языке. | ||
+ | * [http://code.google.com/p/mtasa-blue MTA Sources] - Исходники мультиплеера ГТА на Google Sources. | ||
{{SA-navi}} | {{SA-navi}} | ||
[[Категория:Адреса Памяти]] [[Категория: GTA_SA]] | [[Категория:Адреса Памяти]] [[Категория: GTA_SA]] |
Текущая версия на 08:29, 3 февраля 2016
Указанные ниже адреса памяти действительны только для GTA San andreas (gta_sa.exe) версии 1.0, если не указано иное. В других версиях игры, адреса могут не совпадать или не работать.
Список статичных адресов
Основные адреса
- 0xA49D54 - [dword] Таймер для миссий с автомобилями/самолетами (в ms)
- 0xA51974 - [dword] Таймер для миссий с лодками/мотоциклами (в ms)
- 0xA51A3C - Таймер для гонок Bloodring
- 0xB7CE50 - [dword] Деньги
- 0xBAA420 - Уровень розыска
- 0x8CDEE4 - [dword] Максимальный уровень розыска
- 0xB79038 - [dword] Сколько дней прошло в игре
- 0xB70153 - [byte] Текущий час
- 0xB70152 - [byte] Текущая минута
- 0xB7014E - [byte] Текущий день недели (1 до 7)
- 0x8CB7A5 - [byte] Текущая радиостанция - ID
- 0xB700F0 - [dword] Текущий автомобиль - ID (из vehicle.ide) - не для мотоциклов
- 0x863984 - [float] Гравитация (стандартное значение - 0.008)
- 0xB7CB84 - [dword] Глобальный таймер в ms (миллисекунды)
- 0xB7CB64 - [float] Скорость игры в процентах
- 0xB70158 - [dword] Таймер, привязанный к погоде и времени в ms
- 0xB7015C - [dword] Количество миллисекунд в одной игровой секунде (по умолчанию - 1000)
- 0xB7CEE4 - [byte/boolean] Вкл/выкл бесконечный бег
- 0xB7CEE6 - [byte/boolean] Является ли игрок огнеупорным
- 0x96C009 - [byte/boolean] Является ли перекраска бесплатной (pay'n'spray)
- 0xA444A4 - [byte/boolean] Радар серый
- 0x8D2530 - [float] Плотность движения пешеходов
- 0x8A5B20 - [float] Плотность движения транспорта
- 0xB6F065 - [byte/boolean] Широкий экран (вид во время катсцен в миссиях, это не опция дисплея)
- 0xA4A948 - Очки в миссий Лоурайдер (Танцы на машинах)
- 0xA4EC20 - Очки в мини игре танцев
- 0xB790B8 - [byte] Число фотографий разных мест (4 bytes)
- 0xA9AD74 - [byte] Число закрашенных граффити (4 bytes)
- 0xB791E4 - [byte] Число найденных подков (4 bytes)
- 0xB791EC - [byte] Число найденных ракушек(4 bytes)
Примечание: Если задать максимальное значение в адресах некоторых статистических данных, то игра покажет сообщение и выдаст бонусы (например, за все найденные ракушки).
- 0x716642 - [float] Изменить тяжёлые облака (?)
- 0x716655 - [float] Отключить тяжёлые облака (?)
Примечание: Оба значения изначально равны 200. Если изменить одно из них на 100 000 вы получите очень малую облачность. Если поставить оба на 100 000, облака исчезнут.
- 0xB79078 - [byte] Количество подброшенных в такси людей (число используется в статусах, 4 байта)
- 0xA49C30 - [byte] Количество подброшенных в такси людей (число используется для выдачи наград игроку, 4 байта)
- 0xB79040 - [byte] Количество сохранений (4 bytes)
- 0xA49EFC - [dword] Прогресс с Denise
- 0xA49F00 - [dword] Прогресс с Michelle
- 0xA49F04 - [dword] Прогресс с Helen'ой
- 0xA49F08 - [dword] Прогресс с Barbar'ой
- 0xA49F0C - [dword] Прогресс с Katie
- 0xA49F10 - [dword] Прогресс с Millie
Примечание: Эти шесть адресов для девушек используются только с оригинальным main.scm. Установка значения на 100 (100%) даст вас 100 прогресс с опр. девушкой и разблокирует её подарки.
- 0xB79108 - Количество свиданий с девушками
- 0xB79100 - Текущее количество подружек
- 0xB79104 - Количество неудачных свиданий
- 0xB79110 - Количество удачных свиданий
- 0xB79060 - Найдено уникальных прыжков
- 0xB79064 - Исполнено уникальных прыжков
- 0xBA6774 - Цель на карте
- 0 = Отключена
- 1 = Включена
- 0xB6F5F0 - Указатель игрока (CPed)
- 0xB7CD98 - Указатель игрока, прямое смещение на начало пула пешеходов (педов) (CPed)
- 0xB74498 - Наибольшее количество педов (обычно 140)
- 0xB74490 - Содержит указатель на указатель. Этот указатель:
- +0 = Содержит указатель на первый элемент в пуле CPed
- +4 = Содержит указатель на карту байтов, которая обозначает, какие элементы используются в пуле CPed
- +8 = [dword] Максимальное число элементов в пуле CPed
- +12 = [dword] Текущее число элементов в пуле CPed
- 0xB6F980 - Указатель на начало пула транспорта (CVehicle)
- 0xB74494 - Содержит указатель. Этот указатель:
- +0 = Содержит указатель на первый элемент в пуле CVehicle
- +4 = Содержит указатель на карту байтов показывающую какие элементы сейчас используются в пуле CVehicle
- +8 = [dword] максимальное кол-во элементов в пуле CVehicle
- +12 = [dword] текущее кол-во элементов в пуле CVehicle
- 0x86329C - список доступных имён команд (?)
- 0xC17054 - HWND на главное окно игры
- 0xC97C28 - IDirect3DDevice9 pointer
- 0xB7C4D0 - [word] Цвет "ядра" солнца, R
- 0xB7C4D2 - [word] Цвет "ядра" солнца, G
- 0xB7C4D4 - [word] Цвет "ядра" солнца, B
- 0xB7C4D6 - [word] Цвет солнца, R
- 0xB7C4D8 - [word] Цвет солнца, G
- 0xB7C4DA - [word] Цвет солнца, B
- 0xC1CC18 - [byte] Создание эффектов света для автомобилей:
- 0 = Включено
- 1 = Отключено
- 0xA444A0 - Включён ли HUD опкодом 0826:
- 0 - выключен
- 1 - включён
- 0xC813E0 - [float] Скорость ветра по оси X
- 0xC813E4 - [float] Скорость ветра по оси Y
- 0xC813E8 - [float] Скорость ветра по оси Z
Статистика игрока
- 0xB793D4 - [float] Фигура
- 0xB793D8 - [float] Выносливость
- 0xB793DC - [float] Мышцы
- 0xB793E0 - [float] Здоровье
- 0xB793E4 - [float] Сексуальность
- 0xB79496 - [float] Пистолет
- 0xB79498 - [float] Пистолет с глушителем
- 0xB7949C - [float] Пустынный орел
- 0xB794A0 - [float] Дробовик
- 0xB794A4 - [float] Обрез
- 0xB794A8 - [float] Дробовик SPAS 12
- 0xB794AC - [float] Пистолет-пулемет
- 0xB794B0 - [float] SMG
- 0xB794B4 - [float] AK47
- 0xB794B8 - [float] M4
stats.html
- 0x8663A0 - Имя файла ( По умолчанию: 'stats.html' )
- 0x86636C - Название файла ( По умолчанию : '<title>Grand Theft Auto San Andreas Stats</title>' )
Читы
[byte] Может быть включен (1) или выключен (0). На самом деле это boolean.
- 0x969130 - Набор оружия 1
- 0x969131 - Набор оружия 2
- 0x969132 - Набор оружия 3
- 0x969133 - Здоровье+Броня+250K
- 0x969134 - Увеличить уровень розыска на 2 звезды
- 0x969135 - Очистить уровень розыска
- 0x969136 - Солнечная погода
- 0x969137 - Очень солнечная погода
- 0x969138 - Плохая погода
- 0x969139 - Дождевая погода
- 0x96913A - Туманная погода
- 0x96913B - Часы идут быстрее
- 0x96913C - Ускорить игровой процесс
- 0x96913D - Замедлить игровой процесс
- 0x96913E - Люди атакуют друг друга с клюшками для гольфа
- 0x96913F - Have Bounty on Head
- 0x969140 - Все вооружены
- 0x969141 - Создать Rhino (Не работает)
- 0x969142 - Создать Bloodring Banger (Не работает)
- 0x969143 - Создать Rancher (Не работает)
- 0x969144 - Создать Racecar A (Не работает)
- 0x969145 - Создать Racecar B (Не работает)
- 0x969146 - Создать Romero (Не работает)
- 0x969147 - Создать Stretch (Не работает)
- 0x96914A - Взорвать все машины
- 0x96914B - Оставить от машин лишь колеса (невидимые машины)
- 0x96914C - Лёгкая управляемость транспортным средством
- 0x96914D - Суицид
- 0x96914E - Все светофоры зеленые
- 0x96914F - Все водители агрессивные
- 0x969150 - Все машины розовые
- 0x969151 - Все машины черные
- 0x969153 - Летающие лодки
- 0x969154 - Толстый Карл
- 0x969155 - Карл максимально накачанный
- 0x969156 - Карл становится худым
- 0x969157 - Элвисы повсюду
- 0x969158 - Педы атакуют с ракетниц
- 0x969159 - Пляжная тема
- 0x96915A - Члены банды повсюду
- 0x96915B - Банды контролируют улицы
- 0x96915C - Тема "ниндзя"
- 0x96915D - Магнит на девушек Лёгкого Поведения
- 0x96915E - По улицам ездят дешевые авто
- 0x96915F - По улицам ездят быстрые авто
- 0x969160 - Машины могут летать
- 0x969161 - Высокий прыжок на BMX
- 0x969162 - Создать Hydra (Не работает)
- 0x969163 - Создать Vortex Hovercraft (Не работает)
- 0x969164 - Режим танка
- 0x969165 - Все машины имеют нитро
- 0x969166 - Машины летают при столкновениях
- 0x969167 - Всегда полночь
- 0x969168 - остановить время - Оранжевое небо
- 0x969169 - Гроза
- 0x96916A - Песчаная буря
- 0x96916C - Мега-прыжки
- 0x96916D - Бесконечное здоровье
- 0x96916E - Бесконечный воздух (под водой)
- 0x96916F - Дать парашют
- 0x969170 - Дать реактивный рюкзак
- 0x969171 - Полиция вас не видит
- 0x969172 - Шесть звезд уровня розыска
- 0x969173 - Мега удар
- 0x969174 - Всегда сытый
- 0x969175 - Хаос-режим
- 0x969176 - Тема "дурдом"
- 0x969177 - Замедлить игровой процесс
- 0x969178 - Бесконечные патроны, без перезарядки
- 0x969179 - Стреляешь во время езды
- 0x96917A - Пустынный трафик
- 0x96917B - Трафик сельской местности
- 0x96917C - Нанять в банду любого (с пистолетом)
- 0x96917D - Тема сельской местности
- 0x96917E - Нанять в банду любого (с гранатометом)
- 0x96917F - Максимальное уважение
- 0x969180 - Максимальная сексуальность
- 0x969181 - Максимальная выносливость
- 0x969183 - Мастер во всем оружии
- 0x969184 - Создать Hunter (Не работает)
- 0x969185 - Создать Quad (Не работает)
- 0x969186 - Создать Tanker Truck (Не работает)
- 0x969187 - Создать Dozer (Не работает)
- 0x969188 - Создать Stunt Plane (Не работает)
- 0x969189 - Создать Monster (Не работает)
[dword]
- 0x96918C - Были когда-нибудь использованы читы или нет
- 0xBAA472 - Используются ли читы за текущий сеанс игры
- 0xB79044 - Сколько раз были использованы читы
[byte]
- 0x96918C - 'Чит' статус:
- 0 = выключен
- 1 = включен
Примечание: Если установлено в 1, то при сохранении вы получите предупреждения о использовании читов.
Настройки графики
- 0xBA6784 - [dword] Яркость
- 0xBA6792 - [byte] Легенда
- 0xBA676C - [byte] Режим радара
- 0xBA6769 - [byte] Hud-режим
- 0xBA678C - [byte] Субтитры
- 0xBA6788 - [float] Дистанция прорисовки
- 0xBA6794 - [byte] Ограничитель кадров
- 0xBA6793 - [byte] Широкий экран
- 0xA9AE54 - [byte] Качество эффектов
- 0xBA680C - [byte] Мип-маппинг
- 0xBA6814 - [byte] Сглаживание:
- 1 = 0x (off)
- 2 = 1x
- 3 = 2x
- 4 = 3x
- 0xBA6820 - [byte] Значения разрешений:
- 11 = 640x480
- 12 = 800x400
- 13 = 800x600
- 15 = 1024x768
- (Зависит от графического драйвера/аппаратных средств.)
- (На самом деле тут ситуация сложнее. До значения 15 (где 15 - максимальное разрешение доступное видеокартой) все разрешения идут с глубиной 16 бит, далее до значения 22 - с глубиной 32 бита)
Настройки звука
- 0xBA6798 - [byte] Громкость Радио [от 0 до 64]
- 0xBA6797 - [byte] Громкость Аудио [от 0 до 64]
- 0xBA6799 - [byte] Радио Эквалайзер
- 0xBA6795 - [byte] Автонастройка Радио
- 0xBA67F8 - [byte] Режим проигрывания пользовательской музыки:
- 0 = радио
- 1 = случайно
- 0xBA680D - [byte] Автоматическое сканирование пользовательской музыки
- 0xBA679A - [byte] ID текущей радиостанции:
- от 1 до 12 (ниже смотрите список радиостанций и их ID)
- 1 = "Playback FM"
- 2 = "K Rose"
- 3 = "K-DST"
- 4 = "Bounce FM"
- 5 = "SF-UR"
- 6 = "Radio Los Santos"
- 7 = "Radio X"
- 8 = "CSR 103.9"
- 9 = "K-JAH West"
- 10 = "Master Sounds 98.3"
- 11 = "WCTR Talk Radio"
- 12 = "Плеер пользовательской музыки"
- 13 = "Радио выключено"
- от 1 до 12 (ниже смотрите список радиостанций и их ID)
Настройки управления
- 0xBA6818 - [byte] значения:
- 0 = мышь + клавиатура
- 1 = джойстик
- 0xB6EC1C - [float] Чувствительность мыши
- 0xC1CC02 - [byte] Управление транспортом при помощи мышки
- 0xC1CC03 - [byte] Инверсия мыши по вертикали
- 0xB6EC2E - Управление:
- 0 = джойстик (включается автоприцел, причем не обязательно иметь джойстик)
- 1 = мышь + клавиатура
Интерфейс
- 0x866B74 - [float] Ширина радара (ось X)
- 0x866B78 - [float] Длина радара (ось Y)
- 0xBAB22C - [byte] Строка здоровья/цвет противника/красный маркер/любой красный текст (RGBA, 4 байта)
- 0xBAB230 - [byte] Цвет денег/цвет названия машины/любой зелёный текст (RGBA, 4 байта)
- 0xBAB238 - [byte] Белый цвет (RGBA, 4 байта)
- 0xBAB240 - [byte] Main menu title border (RGBA, 4 байта)
- 0xBAB244 - [byte] Уровень розыска/жёлтый цвет (RGBA, 4 байта)
- 0xBAB24C - [byte] Цвет названия радиостанции (RGBA, 4 байта)
Примечание: изменяется интерфейс в хекс, поэтому значение необходимо писать так:
[color=darkred]0xFFFFFFFF[/color]
RGBA кодировку следует писать наоборот (например, 00FF00FF (зеленый) --> FF00FF00)
Указатели на CParticleData
- 0xA9AE00 = [dword] Указатель на prt_blood (CParticleData)
- 0xA9AE04 = [dword] Указатель на prt_boatsplash (CParticleData)
- 0xA9AE08 = [dword] Указатель на prt_bubble (CParticleData)
- 0xA9AE0C = [dword] Указатель на prt_cardebris (CParticleData)
- 0xA9AE10 = [dword] Указатель на prt_collisionsmoke (CParticleData)
- 0xA9AE14 = [dword] Указатель на prt_gunshell (CParticleData)
- 0xA9AE18 = [dword] Указатель на prt_sand (CParticleData)
- 0xA9AE1C = [dword] Указатель на prt_sand2 (CParticleData)
- 0xA9AE20 = [dword] Указатель на prt_smoke_huge (CParticleData)
- 0xA9AE24 = [dword] Указатель на prt_smokeII_3_expand (CParticleData)
- 0xA9AE28 = [dword] Указатель на prt_spark (CParticleData)
- 0xA9AE2C = [dword] Указатель на prt_spark_2 (CParticleData)
- 0xA9AE30 = [dword] Указатель на prt_splash (CParticleData)
- 0xA9AE34 = [dword] Указатель на prt_wake (CParticleData)
- 0xA9AE38 = [dword] Указатель на prt_watersplash (CParticleData)
- 0xA9AE3C = [dword] Указатель на prt_wheeldirt (CParticleData)
- 0xA9AE40 = [dword] Указатель на prt_glass (CParticleData)
Классы и структуры
CPlaceable (Перемещаемые обьекты)
0x0000 | DWORD __vmt // Указатель на виртуальную таблицу методов для этого объекта 0x0004 | RwV3D pos // Позиция RwV3D 0x0010 | float angle // Угол по оси Z 0x0014 | RwMatrix *matrix // Указатель на матрицу позиции и вращения
CEntity (Игровые субьекты)
- Класс CPlaceable
- CEntity +0x18 = [dword] Указатель на RwObject (RpClump)
- CEntity +0x1C = [dword] Флаги
- CEntity +0x22 = [word] ID модели
- CEntity +0x2F = [byte] Интерьер
- CEntity +0x36 = [dword] Тип субьекта
CPhysical (Физические субьекты)
- Класс CEntity
- CPhysical +0x40 = [dword] Иммунитеты
- CPhysical +0x44 = [RwV3D] Cкорость по трём осям
- CPhysical +0x50 = [RwV3D] Spin
- CPhysical +0x5C = [RwV3D] Ускорение по трём осям
- CPhysical +0x8C = [float] Масса
- CPhysical +0x90 = [float] Масса при повороте
- CPhysical +0x94 = [float] Grip Divider:
- 1.0 = 1 x gGrip
- 10.1 = 10 x gGrip
- 100.0 = g / 100Grip
- CPhysical +0x98 = [float] Mass-to-Grip Multiplier. Ie. G Force when flying/during suspension/driving (acceleration towards ground)
- CPhysical +0x9С = [float] Эластичность
- CPhysical +0xA0 = [float] Плавучесть
- CPhysical +0xA4 = [RwV3D] Центр массы
- CPhysical +0xB9 = [word] Количество субьектов, с которыми соприкасается субьект
- CPhysical +0xBC = [24 bytes] 6 субьектов, с которыми соприкасается субьект
- CPhysical +0xD8 = [float] Величина урона
- CPhysical +0xDC = [dword] Субьект, который нанёс урон этому субьекту (CPhysical)
- CPhysical +0xE0 = [RwV3D] Координаты столкновения объекта в локальной системе координат
- CPhysical +0xEC = [RwV3D] Координаты столкновения объекта
- CPhysical +0xF8 = [word] Часть обьекта, которая столкнулась с чем-либо (или часть объекта, с которым столкнулся объект)
Примечание: Для автомобилей используются следующие номера частей:
- 1 - капот?(левая передняя фара?)
- 2 - багажник?
- 3 - передний бампер?
- 4 - задний бампер?
- 5 - левая передняя дверь
- 6 - правая передняя дверь
- 7 - левая задняя дверь
- 8 - правая задняя дверь
- 9 - левое крыло?
- 10 - правое крыло?
- 17 - правая передняя фара?
- CPhysical +0xFС = [dword] Субьект, к которому прикреплён этот субьект (CPhysical)
- CPhysical +0x100 = [RwV3D] Координаты прицепления субьекта
- CPhysical +0x10C = [RwV3D] Углы прицепления субьекта
- CPhysical +0x128 = [dword] Субьект, столкновения с которым игнорируются (CPhysical)
- CPhysical +0x12C = [float] Уровень освещённости поверхности, с которой соприкасается субьект (0.0 - 0.5)
- CPhysical +0x134 = [CShadowData*] Указатель на структуру, которая содержит информацию о тени для физического субьекта (обычно, педа)
CPed (Пешеходы)
Каждый пед - это объект размером в 1988 (0x7C4) байт.
- Класс CPhysical
- CPed +0x15C = Некоторые статусы анимации:
- 0 = прыгает от земли
- 61 = ударяет
- 102 = остановился
- 154 = спринт (бежит с ускорением)
- 205 = бежит
- CPed +0x294 Класс CPedSound (размер - 0x100 байт)
- CPed +0x46C = [dword] Проверка игрока:
- 0 = в воздухе/воде
- 1 = в машине
- 2 = входит в интерьер
- 3 = пешком
- 18 = истекает кровью
- CPed +0x46D = Статус прыжка:
- 32 = приземлился/ожидает
- 33 = в машине (?)
- 34 = в воздухе
- 36 = приземление
- CPed +0x46F = Статус приседания:
- 128 = стоит
- 132 = присел
- CPed +0x470 = [dword] Свойства:
- 3 = невидимость (не включая оружие)
- 12 = иммунитет к выстрелам в голову
- 20 = тонет в воде
- CPed +0x474 = [dword] Свойства:
- 2 = невидимость (включая оружие)
- 9 = не создавать пикап оружия после смерти
- CPed +0x47C = Указатель на структуру анимации
- CPed +0x4D4 = [dword] Идентификатор animGroup
- CPed +0x4DF = Статус проигрывания текущей анимации:
- 0 = ничего
- 61 = начало/остановка
- 62 = идёт цикл
- CPed +0x4F4 = [dword] Текущее оружие (RpClump)
- CPed +0x4F8 = [dword] Вспышка текущего оружия (RpClump)
- CPed +0x4FC = [dword] Очки (RpClump)
- CPed +0x500 = [dword] Указатель на тип очков
- CPed +0x504 = [word] Мультипликатор прозрачности вспышки оружия (первое оружие)
- CPed +0x508 = [word] Мультипликатор прозрачности вспышки оружия (второе оружие)
- CPed +0x50C = начало класса CPedIK
- CPed +0x50C = [dword] Указатель на этого педа (CPed)
- CPed +0x510 = [float] Поворот туловища по оси Z (радианы)
- CPed +0x514 = [float] Поворот туловища по оси X (радианы)
- CPed +0x518 = [float] m_fSlopePitch
- CPed +0x51C = [float] m_fSlopePitchLimitMult
- CPed +0x520 = [float] m_fSlopeRoll
- CPed +0x524 = [float] m_fBodyRoll
- CPed +0x528 = [dword] Флаги
- 1 = PEDIK_GUN_REACHED_TARGET
- 2 = PEDIK_TORSO_USED
- 4 = PEDIK_USE_ARM
- 8 = PEDIK_SLOPE_PITCH
- 16 = PEDIK_EVERYTHING_USED
- CPed +0x530 = [dword] Статус:
- 0 = покидает машину, падает с байка или что-то в этом роде
- 1 = нормальный случай
- 50 = водит
- 54 = игрок только-что умер (записи wasted ещё не видно)
- 55 = погиб
- 63 = арестован
- CPed +0x534 = Статус бега:
- 0 = пока водит
- 1 = неподвижно стоит
- 4 = начинает бежать
- 6 = бежит
- 7 = спринт (бежит с ускорением)
- CPed +0x540 = [float] Здоровье
- CPed +0x544 = [float] Максимальное здоровье
- CPed +0x548 = [float] Броня
- CPed +0x558 = [float] Угол игрока по оси Z (в радианах)
- CPed +0x55C = [float] Угол игрока по оси Z при прицеливании (в радианах)
- CPed +0x560 = [float] Скорость поворота
- CPed +0x568 = [dword] Текущая машина, с которой вы находитесь в контакте
- CPed +0x584 = [dword] Текущий Entity (объект), с которым вы находитесь в контакте
- CPed +0x58C = [dword] Последняя или текущая машина, которую вы водили/ведёте (CarPointer)
- CPed +0x598 = [byte] ПедТип
- CPed +0x5A0 = [364 bytes] 13 структур CWeaponSlot по 28 байт
- CPed +0x70C = [dword] ID оружия в режиме "турель"
- CPed +0x718 = [byte] Текущий слот оружия
- CPed +0x71A = [byte] Точность стрельбы
- CPed +0x71C = [dword] Нацеленный обьект (CObject)
- CPed +0x72C = [byte] Навык владения оружием (0-4)
- CPed +0x72D = [byte] Стиль борьбы #1
- CPed +0x72E = [byte] Стиль борьбы #2
- CPed +0x730 = [dword] Указатель на прицепленный огонь (CFire)
- CPed +0x740 = [byte] ID текущего оружия (из default.dat)
- CPed +0x756 = [word] Количество денег
- CPed +0x760 = [dword] Оружие, которым убит пед
- CPed +0x764 = [dword] Указатель на педа, который убил этого педа (CPed)
- CPed +0x76C = [RwV3D] Офсет от обьекта/транспорта в режиме "турель"
- CPed +0x778 = [word] Угол стрельбы в режиме "турель" А
- CPed +0x77С = [float] Угол стрельбы в режиме "турель" Б (в радианах)
- CPed +0x780 = [dword] Вид позиции в режиме "турель"
- CPed +0x784 = [dword] Количество патронов в режиме "турель"
- CPed +0x79C = [dword] Нацеленный пешеход (CPed)
CVehicle
Каждый транспорт как объект, равняется 2584 (0xA18) байтам и начинается с 0xC502AA0.
- Класс CPhysical
- +0x390 Начало класса CCarCtrl
- +0x394 = [dword] Starting route node index (dwFirstNode)
- +0x3A4 = [word] ID текущей точки пути
- +0x3A6 = [word] ID следующей точки пути
- +0x3A8 = [word] ID предыдущей точки пути
- +0x3AC = [dword] TimeOfLastMoving (последний момент времени, когда автомобиль перемещался)
- +0x3B7 = [byte] текущая полоса движения
- 0 - единственная полоса на обычных дорогах / левая полоса на шоссе
- 1 - правая полоса на шоссе
- +0x3B8 = [byte] будущая полоса движения?
- +0x3B9 = [byte] trafficBehaviour (опкод 00AE)
- +0x3BA = [byte] driverBehaviour (опкод 00AF)
- +0x3BB = [byte] ID анимации для проигрывания
Примечание: После применения анимации это значение обнуляется.
- +0x3BC = [dword] Время анимации для проигрывания
- +0x3D0 = [byte] максимальная скорость, м/с
- +0x3DB = [dword] Traffic flag
- ((dwTrafficFlag >> 6) & 1 = bFollowPath)
- +0x3DC = [byte] VehicleIsNotOnPath
- 0 - автомобиль на пути
- 1 - автомобиль не на пути
- +0x3EC = [float] Destination X (fDestX)
- +0x3F0 = [float] Destination Y (fDestY)
- +0x3F4 = [float] Destination Z (fDestZ)
- +0x3F8 = [dword] Array of the last 8 route nodes (dwNodeList[8])
- +0x418 = [short] Amount of remaining route nodes (sSteps)
- +0x428 = [byte] Флаги:
- 2 = Полицейский транспорт
- 4 = Медицинский транспорт
- 8 = Транспорт пожарной службы
- 16 = Двигатель включен
- 32 = Используется ручной тормоз, либо в транспорте нет водителя
- 64 = Включены фары (за исключением стоп-сигналов автомобиля)
- +0x42D = [byte] Сирена включена/отключена
0x0434 BYTE colorPrimary 0x0435 BYTE colorSecondary 0x0436 BYTE colorTertiary 0x0437 BYTE colorQuaternary 0x0438 BYTE extra[2] 0x043A WORD upgrade[15] 0x0458 float wheelSize
- +0x45C = [dword] Время до окончания действия сигнализации
- +0x460 = [dword] Указатель на водителя (CPed)
- +0x464 = [dword] Указатель на пассажира 1 (CPed) (Переднее правое сиденье)
- +0x468 = [dword] Указатель на пассажира 2 (CPed) (Заднее левое сиденье)
- +0x46C = [dword] Указатель на пассажира 3 (CPed) (Заднее правое сиденье)
- +0x470 = [dword] Указатель на пассажира 4 (CPed) (Используется для автобусов)
- +0x474 = [dword] Указатель на пассажира 5 (CPed) (Используется для автобусов)
- +0x478 = [dword] Указатель на пассажира 6 (CPed) (Используется для автобусов)
- +0x47C = [dword] Указатель на пассажира 7 (CPed) (Используется для автобусов)
- +0x480 = [dword] Указатель на пассажира 8 (CPed) (Используется для автобусов)
- +0x488 = [byte] Максимальное кол-во пассажиров
- +0x490 = [dword] Указатель на прицепленный огонь (CFire)
- +0x494 = [float] Steer angle 1
- +0x498 = [float] Steer angle 2
- +0x49C = [float] Статус педали газа
- +0x4A0 = [float] Статус педали тормоза
- +0x4A8 = [byte] Статус бомбы у машины:
- 0 = нет бомбы
- 1 = незаряженная бомба с таймером
- 2 = незаряженная бомба с датчиком зажигания двигателя
- 3 = радиоуправляемая бомба
- 4 = заряженная бомба с таймером
- 5 = заряженная бомба с датчиком зажигания двигателя
Примечание: Радиоуправляемая бомба (3) можно только узнать, установлена она или нет. Установка значения 3 ничего не даст. Вы можете установить значения выше 0 и 1, чтобы дать машине бомбу. Некоторые флаги дают возможность установить бомбу, если она у вас присутствует. Если вы установили это значение на 4, то не сможете убрать бомбу.
- +0x4B4 = [dword] Передача
- +0x4C0 = [float] Здоровье машины:
- меньше 250.0 - Машина горит
- 1000.0 - Не повреждена
- +0x4C8 = [dword] Указатель на прицеп (CVehicle)
- +0x4F8 = [dword] Статус дверей машины:
- 1 = Открыты
- 2 = Закрыты
- +0x514 = [dword] Сирена:
- 0 = выключена
- 1 = включена
- +0x51C = [CStoredCollPoly] Поверхность, с которой контактирует передняя часть транспорта?
- +0x548 = [CStoredCollPoly] Поверхность, с которой контактирует задняя часть транспорта?
- +0x574 = [byte] Освещённость поверхности, с которой контактирует левая передняя часть транспорта
- +0x575 = [byte] Освещённость поверхности, с которой контактирует левая задняя часть транспорта
- +0x576 = [byte] Освещённость поверхности, с которой контактирует правая передняя часть транспорта
- +0x577 = [byte] Освещённость поверхности, с которой контактирует правая задняя часть транспорта
- +0x584 = [dword] Статус фар:
- 1 - передняя правая включена
- 2 - передняя левая включена
- 4 - задняя правая включена
- 8 - задняя левая включена
- +0x588 = [dword] Текстура номерного знака (RwTexture)
- +0x590 = [byte] Класс транспорта:
0 CAutomobile 5 CBoat 6 CTrain 9 CBike
- +0x594 = [dword] Суб-класс транспорта
0 CAutomobile 1 CMtruck 2 CQuad 3 CHeli 4 CPlane 5 CBoat 6 CTrain 7 CFHeli // неиспользуемый класс 8 CFPlane // неиспользуемый класс 9 CBike 10 CBMX 11 CTrailer
- +0x598 = [word] ID txd с текстурой покрасочной работы
- +0x59C = [dword] Текстура покрасочной работы (RwTexture)
CAutomobile (Автомобили)
0x0000 | CVehicle vehicle 0x05A0 | CDamageManager m_sDamageManager 0x05B8 | CDoor m_sDoor[6] 0x0648 | RwFrame *m_pFrame[25] 0x06AC | CPanel m_sPanel[3] 0x070C | CDoor m_sSwingingChassis 0x0724 | CColPoint m_swheelColPoint[4] // Точки соприкосновения колес автомобиля с поверхностью 0x07D4 | float wheelsDistancesToGround1[4] // Расстояния между колесами и поверхностью 0x07E4 | float wheelsDistancesToGround2[4] 0x07F4 | float _f7F4 0x0804 | DWORD _f804 0x0808 | DWORD _f808 0x080C | DWORD _f80C 0x0810 | BYTE _f810[24] 0x0828 | DWORD _f828[4] 0x0838 | BYTE _f838[16] 0x0848 | DWORD _f848 0x084C | float fRotorSpeed // Скорость вращения ротора (0.22 - ротор при работе) 0x0850 | DWORD _f850 0x0854 | DWORD _f854 0x0858 | BYTE _f858[16] 0x0868 | BYTE TaxiAvaliable 0x0869 | BYTE _f869 0x086A | WORD _f86A 0x086C | WORD _f86C 0x086E | WORD _f86E 0x0870 | DWORD someEndTime 0x0874 | DWORD someStartTime 0x0878 | DWORD _f878 0x087C | BYTE _f87C[28] 0x0898 | float fHeightAboveRoad 0x089C | float fRearHeightAboveRoad 0x08A0 | float _f8A0 0x08A4 | float fNitroValue 0x08A8 | BYTE _f8A8[8] 0x08B0 | DWORD _f8B0 0x08B4 | BYTE _f8B4[48] 0x08E4 | DWORD burnTimer 0x08E8 | DWORD _f8E8 0x08EC | BYTE _f8EC[96] 0x094C | DWORD _f94C 0x0950 | DWORD _f950 0x0954 | float fForcedHeading 0x0958 | BYTE _f958[8] 0x0960 | BYTE numContactWheels 0x0961 | BYTE allWheelsOnGround 0x0962 | BYTE _f962 0x0963 | BYTE _f963 0x0964 | DWORD _f964 0x0968 | DWORD _f968[4] 0x0978 | CParticle *pNitroParticle1 0x097C | CParticle *pNitroParticle2 0x0980 | BYTE _f980 0x0981 | BYTE _f981 0x0982 | WORD _f982 0x0984 | DWORD _f984
CBike (Мотоциклы и велосипеды)
- Класс CVehicle
- CBike +0x5A0 = [dword] Кламп модели (RpClump)
- CBike +0x5A4 = [dword] Компонент chassis_dummy (RwFrame)
- CBike +0x5A8 = [dword] Компонент forks_front (RwFrame)
- CBike +0x5AC = [dword] Компонент forks_rear (только для мотоциклов) (RwFrame)
- CBike +0x5B0 = [dword] Компонент wheel_front (RwFrame)
- CBike +0x5B4 = [dword] Компонент wheel_rear (RwFrame)
- CBike +0x5B8 = [dword] Компонент mudguard (для велосипедов - handlebars) (RwFrame)
- CBike +0x5BC = [dword] Компонент handlebars (для велосипедов - chainset) (RwFrame)
- CBike +0x5D0 = [dword] Компонент pedal_r (только для велосипедов) (RwFrame)
- CBike +0x5D4 = [dword] Компонент pedal_l (только для велосипедов) (RwFrame)
- CBike +0x5CC = [RwMatrix] Матрица позиции и поворота
CTrain
0x0000 | CVehicle vehicle // CVehicle 0x05A0 | WORD pathPointID // Текущий номер точки маршрута (номер строчки в tracks, нумерация от нуля) 0x05A2 | BYTE[2] _pad1 0x05A4 | float acceleration // Ускорение 0x05A8 | float distanceTravelled // Расстояние, пройденное от начала маршрута в метрах 0x05AC | DWORD _f5AC 0x05B0 | float _f5B0 0x05B4 | float _f5B4 0x05B8 | BYTE flags1 0x05B9 | BYTE wreckedFlags 0x05BA | BYTE[2] _f5BA 0x05BC | DWORD someTime 0x05C0 | BYTE trackID // Номер маршрута поезда: 0 - tracks, 1 - tracks3, 2 - tracks2, 3 - tracks4 0x05C1 | BYTE[3] _pad2 0x05C4 | DWORD timeCreated // Игровое время создания поезда 0x05C8 | WORD _f5C8 0x05CA | BYTE _f5CA 0x05CB | BYTE passengerFlags 0x05CC | CPed *passenger 0x05D0 | DWORD previousCarriage // Предыдущий вагон 0x05D4 | DWORD nextCarriage // Следующий вагон 0x05D8 | CAutomobileDoor[6] doors 0x0668 | RwFrame *frameArray[17] // RwFrame
Примечание (Текущий номер точки маршрута):
- За данной точкой находится задний габарит модели, если поезд направлен по порядку точек.
- Если поезд направлен в обратную сторону, то номер точки фиксируется относительно переднего габарита модели.
Примечание (Ускорение):
- Независимо от первоначальной ориентации поезда -
- при движении по порядку точек - больше нуля,
- при движении против порядка точек - меньше нуля.
Примечание (Расстояние, пройденное от начала маршрута в метрах):
- При нуле задний габарит модели находится на первой точке маршрута - если поезд направлен по порядку точек.
- При нуле передний габарит модели находится на первой точке маршрута - если поезд направлен в обратную сторону.
CHeli (Вертолёты)
- Класс CAutomobile
- CHeli +0x9A8 = [float] Максимальная высота полёта
- CHeli +0x9B0 = [float] Минимальная высота полёта
CObject (Динамические обьекты)
- Класс CPhysical
- CObject +0x140 = [dword] Флаги
- бит 10 = обьект сломан
- бит 11 = включен сигнал поезда
- бит 12 = обьект сфотографирован камерой
- бит 13 = обьект можно поднимать, переносить
- бит 18 = обьект можно прицепить к магниту
- бит 22 = иммунитет к педам (не включая игрока)
- CObject +0x144 = [byte] Эффект повреждения
- 0 = нет эффекта
- 1 = происходит смена модели
- 20 = разрушается
- 21 = изменяется модель, затем разрушается
- 200 = ломается
- 202 = ломается и удаляется
- CObject +0x148 = [byte] Оружие, которое нанесло урон обьекту. Номера оружия
- 255 = обьект не был повреждён, либо не может быть повреждённым
- CObject +0x154 = [float] Здоровье обьекта
- CObject +0x15C = [float] Коэффициент размера обьекта
- CObject +0x160 = [dword] Указатель на структуру, которая содержит информацию об обьекте из object.dat (CObjectInfo)
CBuilding (Статичные обьекты)
0x0000 | CEntity _parent // CEntity
CWeapon (Слот оружия)
0x0000 | eWeaponType m_Type // Тип оружия 0x0004 | DWORD m_dwState // Статус: 0 - ожидание, 1 - стреляет, 2 - перезарядка 0x0008 | DWORD m_dwAmmoInClip // Патронов в обойме 0x000C | DWORD m_dwTotalAmmo // Патронов всего 0x0010 | DWORD m_dwTimeForNextShot // Время для следующего выстрела (время последнего выстрела + время ожидания) 0x0014 | BYTE _f14 0x0015 | BYTE _f15 0x0016 | BYTE _f16 0x0017 | BYTE _f17 0x0018 | CParticle * m_pParticle // Прикреплённый эффект
CBone (Кости скелета)
Кости создаются при инициализации анимированного клампа.
0x0000 | BYTE m_bFlags 0x0004 | CVector m_vOffset // Статичное смещение относительно родительской кости 0x0010 | СHAnimIFrame *m_pIFrame // Указатель на структуру, которая содержит интерполированные данные о положении кости 0x0014 | DWORD m_dwNodeId // Специальный идентификатор кости
СHAnimIFrame
Эта структура содержит интерполированные данные о положении кости
0x0000 | CQuat m_qOrientation 0x0010 | CVector m_vTranslation
CScriptParticle (Скриптовые эффекты частиц)
0x0000 | BYTE isExist // Флаг существования 0x0001 | WORD ID // Уникальный идентификатор 0x0002 | CParticleData* pData // Указатель на структуру информации об этом эффекте частиц
CStoredCollPoly (Полигон коллизии)
0x0000 | RwV3D posVertexA // Координаты первой вершины треугольника RwV3D 0x000C | RwV3D posVertexB // Координаты второй вершины треугольника RwV3D 0x0018 | RwV3D posVertexC // Координаты третьей вершины треугольника RwV3D 0x0024 | BYTE isActual // Что-то в этом роде, устанавливается в 1 при создании 0x0025 | BYTE[3] _padding 0x0028 | DWORD lighting // Освещённость, при чтении из структуры транспорта используется только первый байт
CWanted (Розыск)
- +0x0 = Счетчик злости копов:
- свыше 50 = 1 звезда
- свыше 180 = 2 звезды
- свыше 550 = 3 звезды
- свыше 1200 = 4 звезды
- свыше 2400 = 5 звезд
- свыше 4600 = 6 звезд
- +0x2C = [dword] Текущий уровень звезд
- +0x19 = [byte] Количество одновременно стреляющих в игрока копов
Примечание: Если поставить значение 0, вертолеты все равно будут стрелять.
Камера
- 0xB6F028 - Начало блока камеры (CCamera)
- CCamera+0xB4 = [dword] Текущий вид камеры:
- 0 = с бампера
- 1 = близкое расстояние от машины
- 2 = среднее расстояние от машины
- 3 = дальнее расстояние от машины
- 4 = ничего = то же, что и последнее?
- 5 = кинематографический вид
- 6 to INF = то же, что и 4?
- CCamera+0xB8 = [float] Car View Distance (arm length)
- CCamera+C0 = [float] True View Distance (true arm length)
CPlayerData
- +0x1E = [byte/boolean] Игрок игнорируется копами
- +0x298 = [byte/boolean] Игрок игнорируется всеми
Pools
0x550F10 - Расположение функций пула. Здесь хранятся основные лимиты игры.
- 00B74484 - PtrNode Single
- 00B74488 - PtrNode Double
- 00B7448C - EntryInfoNode
- 00B74490 - Peds.
- 00B74494 - Vehicles.
- 00B74498 - Buildings.
- 00B7449C - Objects
- 00B744A0 - Dummys
- 00B744A4 - ColModel
- 00B744A8 - Task
- 00B744AC - Event
- 00B744B0 - PointRoute
- 00B744B4 - PatrolRoute
- 00B744B8 - NodeRoute
- 00B744CC - TaskAllocator
- 00B744C0 - PedIntelligence
- 00B744C4 - PedAttractors
Характеристики машин
0xC2B9DC - Начало блока Handling'а. Каждый слот имеет 224 байта данных.
- +0x0 = [dword] Индекс/Идентификатор
- +0x4 = fMass
- +0x8 = 1.0 / fMass
- +0xC = fTurnMass
- +0x10 = fDragMult
- +0x14 = CentreOfMass.x
- +0x18 = CentreOfMass.y
- +0x1C = CentreOfMass.z
- +0x20 = [byte] nPercentSubmerged
- +0x24 = fMass * 8.0000001e-1 / nPercentSubmerged
- +0x28 = fTractionMultiplier
- +0x74 = [byte] TransmissionData.nDriveType
- +0x75 = [byte] TransmissionData.nEngineType
- +0x76 = [byte] TransmissionData.nNumberOfGears
- +0x7C = TransmissionData.fEngineAcceleration (Multiplied by 3.9999999e-4)
- +0x80 = TransmissionData.fEngineInertia
- +0x84 = TransmissionData.fMaxVelocity (Multiplied by 5.5555599e-3)
- +0x94 = fBrakeDeceleration (Multiplied by 3.9999999e-4)
- +0x98 = fBrakeBias
- +0x9C = [byte] bABS
- +0xA0 = fSteeringLock
- +0xA4 = fTractionLoss
- +0xA8 = fTractionBias
- +0xAC = fSuspensionForceLevel
- +0xB0 = fSuspensionDampingLevel
- +0xB4 = fSuspensionHighSpdComDamp
- +0xB8 = Suspension upper limit
- +0xBC= Suspension lower limit
- +0xC0 = Suspension bias between front and rear
- +0xC4 = Suspension anti-dive multiplier
- +0xC8 = fCollisionDamageMultiplier (multiplier not yet found)
- +0xCC = [hex] modelFlags
- +0xD0 = [hex] handlingFlags
- +0xD4 = fSeatOffsetDistance
- +0xD8 = [dword] nMonetaryValue
- +0xDC = [byte] Front lights
- +0xDD = [byte] Rear lights
- +0xDE = [byte] Vehicle anim group
WEAPON.DAT
0xC8AAB8 - Начало блока, куда считывается информация об оружии с меткой J (оружие ближнего боя) и $ (остальное оружие). В этом блоке 0x50 элементов по 0x70 байт в каждом. Индекс элемента высчитывается по формуле: <номер оружия> + <смещение>. Смещение определяется навыком оружия skilllevel: STD - 0, POOR - 25, PRO - 36, особое (характеристики пистолета копов) - 47. Все имена взяты из заголовка оригинального weapon.dat.
- +0x0 = [dword] eFireType
- 0 - MELEE
- 1 - INSTANT_HIT
- 2 - PROJECTILE
- 3 - AREA_EFFECT
- 4 - CAMERA
- 5 - USE
- +0x4 = [dword] targetRange
- +0x8 = [dword] weaponRange
- +0xC = [dword] modelId1
- +0x10 = [dword] modelId2
- +0x14 = [dword] slot
- +0x18 = [dword] flags.
Примечание : изменяя флаги, убедитесь, что установленная анимационная группа поддерживает все определенные действия, иначе игра будет вылетать. Массив флагов:
- 0 - CANAIM. Возможность целиться из оружия.
- 1 - AIMWITHARM. Сиджей, когда целится, водит рукой.
- 2 - 1STPERSON. Вид от первого лица при прицеливании (как у гранатомёта и снайперской винтовки).
- 3 - ONLYFREEAIM.
- 4 - MOVEAIM. Возможность передвигаться при прицеливании.
- 5 - MOVEFIRE. Возможность передвигаться при стрельбе.
- 6 - Не используется.
- 7 - Не используется.
- 8 - THROW.
- 9 - HEAVY. Тяжелое оружие. Когда оно в руках, нельзя бегать спринтом.
- 10 - CONTINUOUSFIRE.
- 11 - TWIN_PISTOL. Рендерить оружие в обоих руках.
- 12 - RELOAD. Необходимость перезарядки.
- 13 - CROUCHFIRE. Перезарядка сидя.
- 14 - RELOAD2START. Перезарядка сразу после выстрела (как у дробовика).
- 15 - LONG_RELOAD. Перезарядка происходит дольше.
- 16 - SLOWSDWN.
- 17 - RANDSPEED.
- 18 - EXPANDS.
- +0x1C = [dword] AssocGroupId. Некоторые анимационные группы и их идентификаторы:
- 0 - 'default'
- 11 - 'python'
- 12 - 'pythonbad'
- 13 - 'colt45'
- 14 - 'colt_cop'
- 15 - 'colt45pro'
- 16 - 'sawnoff'
- 17 - 'sawnoffpro'
- 18 - 'silenced'
- 19 - 'shotgun'
- 20 - 'shotgunbad'
- 21 - 'buddy'
- 22 - 'buddybad'
- 23 - 'uzi'
- 24 - 'uzibad'
- 25 - 'rifle'
- 26 - 'riflebad'
- 27 - 'sniper'
- 28 - 'grenade'
- 29 - 'flame'
- 30 - 'rocket'
- 31 - 'spraycan'
- 32 - 'goggles'
- 33 - 'melee_1'
- 34 - 'melee_2'
- 35 - 'melee_3'
- 36 - 'melee_4'
- 37 - 'bbbat_1'
- 38 - 'gclub_1'
- 39 - 'knife_1'
- 40 - 'sword_1'
- 41 - 'dildo_1'
- 42 - 'flowers_1'
- 43 - 'csaw_1'
- +0x20 = [word] Количество патронов в обойме
- +0x22 = [word] Повреждения
- +0x24 = [dword] fireOffset.x
- +0x28 = [dword] fireOffset.y
- +0x2C = [dword] fireOffset.z
- +0x30 = [dword] Владение оружием
- 0 - POOR //Наихудшее
- 1 - STD //Среднее
- 2 - PRO //Наилучшее
- 3 - особое
- +0x34 = [dword] statrequired. Уровень статистики, необходимый для получения текущего навыка владения оружием.
- +0x38 = [dword] Точность
- +0x3C = [dword] movementspeed
- +0x40 = [dword] animLoop start
- +0x44 = [dword] animLoop end
- +0x48 = [dword] animLoop fire
- +0x4C = [dword] animLoop2 start
- +0x50 = [dword] animLoop2 end
- +0x54 = [dword] animLoop2 fire
- +0x58 = [dword] breakoutTime
- +0x5C = [dword] Speed. Скорость стрельбы.
- +0x60 = [dword] radius
- +0x64 = [dword] lifespan
- +0x68 = [dword] spread
- +0x6C = [word] AlignedAnimGroupID = (11 <= AssocGroupId && AssocGroupId <= 31) ? (AssocGroupId - 11) : 0;
- +0x6E = [byte] ComboID
- 4 - "Руки"
- 8 - "Бита"
- 9 - "Нож"
- 10 - "Клюшка для гольфа"
- 11 - "Катана"
- 12 - "Бензопила"
- 13 - "Дилдо"
- 14 - "Цветы"
- +0x6F = [byte] numCombos
0xC8A8A8 - сюда считывается информация о смещениях прицела для анимационных групп (метка %). Состоит из 20 элементов по 0x18 байт в каждом. Индекс элемента - AlignedAnimGroupID из структуры выше.
- +0x0 = [dword] AimX
- +0x4 = [dword] AimZ
- +0x8 = [dword] DuckX
- +0xC = [dword] DuckZ
- +0x10 = [word] RLoadA
- +0x12 = [word] RLoadB
- +0x14 = [word] CrouchRLoadA
- +0x16 = [word] CrouchRLoadB
Управление
0xB73458 - Начало блока управления машиной.
- +0x20 = [word] Газ:
- 0 = выкл
- 255 = вкл
- +0x22 = [word] Тормоз
Пикапы
0x9788C0 - Начало блока пикапов. Количество элементов - 620. Размер одного элемента - 32 байта.
- +0 = [float] Текущая стоимость
- +4 = [dword] Указатель на CObject
- +8 = [dword] Количество денег/патронов
- +12 = [dword] Время восстановления
- +16 = [word] Позиция X * 8
- +18 = [word] Позиция Y * 8
- +20 = [word] Позиция Z * 8
- +22 = [word] Количество денег за день
- +24 = [word] ID модели
- +26 = [word] Уникальный индекс
- +28 = [byte] Тип
- 3 - Подковы, ракушки
- 4 - Оружие, которое оставляют педы после смерти
- 8 - Деньги, которые оставляют педы после смерти
- 20 - Фотокамеры
- +29 = [byte] Флаги
- +30 = [byte] Неизвестно
- +31 = [byte] Неизвестно
CRegisteredCorona
Начало | 0xC3E058 |
Кол-во | 64 |
Размер | 0x3C |
0x0000 | RwV3D position // RwV3D 0x000C | DWORD uniqueID // Уникальный идентификатор 0x0010 | RwTexture *texture // RwTexture 0x0014 | float size 0x0018 | float normalAngle // Возможно, не влияет на корону 0x001C | float farClip 0x0020 | float nearClip 0x0024 | float heightAboveGround 0x0028 | float fadeSpeed 0x002C | RwRGBA color // RwRGBA 0x0030 | BYTE fadeState // Статус затемнения (0 или 255) 0x0031 | BYTE registeredThisFrame 0x0032 | BYTE flareType // Тип вспышки (lensflare) 0x0033 | BYTE usesReflection // Наличие отражения (отражения действуют при влажной погоде) 0x0034 | BYTE flags1 0x0035 | BYTE justCreared 0x0036 | BYTE flags2 0x0037 | BYTE _pad 0x0038 | void *attachedTo // Транспорт, к которому прицеплена корона
Набор флагов 1 (flags1):
0x0001 | CHECK_OBSTACLES // Если между камерой и короной есть преграда, корона не будет отрисована 0x0002 | OFF_SCREEN
Набор флагов 2 (flags2):
0x0001 | FLASH_WHILE_FADING // В режиме "затухание" корона будет мигать 0x0002 | ONLE_FROM_BELOW // Корону видно только снизу 0x0004 | HAS_VALID_HEIGHT_ABOVE_GROUND // Используется при создании отражений корон на дороге 0x0008 | DRAW_WITH_WHITE_CORE // Вероятно, не используется 0x0010 | IS_ATTACHED_TO_VEHICLE // Прицеплена ли корона к транспорту. Флаг включается автоматически
CPointlight
Начало | 0xC3F0E0 |
Кол-во | 32 |
Размер | 0x30 |
0x0000 | RwV3D pos // Позиция RwV3D 0x000C | RwV3D direction // Направление RwV3D 0x0018 | float radius // Радиус 0x001C | float red // 0.0 - 1.0 0x0020 | float green // 0.0 - 1.0 0x0024 | float blue // 0.0 - 1.0 0x0028 | CEntity *entityAffected // Игровой субьект, на который распространяется свет от источника CEntity 0x002C | BYTE type // Тип источника света 0x002D | BYTE fogType 0x002E | BYTE generateShadows // Включить создание дополнительных теней для автомобиля игрока 0x002F | BYTE _pad
Типы источников света (type):
ID Название Описание 0 Обычный Источник света использует позицию и радиус 1 Направлённый Источник света использует позицию и радиус, используется направление 2 Тень Используется чёрный цвет 4 Глобальный Источник света использует только позицию
CRegisteredShadow
Начало | 0xC40430 |
Кол-во | 48 |
Размер | 0x34 |
0x0000 | RwV3D position 0x000C | float rotationX1 // Эти параметры определяют разворот и размер 0x0010 | float rotationY1 0x0014 | float rotationX2 0x0018 | float rotationY2 0x001C | float zDistance // Максимальное расстояние между позицией тени и поверхностью, на которую падает тень 0x0020 | float scale // Масштабирование относительно одного из углов 0x0024 | RwTexture *texture 0x0028 | CShadowData *shadowData // Используется только для теней педов 0x002C | WORD intensity 0x002E | BYTE type 0x002F | BYTE red 0x0030 | BYTE green 0x0031 | BYTE blue 0x0032 | WORD flags
Типы теней (type)
ID Описание Source-Blend Dest-Blend 0 5 6 1 Тень (чёрный цвет) 2 2 2 Свет (цвет RGB) 1 4 3 5 6 4 5 6 5 5 6 6 7 5 6 8
CGlass (Осколки стекла)
Начало: 0xC3E058 Размер одного элемента: 112 байт
- CGlass +0x0 = [RwMatrix] Матрица поворота и позиции
- CGlass +0x60 = [dword] Время создания
- CGlass +0x6D = [byte] Флаг существования
CStencilShadow
Начало | 0xC6A198 |
Кол-во | 64 |
Размер | 0x1C |
0x0000 | CPhysical *owner 0x0004 | WORD numShadowFaces 0x0006 | BYTE type // 1 - map object, 2 - vehicle 0x0007 | BYTE _pad 0x0008 | DWORD sizeOfShadowFacesData // numShadowFaces * 15 0x000C | DWORD currentShadowFace 0x0010 | void *shadowFacesData // sizeof() = sizeOfShadowFacesData * 12 0x0014 | CStencilShadow *next 0x0018 | CStencilShadow *prev
CRegisteredMotionBlurStreak
Начало | 0xC7CA08 |
Кол-во | 4 |
Размер | 0x54 |
0x0000 | CEntity *owner 0x0004 | RwRGBA color 0x0008 | RwV3D pointAA 0x0014 | RwV3D pointAB 0x0020 | RwV3D pointAC 0x002C | RwV3D pointBA 0x0038 | RwV3D pointBB 0x0044 | RwV3D pointBC 0x0050 | BYTE needsUpdate 0x0051 | BYTE _f51 0x0052 | BYTE _f52 0x0053 | BYTE _pad
CLuminousPolygon (Многоугольники светофора)
0xC7CB58 - Начало блока многоугольников светофора. Количество элементов - 32. Размер одного элемента - 56 байт.
0x0000 | RwV3D position // Позиция RwV3D 0x000C | RwV3D right // Вектор Right RwV3D 0x0018 | RwV3D top // Вектор Top RwV3D 0x0024 | RwV3D at // Вектор At RwV3D 0x0030 | float distanceToCamera // Расстояние до камеры 0x0034 | BYTE colorID // Цвет: 1 - зелёный, 2 - жёлтый, 3 - красный 0x0035 | BYTE _f35 0x0036 | BYTE _f36 0x0037 | BYTE _f37
C3DMarker (3D-Маркеры)
0xC7DD58 - Начало блока маркеров. Количество элементов - 32. Размер одного элемента - 160 байт.
- +0 = [64 байта] Матрица поворота и позиции
- +48 = [float] Позиция X
- +52 = [float] Позиция Y
- +56 = [float] Позиция Z
- +64 = [dword] Неизвестно
- +68 = [dword] Неизвестно
- +72 = [dword] Указатель на RwObject
- +76 = [dword] Указатель на Material
- +80 = [word] Тип
- 1 - Сфера
- 5 - Конус
- 6 - Конус
- +82 [dword] Статус наличия в поточном фрейме
- 0 - Не создан
- 1 - Создан
- +84 = [dword] Идентификатор
- +88 = [byte] R
- +89 = [byte] G
- +90 = [byte] B
- +91 = [byte] A
- +92 = [word] Интервал анимации
- +94 = [word] Скорость поворота
- +96 = [dword] Время создания
- +100 = [float] Частота анимации
- +104 = [float] Стандартный размер
- +108 = [float] Поточный размер
- +112 = [float] Яркость
- +116 = [float] Радиус видимости
- +120 = [float] Направление X
- +124 = [float] Направление Y
- +128 = [float] Направление Z
- +132 = [word] Последняя полученная координата X
- +134 = [word] Последняя полученная координата Y
- +136 = [float] Последний результат GetGroundZ
- +140 = [float] Высота поднятия
- +144 = [float] Последняя позиция X
- +148 = [float] Последняя позиция Y
- +152 = [float] Последняя позиция Z
- +156 = [dword] Время, когда последний раз была совершена проверка IsOnScreen
Гоночные чекпоинты
0xC7F158 - Начало блока чекпоинтов. Количество элементов - 32. Размер одного элемента - 56 байт.
- +0 = [byte] Тип
- 0 - Цилиндр со стрелкой
- 1 - Цилиндр с финальным флажком
- 2 - Цилиндр
- 3 - Кольцо
- 4 - Кольцо
- 5 - Кольцо
- 6 - Кольцо
- 7 - Кольцо
- 8 - Кольцо
- +4 = [dword] SCM-хендл
- +8 = [byte] R
- +9 = [byte] G
- +10 = [byte] B
- +11 = [byte] A
- +16 = [float] Позиция X
- +20 = [float] Позиция Y
- +24 = [float] Позиция Z
- +28 = [float] Направление X
- +32 = [float] Направление Y
- +36 = [float] Направление Z
- +44 = [float] Размер
Пули снайперской винтовки
0xC88740 - Старт блока пуль снайперской винтовки. Всего элементов в пуле - 8. Размер одного элемента - 44 байт.
- +0 = [dword] Тип оружия
- 34 - Снайперская винтовка
- +4 = [dword] Адрес структуры стрелявшего
- +8 = [float] Время уничтожения (миллисекунды)
- +12 = [byte] Статус пули
- 0 - Не существует
- 1 - Существует
- +13 = [byte] Неизвестно (0)
- +14 = [byte] Неизвестно (0)
- +15 = [byte] Неизвестно (0)
- +16 = [float] Позиция X
- +20 = [float] Позиция Y
- +24 = [float] Позиция Z
- +28 = [float] Скорость по оси X (метров за фрейм)
- +32 = [float] Скорость по оси Y (метров за фрейм)
- +36 = [float] Скорость по оси Z (метров за фрейм)
- +40 = [word] Урон (по умолчанию = 125)
- +42 = [word] Неизвестно (0)
CProjectile (Снаряды)
Начало | 0xC891A8 |
Кол-во | 32 |
Размер | 0x24 |
0x0000 | eWeaponType m_WeaponType // Тип снаряда 0x0004 | CEntity * m_pLauncher // Указатель на транспорт/педа, запустившего/кинувшего снаряд 0x0008 | CVehicle * m_pTargetVehicle // Указатель на нацеленную машину (для тепловых ракет) 0x000C | DWORD m_dwTimeToDestroy // Время для уничтожения снаряда 0x0010 | BYTE m_nState // Статус снаряда: 0 - Не существует/Взорван, 1 - Летит 0x0011 | BYTE pad[3]; 0x0014 | CVector m_vPosn // Позиция 0x0020 | CParticle * m_pParticle // Прикреплённый партикл
Гаражи и парковка
Обратите внимание, что адреса памяти для гаражей могут варьироваться в зависимости от скрипта в файле SCM, который вы используете
Всего в игре 50 гаражей. Каждый гараж содержит:
- Позицию
- Детали
- Информацию об использовании
- Расположение в игре
- Расположение двери
- Ширину
- Толщину
- Высоту
- Направление
- Координаты нижнего левого угла
- Координаты высшего правого угла
- Использование игроком
- Какому имуществу (safe house) он принадлежит
- ID машины, которая может храниться в этом гараже
- Состояние двери (закрытая, открытая, открывающаяся и закрывающаяся дверь)
These are found in the garage object of 212 bytes. The memory locations where the garages start are:
- 0x96C048 (start of first garage)
- +0xD4 (offset for second garage - offset this much again for third garage, again for fourth, etc.)
- 0x96C120 (start of final garage)
Здесь опубликован список известных оффсетов гаражей:
- +0 = [float] X координата левого нижнего угла
- +4 = [float] Y координата левого нижнего угла
- +8 = [float] Z координата левого нижнего угла
- +12 = [float] X Value of direction vector 1
- +16 = [float] Y Value of direction vector 1
- +20 = [float] X Value of direction vector 2
- +24 = [float] Y Value of direction vector 2
- +28 = [float] Top Z Coord. of the garage
- +32 = [float] Normalized Width of the garage
- +36 = [float] Normalized Depth of the garage
- +40 = [float] Левый угол (X) координаты
- +44 = [float] Правый угол (X) координаты
- +48 = [float] Передний угол (Y) координаты
- +52 = [float] Задний угол (Y) координаты
- +56 = [float] Позиция двери гаража
- +60 = [dword] Неизвестно(Таймер)
- +64 = [dword] Неизвестно (не сохраняется)
- +68 = [chars] Название гаража (7 байтовая нуль-терминированная строка)
- +76 = [byte] Тип гаража
- +77 = [byte] Значения состояния двери гаража:
- 0 = дверь закрыта
- 1 = дверь открыта
- 2 = дверь закрывается
- 3 = дверь открывается
- +78 = [byte] Флаги двери
- 0x01 используется в гараже модификаций (?)
- 0x02 дверь неактивна
- 0x04 используется в Pay'n'Spray (?)
- 0x08 маленькая дверь (reflective?)
- 0x10 дверь открывается вверх и внутрь
- 0x20 камера следит за игроком
- 0x40 дверь закрыта
- 0x80 гараж перекраски подружки
- +79 = [byte] Original Type
The direction vector 3 is completely left out, I think because the garages are always even to the ground. I think that is also why the Z values of the direction vectors are also left-out. Note: Direction Vectors marked above may be Quaternions.
Статические адреса стандартных гаражей и их названий:
- 0x96C048 - Commerce Region, Loading Bay Garage (Life's a Beach)
- 0x96C120 - LSPD Police Impound Garage
- 0x96C1F8 - Mission Garage near El Corona (Los Desperados)
- 0x96C2D0 - Eight Ball Autos near El Corona
- 0x96C3A8 - Mission Garage near El Corona (Cesar Vialpando)
- 0x96C480 - Player Garage: El Corona
- 0x96C558 - LS Burglary Garage near Playe del Seville
- 0x96C630 - LowRider Tuning Garage in Willowfield
- 0x96C708 - Pay 'n' Spray in Idlewood
- 0x96C7E0 - Player Garage: Johnson House
- 0x96C8B8 - Pay 'n' Spray in Temple
- 0x96C990 - Transfender in Temple
- 0x96CA68 - Pay 'n' Spray in Santa Maria Beach
- 0x96CB40 - Player Garage: Santa Maria Beach
- 0x96CC18 - Player Garage: Mulholland
- 0x96CCF0 - Wheel Archangels in Ocean Flats
- 0x96CDC8 - Mission Garage in Ocean Flats (T-Bone Mendez)
- 0x96CEA0 - Player Garage: Hashbury
- 0x96CF78 - Transfender near Wang Cars in Doherty
- 0x96D050 - Pay 'n' Spray near Wang Cars in Doherty
- 0x96D128 - SF Burglary Garage, Loading Bay near Doherty
- 0x96D200 - Player Garage: Doherty
- 0x96D2D8 - Mission Garage in Doherty Garage
- 0x96D3B0 - Woozie's Mission Garage in Chinatown (Ran Fa Li)
- 0x96D488 - Michelle's Pay 'n' Spray in Downtown
- 0x96D560 - Player Garage: Calton Heights
- 0x96D638 - SFPD Police Impound Garage
- 0x96D710 - Pay 'n' Spray in Juniper Hollow
- 0x96D7E8 - Player Garage: Paradiso
- 0x96D8C0 - LVPD Police Impound Garage
- 0x96D998 - Airport Plane Garage in Las Venturas
- 0x96DA70 - LV Burglary Garage near Camel's Toe
- 0x96DB48 - Pay 'n' Spray near Royal Casino
- 0x96DC20 - Transfender in come-a-lot
- 0x96DCF8 - Player Garage: Rockshore West
- 0x96DDD0 - Welding Wedding Bomb-workshop in Emerald Isle
- 0x96DEA8 - Pay 'n' Spray in Redsands East
- 0x96DF80 - Player Garage: Redsands West
- 0x96E058 - Player Garage: Prickle Pine
- 0x96E130 - Player Garage: Whitewood Estates
- 0x96E208 - Pay 'n' Spray in El Quebrados
- 0x96E2E0 - Pay 'n' Spray in Fort Carson
- 0x96E3B8 - Player Garage: Fort Carson
- 0x96E490 - Player Garage: Verdant Meadows
- 0x96E568 - Mission Garage in El Castillo del Diablo (Interdiction)
- 0x96E640 - Airport Garage in Verdant Meadows
- 0x96E718 - Mission Garage in Angel Pine (Puncture Wounds)
- 0x96E7F0 - Pay 'n' Spray in Dillimore
- 0x96E8C8 - Player Garage: Palomino Creek
- 0x96E9A0 - Player Garage: Dillimore
Static Mem. Locations for garages:
- 0x96ABD8 - Johnson House Car 1
- 0x96AC18 - Johnson House Car 2
- 0x96AC58 - Johnson House Car 3
- 0x96AC98 - Johnson House Car 4
- 0x96ACD8 - Santa Maria Beach Car 1
- 0x96AD18 - Santa Maria Beach Car 2
- 0x96AD58 - Santa Maria Beach Car 3
- 0x96AD98 - Santa Maria Beach Car 4
- 0x96ADD8 - Rockshore West Car 1
- 0x96AE18 - Rockshore West Car 2
- 0x96AE58 - Rockshore West Car 3
- 0x96AE98 - Rockshore West Car 4
- 0x96AED8 - Fort Carson Car 1
- 0x96AF18 - Fort Carson Car 2
- 0x96AF58 - Fort Carson Car 3
- 0x96AF98 - Fort Carson Car 4
- 0x96AFD8 - Verdant Meadows Car 1
- 0x96B018 - Verdant Meadows Car 2
- 0x96B058 - Verdant Meadows Car 3
- 0x96B098 - Verdant Meadows Car 4
- 0x96B0D8 - Dillimore Car 1
- 0x96B118 - Dillimore Car 2
- 0x96B158 - Dillimore Car 3
- 0x96B198 - Dillimore Car 4
- 0x96B1D8 - Prickle Pine Car 1
- 0x96B218 - Prickle Pine Car 2
- 0x96B258 - Prickle Pine Car 3
- 0x96B298 - Prickle Pine Car 3
- 0x96B2D8 - Whitewood Estates Car 1
- 0x96B318 - Whitewood Estates Car 2
- 0x96B358 - Whitewood Estates Car 3
- 0x96B398 - Whitewood Estates Car 4
- 0x96B3D8 - Palomino Creek Car 1
- 0x96B418 - Palomino Creek Car 2
- 0x96B458 - Palomino Creek Car 3
- 0x96B498 - Palomino Creek Car 4
- 0x96B4D8 - Redlands West Car 1
- 0x96B518 - Redlands West Car 2
- 0x96B558 - Redlands West Car 3
- 0x96B598 - Redlands West Car 4
- 0x96B5D8 - El Corona Car 1
- 0x96B618 - El Corona Car 2
- 0x96B658 - El Corona Car 3
- 0x96B698 - El Corona Car 4
- 0x96B6D8 - MulHolland Car 1
- 0x96B718 - MulHolland Car 2
- 0x96B758 - MulHolland Car 3
- 0x96B798 - MulHolland Car 4
- 0x96B7D8 - LSPD Impound Car 1
- 0x96B818 - LSPD Impound Car 2
- 0x96B858 - LSPD Impound Car 3
- 0x96B898 - LSPD Impound (не используется)
- 0x96B8D8 - SFPD Impound Car 1
- 0x96B918 - SFPD Impound Car 2
- 0x96B958 - SFPD Impound Car 3
- 0x96B998 - SFPD Impound (не используется)
- 0x96B9D8 - LVPD Impound Car 1
- 0x96BA18 - LVPD Impound Car 2
- 0x96BA58 - LVPD Impound Car 3
- 0x96BA98 - LVPD Impound (не используется)
- 0x96BAD8 - Calton Heights Car 1
- 0x96BB18 - Calton Heights Car 2
- 0x96BB58 - Calton Heights Car 3
- 0x96BB98 - Calton Heights Car 4
- 0x96BBD8 - Paradiso Car 1
- 0x96BC18 - Paradiso Car 2
- 0x96BC58 - Paradiso Car 3
- 0x96BC98 - Paradiso Car 4
- 0x96BCD8 - Doherty Car 1
- 0x96BD18 - Doherty Car 2
- 0x96BD58 - Doherty Car 3
- 0x96BD98 - Doherty Car 4
- 0x96BDD8 - Hashbury Car 1
- 0x96BE18 - Hashbury Car 2
- 0x96BE58 - Hashbury Car 3
- 0x96BE98 - Hashbury Car 4
- 0x96BED8 - Verdant Meadows Airport Car 1
- 0x96BF18 - Verdant Meadows Airport Car 2
- 0x96BF58 - Verdant Meadows Airport Car 3
- 0x96BF98 - Verdant Meadows Airport Car 4
CVector
0x0000 | RwV3D vector // RwV3D
CompressedVector
0x0000 | word x 0x0002 | word y 0x0004 | word z
RwV3D
0x0000 | float x 0x0004 | float y 0x0008 | float z
Меню
0xBA6748 - Основной адрес.
- +0x15D = [byte] ID текущего меню
- +0x78D = [byte] Показ наведённого пункта меню
- +0x54 = [dword] Выделенные элементы меню
- +0xE9 = [byte] Переключиться на главное меню (меню запускается во время игры)
- +0x84 = [dword] Язык
- +0x15F = [byte] Выделенный файл сохранения
- +0x24 = [dword] Режим радара
- +0x64 = [float] Размер карты
- +0x68 = [float] Позиция х карты
- +0x6C = [float] Позиция у карты
- +0x5C = [byte] Меню во время игры?
Идентификаторы меню - (IDs)
Известные идентификаторы (IDs) меню (получить ID можно по адресу 0xBA68A5):
- 0 = Статус
- 1 = Запуск игры
- 2 = Резюме
- 3 = Настройки звука
- 4 = Настройки экрана
- 5 = Карта
- 6 = Вопрос начала новой игры
- 7 = Выбор игры
- 8 = Вопрос загрузки миссион пака
- 9 = Загрузить игру
- 10 = Удалить игру
- 11 = Вопрос о загрузке файла сохранения
- 12 = Вопрос о удалении файла сохранения
- 13 = Загрузить первое сохранение?? *Вылет
- 14 = Удаление выполнено
- 15 = Удаление выполнено
- 16 = Сохранение игры
- 17 = Вопрос о записи файла сохранения
- 18 = Сохранение выполнено
- 19 = Сохранение выполнено
- 20 = Игра успешно сохранена
- 21 = Игра успешно загружена
- 22 = Игра повреждена, не сохраняйте
- 23 = Отобразить настройки по умолчанию
- 24 = Настройки аудио по умолчанию
- 25 = Настройки контроллера по умолчанию
- 26 = Опции треков пользователя
- 28 = Языки
- 29 = Сохранение игры прошло успешно
- 30 = Сохранение игры прошло не успешно
- 31 = Загрузка игры (запись сохранения не удачна)
- 32 = Загрузка не успешна, файл повреждён
- 33 = Опции
- 34 = Главное меню
- 35 = Выйти из игры
- 36 = Настройка контроллера
- 37 = Пересмотр контроля
- 38 = Контроль ходьбы/автомобиля
- 39 = Настройка мыши
- 40 = Настройки джойстика
- 41 = Игра под управлением главного меню
- 42 = Выйти из игры
- 43 = Пусто
Относящееся к SCM
- 0xA49960 - Начало SCM блока (0xA49960 + (4 * номер пер.) указывает на конкретную переменную)
- 0xA7A6A0 - Начало блока миссий (69000 байтов)
- 0x464080 - GetOpcodeParameters() - Получить параметры опкода
- 0xA447F4 - Количество команд
- 00469F00 - CRunningScript_ProcessOneCommand
- 0x464080 - CRunningScript_CollectParameters
- 0x4859D0 - CRunningScript_UpdateCompareFlag
- 0x469390 - Game_Script_Thread struct - Структура потоков
- 0xA43C78 - Располагаются значения параметров опкода. Максимальное кол-во параметров - 16.
- 0x8A6168 - Таблица переходов. Каждый dword указывает на 1 из 27 различных функций, которая обращается к 100 опкодов.
- 0x466C50 - Опкоды 0000 - 0063. Массив dword'ов, каждый из которых указывает функцию для этих опкодов
- 0x468364 - Опкоды 0064 - 00C4. Массив dword'ов, каждый из которых указывает функцию для этих опкодов
- 0x469E4C - Опкоды 00D6 - 0129. Массив байтов, каждый байт это индекс для массива dword'ов по адресу 0x469DD4, который указывает на функцию опкода
- 0x47D1B4 - Opcodes 0137 - 018F. Массив байтов, каждый байт это индекс для массивов dword по адресу 0x47D0F4,
- 0x47DFE0 - Opcodes 0190 - 01F3. Массив байтов, каждый байт это индекс для массивов dword по адресу 0x47DF58, который указывает на функцию опкода
- 0x47F304 - Opcodes 01F4 - 0256. Массив байтов, каждый байт это индекс для массивов dword по адресу 0x47F24C, который указывает на функцию опкода
- 0x47FA04 - Opcodes 0292 - 02B8. Массив байтов, каждый байт это индекс для массивов dword по адресу 0x47F9BC, который указывает на функцию опкода
- 0x480FD8 - Opcodes 02BE - 031D. Массив байтов, каждый байт это индекс для массивов dword по адресу 0x480F10, который указывает на функцию опкода
- 0x4836B8 - Opcodes 0320 - 0382. Массив байтов, каждый байт это индекс для массивов dword по адресу 0x483600, который указывает на функцию опкода
(Нет времени закончить сейчас, закончим позже)
Потоки
0xA8B430 - Старт пула потоков. Существуют активные и неактивные потоки.
0xA8B42C - Поинтер к первому активному SCM потоку.
0xA8B428 - Поинтер к первому неактивному скрипту.
Каждый поток имеет размер 224 (0xE0) байтов
- +0 = [void*] Поинтер к следующему потоку.
- +4 = [void*] Поинтер к предыдущему потоку.
- +8 = [char] Имя потока (назначается опкодом 03A4), char = 8
- +16 = [dword] Основной поток IP (используется в миссиях и во внешних скриптах для вычисления глобального адреса локального оффсета)
- +20 = [dword] Нынешний IP
- +24 = [dword] Вернуться к стеку (сохраняет текущий IP, когда gosub выполнен), dword = 8.
- +56 = [word] Последний индекс элемента, вернувшийся к стеку.
- +60 = [dword] Массив локальных перемен, dword = 32
- +188 = [dword] Автоматически увеличивает таймер, dword = 2
- +196 = [boolean] Действующий флаг потока
- +197 = [boolean] Условие
- +198 = [boolean] Флаг миссий
- +199 = [boolean] Флаг внешнего скрипта
- +200 = [boolean] Неизвестный флаг (в меню?), (используется опкодом 03E5).
- +201 = [boolean] Неизвестный флаг (ID присоединенного скрипта?)
- +204 = [dword] Время (назначается опкодом 0001)
- +208 = [word] Номер IF (условия) (назначается опкодом 00D6)
- +210 = [boolean] Не флаг (условие для проверки опкодов, выше ли они чем 0x7FFF)
- +211 = [boolean] Проверка на включенный флаг, задержан ли игрок или убит. (назначается опкодом 0111); только для миссий
- +212 = [boolean] Игрок задержан или убит; только для миссий
- +216 = [dword] Пропустить IP сцену (используется опкодами 0707, 0701)
- +220 = [boolean] Флаг миссии
Информация о внешних скриптах
0xA47B60 - Начало информации пула о внешних скриптах. Всего 82 элемента, каждый из которых равен 32 байтам.
- +0 = [dword] Скрипт IP
- +4 = [word] Статус (может быть получен опкодом 0926)
- +6 = [word] Индекс в SCM (число, которое определено в SCM заголовке)
- +8 = [char] Имя, char = 20
- +28 = [dword] Размер
0xA485A0 - [dword] Размер самого большого внешнего скрипта
0xA485A4 - [dword] Количество внешних скриптов
Другое
0xA4892C - Начало пула, который расположен в хэндлах автомобиля. Здесь хранится шесть элементов, каждый из которых:
- +0 = [dword] Хэндл автомобиля для проверки, если она переворачивается. Используется опкодом 0190.
- +4 = [dword] Время (в мс), пройденное с того момента, когда автомобиль перевернулся. Используется опкодом 018F.
00A90850 - Start of the mission cleanup list. This list keeps the handles of any entities created during a mission. When the opcode 00D8 executed (normally it happens at the end of any mission), the game reads this list and destroys everything being stored there. Maximum items on the list is 75. Each item has the following structure:
- +0 = [byte] Типы энтитов:
- +4 = [dword] Хэндл энтити (индекс в соответствующем пуле)
Погода
0xC81318 - [word] Закрепить погоду (нашел AlienX).
0xC8131C - [word] Следующая погода.
0xC81320 - [word] Текущая погода.
Следующие значения связаны с файлом timecycp.dat. Несколько видов погодных условий отличаются(например: UNDERWATER). Погода может влиять на дальность просмотра, цвет неба, яркость тумана, облака и прочее.
Виды погод:
- 0 = EXTRASUNNY_LA
- 1 = SUNNY_LA
- 2 = EXTRASUNNY_SMOG_LA
- 3 = SUNNY_SMOG_LA
- 4 = CLOUDY_LA
- 5 = SUNNY_SF
- 6 = EXTRASUNNY_SF
- 7 = CLOUDY_SF
- 8 = RAINY_SF
- 9 = FOGGY_SF
- 10 = SUNNY_VEGAS
- 11 = EXTRASUNNY_VEGAS
- 12 = CLOUDY_VEGAS
- 13 = EXTRASUNNY_COUNTRYSIDE
- 14 = SUNNY_COUNTRYSIDE
- 15 = CLOUDY_COUNTRYSIDE
- 16 = RAINY_COUNTRYSIDE
- 17 = EXTRASUNNY_DESERT
- 18 = SUNNY_DESERT
- 19 = SANDSTORM_DESERT
- 20 = UNDERWATER (Под водой)
- 21 = EXTRACOLOURS_1 (очень темный, градиентовый горизонт, пурпурный) Используется для интерьеров?
- 22 = EXTRACOLOURS_2 (очень темный, градиентовый, зелёный) Используется для интерьеров?
В следующем списке есть не упомянутые в файле виды погод:
- 23 до 26 = Вариаций бледно-оранжевой погоды
- 27 до 29 = Вариаций насыщенно-синей погоды
- 30 до 32 = Вариаций темно-облачно-бирюзовой погоды
- 33 = Темная, облачная, коричневая вариация
- 34 = Небо с голубым и пурпурным цветом
- 35 = Тускло-коричневое небо
- 36 до 38 = Ярко-облачное небо с оранжевым оттенком
- 39 = Очень яркое небо
- 40 до 42 = Голубые и пурпурные облака
- 43 = Темное небо с токсичным оттенком
- 44 = Черно-белое небо
- 45 = Черно-пурпурное небо
Предупреждение: Если Вы попробуете установить значения, которые отсутствуют в списке, то последствия будут неприятны: черный экран, мерцание, вылет игры и т.д.
Ссылки
- GTASA Memory Addresses - Тема на GTAForums.com.
- Адреса и функции gta_sa.exe 1.0 - Тема на sannybuilder.com.
- Документация по адресам gta_sa.exe 1.0US - Тема на modsforgta.ucoz.ru.
- GTAModding.com SA Memory Adresses - Статья на английском языке.
- MTA Sources - Исходники мультиплеера ГТА на Google Sources.
Форматы файлов | .col • .cfg • .cut • .dff • .dat • .fxp • .gxt • .ide • .ifp • .img • .ipl • .rep • .rrr • .scm • .txd • .set |
Документация | carcols.dat • Carrec • Ped Events • Ped Type • Адреса Памяти Функций (SA) • Анимация моделей в SA • Визуальные эффекты в скриптинге Загруженные звуки • Катсцены • Номера оружия • Рисование на экране • Трюки с метками • Статистика • Структура аудио в SA • Beta версия |
Инструменты | CLEO • Collision File Editor II • ENBSeries • G-Tools• GXT Editor • IMG Tool • PS2 TXD Mod • PS2 TXD Viewer • Limit Adjuster • Map Editor • PathViewer San Andreas Audio Toolkit • San Andreas Texture Placer • Sanny Builder • TXD Workshop • TXDFucker • XBOX TXD PowerTool |
Туториалы | Редактирование аудио в SA • Изменение cutscene • Decision Maker • Пропуск роликов • Конвертация автомобилей в SA Основы маппинга GTA:SA • Делаем ломающиеся объекты • Конвертирование персонажа в SA • 2dfx в SanAndreas • Моддинг San Andreas v2.0 Новая анимация персонажей • Универсальный солдат (GTA SA) |
Моды | Alien City • Design Your Own Mission • GTA: United • GTA Stories • GTA Berlin |
Мультиплеер | gtaTournament • Multi Theft Auto • San Andreas Multiplayer |