Работа с компонентами моделей - Форум
Вторник, 06.12.2016, 11:14
Качественные скрипты, моды и дополнения для GTA без регистрации
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 111231011»
Форум » Игры серии ГТА » Работа с памятью, exe » Работа с компонентами моделей
Работа с компонентами моделей
Den_spbДата: Вторник, 18.10.2011, 02:02 | Сообщение # 1
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: Offline
Сообщения перенесены в отдельную тему.
 
izerliДата: Вторник, 18.10.2011, 02:02 | Сообщение # 2
Группа: Проверенные
Сообщений: 90
Статус: Offline
Денис, снова есть вопросик..
Подскажи, как можно получить необходимое смещение для работы с новым добавленным компонентом в авто?
 
Den_spbДата: Вторник, 18.10.2011, 02:02 | Сообщение # 3
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: Offline
Сначала надо получить адрес одного из стандартных компонентов, который хранится в структуре транспорта по известному смещению (для каждого компонента - своё смещение).
Затем, пользуясь смещениями в структуре компонентов +0x4 (указатель на родителя компонента), +0x98 (указатель на первого ребёнка данного компонента) и +0x9C (указатель на следующий компонент с таким же рангом), постепенно добираемся до нового добавленного компонента.
Данная тема подробно рассмотрена здесь: http://sannybuilder.com/forums/viewtopic.php?id=304
В частности, пост с таблицей смещений стандартных компонентов: http://sannybuilder.com/forums/viewtopic.php?pid=14815#p14815 (таблица 1)
 
izerliДата: Вторник, 18.10.2011, 02:02 | Сообщение # 4
Группа: Проверенные
Сообщений: 90
Статус: Offline
Den_spb,
большое спасибо, буду экспериментировать
 
DK22PacДата: Вторник, 18.10.2011, 02:03 | Сообщение # 5
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
По-моему, дамми ещё можно найти по его имени (так делается в коде вращения ствола минигана).
 
Den_spbДата: Вторник, 18.10.2011, 02:03 | Сообщение # 6
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: Offline
Имя компонента записано в его структуре по смещению +172 (size 8) - в теме на SB эта информация тоже есть.
 
izerliДата: Вторник, 18.10.2011, 02:03 | Сообщение # 7
Группа: Проверенные
Сообщений: 90
Статус: Offline
DK22Pac, Den_spb, спасибо за помощь!
 
DK22PacДата: Вторник, 18.10.2011, 02:03 | Сообщение # 8
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
0x4C5400 _findObjectByNodeName (RpClump, name*)
Результат будет записан в eax.
Теперь я понял, как стекло авто делается прозрачным tongue
Code
push    0
push    esi
call    _atomicSetAlphaForAllMaterials


Сообщение отредактировал DK22Pac - Воскресенье, 16.10.2011, 01:12
 
Den_spbДата: Вторник, 18.10.2011, 02:03 | Сообщение # 9
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: Offline
Ну и как это применить на практике?
 
DK22PacДата: Вторник, 18.10.2011, 02:03 | Сообщение # 10
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Похоже, что никак... Точнее, я пока что не знаю как.
В конечном итоге, я получаю адресс структуры RwFrame, и могу делать с ней всё, что захочу (например, сделать фрейм прозрачным). Но такие изменения действуют на все модели, которые используют этот фрейм (т.е., когда я "убрал" дверь у лимузина, то все лимузины ездили без дверей)...
 
Den_spbДата: Вторник, 18.10.2011, 02:04 | Сообщение # 11
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: Offline
Так надо получить адрес RwFrame на нужном автомобиле через его иерархию (тема "Работа с компонентами машины"). Тогда изменения в этой структуре не будут распространяться на аналогичные компоненты, установленные на других автомобилях.
 
DK22PacДата: Вторник, 18.10.2011, 02:04 | Сообщение # 12
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Адресс фрейма я нахожу так:
CAutomobile+0x18 -> RpClump -> RpAtomic -> RwFrame
 
Den_spbДата: Вторник, 18.10.2011, 02:04 | Сообщение # 13
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: Offline
Попробуй способ, который предлагаю я.
 
DK22PacДата: Вторник, 18.10.2011, 02:04 | Сообщение # 14
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Т.е., искать фрейм в структуре авто? Сколько места выделено для этих фреймов?
 
Den_spbДата: Вторник, 18.10.2011, 02:04 | Сообщение # 15
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: Offline
Quote (DK22Pac)
Т.е., искать фрейм в структуре авто?
Да. Посмотреть иерархию можно не только с помощью 3ds max, но и даже через ggmm (gta garage mod manager).

Quote (DK22Pac)
Сколько места выделено для этих фреймов?
Размер выделяемой памяти зависит от количества компонентов иерархии. В иерархию можно добавлять свои компоненты, и к каждому из них в процессе игры можно получить доступ. Возможно, есть какой-то лимит, но я его пока не наблюдал.
 
Форум » Игры серии ГТА » Работа с памятью, exe » Работа с компонентами моделей
Страница 1 из 111231011»
Поиск: