Адреса Памяти (SA) — различия между версиями

Материал из GTAModding.ru
Перейти к: навигация, поиск
м
 
(не показаны 253 промежуточные версии 12 участников)
Строка 1: Строка 1:
'''Note that all offsets thus posted have been confirmed for GTA San Andreas (GTA_SA.EXE) version 1.0.'''
+
{{TocRight}}
 +
Указанные ниже '''адреса памяти''' действительны только для GTA San andreas (gta_sa.exe) версии 1.0, если не указано иное. В других версиях игры, адреса могут не совпадать или не работать.
  
'''Note:''' None of the memory addresses below will work for GTA: San Andreas v2.0. All address in v2.0 have been changed or moved. Thus inaccessible.
+
== Список статичных адресов ==
  
= База Адресов Памяти =
+
=== Основные адреса ===
 
+
==Пока без категории==
+
 
* 0xA49D54 - [dword] Таймер для миссий с автомобилями/самолетами (в ms)
 
* 0xA49D54 - [dword] Таймер для миссий с автомобилями/самолетами (в ms)
 
* 0xA51974 - [dword] Таймер для миссий с лодками/мотоциклами (в ms)
 
* 0xA51974 - [dword] Таймер для миссий с лодками/мотоциклами (в ms)
 
* 0xA51A3C - Таймер для гонок Bloodring
 
* 0xA51A3C - Таймер для гонок Bloodring
 
* 0xB7CE50 - [dword] Деньги
 
* 0xB7CE50 - [dword] Деньги
* 0xBAA420 - Уровень разыскиваемости
+
* 0xBAA420 - Уровень розыска
* 0x8CDEE4 - [dword] Максимальный уровень разыскиваемости
+
* 0x8CDEE4 - [dword] Максимальный уровень розыска
 
* 0xB79038 - [dword] Сколько дней прошло в игре
 
* 0xB79038 - [dword] Сколько дней прошло в игре
 
* 0xB70153 - [byte] Текущий час
 
* 0xB70153 - [byte] Текущий час
Строка 18: Строка 17:
 
* 0x8CB7A5 - [byte] Текущая радиостанция - ID
 
* 0x8CB7A5 - [byte] Текущая радиостанция - ID
 
* 0xB700F0 - [dword] Текущий автомобиль - ID (из vehicle.ide) - не для мотоциклов
 
* 0xB700F0 - [dword] Текущий автомобиль - ID (из vehicle.ide) - не для мотоциклов
* 0x863984 - [Int32] Гравитация
+
* 0x863984 - [float] Гравитация (стандартное значение - 0.008)
* 0xB7CB84 - [dword] Глобальный таймер в ms
+
* 0xB7CB84 - [dword] Глобальный таймер в ms (миллисекунды)
 
* 0xB7CB64 - [float] Скорость игры в процентах
 
* 0xB7CB64 - [float] Скорость игры в процентах
* 0xB70158 - [dword] Таймер привязаный к погоде и времени в ms
+
* 0xB70158 - [dword] Таймер, привязанный к погоде и времени в ms
* 0xB7015C - [dword] Количество миллисекунд в одной игровой секунде (по умаолчанию - 1000)
+
* 0xB7015C - [dword] Количество миллисекунд в одной игровой секунде (по умолчанию - 1000)
* 0xB7CEE4 - [byte/boolean] бесконечный бег
+
* 0xB7CEE4 - [byte/boolean] Вкл/выкл бесконечный бег
 
* 0xB7CEE6 - [byte/boolean] Является ли игрок огнеупорным
 
* 0xB7CEE6 - [byte/boolean] Является ли игрок огнеупорным
* 0x96C009 - [byte/boolean] Является ли перектаска бесплатной (paynspray)
+
* 0x96C009 - [byte/boolean] Является ли перекраска бесплатной (pay'n'spray)
* 0xA444A4 - [byte/boolean] Is radar grey'd out
+
* 0xA444A4 - [byte/boolean] Радар серый
 
* 0x8D2530 - [float] Плотность движения пешеходов
 
* 0x8D2530 - [float] Плотность движения пешеходов
* 0x8A5B20 - [float] Плотность движения транспортных средств
+
* 0x8A5B20 - [float] Плотность движения транспорта
 
* 0xB6F065 - [byte/boolean] Широкий экран (вид во время катсцен в миссиях, это не опция дисплея)
 
* 0xB6F065 - [byte/boolean] Широкий экран (вид во время катсцен в миссиях, это не опция дисплея)
* 0xA4A948 - Очки в миссий Lowrider hydrailics
+
* 0xA4A948 - Очки в миссий Лоурайдер (Танцы на машинах)
* 0xA4EC20 - Очки в миниигре танцев
+
* 0xA4EC20 - Очки в мини игре танцев
* 0xB790B8 - [byte] Число фоторафий разных мест (4 bytes)
+
* 0xB790B8 - [byte] Число фотографий разных мест (4 bytes)
* 0xA9AD74 - [byte] Число тегов (Tags) (4 bytes)
+
* 0xA9AD74 - [byte] Число закрашенных граффити (4 bytes)
* 0xB791E4 - [byte] Число подков (4 bytes)
+
* 0xB791E4 - [byte] Число найденных подков (4 bytes)
* 0xB791EC - [byte] Число пасхальных яиц (4 bytes)
+
* 0xB791EC - [byte] Число найденных ракушек(4 bytes)
 +
'''Примечание:'''
 +
Если задать максимальное значение в адресах некоторых статистических данных, то игра покажет сообщение и выдаст бонусы (например, за все найденные ракушки).
  
* 0x716642 - [float] Change solid clouds
+
* 0x716642 - [float] Изменить тяжёлые облака (?)
* 0x716655 - [float] Disable solid clouds
+
* 0x716655 - [float] Отключить тяжёлые облака (?)
 
+
'''Примечание:'''
'''Note:'''
+
Оба значения изначально равны 200. Если изменить одно из них на 100 000 вы получите очень малую облачность. Если поставить оба на 100 000, облака исчезнут.
Both values default to 200. If you change one of them to 100,000 you get very few clouds, a much nicer effect. If you change both of them to 100,000 you never get the clouds.
+
  
 
* 0xB79078 - [byte] Количество подброшенных в такси людей (число используется в [[Статистика|статусах]], 4 байта)
 
* 0xB79078 - [byte] Количество подброшенных в такси людей (число используется в [[Статистика|статусах]], 4 байта)
 
* 0xA49C30 - [byte] Количество подброшенных в такси людей (число используется для выдачи наград игроку, 4 байта)
 
* 0xA49C30 - [byte] Количество подброшенных в такси людей (число используется для выдачи наград игроку, 4 байта)
* 0xB79040 - [byte] Количетво посещений сейвхаузов (4 bytes)
+
* 0xB79040 - [byte] Количество сохранений (4 bytes)
 
* 0xA49EFC - [dword] Прогресс с Denise
 
* 0xA49EFC - [dword] Прогресс с Denise
 
* 0xA49F00 - [dword] Прогресс с Michelle
 
* 0xA49F00 - [dword] Прогресс с Michelle
Строка 52: Строка 52:
 
* 0xA49F0C - [dword] Прогресс с Katie
 
* 0xA49F0C - [dword] Прогресс с Katie
 
* 0xA49F10 - [dword] Прогресс с Millie
 
* 0xA49F10 - [dword] Прогресс с Millie
 
+
'''Примечание:'''
'''Note:'''
+
Эти шесть адресов для девушек используются только с оригинальным main.scm. Установка значения на 100 (100%) даст вас 100 прогресс с опр. девушкой и разблокирует её подарки.
These above six addresses are within the scm block, and valid only for original scm. setting a value to 100 (ie. 100 pct) gives you all gifts of that GF (ie. car keys, wardrobe etc.).
+
* 0xB79108 - Количество свиданий с девушками
 
+
* 0xB79100 - Текущее количество подружек
* 0xB79108 - Number of girls dated
+
* 0xB79104 - Количество неудачных свиданий
* 0xB79100 - Current number of girlfriends
+
* 0xB79110 - Количество удачных свиданий
* 0xB79104 - Number of disastrous dates
+
* 0xB79060 - Найдено уникальных прыжков
* 0xB79110 - Number of successfull dates
+
* 0xB79064 - Исполнено уникальных прыжков
* 0xB79060 - Unique jumps found number
+
* 0xBA6774 - Цель на карте
* 0xB79064 - Unique jumps done number
+
** 0 = Отключена
* 0xBA6774 - Map target:
+
** 1 = Включена
** 0 = disabled
+
* 0xB6F5F0 - Указатель игрока (CPed)
** 1 = enabled
+
* 0xB7CD98 - Указатель игрока, прямое смещение на начало пула пешеходов (педов) (CPed)
* 0x86329C - List of valid command names
+
* 0xB74498 - Наибольшее количество педов (обычно 140)
* 0xC17054 - Main game window HWND
+
* 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
 
* 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] Фигура
 
* 0xB793D4 - [float] Фигура
 
* 0xB793D8 - [float] Выносливость
 
* 0xB793D8 - [float] Выносливость
Строка 75: Строка 102:
 
* 0xB793E0 - [float] Здоровье
 
* 0xB793E0 - [float] Здоровье
 
* 0xB793E4 - [float] Сексуальность
 
* 0xB793E4 - [float] Сексуальность
* 0xB79496 - [float] Pistol
+
* 0xB79496 - [float] Пистолет
* 0xB79498 - [float] Silenced pistol
+
* 0xB79498 - [float] Пистолет с глушителем
* 0xB7949C - [float] Desert eagle
+
* 0xB7949C - [float] Пустынный орел
* 0xB794A0 - [float] Shotgun
+
* 0xB794A0 - [float] Дробовик
* 0xB794A4 - [float] Sawn-off Shotgun
+
* 0xB794A4 - [float] Обрез
* 0xB794A8 - [float] Combat Shotgun
+
* 0xB794A8 - [float] Дробовик SPAS 12
* 0xB794AC - [float] Machine Pistol
+
* 0xB794AC - [float] Пистолет-пулемет
 
* 0xB794B0 - [float] SMG
 
* 0xB794B0 - [float] SMG
 
* 0xB794B4 - [float] AK47
 
* 0xB794B4 - [float] AK47
 
* 0xB794B8 - [float] M4
 
* 0xB794B8 - [float] M4
  
==HTML Файл Статусов==
+
===stats.html===
 
* 0x8663A0 - Имя файла ( По умолчанию: 'stats.html' )
 
* 0x8663A0 - Имя файла ( По умолчанию: 'stats.html' )
 
* 0x86636C - Название файла ( По умолчанию : '<title>Grand Theft Auto San Andreas Stats</title>' )
 
* 0x86636C - Название файла ( По умолчанию : '<title>Grand Theft Auto San Andreas Stats</title>' )
  
==Читы==
+
===Читы===
[byte] Может быть включен (1) или выключен (0).
+
[byte] Может быть включен (1) или выключен (0). На самом деле это boolean.
 
* 0x969130 - Набор оружия 1
 
* 0x969130 - Набор оружия 1
 
* 0x969131 - Набор оружия 2
 
* 0x969131 - Набор оружия 2
Строка 99: Строка 126:
 
* 0x969135 - Очистить уровень розыска  
 
* 0x969135 - Очистить уровень розыска  
 
* 0x969136 - Солнечная погода
 
* 0x969136 - Солнечная погода
* 0x969137 - Очегь солнечная погода
+
* 0x969137 - Очень солнечная погода
 
* 0x969138 - Плохая погода
 
* 0x969138 - Плохая погода
 
* 0x969139 - Дождевая погода
 
* 0x969139 - Дождевая погода
Строка 106: Строка 133:
 
* 0x96913C - Ускорить игровой процесс
 
* 0x96913C - Ускорить игровой процесс
 
* 0x96913D - Замедлить игровой процесс
 
* 0x96913D - Замедлить игровой процесс
* 0x96913E - Peds Attack Eachother with Golfclub
+
* 0x96913E - Люди атакуют друг друга с клюшками для гольфа
 
* 0x96913F - Have Bounty on Head
 
* 0x96913F - Have Bounty on Head
 
* 0x969140 - Все вооружены
 
* 0x969140 - Все вооружены
* 0x969141 - ''Spawn Rhino ('''Not Tested!''')''
+
* 0x969141 - ''Создать Rhino ('''Не работает''')''
* 0x969142 - ''Spawn Bloodring Banger ('''Not Tested!''')''
+
* 0x969142 - ''Создать Bloodring Banger ('''Не работает''')''
* 0x969143 - ''Spawn Rancher ('''Not Tested!''')''
+
* 0x969143 - ''Создать Rancher ('''Не работает''')''
* 0x969144 - ''Spawn Racecar A ('''Not Tested!''')''
+
* 0x969144 - ''Создать Racecar A ('''Не работает''')''
* 0x969145 - ''Spawn Racecar B ('''Not Tested!''')''
+
* 0x969145 - ''Создать Racecar B ('''Не работает''')''
* 0x969146 - ''Spawn Romero ('''Not Tested!''')''
+
* 0x969146 - ''Создать Romero ('''Не работает''')''
* 0x969147 - ''Spawn Stretch ('''Not Tested!''')''
+
* 0x969147 - ''Создать Stretch ('''Не работает''')''
  
 
* 0x96914A - Взорвать все машины
 
* 0x96914A - Взорвать все машины
* 0x96914B - Оставить от машин лишь колеса
+
* 0x96914B - Оставить от машин лишь колеса (невидимые машины)
* 0x96914C - Лгкая управляемость тс
+
* 0x96914C - Лёгкая управляемость транспортным средством
 
* 0x96914D - Суицид
 
* 0x96914D - Суицид
 
* 0x96914E - Все светофоры зеленые
 
* 0x96914E - Все светофоры зеленые
Строка 126: Строка 153:
 
* 0x969151 - Все машины черные
 
* 0x969151 - Все машины черные
 
* 0x969153 - Летающие лодки
 
* 0x969153 - Летающие лодки
* 0x969154 - Толстый сиджей
+
* 0x969154 - Толстый Карл
* 0x969155 - СДж максмисально накаченый
+
* 0x969155 - Карл максимально накачанный
* 0x969156 - CJ становится худым
+
* 0x969156 - Карл становится худым
 
* 0x969157 - Элвисы повсюду
 
* 0x969157 - Элвисы повсюду
 
* 0x969158 - Педы атакуют с ракетниц
 
* 0x969158 - Педы атакуют с ракетниц
Строка 134: Строка 161:
 
* 0x96915A - Члены банды повсюду
 
* 0x96915A - Члены банды повсюду
 
* 0x96915B - Банды контролируют улицы
 
* 0x96915B - Банды контролируют улицы
* 0x96915C - Ninja Theme
+
* 0x96915C - Тема "ниндзя"
* 0x96915D - Slut Magnet
+
* 0x96915D - Магнит на девушек Лёгкого Поведения
 
* 0x96915E - По улицам ездят дешевые авто
 
* 0x96915E - По улицам ездят дешевые авто
 
* 0x96915F - По улицам ездят быстрые авто
 
* 0x96915F - По улицам ездят быстрые авто
 
* 0x969160 - Машины могут летать
 
* 0x969160 - Машины могут летать
* 0x969161 - Huge Bunny Hop
+
* 0x969161 - Высокий прыжок на BMX
* 0x969162 - ''Spawn Hydra ('''Not Tested!''')''
+
* 0x969162 - ''Создать Hydra ('''Не работает''')''
* 0x969163 - ''Spawn Vortex Hovercraft ('''Not Tested!''')''
+
* 0x969163 - ''Создать Vortex Hovercraft ('''Не работает''')''
* 0x969164 - Tank Mode/Smash'n Boom
+
* 0x969164 - Режим танка
 
* 0x969165 - Все машины имеют нитро
 
* 0x969165 - Все машины имеют нитро
 
* 0x969166 - Машины летают при столкновениях
 
* 0x969166 - Машины летают при столкновениях
Строка 149: Строка 176:
 
* 0x969169 - Гроза
 
* 0x969169 - Гроза
 
* 0x96916A - Песчаная буря
 
* 0x96916A - Песчаная буря
* 0x96916C - Мега-прижки
+
* 0x96916C - Мега-прыжки
 
* 0x96916D - Бесконечное здоровье
 
* 0x96916D - Бесконечное здоровье
 
* 0x96916E - Бесконечный воздух (под водой)
 
* 0x96916E - Бесконечный воздух (под водой)
* 0x96916F - Дать парашут
+
* 0x96916F - Дать парашют
* 0x969170 - Дать Jetpack
+
* 0x969170 - Дать реактивный рюкзак
 
* 0x969171 - Полиция вас не видит
 
* 0x969171 - Полиция вас не видит
* 0x969172 - Шесть звезд уровня разыскиваемости
+
* 0x969172 - Шесть звезд уровня розыска
 
* 0x969173 - Мега удар
 
* 0x969173 - Мега удар
 
* 0x969174 - Всегда сытый
 
* 0x969174 - Всегда сытый
 
* 0x969175 - Хаос-режим
 
* 0x969175 - Хаос-режим
* 0x969176 - Funhouse Theme
+
* 0x969176 - Тема "дурдом"
 
* 0x969177 - Замедлить игровой процесс
 
* 0x969177 - Замедлить игровой процесс
 
* 0x969178 - Бесконечные патроны, без перезарядки
 
* 0x969178 - Бесконечные патроны, без перезарядки
Строка 165: Строка 192:
 
* 0x96917A - Пустынный трафик
 
* 0x96917A - Пустынный трафик
 
* 0x96917B - Трафик сельской местности
 
* 0x96917B - Трафик сельской местности
* 0x96917C - Recruit Anyone (9mm)
+
* 0x96917C - Нанять в банду любого (с пистолетом)
 
* 0x96917D - Тема сельской местности
 
* 0x96917D - Тема сельской местности
* 0x96917E - Recruit Anyone (Rockets)
+
* 0x96917E - Нанять в банду любого (с гранатометом)
* 0x96917F - Максимальный респект
+
* 0x96917F - Максимальное уважение
 
* 0x969180 - Максимальная сексуальность
 
* 0x969180 - Максимальная сексуальность
 
* 0x969181 - Максимальная выносливость
 
* 0x969181 - Максимальная выносливость
* 0x969183 - Hitman in All Weapons
+
* 0x969183 - Мастер во всем оружии
* 0x969184 - ''Spawn Hunter ('''Not Tested!''')''
+
* 0x969184 - ''Создать Hunter ('''Не работает''')''
* 0x969185 - ''Spawn Quad ('''Not Tested!''')''
+
* 0x969185 - ''Создать Quad ('''Не работает''')''
* 0x969186 - ''Spawn Tanker Truck ('''Not Tested!''')''
+
* 0x969186 - ''Создать Tanker Truck ('''Не работает''')''
* 0x969187 - ''Spawn Dozer ('''Not Tested!''')''
+
* 0x969187 - ''Создать Dozer ('''Не работает''')''
* 0x969188 - ''Spawn Stunt Plane ('''Not Tested!''')''
+
* 0x969188 - ''Создать Stunt Plane ('''Не работает''')''
* 0x969189 - ''Spawn Monster ('''Not Tested!''')''
+
* 0x969189 - ''Создать Monster ('''Не работает''')''
  
 
[dword]
 
[dword]
Строка 189: Строка 216:
 
** 1 = включен
 
** 1 = включен
  
'''Note:'''
+
'''Примечание:'''
 
Если установлено в 1, то при сохранении вы получите предупреждения о использовании читов.
 
Если установлено в 1, то при сохранении вы получите предупреждения о использовании читов.
  
==Настройки Дисплея==
+
===Настройки графики===
 
* 0xBA6784 - [dword] Яркость
 
* 0xBA6784 - [dword] Яркость
 
* 0xBA6792 - [byte] Легенда
 
* 0xBA6792 - [byte] Легенда
Строка 199: Строка 226:
 
* 0xBA678C - [byte] Субтитры
 
* 0xBA678C - [byte] Субтитры
 
* 0xBA6788 - [float] Дистанция прорисовки
 
* 0xBA6788 - [float] Дистанция прорисовки
* 0xBA6794 - [byte] Лимитер кадров
+
* 0xBA6794 - [byte] Ограничитель кадров
 
* 0xBA6793 - [byte] Широкий экран
 
* 0xBA6793 - [byte] Широкий экран
* 0xA9AE54 - [byte] Качество Visual FX
+
* 0xA9AE54 - [byte] Качество эффектов
* 0xBA680C - [byte] Mip Mapping
+
* 0xBA680C - [byte] Мип-маппинг
 
* 0xBA6814 - [byte] Сглаживание:
 
* 0xBA6814 - [byte] Сглаживание:
 
** 1 = 0x (off)
 
** 1 = 0x (off)
Строка 214: Строка 241:
 
** 15 = 1024x768
 
** 15 = 1024x768
 
: (Зависит от графического драйвера/аппаратных средств.)
 
: (Зависит от графического драйвера/аппаратных средств.)
 +
: (На самом деле тут ситуация сложнее. До значения 15 (где 15 - максимальное разрешение доступное видеокартой) все разрешения идут с глубиной 16 бит, далее до значения 22 - с глубиной 32 бита)
  
==Конфигурация Звука==
+
===Настройки звука===
 
* 0xBA6798 - [byte] Громкость Радио [от 0 до 64]
 
* 0xBA6798 - [byte] Громкость Радио [от 0 до 64]
* 0xBA6797 - [byte] Громкость SFX [от 0 до 64]
+
* 0xBA6797 - [byte] Громкость Аудио [от 0 до 64]
 
* 0xBA6799 - [byte] Радио Эквалайзер
 
* 0xBA6799 - [byte] Радио Эквалайзер
 
* 0xBA6795 - [byte] Автонастройка Радио
 
* 0xBA6795 - [byte] Автонастройка Радио
* 0xBA67F8 - [byte] Режим проигрования пользовательских треков:
+
* 0xBA67F8 - [byte] Режим проигрывания пользовательской музыки:
 
** 0 = радио
 
** 0 = радио
** 1 = random
+
** 1 = случайно
* 0xBA680D - [byte] Автоматическое сканирование пользовательских треков
+
* 0xBA680D - [byte] Автоматическое сканирование пользовательской музыки
 
* 0xBA679A - [byte] ID текущей радиостанции:
 
* 0xBA679A - [byte] ID текущей радиостанции:
 
** от 1 до 12 (ниже смотрите список радиостанций и их ID)
 
** от 1 до 12 (ниже смотрите список радиостанций и их ID)
Строка 237: Строка 265:
 
*** 10 = "Master Sounds 98.3"
 
*** 10 = "Master Sounds 98.3"
 
*** 11 = "WCTR Talk Radio"
 
*** 11 = "WCTR Talk Radio"
*** 12 = "Плеер пользовательских треков"
+
*** 12 = "Плеер пользовательской музыки"
 
*** 13 = "Радио выключено"
 
*** 13 = "Радио выключено"
  
==Конфигурация Управления==
+
===Настройки управления===
 
* 0xBA6818 - [byte] значения:
 
* 0xBA6818 - [byte] значения:
** 0 = мишь + клавиатура
+
** 0 = мышь + клавиатура
 
** 1 = джойстик
 
** 1 = джойстик
 
* 0xB6EC1C - [float] Чувствительность мыши
 
* 0xB6EC1C - [float] Чувствительность мыши
* 0xC1CC02 - [byte] Управление мышой
+
* 0xC1CC02 - [byte] Управление транспортом при помощи мышки
 
* 0xC1CC03 - [byte] Инверсия мыши по вертикали
 
* 0xC1CC03 - [byte] Инверсия мыши по вертикали
  
*0xB6EC2E - REAL aiming mode offset, not menu:
+
*0xB6EC2E - Управление:
**0 = джойстик
+
**0 = джойстик (включается автоприцел, причем не обязательно иметь джойстик)
 
**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)
* 0xB6F5F0 - Указатель игрока (CPed)
+
* 0xA9AE04 = [dword] Указатель на prt_boatsplash (CParticleData)
* 0xB7CD98 - Указатель игрока, прямое смещение на начало пула пешеходов (педов) (CPed)
+
* 0xA9AE08 = [dword] Указатель на prt_bubble (CParticleData)
* 0xB74498 - Наибольшее количество педов (CPeds)(обычно 140)
+
* 0xA9AE0C = [dword] Указатель на prt_cardebris (CParticleData)
* 0xB74490 - Содержит указатель на указатель
+
* 0xA9AE10 = [dword] Указатель на prt_collisionsmoke (CParticleData)
Этот указатель:
+
* 0xA9AE14 = [dword] Указатель на prt_gunshell (CParticleData)
* +0 = Содержит указатель на первый элемент в пуле
+
* 0xA9AE18 = [dword] Указатель на prt_sand (CParticleData)
* +4 = Содержит указатель на карту байтов, которая обозначает, какие элементы используются.
+
* 0xA9AE1C = [dword] Указатель на prt_sand2 (CParticleData)
* +8 = [dword] Максимальное число элементов в пуле
+
* 0xA9AE20 = [dword] Указатель на prt_smoke_huge (CParticleData)
* +12 = [dword] Текущее число элементов в пуле
+
* 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)
  
Каждый пед - это объект размером в 1988 (0x7C4) байт.
+
==Классы и структуры==
  
Для каждого педа в пуле:
+
===CPlaceable (Перемещаемые обьекты)===
  
В большинстве случаев вы можете использовать указатель игрока как значение CPed
+
0x0000 | DWORD    __vmt  // Указатель на виртуальную таблицу методов для этого объекта
* CPed +0x14 = Указатель на структуру позиции в XYZ (и угол вращения)
+
0x0004 | RwV3D    pos    // Позиция [http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#RwV3D RwV3D]
** (CPed+0x14) +0x0 to +0x2C = [dword] матрица вращения
+
0x0010 | float    angle  // Угол по оси Z
** (CPed+0x14) +0x30 = [dword] позиция по X-координате
+
0x0014 | RwMatrix *matrix // Указатель на матрицу позиции и вращения
** (CPed+0x14) +0x34 = [dword] позиция по Y-координате
+
 
** (CPed+0x14) +0x38 = [dword] позиция по Z-координате
+
===CEntity (Игровые субьекты)===
* CPed +0x2F = [byte] Статус размещения:
+
* [http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#CPlaceable_.28.D0.9F.D0.B5.D1.80.D0.B5.D0.BC.D0.B5.D1.89.D0.B0.D0.B5.D0.BC.D1.8B.D0.B5_.D0.BE.D0.B1.D1.8C.D0.B5.D0.BA.D1.82.D1.8B.29 Класс CPlaceable]
** 0 = на улице
+
* CEntity +0x18 = [dword] Указатель на RwObject (RpClump)
** 3 = в здании
+
* CEntity +0x1C = [dword] Флаги
* CPed +0x42 = [float] Специальные флаги BP/EP/FP/DP игрока (неуязвимость к выстрелам, огню и т.д). <br><i>Сложите эти значения и запишите их сумму в +66 (0x42).</i>
+
* CEntity +0x22 = [word] ID модели
** 1 = отключает [[COLL|модель коллизии]] педа(тоесть, пед может проходить сквозь всего) (другими словами, режим noclip)
+
* CEntity +0x2F = [byte] Интерьер
** 2 = замораживает педа (тоесть, пед не может двигаться)
+
* CEntity +0x36 = [dword] Тип субьекта
** 4 = иммунитет к выстрелам
+
 
** 8 = иммунитет к огню
+
===CPhysical (Физические субьекты)===
** 16 = ?
+
* [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]
** 32 = ?
+
* CPhysical +0x40 = [dword] Иммунитеты
** 64 = иммунитет к повреждениям (от столкновений и прочего)
+
* CPhysical +0x44 = [RwV3D] Cкорость по трём осям
** 128 = иммунитет к взрывам
+
* CPhysical +0x50 = [RwV3D] Spin
* CPed +0xC0 = [dword] Указатель на ближайшую машину
+
* CPhysical +0x5C = [RwV3D] Ускорение по трём осям
* CPed +0x15C = Некторые статусы анимации:
+
* 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] Субьект, который нанёс урон этому субьекту ([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 +0xEC = [RwV3D] Координаты столкновения объекта
 +
* CPhysical +0xF8 = [word] Часть обьекта, которая столкнулась с чем-либо (или часть объекта, с которым столкнулся объект)
 +
'''Примечание:'''
 +
Для автомобилей используются следующие номера частей:
 +
** 1 - капот?(левая передняя фара?)  
 +
** 2 - багажник?
 +
** 3 - передний бампер?
 +
** 4 - задний бампер?
 +
** 5 - левая передняя дверь
 +
** 6 - правая передняя дверь
 +
** 7 - левая задняя дверь
 +
** 8 - правая задняя дверь
 +
** 9 - левое крыло?  
 +
** 10 - правое крыло?  
 +
** 17 - правая передняя фара?
 +
* 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 +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 (Пешеходы)===
 +
Каждый пед - это объект размером в 1988 (0x7C4) байт.
 +
* [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]
 +
* CPed +0x15C = Некоторые статусы анимации:
 
** 0 = прыгает от земли
 
** 0 = прыгает от земли
 
** 61 = ударяет
 
** 61 = ударяет
Строка 295: Строка 381:
 
** 154 = спринт (бежит с ускорением)
 
** 154 = спринт (бежит с ускорением)
 
** 205 = бежит
 
** 205 = бежит
* CPed +0x46C = [byte] Проверка игрока:
+
* CPed +0x294 Класс CPedSound (размер - 0x100 байт)
 +
* CPed +0x46C = [dword] Проверка игрока:
 
** 0 = в воздухе/воде
 
** 0 = в воздухе/воде
 
** 1 = в машине
 
** 1 = в машине
 
** 2 = входит в интерьер
 
** 2 = входит в интерьер
 
** 3 = пешком
 
** 3 = пешком
 +
** 18 = истекает кровью
 
* CPed +0x46D = Статус прыжка:
 
* CPed +0x46D = Статус прыжка:
 
** 32 = приземлился/ожидает
 
** 32 = приземлился/ожидает
Строка 308: Строка 396:
 
** 128 = стоит
 
** 128 = стоит
 
** 132 = присел
 
** 132 = присел
 +
* CPed +0x470 = [dword] Свойства:
 +
** 3 = невидимость (не включая оружие)
 +
** 12 = иммунитет к выстрелам в голову
 +
** 20 = тонет в воде
 +
* CPed +0x474 = [dword] Свойства:
 +
** 2 = невидимость (включая оружие)
 +
** 9 = не создавать пикап оружия после смерти
 
* CPed +0x47C = Указатель на структуру анимации
 
* CPed +0x47C = Указатель на структуру анимации
 +
* CPed +0x4D4 = [dword] Идентификатор animGroup
 
* CPed +0x4DF = Статус проигрывания текущей анимации:
 
* CPed +0x4DF = Статус проигрывания текущей анимации:
 
** 0 = ничего
 
** 0 = ничего
 
** 61 = начало/остановка
 
** 61 = начало/остановка
 
** 62 = идёт цикл
 
** 62 = идёт цикл
* CPed +0x504 = [word] Muzzle flash intensity:
+
* CPed +0x4F4 = [dword] Текущее оружие (RpClump)
** 0 to 10000 = on
+
* CPed +0x4F8 = [dword] Вспышка текущего оружия (RpClump)
** 65536 = off
+
* 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] Статус:
 
* CPed +0x530 = [dword] Статус:
 
** 0 = покидает машину, падает с байка или что-то в этом роде
 
** 0 = покидает машину, падает с байка или что-то в этом роде
Строка 332: Строка 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] Блокировка игрока (поставьте 1 чтобы заблокировать управление игроком, он не сможет двигаться)
+
* CPed +0x598 = [byte] ПедТип
* CPed +0x5A0 = [byte] Начало информации об оружии (28 байт) (Смотрите структуры: WeaponSlot)
+
* 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 +0x5D8 = [dword] Тип пистолета:
+
* CPed +0x70C = [dword] ID оружия в режиме "турель"
** 22 = 9мм
+
* CPed +0x718 = [byte] Текущий слот оружия
** 23 = 9мм с глушителем
+
* CPed +0x71A = [byte] Точность стрельбы
** 24 = desert eagle
+
* 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 +0x5DC = [dword] Статус пистолета
+
* CPed +0x72C = [byte] Навык владения оружием (0-4)
* CPed +0x5E0 = [dword] Количество патронов в обойме пистолета
+
* CPed +0x72D = [byte] Стиль борьбы #1
* CPed +0x5E4 = [dword] Общее количество патронов пистолета (включая обойму)
+
* CPed +0x72E = [byte] Стиль борьбы #2
* CPed +0x5F4 = [dword] Тип дробовика:
+
* CPed +0x730 = [dword] Указатель на прицепленный огонь (CFire)
** 25 = дробовик
+
* CPed +0x740 = [byte] ID текущего оружия (из [[default.dat]])
** 26 = обрез
+
* CPed +0x756 = [word] Количество денег
** 27 = spas-12 (боевой дробовик)
+
* CPed +0x760 = [dword] Оружие, которым убит пед
* CPed +0x5F8 = [dword] Статус дробовика:
+
* CPed +0x764 = [dword] Указатель на педа, который убил этого педа (CPed)
** 1 = стреляет?
+
* CPed +0x76C = [RwV3D] Офсет от обьекта/транспорта в режиме "турель"
** 2 = перезаряжается
+
* CPed +0x778 = [word] Угол стрельбы в режиме "турель" А
* CPed +0x5FC = [dword] Количество заряженных в дробовике патронов
+
* CPed +0x77С = [float] Угол стрельбы в режиме "турель" Б (в радианах)
* CPed +0x600 = [dword] Общее количество патронов дробовика (включая те, что заряжены)
+
* CPed +0x780 = [dword] Вид позиции в режиме "турель"
* CPed +0x718 = [byte] Текущий слот оружия (1 байт)
+
* CPed +0x784 = [dword] Количество патронов в режиме "турель"
* CPed +0x740 = ID текущего оружия (из [[default.dat]])
+
* 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])
* CPed +0x760 = [dword] Оружие, которым вы были убиты
+
* CPed +0x764 = [dword] Указатель на педа, который вас убил
+
  
===Структуры===
+
===CVehicle===
WeaponSlot                // Всего 28 байт
+
Каждый транспорт как объект, равняется 2584 (0xA18) байтам и начинается с 0xC502AA0.
  DWORD      тип          // + 0
+
* [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]
  DWORD      статус        // + 4 (0 ожидание, 1 стрельба, 2 перезарядка)
+
* +0x390 Начало класса CCarCtrl
  DWORD      AmmoInClip    // + 8
+
** +0x394 = [dword] Starting route node index (dwFirstNode)
  DWORD      AmmoRemaining // +12
+
** +0x3A4 = [word] ID текущей точки пути
  FLOAT      unknown      // +16 (увеличивается каждый раз при стрельбе, 0 когда оружие неактивно,
+
** +0x3A6 = [word] ID следующей точки пути
                              возможно используется для подсчёта выстреленных пуль для перезарядки?)
+
** +0x3A8 = [word] ID предыдущей точки пути
  UNKNOWN    0..7 байт    // +20 (неизвестно - режим очков (ночного/термо видения), 0 - выключен и 256 - включен)...+27
+
** +0x3AC = [dword] TimeOfLastMoving (последний момент времени, когда автомобиль перемещался)
 
+
** +0x3B7 = [byte] текущая полоса движения
WeaponSlot.type
+
*** 0 - единственная полоса на обычных дорогах / левая полоса на шоссе
  (Slot0: No Weapon)                    (Slot2: Handguns)
+
*** 1 - правая полоса на шоссе
  0 - Fist                              22 - Pistol
+
** +0x3B8 = [byte] будущая полоса движения? 
  1 - Brass Knuckles                    23 - Silenced Pistol
+
** +0x3B9 = [byte] trafficBehaviour (опкод 00AE)              
  (Slot1: Melee)                        24 - Desert Eagle
+
** +0x3BA = [byte] driverBehaviour (опкод 00AF)                                  
  2 - Golf Club                        (Slot3: Shotguns)
+
** +0x3BB = [byte] ID анимации для проигрывания
  3 - Nitestick                          25 - Shotgun
+
'''Примечание:'''
  4 - Knife                              26 - Sawn-Off Shotgun
+
После применения анимации это значение обнуляется.
  5 - Baseball Bat                      27 - SPAS-12
+
** +0x3BC = [dword] Время анимации для проигрывания
  6 - Shovel                            (Slot4: Sub-Machineguns)
+
** +0x3D0 = [byte] максимальная скорость, м/с
  7 - Pool Cue                          28 - Micro Uzi
+
** +0x3DB = [dword] Traffic flag
  8 - Katana                            29 - MP5
+
*** ((dwTrafficFlag >> 6) & 1 = bFollowPath)
  9 - Chainsaw                          32 - TEC-9
+
** +0x3DC = [byte] VehicleIsNotOnPath
  15 - Cane
+
*** 0 - автомобиль на пути
  (Slot5: Machineguns)                  (Slot10: Gifts)
+
*** 1 - автомобиль не на пути
  30 - AK47                              14 - Flowers
+
** +0x3EC = [float] Destination X (fDestX)
  31 - M4                                (Slot9:Special1)
+
** +0x3F0 = [float] Destination Y (fDestY)
  (Slot6: Rifles)                        42 - Fire Extinguisher
+
** +0x3F4 = [float] Destination Z (fDestZ)
  33 - Country Rifle                    43 - Camera
+
** +0x3F8 = [dword] Array of the last 8 route nodes (dwNodeList[8])
  34 - Sniper Rifle                      (Slot11:Special2)
+
** +0x418 = [short] Amount of remaining route nodes (sSteps)
  (Slot7: Heavy Weapons)                44 - NV Goggles
+
* +0x428 = [byte] Флаги:
  35 - Rocket Launcher                  45 - IR Goggles
+
** 2 = Полицейский транспорт
  36 - Heat Seaking RPG                  46 - Parachute
+
** 4 = Медицинский транспорт
  37 - Flame Thrower                    (Slot12:Detonators)
+
** 8 = Транспорт пожарной службы
  38 - Minigun                            40 - Detonator(for remote explosives)
+
** 16 = Двигатель включен
  (Slot8: Projectiles)
+
** 32 = Используется ручной тормоз, либо в транспорте нет водителя
  16 - Grenade
+
** 64 = Включены фары (за исключением стоп-сигналов автомобиля)
  18 - Molotov Cocktail
+
* +0x42D = [byte] Сирена включена/отключена
  39 - Remote Explosives
+
0x0434 BYTE  colorPrimary
  (Не слот: Выстреленный из hunter / hydra / missile launcher)
+
0x0435 BYTE  colorSecondary
  (Этот тип записан в пуле ракет как тип ракеты, но это продолжение этого списка)
+
0x0436 BYTE  colorTertiary
  19 - Обычные ракеты
+
0x0437 BYTE  colorQuaternary
  20 - Самонаводящиеся ракеты
+
0x0438 BYTE  extra[2]
  58 - Вспышки
+
0x043A WORD  upgrade[15]
 
+
0x0458 float wheelSize
==Cars==
+
* +0x45C = [dword] Время до окончания действия сигнализации
* 0xB6F980 - Is the direct pointer to the pool start (CVehicle)
+
* +0x460 = [dword] Указатель на водителя (CPed)
* 0xB74494 - Contains a pointer
+
* +0x464 = [dword] Указатель на пассажира 1 (CPed) (Переднее правое сиденье)
This pointer:
+
* +0x468 = [dword] Указатель на пассажира 2 (CPed) (Заднее левое сиденье)
* +0 = Contains a pointer to the first element in the pool
+
* +0x46C = [dword] Указатель на пассажира 3 (CPed) (Заднее правое сиденье)
* +4 = Contains a pointer to a byte map indicating which elements are in use
+
* +0x470 = [dword] Указатель на пассажира 4 (CPed) (Используется для автобусов)
* +8 = [dword] Is the maximum number of elements in the pool
+
* +0x474 = [dword] Указатель на пассажира 5 (CPed) (Используется для автобусов)
* +12 = [dword] Is the current number of elements in the pool
+
* +0x478 = [dword] Указатель на пассажира 6 (CPed) (Используется для автобусов)
 
+
* +0x47C = [dword] Указатель на пассажира 7 (CPed) (Используется для автобусов)
Each vehicle object is 2584 (0xA18) bytes. It starts at 0xC502AA0.
+
* +0x480 = [dword] Указатель на пассажира 8 (CPed) (Используется для автобусов)
 
+
* +0x488 = [byte] Максимальное кол-во пассажиров
For each vehicle in the pool:
+
* +0x490 = [dword] Указатель на прицепленный огонь (CFire)
 
+
* +0x494 = [float] Steer angle 1
* +20 = [byte] Contains a pointer to the rotation/position matrix (84 bytes):
+
* +0x498 = [float] Steer angle 2
** +0 = [float] X-axis Rotation (Grad)
+
* +0x49C = [float] Статус педали газа
** +4 = [float] Y-axis Rotation (Grad)
+
* +0x4A0 = [float] Статус педали тормоза
** +8 = [float] Z-axis Rotation (Grad)
+
* +0x4A8 = [byte] Статус бомбы у машины:
** +16 = [float] X-axis Rotation (Looking)
+
** +20 = [float] Y-axis Rotation (Looking)
+
** +24 = [float] Z-axis Rotation (Looking)
+
** +48 = [float] X-axis Position
+
** +52 = [float] Y-axis Position
+
** +56 = [float] Z-axis Position
+
* +34 = [word] Vehicle ID from vehicles.ide
+
* +66 = [byte] Is the BP/EP/DP/DP (Special Flags) status of the car as follows:<br><i>Add these values, and write the sum into +66</i>
+
** 1 = n/a
+
** 2 = n/a
+
** 4 = bullet-proof
+
** 8 = fire-proof
+
** 16 = damage-proof (from collisions etc)
+
** 32 = n/a
+
** 64 = n/a
+
** 128 = explosion-proof
+
* +68 = [float] X (East-West) speed
+
* +72 = [float] Y (North-South) speed
+
* +76 = [float] Z (Up-Down) speed
+
* +80 = [float] X (NS) Spin
+
* +84 = [float] Y (EW) Spin
+
* +88 = [float] Z (NW) Spin
+
 
+
'''Note:'''
+
Do not get confused about the Spin Angles, these are NOT rotations but the angles of how fast your vehicle is turning in the given axis direction...
+
 
+
(Car addresses continued:)
+
* +140 = [float] Mass (kg) from handling.cfg
+
* +144 = [float] Turn Mass from handling.cfg
+
* +148 = [float] Grip Divider:
+
** 1.0 = 1 x gGrip
+
** 10.1 = 10 x gGrip
+
** 100.0 = g / 100Grip
+
* +152 = [float] Mass-to-Grip Multiplier. Ie. G Force when flying/during suspension/driving (acceleration towards ground)
+
* +160 = [float] Normalized Grip Level
+
* +164 = [float] CoM X
+
* +168 = [float] CoM Y
+
* +172 = [float] CoM Z
+
* +1064 = [byte] Engine State (whether the engine is running or stalled):
+
** 0 = stalled
+
** 16 = ok
+
* +1069 = [byte] Siren on/off
+
* +1076 = [byte] Body Color (as in [[carcolors.dat]], black being the 0)
+
* +1077 = [byte] Stripe Color (as in [[carcolors.dat]], black being the 0)
+
* +1078 = [byte] Body Color #2
+
* +1079 = [byte] Stripe Color #2
+
* +1080 = [dword] modding data as in garage info (Not working?)
+
* +1084 = [dword] modding data as in garage info (Not working?)
+
* +1088 = [dword] modding data as in garage info (Not working?)
+
* +1092 = [dword] modding data as in garage info (Not working?)
+
* +1096 = [dword] modding data as in garage info (Not working?)
+
* +1100 = [dword] modding data as in garage info (Not working?)
+
* +1104 = [dword] modding data as in garage info (Not working?)
+
* +1108 = [dword] modding data as in garage info (Not working?)
+
* +1112 = [float] Car Wheel Size from vehicle.ide
+
* +1116 = [dword] Time left for car alarm to sound in ms
+
* +1120 = [dword] Pointer to driver
+
* +1124 = [dword] Pointer to passenger 1 (Front-right seat)
+
* +1128 = [dword] Pointer to passenger 2 (Rear-left seat)
+
* +1132 = [dword] Pointer to passenger 3 (Rear-right seat)
+
* +1136 = [dword] Pointer to passenger 4 (Used for buses)
+
* +1140 = [dword] Pointer to passenger 5 (Used for buses)
+
* +1144 = [dword] Pointer to passenger 6 (Used for buses)
+
* +1148 = [dword] Pointer to passenger 7 (Used for buses)
+
* +1152 = [dword] Pointer to passenger 8 (Used for buses)
+
* +1156 = [dword] Pointer to passenger 9 (Used for buses)
+
* +1172 = [float] Steer angle 1
+
* +1176 = [float] Steer angle 2
+
* +1180 = [float] Gas pedal
+
* +1184 = [float] Brake pedal
+
* +1192 = [byte] Places a car-bomb:
+
 
** 0 = нет бомбы
 
** 0 = нет бомбы
 
** 1 = незаряженная бомба с таймером
 
** 1 = незаряженная бомба с таймером
Строка 498: Строка 540:
 
** 4 = заряженная бомба с таймером
 
** 4 = заряженная бомба с таймером
 
** 5 = заряженная бомба с датчиком зажигания двигателя
 
** 5 = заряженная бомба с датчиком зажигания двигателя
 
 
'''Примечание:'''
 
'''Примечание:'''
Радиоуправляемая бомба (3) можно только узнать, установлена она или нет. Установка значения в 3 ничего не даст.
+
Радиоуправляемая бомба (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 = [[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] Статус фар:
 +
** 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)
  
You can set the above values to 0 and 1 to give the car a bomb. Some other flags get set when you arm the bomb. So if you set this value to 4, or actually arm the bomb thru normal gameplay, it does not help to change this value back.
+
===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
  
* +1216 = [float] Health/Car Damage Left:
+
===CBike (Мотоциклы и велосипеды)===
** <250.0 = on fire
+
* [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]
** 1000.0 = undamaged
+
* CBike +0x5A0 = [dword] Кламп модели (RpClump)
* +1272 = [dword] Car Door Locked State:
+
* CBike +0x5A4 = [dword] Компонент chassis_dummy (RwFrame)
** 1 = open
+
* CBike +0x5A8 = [dword] Компонент forks_front (RwFrame)
** 2 = locked
+
* CBike +0x5AC = [dword] Компонент forks_rear (только для мотоциклов) (RwFrame)
* +1300 = [dword] Alternate siren (honking):
+
* CBike +0x5B0 = [dword] Компонент wheel_front (RwFrame)
** 0 = off
+
* CBike +0x5B4 = [dword] Компонент wheel_rear (RwFrame)
** 1 = on
+
* CBike +0x5B8 = [dword] Компонент mudguard (для велосипедов - handlebars) (RwFrame)
* +1412 = [dword] Headlights switch:
+
* CBike +0x5BC = [dword] Компонент handlebars (для велосипедов - chainset) (RwFrame)
** 0 = off
+
* CBike +0x5D0 = [dword] Компонент pedal_r (только для велосипедов) (RwFrame)
** 1 = on
+
* CBike +0x5D4 = [dword] Компонент pedal_l (только для велосипедов) (RwFrame)
* +1424 = [byte] Car type:
+
* CBike +0x5CC = [RwMatrix] Матрица позиции и поворота
** 0 = car/plane
+
** 5 = boat
+
** 6 = train
+
** 9 = bike
+
* +1444 = [float] Train speed:
+
** -0.1 = is forward
+
** 0.1 = is reverse
+
* +1445 = [byte] Car Tire (Left-Front) Status:
+
** 0 = ok
+
** 1 = flat
+
** 2 = Used by planes when landing gear is up
+
* +1446 = [byte] Car Tire (Left-Rear) Status:
+
** 0 = ok
+
** 1 = flat
+
** 2 = Used by planes when landing gear is up
+
* +1447 = [byte] Car Tire (Right-Front) Status:
+
** 0 = ok
+
** 1 = flat
+
** 2 = Used by planes when landing gear is up
+
* +1448 = [byte] Car Tire (Right-Rear) Status:
+
** 0 = ok
+
** 1 = flat
+
** 2 = Used by planes when landing gear is up
+
* +1628 = [byte] Bike Tire (Front) Status:
+
** 0 = ok
+
** 1 = flat
+
* +1629 = [byte] Bike Tire (Rear) Status:
+
** 0 = ok
+
** 1 = flat
+
* +1630 = [byte] Bicycle Tire (Front) Status:
+
** 0 = ok
+
** 1 = shot
+
* +1631 = [byte] Bicycle Tire (Rear) Status:
+
** 0 = ok
+
** 1 = shot
+
  
'''Note:'''
+
===CTrain===
You cannot actually shoot the wheels of bmx. If you set the value 1 at above two offsets, it rides as if the wheels were shot. They probably not work.
+
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
 +
''Примечание (Текущий номер точки маршрута):''
 +
*За данной точкой находится задний габарит модели, если поезд направлен по порядку точек.
 +
*Если поезд направлен в обратную сторону, то номер точки фиксируется относительно переднего габарита модели.
 +
''Примечание (Ускорение):''
 +
*Независимо от первоначальной ориентации поезда -
 +
**при движении по порядку точек - больше нуля,   
 +
**при движении против порядка точек - меньше нуля.
 +
''Примечание (Расстояние, пройденное от начала маршрута в метрах):''
 +
*При нуле задний габарит модели находится на первой точке маршрута - если поезд направлен по порядку точек.
 +
*При нуле передний габарит модели находится на первой точке маршрута - если поезд направлен в обратную сторону.
  
* +1736 = [byte] Is the bike identifier. Gets set to 1 if this vehicle is a bike (or bmx)
+
===CHeli (Вертолёты)===
* +2020 = [float] Front-Left suspension height
+
* [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]
* +2024 = [float] Rear-Left suspension height
+
* CHeli +0x9A8 = [float] Максимальная высота полёта
* +2028 = [float] Front-Right suspension height
+
* CHeli +0x9B0 = [float] Минимальная высота полёта
* +2032 = [float] Rear-Right suspension height
+
* +2276 = [float] Burn Timer (in ms)
+
  
Let's say, the Car Position of this given car starts at 0xC5F5DB4:
+
===CObject (Динамические обьекты)===
* +0 = X Level to the ground
+
* [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]
* +4 = Y Level to the ground
+
* CObject +0x140 = [dword] Флаги
* +8 = Z Level to the ground
+
**бит 10 = обьект сломан
* +16 = X Where am I looking
+
**бит 11 = включен сигнал поезда
* +20 = Y Where am I looking
+
**бит 12 = обьект сфотографирован камерой
* +24 = Z Where am I looking
+
**бит 13 = обьект можно поднимать, переносить
* +32 = Dyn flight data
+
**бит 18 = обьект можно прицепить к магниту
* +36 = Dyn flight data
+
**бит 22 = иммунитет к педам (не включая игрока)
* +40 = Dyn flight data
+
* CObject +0x144 = [byte] Эффект повреждения
* +48 = CarPosX
+
**0 = нет эффекта
* +52 = CarPosY
+
**1 = происходит смена модели
* +56 = CarPosZ
+
**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)
  
Following offsets are Floats, as positions of doors and other car parts that gets detached by damage. We need to recalculate and set their locations if we warp a car from one location to another. Otherwise the car spins uncontrollably:
+
===CBuilding (Статичные обьекты)===
* +1828 = Detachables1 Pos X
+
* +1832 = Detachables1 Pos Y
+
* +1836 = Detachables1 Pos Z
+
* +1872 = Detachables2 Pos X
+
* +1876 = Detachables2 Pos Y
+
* +1880 = Detachables2 Pos Z
+
* +1916 = Detachables3 Pos X
+
* +1920 = Detachables3 Pos Y
+
* +1924 = Detachables3 Pos Z
+
* +1960 = Detachables4 Pos X
+
* +1964 = Detachables4 Pos Y
+
* +1968 = Detachables4 Pos Z
+
  
The locations of the detachable objects are different for cars and bikes. This is merely because bike object is actually smaller than the car object. The car object is used for all vehicles (including heli) but the bikes.
+
  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]
  
Offsets for Detachables:
+
===CWeapon (Слот оружия)===
* +1532 = BikeDetachPosAdr(0)
+
* +1632 = BikeDetachPosAdr(1)
+
* +1676 = BikeDetachPosAdr(2)
+
* +1720 = BikeDetachPosAdr(3)
+
* +1764 = BikeDetachPosAdr(4)
+
  
* +1828 = CarDetachPosAdr(0)
+
0x0000 | eWeaponType  m_Type              // Тип оружия
* +1872 = CarDetachPosAdr(1)
+
0x0004 | DWORD        m_dwState          // Статус: 0 - ожидание, 1 - стреляет, 2 - перезарядка
* +1916 = CarDetachPosAdr(2)
+
0x0008 | DWORD        m_dwAmmoInClip      // Патронов в обойме
* +1960 = CarDetachPosAdr(3)
+
0x000C | DWORD        m_dwTotalAmmo      // Патронов всего
 +
0x0010 | DWORD        m_dwTimeForNextShot // Время для следующего выстрела (время последнего выстрела + время ожидания)
 +
0x0014 | BYTE        _f14
 +
0x0015 | BYTE        _f15
 +
0x0016 | BYTE        _f16
 +
0x0017 | BYTE        _f17
 +
0x0018 | CParticle * m_pParticle    // Прикреплённый эффект
  
The trailer of the tanker is handled the same way as the vehicles. Its pointer gets set at offset:
+
===CBone (Кости скелета)===
* +0x4C8
+
Кости создаются при инициализации анимированного клампа.
To the car object start. When warping vehicles that has trailer, we need to warp this 'vehicle' as well.
+
0x0000 | BYTE          m_bFlags
The same pointer is used also when you are towing other vehicles as well.
+
0x0004 | CVector      m_vOffset  // Статичное смещение относительно родительской кости
 +
0x0010 | СHAnimIFrame *m_pIFrame  // Указатель на структуру, которая содержит интерполированные данные о положении кости
 +
0x0014 | DWORD        m_dwNodeId // Специальный идентификатор кости
 +
===СHAnimIFrame===
 +
Эта структура содержит интерполированные данные о положении кости
 +
0x0000 | CQuat  m_qOrientation
 +
0x0010 | CVector m_vTranslation
  
==Wanted==
+
===CScriptParticle (Скриптовые эффекты частиц)===
0xB7CD9C - Wanted pool start (CWanted). Each slot has 668 bytes of data.
+
 +
0x0000 | BYTE          isExist  // Флаг существования
 +
0x0001 | WORD          ID      // Уникальный идентификатор
 +
0x0002 | CParticleData* pData    // Указатель на структуру информации об этом эффекте частиц
  
* +0x0 = Is the counter for how pissed the cops are:
+
===CStoredCollPoly (Полигон коллизии)===
** above 50 = 1 star
+
** above 180 = 2 stars
+
** above 550 = 3 stars
+
** above 1200 = 4 stars
+
** above 2400 = 5 stars
+
** above 4600 = 6 stars
+
* +0x2C = [dword] Current wanted level
+
* +0x19 = [byte] Number of cops simultaniously shooting at you
+
  
'''Note:'''
+
0x0000 | RwV3D  posVertexA // Координаты первой вершины треугольника [http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#RwV3D RwV3D]
Helicopters will still shoot if you change this to 0.
+
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  // Освещённость, при чтении из структуры транспорта используется только первый байт
  
==Camera==
+
===CWanted (Розыск)===
* 0xB6F028 - Camera Block Start (CCamera)
+
* +0x0 = Счетчик злости копов:
* 0x52B730 - Start of camera 'MOVer' subroutine:
+
** свыше 50 = 1 звезда
** 0xC3 = lock camera (retn)
+
** свыше 180 = 2 звезды
* 0xB6F0DC - [dword] Current View:
+
** свыше 550 = 3 звезды
** 0 = bumper View
+
** свыше 1200 = 4 звезды
** 1 = close external view
+
** свыше 2400 = 5 звезд
** 2 = middle external view
+
** свыше 4600 = 6 звезд
** 3 = furthest external view
+
* +0x2C = [dword] Текущий уровень звезд
** 4 = nothing = same as last?
+
* +0x19 = [byte] Количество одновременно стреляющих в игрока копов
** 5 = cinematic view
+
** 6 to INF = same as 4?
+
* 0xB6F0E0 - [float] Car View Distance (arm length)
+
* 0xB6F0E8 - [float] True View Distance (true arm length)
+
  
==Ignored==
+
'''Примечание:'''
0xB7CD9C - Ignored pointer (CIgnored).
+
Если поставить значение 0, вертолеты все равно будут стрелять.
  
* +0x1E = [byte/boolean] Is player ignored by cops
+
===Камера===
* +0x298 = [byte/boolean] Is player ignored by everyone
+
* 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)
  
==Pools==
+
===CPlayerData===
See the [[Data Pools]] funtions in the [[Function Memory Addresses (SA)]] section.
+
* +0x1E = [byte/boolean] Игрок игнорируется копами
 +
* +0x298 = [byte/boolean] Игрок игнорируется всеми
  
0x550F10 - AllocatePools function.
+
===Pools===
 +
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
Строка 670: Строка 816:
 
* 00B744C4 - PedAttractors
 
* 00B744C4 - PedAttractors
  
==Target==
 
0xB6F3B8 = Pointer to Target.
 
  
* +0x79C = Targetted CPed:
 
** 0 = no cped targetted
 
* +0xC0 = Pointer to last object (ped, car, maybe others) you collided with
 
  
==Handling==
+
===Характеристики машин===
0xC2B9DC - Handling Block Start. Each slot has 224 bytes of data.
+
0xC2B9DC - Начало блока Handling. Каждый слот имеет 224 байта данных.
  
* +0x0 = [dword] Index/Identifier
+
* +0x0 = [dword] Индекс/Идентификатор
 
* +0x4 = fMass
 
* +0x4 = fMass
 
* +0x8 = 1.0 / fMass
 
* +0x8 = 1.0 / fMass
Строка 719: Строка 860:
 
* +0xDE = [byte] Vehicle anim group
 
* +0xDE = [byte] Vehicle anim group
  
==Controls==
+
===WEAPON.DAT===
0xB73458 - Start of controls block.
+
0xC8AAB8 - Начало блока, куда считывается информация об оружии с меткой J (оружие ближнего боя) и $ (остальное оружие).
 +
В этом блоке 0x50 элементов по 0x70 байт в каждом. Индекс элемента высчитывается по формуле:
 +
<номер оружия> + <смещение>.
 +
Смещение определяется навыком оружия skilllevel: STD - 0, POOR - 25, PRO - 36, особое (характеристики пистолета копов) - 47.
 +
Все имена взяты из заголовка оригинального weapon.dat.
  
* +0x20 = [word] Accelerate:
+
* +0x0 = [dword] eFireType
** 0 = off
+
** 0 - MELEE
** 255 = on
+
** 1 - INSTANT_HIT
* +0x22 = [word] Brake
+
** 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.
  
==Rockets==
+
'''Примечание''' : изменяя флаги, убедитесь, что установленная анимационная группа поддерживает все определенные действия, иначе игра будет вылетать. Массив флагов:
The rocket pool contains info on launched rockets (for example, Hydra rockets).
+
  
0xC891A8 - Rocket pool start. Each slot has 36 bytes of data. There are 32 elements in the pool.
+
**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
  
* +0 = [dword] Rocket type:
+
0xC8A8A8 - сюда считывается информация о смещениях прицела для анимационных групп (метка %). Состоит из 20 элементов по 0x18 байт в каждом.
** 16 = none
+
Индекс элемента - AlignedAnimGroupID из структуры выше.
** 19 = normal
+
* +0x0 = [dword] AimX
** 20 = heatseeking
+
* +0x4 = [dword] AimZ
** 58 = flare
+
* +0x8 = [dword] DuckX
* +4 = [dword] Pointer to launching vehicle
+
* +0xC = [dword] DuckZ
* +8 = [dword] Pointer to target vehicle (when heatseeking), 0 otherwise
+
* +0x10 = [word] RLoadA         
* +16 = [byte] Does rocket exist?
+
* +0x12 = [word] RLoadB         
** 0 = exploded/does not exist
+
* +0x14 = [word] CrouchRLoadA           
** 1 = travelling
+
* +0x16 = [word] CrouchRLoadB
* +20 = [float] X-axis position
+
* +24 = [float] Y-axis position
+
* +28 = [float] Z-axis position
+
  
==Race Checkpoints==
+
===Управление===
The checkpoints block that are used in the "illegal street racing" mini-games.
+
0xB73458 - Начало блока управления машиной.
  
0xC7F158 - Checkpoint block start. Each block is 38 bytes, but theres always only two at a time.
+
* +0x20 = [word] Газ:
 +
** 0 = выкл
 +
** 255 = вкл
 +
* +0x22 = [word] Тормоз
  
* +0 = [byte] Type of checkpoint
+
===Пикапы===
* +2 = [byte] RGBA color value
+
* +4 = [float] X-axis Position
+
* +8 = [float] Y-axis Position
+
* +12 = [float] Z-axis Position
+
* +16 to +24 = [float] Rotation Matrix (direction from this checkpoint to the next, all floats)
+
* +32 = [float] Checkpoint radius
+
  
==Garages and Parking==
+
0x9788C0 - Начало блока пикапов. Количество элементов - 620. Размер одного элемента - 32 байта.
'''Note, that the memory location of garages can vary depending on the scm script you use.'''
+
 
 +
* +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            // Позиция [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 байт.
 +
 
 +
* +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, который вы используете'''
 +
 
 +
Всего в игре [[Гараж#San_Andreas_2|50 гаражей]]. Каждый гараж содержит:
 +
* Позицию
 +
* Детали
 +
* Информацию об использовании
 +
* Расположение в игре
 +
* Расположение двери
 +
* Ширину
 +
* Толщину
 +
* Высоту
 +
* Направление
 +
* Координаты нижнего левого угла
 +
* Координаты высшего правого угла
 +
* Использование игроком
 +
* Какому имуществу (safe house) он принадлежит
 +
* ID машины, которая может храниться в этом гараже
 +
* Состояние двери (закрытая, открытая, открывающаяся и закрывающаяся дверь)
  
There are [[Гараж#San_Andreas_2|50 garages]] in the game. Each garage has:-
 
* Position
 
* Details
 
* Usage information
 
* Location in game
 
* Location of door
 
* Width
 
* Depth
 
* Height
 
* Direction it looks
 
* Coordinates of lower left corner
 
* Coordinates of upper right corner,
 
* Usable by the player
 
* Which property (safe house) it belongs
 
* Number of vehicles which can be parked inside
 
* The door state (closed, opening, open and closing)
 
  
 
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:
Строка 784: Строка 1329:
 
* 0x96C120 (start of final garage)
 
* 0x96C120 (start of final garage)
  
(Tested using non-patched original v1.0 German EXE with English language option selected, and original SCM file.)
+
Здесь опубликован список известных оффсетов гаражей:
 
+
* +0 = [float] X координата левого нижнего угла
(UZI-I Tested Player Garage and Pay'n'Spray using Hoodlum Crack EXE with an Blank SCM)
+
* +4 = [float] Y координата левого нижнего угла
 
+
* +8 = [float] Z координата левого нижнего угла
Here is the known garage offsets:
+
* +0 = [float] X Coord of the Garage Lower Left corner
+
* +4 = [float] Y Coord of the Garage Lower Left corner
+
* +8 = [float] Z Coord of the Garage Lower Left corner
+
 
* +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
Строка 799: Строка 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] Left Border (X) corrdinate
+
* +40 = [float] Левый угол (X) координаты
* +44 = [float] Right Border (X) corrdinate
+
* +44 = [float] Правый угол (X) координаты
* +48 = [float] Front Border (Y) corrdinate
+
* +48 = [float] Передний угол (Y) координаты
* +52 = [float] Back Border (Y) corrdinate
+
* +52 = [float] Задний угол (Y) координаты
* +56 = [float] Garage Door Position
+
* +56 = [float] Позиция двери гаража
* +60 = [dword] unknown (Timer)
+
* +60 = [dword] Неизвестно(Таймер)
* +64 = [dword] unknown (not saved)
+
* +64 = [dword] Неизвестно (не сохраняется)
* +68 = [chars] Garage Name (7 bytes + nul)
+
* +68 = [chars] Название гаража (7 байтовая нуль-терминированная строка)
* +76 = [byte]  Garage Type
+
* +76 = [byte]  Тип гаража
* +77 = [byte]  Garage Door State values:
+
* +77 = [byte]  Значения состояния двери гаража:
** 0 = closed
+
** 0 = дверь закрыта
** 1 = open
+
** 1 = дверь открыта
** 2 = closing
+
** 2 = дверь закрывается
** 3 = opening
+
** 3 = дверь открывается
* +78 = [byte]  Door Flags
+
* +78 = [byte]  Флаги двери
** 0x01      used mod shop (?)
+
** 0x01      используется в гараже модификаций (?)
** 0x02      inactive door
+
** 0x02      дверь неактивна
** 0x04      used Pay'n'Spray (?)
+
** 0x04      используется в Pay'n'Spray (?)
** 0x08      small door (reflective?)
+
** 0x08      маленькая дверь (reflective?)
** 0x10      up and in door
+
** 0x10      дверь открывается вверх и внутрь
** 0x20      camera follows player
+
** 0x20      камера следит за игроком
** 0x40      door is closed flag
+
** 0x40      дверь закрыта
** 0x80      girlfriend PnS
+
** 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.
  
Here are the static Addresses of the Garage Blocks, and to which garage they belong:
+
Статические адреса стандартных гаражей и их названий:
 
* 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
Строка 930: Строка 1471:
 
* 0x96B818 - LSPD Impound Car 2
 
* 0x96B818 - LSPD Impound Car 2
 
* 0x96B858 - LSPD Impound Car 3
 
* 0x96B858 - LSPD Impound Car 3
* 0x96B898 - LSPD Impound unused
+
* 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 unused
+
* 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 usued
+
* 0x96BA98 - LVPD Impound (не используется)
 
* 0x96BAD8 - Calton Heights Car 1
 
* 0x96BAD8 - Calton Heights Car 1
 
* 0x96BB18 - Calton Heights Car 2
 
* 0x96BB18 - Calton Heights Car 2
Строка 960: Строка 1501:
 
* 0x96BF98 - Verdant Meadows Airport Car 4
 
* 0x96BF98 - Verdant Meadows Airport Car 4
  
==Interface==
+
===CVector===
* 0xBAB22C - [byte] Health bar/red text/enemy marker/anything red color (RGBA, 4 bytes)
+
* 0xBAB230 - [byte] Money font color/vehicle entry name/green text/anything green color (RGBA, 4 bytes)
+
* 0xBAB238 - [byte] White text color (RGBA, 4 bytes)
+
* 0xBAB240 - [byte] Main menu title border (RGBA, 4 bytes)
+
* 0xBAB244 - [byte] Wanted level/yellow text color (RGBA, 4 bytes)
+
* 0xBAB24C - [byte] Radio station text color (RGBA, 4 bytes)
+
  
==Menu==
+
0x0000 | RwV3D  vector // [http://gtamodding.ru/wiki/Адреса_Памяти_(SA)#RwV3D RwV3D]
The following addresses have been found:
+
  
0xBA6748 - Base address.
+
===CompressedVector===
  
* +0x15D = [byte] Current Menu ID
+
0x0000 | word  x
* +0x78D = [byte] Show menu item hover
+
0x0002 | word  y
* +0x54 = [dword] Selected menu item
+
0x0004 | word  z
  
* +0xE9 = [byte] Main menu switch (startup menu/menu when playing)
+
===RwV3D===
* +0x84 = [dword] Language
+
* +0x15F = [byte] Selected savegame
+
* +0x24 = [dword] Radar mode
+
  
* +0x64 = [float] Map zoom
+
0x0000 | float   x
* +0x68 = [float] Map x position
+
0x0004 | float   y
* +0x6C = [float] Map y position
+
0x0008 | float  z
  
* +0x5C = [byte] Player in menu?
+
==Меню==
  
==Menu IDs==
+
0xBA6748 - Основной адрес.
Known Menu IDs (get ID at 0xBA68A5):
+
* 0 = Stats
+
* 1 = Start game
+
* 2 = Brief
+
* 3 = Audio options
+
* 4 = Display settings
+
* 5 = Map
+
* 6 = Question start new game
+
* 7 = Game selection
+
* 8 = Question load mission pack
+
* 9 = Load game
+
* 10 = Delete game
+
* 11 = Question load save game
+
* 12 = Question delete game
+
* 13 = Loads first savegame? *crash
+
* 14 = Delete successful
+
* 15 = Delete successful
+
* 16 = Save game
+
* 17 = Question save
+
* 18 = Save successful
+
* 19 = Save successful
+
* 20 = Save game ok
+
* 21 = Load game ok
+
* 22 = Game affected, do not save
+
* 23 = Display default settings
+
* 24 = Audio default settings
+
* 25 = Controller default settings
+
* 26 = User track options
+
* 28 = Language
+
* 29 = Save game ok
+
* 30 = Save unsuccessful
+
* 31 = Load game (save unsuccessful)
+
* 32 = Load unsuccessful, file corrupted
+
* 33 = Options
+
* 34 = Main menu
+
* 35 = Quit game
+
* 36 = Controller setup
+
* 37 = Redefine controls
+
* 38 = Foot/vehicle controls
+
* 39 = Mouse settings
+
* 40 = Joypad settings
+
* 41 = Game running main menu
+
* 42 = Quit game
+
* 43 = Empty
+
  
== SCM related ==
+
* +0x15D = [byte] ID текущего меню
* 0xA49960 - Start of the SCM block (0xA49960 + (4 * varnumber) is that particular variable)
+
* +0x78D = [byte] Показ наведённого пункта меню
* 0xA7A6A0 - Start of the mission block (69000 bytes)
+
* +0x54 = [dword] Выделенные элементы меню
* 0x464080 - GetOpcodeParameters()
+
 
* 0xA447F4 - Command count
+
* +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
 
* 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 - Where the routine above stores opcode parameters values. Max 16 paramters for an opcode it seems
+
* 0xA43C78 - Располагаются значения параметров опкода. Максимальное кол-во параметров - 16.
* 0x8A6168 - "Master" jumptable, each dword points to one of 27 different functions, each one handling approx 100 opcodes
+
* 0x8A6168 - Таблица переходов. Каждый dword указывает на 1 из 27 различных функций, которая обращается к 100 опкодов.
* 0x466C50 - Opcodes 0000 - 0063. Array of dword, each pointing to the function for that opcode
+
* 0x466C50 - Опкоды 0000 - 0063. Массив dword'ов, каждый из которых указывает функцию для этих опкодов
* 0x468364 - Opcodes 0064 - 00C4. Array of dword, each pointing to the function for that opcode
+
* 0x468364 - Опкоды 0064 - 00C4. Массив dword'ов, каждый из которых указывает функцию для этих опкодов
* 0x469E4C - Opcodes 00D6 - 0129. Array of byte, each byte is an index for the array of dword at 0x469DD4, which points to the opcode function
+
* 0x469E4C - Опкоды 00D6 - 0129. Массив байтов, каждый байт это индекс для массива dword'ов по адресу 0x469DD4, который указывает на функцию опкода
* 0x47D1B4 - Opcodes 0137 - 018F. Array of byte, each byte is an index for the array of dword at 0x47D0F4, which points to the opcode function
+
* 0x47D1B4 - Opcodes 0137 - 018F. Массив байтов, каждый байт это индекс для массивов dword по адресу 0x47D0F4,  
* 0x47DFE0 - Opcodes 0190 - 01F3. Array of byte, each byte is an index for the array of dword at 0x47DF58, which points to the opcode function
+
* 0x47DFE0 - Opcodes 0190 - 01F3. Массив байтов, каждый байт это индекс для массивов dword по адресу 0x47DF58, который указывает на функцию опкода
* 0x47F304 - Opcodes 01F4 - 0256. Array of byte, each byte is an index for the array of dword at 0x47F24C, which points to the opcode function
+
* 0x47F304 - Opcodes 01F4 - 0256. Массив байтов, каждый байт это индекс для массивов dword по адресу 0x47F24C, который указывает на функцию опкода
* 0x47FA04 - Opcodes 0292 - 02B8. Array of byte, each byte is an index for the array of dword at 0x47F9BC, which points to the opcode function
+
* 0x47FA04 - Opcodes 0292 - 02B8. Массив байтов, каждый байт это индекс для массивов dword по адресу 0x47F9BC, который указывает на функцию опкода
* 0x480FD8 - Opcodes 02BE - 031D. Array of byte, each byte is an index for the array of dword at 0x480F10, which points to the opcode function
+
* 0x480FD8 - Opcodes 02BE - 031D. Массив байтов, каждый байт это индекс для массивов dword по адресу 0x480F10, который указывает на функцию опкода
* 0x4836B8 - Opcodes 0320 - 0382. Array of byte, each byte is an index for the array of dword at 0x483600, which points to the opcode function
+
* 0x4836B8 - Opcodes 0320 - 0382. Массив байтов, каждый байт это индекс для массивов dword по адресу 0x483600, который указывает на функцию опкода
(No time to finish now, will finish later)
+
(Нет времени закончить сейчас, закончим позже)
 +
 
 +
=====Потоки=====
 +
0xA8B430 - Старт пула потоков. Существуют активные и неактивные потоки.
 +
<br>
 +
0xA8B42C - Поинтер к первому активному SCM потоку.
 +
<br>
 +
0xA8B428 - Поинтер к первому неактивному скрипту.
  
===Threads===
+
Каждый поток имеет размер 224 (0xE0) байтов
0xA8B430 - Start of the threads pool. There are two queues: the active threads and inactive ones.<br>
+
0xA8B42C - Pointer to the first active SCM thread.<br>
+
0xA8B428 - Pointer to the first inactive SCM thread.
+
  
Each thread has size of 224 (0xE0) bytes.  
+
* +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] Флаг миссии
  
* +0 = [void*] Pointer to the next thread in a queue
+
=====Информация о внешних скриптах=====
* +4 = [void*] Pointer to the previous thread in a queue
+
0xA47B60 - Начало информации пула о внешних скриптах. Всего 82 элемента, каждый из которых равен 32 байтам.
* +8 = [char] Thread name given by the opcode [[03A4]], char 8
+
* +0 = [dword] Скрипт IP
* +16 = [dword] Thread base IP (used in the missions and [[External_Script|external scripts]] to calculate a global address of a local jump offset)
+
* +4 = [word] Статус (может быть получен опкодом [[0926]])
* +20 = [dword] Current IP
+
* +6 = [word] Индекс в SCM (число, которое определено в SCM заголовке)
* +24 = [dword] Return stack (stores the current IP when a gosub executed, dword 8)
+
* +8 = [char] Имя, char = 20
* +56 = [word] Last item index of the return stack
+
* +28 = [dword] Размер
* +60 = [dword] Local variables array, dword 32
+
* +188 = [dword] Automatically incrementing timers, dword 2
+
* +196 = [boolean] Thread active flag
+
* +197 = [boolean] IF result
+
* +198 = [boolean] Mission flag
+
* +199 = [boolean] External script flag
+
* +200 = [boolean] Unknown flag (in menu?). Used in [[03E5]]
+
* +201 = [boolean] Unknown flag (ID of an assigned script?)
+
* +204 = [dword] Wakeup time (set by [[0001]])
+
* +208 = [word] IF number (set by [[00D6]])
+
* +210 = [boolean] Not flag (if a condition to check is negative – any opcodes higher than 0x7FFF)
+
* +211 = [boolean] Wasted or busted check enabled flag (set by [[0111]]); '''only for missions'''
+
* +212 = [boolean] Player is wasted or busted flag; '''only for missions'''
+
* +216 = [dword] Skip scene IP (used by opcodes [[0707]], [[0701]])
+
* +220 = [boolean] Mission flag
+
  
===External Scripts Info===
+
0xA485A0 - [dword] Размер самого большого внешнего скрипта<br>
0xA47B60 – Start of the external scripts info pool. There are 82 elements with 32 bytes of size each
+
0xA485A4 - [dword] Количество внешних скриптов
* +0 = [dword] Script IP
+
* +4 = [word] Status (can be obtained by [[0926]])
+
* +6 = [word] Index in SCM (a number as defined in the scm header)
+
* +8 = [char] Name, char 20
+
* +28 = [dword] Size
+
  
0xA485A0 – [dword] Size of the largest external script<br>
+
=====Другое=====
0xA485A4 – [dword] Total scripts count
+
0xA4892C - Начало пула, который расположен в хэндлах автомобиля. Здесь хранится шесть элементов, каждый из которых:
 +
* +0 = [dword] Хэндл автомобиля для проверки, если она переворачивается. Используется опкодом [[0190]].
 +
* +4 = [dword] Время (в мс), пройденное с того момента, когда автомобиль перевернулся. Используется опкодом [[018F]].
  
===Misc===
 
0xA4892C – Start of the pool stored the flipped vehicles handles. There are 6 elements in there, with each of them:
 
* +0 = [dword] Vehicle handle to check if it flipped. Stored by opcode [[0190]].
 
* +4 = [dword] Time in ms passed from the moment a vehicle flipped. Used by opcode [[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 of the items in the list is 75. Each item has the following structure:
+
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] Entity type:
+
* +0 = [byte] Типы энтитов:
** 1 - vehicle
+
** 1 - автомобиль
** 2 - actor
+
** 2 - актер
** 3 - object
+
** 3 - объект
** 4 - particle
+
** 4 - эффект частиц
** 5 – group ([[062F]])
+
** 5 - группа ([[062F]])
** 7 – AS_origin ([[061D]])
+
** 7 - AS_origin ([[061D]])
 
** 8 - action_sequence
 
** 8 - action_sequence
 
** 9 - decision maker
 
** 9 - decision maker
** 11 - searchlight
+
** 11 - прожектор
 
** 13 - txd_dictionary
 
** 13 - txd_dictionary
* +4 = [dword] entity handle (an index in the proper pool)
+
* +4 = [dword] Хэндл энтити (индекс в соответствующем пуле)
  
= Weather Codes=
+
==Погода==
0xC81318 - [word] Weather lock (by AlienX).<br>
+
0xC81318 - [word] Закрепить погоду (нашел AlienX).<br>
0xC8131C - [word] Upcoming weather.<br>
+
0xC8131C - [word] Следующая погода.<br>
0xC81320 - [word] Current weather.<br>
+
0xC81320 - [word] Текущая погода.<br>
 
<br>
 
<br>
The following values tie up with the sections in data/[[timecycp.dat]]. There are several different kinds of weathers (including underwater), and the current weather affects viewing distance, sky colour, fog intensity, and other things like that.  The appearance of each weather is time-dependent too.
+
Следующие значения связаны с файлом [[timecycp.dat]]. Несколько видов погодных условий отличаются(например: UNDERWATER). Погода может влиять на дальность просмотра, цвет неба, яркость тумана, облака и прочее.
 
<br>
 
<br>
  
Weather Values:
+
Виды погод:
  
 
* 0 = EXTRASUNNY_LA
 
* 0 = EXTRASUNNY_LA
Строка 1137: Строка 1689:
 
* 9 = FOGGY_SF
 
* 9 = FOGGY_SF
 
* 10 = SUNNY_VEGAS
 
* 10 = SUNNY_VEGAS
* 11 = EXTRASUNNY_VEGAS (heat waves)
+
* 11 = EXTRASUNNY_VEGAS  
 
* 12 = CLOUDY_VEGAS
 
* 12 = CLOUDY_VEGAS
 
* 13 = EXTRASUNNY_COUNTRYSIDE
 
* 13 = EXTRASUNNY_COUNTRYSIDE
Строка 1146: Строка 1698:
 
* 18 = SUNNY_DESERT
 
* 18 = SUNNY_DESERT
 
* 19 = SANDSTORM_DESERT
 
* 19 = SANDSTORM_DESERT
* 20 = UNDERWATER (greenish, foggy)
+
* 20 = UNDERWATER (Под водой)
* 21 = EXTRACOLOURS_1 (very dark, gradiented skyline, purple) Used for interiors?
+
* 21 = EXTRACOLOURS_1 (очень темный, градиентовый горизонт, пурпурный) Используется для интерьеров?
* 22 = EXTRACOLOURS_2 (very dark, gradiented skyline, green) Used for interiors?
+
* 22 = EXTRACOLOURS_2 (очень темный, градиентовый, зелёный) Используется для интерьеров?
  
<br> The following are not mentioned in that file, make of them what you will:
+
<br> В следующем списке есть не упомянутые в файле виды погод:
  
* 23 to 26 = variations of pale orange
+
* 23 до 26 = Вариаций бледно-оранжевой погоды
* 27 to 29 = variations of fresh blue
+
* 27 до 29 = Вариаций насыщенно-синей погоды
* 30 to 32 = variations of dark, cloudy, teal
+
* 30 до 32 = Вариаций темно-облачно-бирюзовой погоды
* 33 = dark, cloudy, brown
+
* 33 = Темная, облачная, коричневая вариация
* 34 = blue/purple, regular
+
* 34 = Небо с голубым и пурпурным цветом
* 35 = dull brown
+
* 35 = Тускло-коричневое небо
* 36 to 38 = bright, foggy, orange
+
* 36 до 38 = Ярко-облачное небо с оранжевым оттенком
* 39 = extremely bright
+
* 39 = Очень яркое небо
* 40 to 42 = blue/purple cloudy
+
* 40 до 42 = Голубые и пурпурные облака
* 43 = dark toxic clouds
+
* 43 = Темное небо с токсичным оттенком
* 44 = black/white sky
+
* 44 = Черно-белое небо
* 45 = black/purple sky
+
* 45 = Черно-пурпурное небо
 +
'''Предупреждение: Если Вы попробуете установить значения, которые отсутствуют в списке, то последствия будут неприятны: черный экран, мерцание, вылет игры и т.д.'''
  
'''Warning: Setting these values to anything higher will result in things like black screen, flickering, really red, etc.'''
 
  
= Dependencies=
 
* Car ptr = player ptr when on foot.
 
['''Note''': This depends on which address for the pointer is being used, if the car pointer appears to be the same as the player pointer on foot, then you may be using a camera-related target pointer.]
 
* CPed block size = 0x7C4 bytes.
 
* CVehicle block size = 0x0A18 bytes.
 
  
=External Links=
+
==Ссылки==
* [http://www.gtaforums.com/index.php?showtopic=194199 GTASA Memory Addresses] - a topic on GTAForums.
+
* [http://www.gtaforums.com/index.php?showtopic=194199 GTASA Memory Addresses] - Тема на GTAForums.com.
 +
* [http://sannybuilder.com/forums/viewtopic.php?id=32 Адреса и функции gta_sa.exe 1.0] - Тема на sannybuilder.com.
 +
* [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://code.google.com/p/mtasa-blue MTA Sources] - Исходники мультиплеера ГТА на Google Sources.
  
[[Категория:Адреса Памяти]]
+
{{SA-navi}}
 +
[[Категория:Адреса Памяти]] [[Категория: 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 = "Радио выключено"

Настройки управления

  • 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] Типы энтитов:
    • 1 - автомобиль
    • 2 - актер
    • 3 - объект
    • 4 - эффект частиц
    • 5 - группа (062F)
    • 7 - AS_origin (061D)
    • 8 - action_sequence
    • 9 - decision maker
    • 11 - прожектор
    • 13 - txd_dictionary
  • +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 = Черно-пурпурное небо

Предупреждение: Если Вы попробуете установить значения, которые отсутствуют в списке, то последствия будут неприятны: черный экран, мерцание, вылет игры и т.д.


Ссылки

п · о · р
San Andreas Grand Theft Auto: San Andreas
Форматы файлов.col.cfg.cut.dff.dat.fxp.gxt.ide.ifp.img.ipl.rep.rrr.scm.txd.set
Документацияcarcols.datCarrecPed EventsPed TypeАдреса Памяти Функций (SA)Анимация моделей в SAВизуальные эффекты в скриптинге
Загруженные звукиКатсценыНомера оружияРисование на экранеТрюки с меткамиСтатистикаСтруктура аудио в SABeta версия
ИнструментыCLEOCollision File Editor IIENBSeriesG-ToolsGXT EditorIMG ToolPS2 TXD ModPS2 TXD ViewerLimit AdjusterMap EditorPathViewer
San Andreas Audio ToolkitSan Andreas Texture PlacerSanny BuilderTXD WorkshopTXDFuckerXBOX TXD PowerTool
ТуториалыРедактирование аудио в SAИзменение cutsceneDecision MakerПропуск роликовКонвертация автомобилей в SA
Основы маппинга GTA:SAДелаем ломающиеся объектыКонвертирование персонажа в SA2dfx в SanAndreasМоддинг San Andreas v2.0
Новая анимация персонажейУниверсальный солдат (GTA SA)
МодыAlien CityDesign Your Own MissionGTA: UnitedGTA StoriesGTA Berlin
МультиплеерgtaTournamentMulti Theft AutoSan Andreas Multiplayer