Пятница, 19.04.2024, 13:30
Качественные скрипты, моды и дополнения для GTA без регистрации
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Форум » Игры серии ГТА » Работа с памятью, exe » Работа с компонентами моделей
Работа с компонентами моделей
GTAshnikДата: Вторник, 17.01.2012, 13:05 | Сообщение # 106
Группа: Пользователи
Сообщений: 24
Статус: Offline
Можно ли у самолёта записать указатель на матрицу позиции компонента, через которую можно определить его координаты и углы поворота?
 
DK22PacДата: Вторник, 17.01.2012, 13:05 | Сообщение # 107
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Да.
Code
0D12: get_car 0@ component "component_name" matrix_to 1@ // IF and SET
 
GTAshnikДата: Вторник, 17.01.2012, 13:05 | Сообщение # 108
Группа: Пользователи
Сообщений: 24
Статус: Offline
DK22Pac, спасибо. Кстати, не подскажешь, где найти названия этих компонентов?
 
DK22PacДата: Вторник, 17.01.2012, 13:05 | Сообщение # 109
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
В 3д-редакторе, который работает с дфф
Ну или в GGMM, смотри иерархию (ПКМ-модел инфо)
 
GTAshnikДата: Вторник, 17.01.2012, 13:05 | Сообщение # 110
Группа: Пользователи
Сообщений: 24
Статус: Offline
DK22Pac, спасибо...
 
DK22PacДата: Среда, 01.02.2012, 00:54 | Сообщение # 111
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Можно ли проверить, что крыло автомобиля не отлетело?
 
Den_spbДата: Среда, 01.02.2012, 01:14 | Сообщение # 112
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Так ты же вроде разбирал удаление фреймов.
Можно посмотреть как работает опкод 88A7: not car 34@ componentA 2 opened_or_not_present
 
DK22PacДата: Среда, 01.02.2012, 01:35 | Сообщение # 113
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
По-моему, там всё через damage manager устроено. Т.е. в самом фрейме не указано, какой из вариантов моделей (обычный или повреждённый) используется...

Добавлено (01.02.2012, 01:35)
---------------------------------------------
В опкоде используется только 6 компонентов (0-5)...
Хотя это ограничение можно убрать.

Code
0a8c: 0x474FAF 5 0x90 1
 
Den_spbДата: Среда, 01.02.2012, 02:04 | Сообщение # 114
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
А что такое damage manager? Если я правильно понял, то это какая-то структура, указатель на которую хранится в CVehicle+5A0h.

Quote (DK22Pac)
0a8c: 0x474FAF 5 0x90 1
Ну да, по идее должно работать.

Добавлено:
Вопрос снят. Догадался заглянуть на вкладку Structures smile
Да, есть вероятность что статус компонентов хранится тут.


Сообщение отредактировал Den_spb - Среда, 01.02.2012, 02:12
 
DK22PacДата: Среда, 01.02.2012, 13:32 | Сообщение # 115
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Да, она отвечает за состояние компонентов.

CDamageManager.field_0 => CDamageManager.WheelDamageEffect
CDamageManager.field_9 => CDamageManager.ComponentsStatus

PS что за panelStatus? wacko


Сообщение отредактировал DK22Pac - Среда, 01.02.2012, 13:47
 
Den_spbДата: Среда, 01.02.2012, 13:58 | Сообщение # 116
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Не знаю, я эту тему не разбирал.
Можно посмотреть, как используются функции:
Code
.text:006C2180     CDamageManager__getPanelStatus proc near ; CODE XREF: sub_49B280+B6p

Code
.text:006C2150     CDamageManager__setPanelStatus proc near ; CODE XREF: sub_49B3C0+160p
 
DK22PacДата: Среда, 01.02.2012, 14:04 | Сообщение # 117
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Таблица компонентов #1
case 0 CVehicle+0x648+0x10*4 // bonnet_dummy
case 1 CVehicle+0x648+0x11*4
case 2 CVehicle+0x648+0xA*4
case 3 CVehicle+0x648+0x8*4
case 4 CVehicle+0x648+0xB*4
case 5 CVehicle+0x648+0x9*4
 
Den_spbДата: Среда, 01.02.2012, 14:17 | Сообщение # 118
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Подобная таблица уже была, только там указаны суммарные смещения относительно CVehicle: http://sannybuilder.com/forums/viewtopic.php?pid=14815#p14815
А номера компонентов для стандартных опкодов есть в справке SB: Статьи - Транспорт.
Code
0  Капот.   
1  Багажник.   
2  Дверь водителя или левого переднего места.   
3  Дверь правого переднего места.   
4  Дверь заднего левого места.   
5  Дверь заднего правого места.   
 
DK22PacДата: Суббота, 04.02.2012, 04:12 | Сообщение # 119
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Там же, в теме СБ, kenking показал, ка получить статус ComponentA.

Получить статус панельных компонентов (неоткрывающихся, в scm - ComponentB)

0A97: 1@ = car 0@ struct
1@ += 0x5A0
0AA8: call_function_method 0x6C2180 struct 1@ num_params 1 pop 0 0{0,1,4,5,6} 2@
Code
0 - левое переднее крыло авто
1 - правое переднее крыло авто
4 - лобовое стекло
5 - передний бампер
6 - задний бампер

Значение 2@
Code
0 - компонент целый       
1, 2 - компонент повреждён       
3 - компонент отсутствует

float 0x8D32A0[] Что-то типа damage mp для компонентов (массив float).
0x6A7650 => CAutomobile::VehicleDamage
CAutomobile+0xF8 => компонент, который надо повредить???
Хотя это же физикал... Тут наверное какие-то специальные ID...
Как никак,
Code
1 - капот?(левая передняя фара?)
2 - багажник?
3 - передний бампер?
4 - задний бампер?
5 - левая передняя дверь
6 - правая передняя дверь
7 - левая задняя дверь
8 - правая задняя дверь
9 - левое крыло?
10 - правое крыло?
17 - правая передняя фара?


Добавлено (04.02.2012, 04:12)
---------------------------------------------
Из исходников MTA
CVehicle+0x489 byte windowsOpenFlags
Увы, там постоянно 0.


Сообщение отредактировал DK22Pac - Суббота, 04.02.2012, 15:51
 
kenkingДата: Четверг, 09.02.2012, 13:21 | Сообщение # 120
Группа: Проверенные
Сообщений: 22
Статус: Offline
Проверка: присутствует ли в иерархии авто тот или иной компонент
Code

0A97: 1@ = car 0@ struct
0AA8: call_function_method 0x6A2250 struct 1@ num_params 1 pop 0 1 {1...25} 2@

Значение 2@  
1 - компонент есть
0 - компонент отсутствует

Компонент____Обозначение_____Пояснение
___________в иерархии модели____________    
1__________chassis______________кузов (корпус авто)
2__________wheel_rf_dummy______правое переднее колесо авто
3__________wheel_rm_dummy_____правое среднее колесо авто
4__________wheel_rb_dummy_____правое заднее колесо авто
5__________wheel_lf_dummy______левое переднее колесо авто
6__________wheel_lm_dummy_____левое среднее колесо авто
7__________wheel_lb_dummy_____левое заднее колесо авто
8__________door_rf_dummy______правая передняя дверь авто
9__________door_rr_dummy______правая задняя дверь авто
10_________door_lf_dummy______левая передняя дверь авто
11_________door_lr_dummy______левая задняя дверь авто
12_________bump_front_dummy___передний бампер
13_________bump_rear_dummy___задний бампер
14_________wing_rf_dummy______правое переднее крыло авто
15_________wing_lf_dummy______левое переднее крыло авто
16_________bonnet_dummy______капот
17_________boot_dummy________багажник
18_________windscreen_dummy___лобовое стекло
19_________exhaust_ok_________глушитель
20_________misc_a____________спецкомпонент
21_________misc_b____________спецкомпонент
22_________misc_c____________спецкомпонент
23_________misc_d____________спецкомпонент
24_________misc_e____________спецкомпонент
25_________??????____________???????????????
 
Форум » Игры серии ГТА » Работа с памятью, exe » Работа с компонентами моделей
Поиск: