Работа с компонентами моделей - Страница 10 - Форум
Суббота, 10.12.2016, 13:47
Качественные скрипты, моды и дополнения для GTA без регистрации
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 10 из 11«12891011»
Форум » Игры серии ГТА » Работа с памятью, exe » Работа с компонентами моделей
Работа с компонентами моделей
Den_spbДата: Вторник, 06.03.2012, 16:02 | Сообщение # 136
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: Offline
Не оговорился? На всех моделях или на всех машинах одной модели?
 
DK22PacДата: Вторник, 06.03.2012, 16:09 | Сообщение # 137
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Да, на всех авто с этой моделью. Кламп беру из структуры авто.
 
Den_spbДата: Вторник, 06.03.2012, 16:10 | Сообщение # 138
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: Offline
Отдельно для каждой машины настройки материалов видимо не хранятся. В этом нет смысла - только впустую тратятся ресурсы.
 
DK22PacДата: Вторник, 06.03.2012, 16:26 | Сообщение # 139
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Даже атомики общие.
Видимо, параметры атомика изменяются перед самим рендером атомиков, а потом восстанавливаются.
 
kenkingДата: Пятница, 16.03.2012, 11:25 | Сообщение # 140
Группа: Проверенные
Сообщений: 22
Статус: Offline
вращение компонента относительно центра модели
Code

.....
0A97: 1@ = car 0@ struct   
1@ += 0x670 // левая передняя дверь                             
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0   
if  1@ > 0   
    then
          1@ += 16
          0AA6: call_method 0x59B1E0 struct 1@ num_params 1 pop 0 0.05 // sub_59B1E0 вращение компонента относительно центра модели по оси X
          //0AA6: call_method 0x59B2C0 struct 1@ num_params 1 pop 0 0.05 // sub_59B2C0 вращение компонента относительно центра модели по оси Y
          //0AA6: call_method 0x59B390 struct 1@ num_params 1 pop 0 0.05 // sub_59B390 вращение компонента относительно центра модели по оси Z
         //0AA6: call_method 0x59B460 struct 1@ num_params 3 pop 0 0.05 0.05 0.05 // sub_59B460 вращение компонента относительно центра модели по трём осям
    end
.....    


масштабирование компонента с коэффициентами для каждой из осей

Code

{$CLEO}
model.Load(400)
038B: load_requested_models  
Car.Create(29@ 400 -2029.1, 173.0, 28.7)
0175: set_car 29@ Z_angle_to 270.0
Car.Create(30@ 400 -2029.1, 175.0, 28.7)
0175: set_car 30@ Z_angle_to 270.0
Car.Create(31@ 400 -2029.1, 180.0, 28.7)
0175: set_car 31@ Z_angle_to 270.0
model.Destroy(400)      
//---масштабирование по оси X (увеличение) компонентов первого авто
28@ = 0x64C  
27@ = 2.0 // коэффициент масштабирования
for 0@ = 1 to 24  
    0A97: 1@ = car 31@ struct
    005A: 1@ += 28@
    28@ += 0x4
    0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
    if
      1@ > 0
    then
        1@ += 64
        0A8D: 2@ = read_memory 1@ size 4 virtual_protect 0 // сохраняем значения эл-тов +48, +52, +56 в памяти т.к. метод масштабирования матрицы их обнуляет
        006B: 2@ *= 27@  // (float)
        1@ += 4
        0A8D: 3@ = read_memory 1@ size 4 virtual_protect 0
        1@ += 4
        0A8D: 4@ = read_memory 1@ size 4 virtual_protect 0
        1@ -= 56
        0AA6: call_method 0x59AF00 struct 1@ num_params 3 pop 0 1.0 1.0 27@ // sub_59AF00 масштабирование(Z Y X)
        1@ += 48
        0A8C: write_memory 1@ size 4 value 2@ virtual_protect 0 // восстанавливаем значение X-position
        1@ += 4
        0A8C: write_memory 1@ size 4 value 3@ virtual_protect 0 // восстанавливаем значение Y-position       
        1@ += 4                    
        0A8C: write_memory 1@ size 4 value 4@ virtual_protect 0 // восстанавливаем значение Z-position
    end
end
//---масштабирование по оси X (уменьшение) компонентов третьего авто
28@ = 0x64C  
27@ = 0.5 // коэффициент масштабирования
for 0@ = 1 to 24  
    0A97: 1@ = car 29@ struct
    005A: 1@ += 28@
    28@ += 0x4
    0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
    if
      1@ > 0
    then
        1@ += 64
        0A8D: 2@ = read_memory 1@ size 4 virtual_protect 0 // сохраняем значения эл-тов +48, +52, +56 в памяти т.к. метод масштабирования матрицы их обнуляет
        006B: 2@ *= 27@  // (float)
        1@ += 4
        0A8D: 3@ = read_memory 1@ size 4 virtual_protect 0
        1@ += 4
        0A8D: 4@ = read_memory 1@ size 4 virtual_protect 0
        1@ -= 56
        0AA6: call_method 0x59AF00 struct 1@ num_params 3 pop 0 1.0 1.0 27@ // sub_59AF00 масштабирование(Z Y X)
        1@ += 48
        0A8C: write_memory 1@ size 4 value 2@ virtual_protect 0 // восстанавливаем значение X-position
        1@ += 4
        0A8C: write_memory 1@ size 4 value 3@ virtual_protect 0 // восстанавливаем значение Y-position       
        1@ += 4                    
        0A8C: write_memory 1@ size 4 value 4@ virtual_protect 0 // восстанавливаем значение Z-position
    end
end
0A93:


Сообщение отредактировал kenking - Пятница, 16.03.2012, 11:26
 
DK22PacДата: Суббота, 24.03.2012, 14:30 | Сообщение # 141
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Компоненты CBike
http://gtamodding.ru/wiki/Адреса_Памяти_ (SA)#CBike_.28.D0.9C.D0.BE.D1.82.D0.BE.D1.86.D0.B8.D0.BA.D0.BB.D1.8B_.D0.B8_.D0.B2.D0.B5.D0.BB.D0.BE.D1.81.D0.B8.D0.BF.D0.B5.D 0.B4.D1.8B.29
 
Den_spbДата: Суббота, 24.03.2012, 18:37 | Сообщение # 142
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: Offline
Компоненты летательных средств тоже можно добавить.
 
ILYALIONДата: Воскресенье, 03.06.2012, 14:11 | Сообщение # 143
Группа: Проверенные
Сообщений: 325
Статус: Offline
Можно ли удалить дамми на транспорте? Пробовал следующим способом:
Code

0A97: 0@ = car 0@ struct  
  0@ += 96// бензобак                          
  0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0     
  if    
       0@ > 0     
  then   
       0AA5: call_function 0x7F05A0 num_params 1 pop 1 0@ //  _rwFrameDestroy  
  end

Не работает.
 
Den_spbДата: Воскресенье, 03.06.2012, 16:56 | Сообщение # 144
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: Offline
Смещение 96 это явно не "бензобак" т.к. оно относится не к CVehicle, a к CPhysical ("физический объект" - общий родитель CVehicle, CPed и CObject), а у педов и объектов бензобака нет. Любая дочерняя структура образуется из родительской (первая часть смещений), к которой добавляются дополнительные смещения.
 
ILYALIONДата: Воскресенье, 03.06.2012, 20:57 | Сообщение # 145
Группа: Проверенные
Сообщений: 325
Статус: Offline
Я это смещение взял отсюда, таблица 2.
 
Den_spbДата: Понедельник, 04.06.2012, 00:01 | Сообщение # 146
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: Offline
Это смещения не CVehicle, а другой структуры, адрес которой рассчитывается так:
Code
0@ *= 4 // в 0@ должен быть записан ИД-номер модели транспорта
0@ += 0xA9B0C8
0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0 //CModel
0@ += 0x5C                    
0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0
Данная структура является общей для всех транспортных средств данной модели.
А смещения для CVehicle приведены в таблице 1 (в том же сообщении).
 
ILYALIONДата: Понедельник, 04.06.2012, 06:30 | Сообщение # 147
Группа: Проверенные
Сообщений: 325
Статус: Offline
Но в таблице 1 нет дамми бензобака.
 
Den_spbДата: Понедельник, 04.06.2012, 12:29 | Сообщение # 148
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: Offline
Можно сначала получить доступ к одному из "табличных" компонентов, а потом, используя смещения 0x98 и 0x9C, "добраться" от этого компонента к бензобаку - здесь и в соответствующей теме на SB про это рассказано. Также можно использовать функцию, вычисляющую адрес компонента по его имени.
 
ILYALIONДата: Понедельник, 04.06.2012, 13:38 | Сообщение # 149
Группа: Проверенные
Сообщений: 325
Статус: Offline
Quote (Den_spb)
Можно сначала получить доступ к одному из "табличных" компонентов, а потом, используя смещения 0x98 и 0x9C, "добраться" от этого компонента к бензобаку
Ну я хочу написать универсальный скрипт, дял всех машин.
Quote (Den_spb)
Также можно использовать функцию, вычисляющую адрес компонента по его имени.
А можно поподробнее про эту функцию?
 
Den_spbДата: Понедельник, 04.06.2012, 15:40 | Сообщение # 150
Создатель сайта
Группа: Администраторы
Сообщений: 1536
Статус: Offline
Quote (ILYALION)
А можно поподробнее про эту функцию?

Я не помню её адрес. Дима (DK22Pac) вроде знает.
 
Форум » Игры серии ГТА » Работа с памятью, exe » Работа с компонентами моделей
Страница 10 из 11«12891011»
Поиск: