Работа с компонентами моделей
|
|
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 Да, есть вероятность что статус компонентов хранится тут.
Сообщение отредактировал 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?
Сообщение отредактировал 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_________??????____________???????????????
|
|
| |