Пятница, 29.03.2024, 02:26
Качественные скрипты, моды и дополнения для GTA без регистрации
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Форум » Игры серии ГТА » Работа с памятью, exe » Работа с памятью игры, exe
Работа с памятью игры, exe
izerliДата: Пятница, 09.12.2011, 19:06 | Сообщение # 271
Группа: Проверенные
Сообщений: 90
Статус: Offline
сейчас попробую разобраться с процедурой.
Quote (Den_spb)
Попробуй проверить смещения 0x49C [float], 0x964 [float].

если это смещения в структуре авто, то не то(

Добавлено (09.12.2011, 19:06)
---------------------------------------------
нашел смещение, по которому записываются обороты двигателя

Code

0x280 [word]
 
Den_spbДата: Пятница, 09.12.2011, 19:34 | Сообщение # 272
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Quote (izerli)
нашел смещение, по которому записываются обороты двигателя

up
 
DK22PacДата: Пятница, 09.12.2011, 21:26 | Сообщение # 273
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Quote (Den_spb)
Какой-то массив. Судя по названию, имеет отношение к надписям, выводимым на экран.

Структуры TextDrawers - опкодами туда записываются параметры текста для вывода на экран, потом какая-то процедура пробегается по этим структурам и рендерит.
 
Den_spbДата: Суббота, 31.12.2011, 01:00 | Сообщение # 274
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Испытал плагин, повышающий лимит корон до 1000 штук - работает. Из большого количества корон можно сделать экран для отображения картинок, правда при этом подтормаживает игра. Иллюстрация такого эксперимента и исходник кода прикреплены к сообщению.
Прикрепления: 7796852.jpg (88.1 Kb) · medved.txt (9.4 Kb)
 
DK22PacДата: Суббота, 31.12.2011, 03:39 | Сообщение # 275
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Хм, это просто дамп bmp?
Вот бы конвертироать данные из bmp в RwTexture...
Но там вроде бы не всё так просто, по-моему, надо отдельно создавать и палитру, и индексы пикселей (в структуре растра). + Кучу флагов выставить.
Сложно, зато какой эффект... biggrin
 
АксиомаДата: Суббота, 31.12.2011, 10:31 | Сообщение # 276
Группа: Заблокированные
Сообщений: 81
Статус: Offline
DK22Pac, У меня есть палитра хороших цветов не скрипт а bmp файл
 
Den_spbДата: Суббота, 31.12.2011, 13:27 | Сообщение # 277
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Quote (DK22Pac)
Хм, это просто дамп bmp?
Да.
С коронами - это просто эксперимент, для создания экранов конечно больше подошла бы функция Draw_handman_texture.
 
DK22PacДата: Суббота, 31.12.2011, 23:28 | Сообщение # 278
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
Отключение стандартных стоп-сигналов:
Code
{$CLEO}
0A8C: 0x6E1996 4 0x858624 1 // change fZero to fOne
0A93:


Добавлено (31.12.2011, 15:49)
---------------------------------------------
loc_6E17B5: ... 6E18DA
Вот здесь игра считает, надо ли создавать короны, в зависимости от того, как развернута камера относительно автомобиля. Всё заканчивается проверкой
Code
fcomp   ds:fZero        ; 0.0f


Добавлено (31.12.2011, 23:28)
---------------------------------------------
Сможешь посмотреть что за алгоритм?
Понятно, что не сегодня. happy


Сообщение отредактировал DK22Pac - Суббота, 31.12.2011, 23:28
 
Den_spbДата: Воскресенье, 01.01.2012, 00:17 | Сообщение # 279
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Посмотрю.
 
VitalДата: Понедельник, 02.01.2012, 18:51 | Сообщение # 280
Группа: Проверенные
Сообщений: 206
Статус: Offline
Всем привет. Можете подсказать кое-что? Как получить хендл машины, на которую идет наведение тепловой ракетой игрока? Я пробовал работать с этими адресами памяти, но не получалось.
Вот адрес, с которым я работал:
0xC891A8 - Rocket pool start
+8 = [dword] Pointer to target vehicle (when heatseeking), 0 otherwise
Я перевел на русский, выходит, что так надо находить указатель на цель (машину, транспорт). Но вылетает... Что делать и как работать с этим указателем, который ищется в этом адресе.


SCRIPTER
 
Den_spbДата: Понедельник, 02.01.2012, 19:45 | Сообщение # 281
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Code
2@ = -1
for 0@ = 0 to 31 // перебираем массив снарядов (в массиве 32 элемента)
     0A90: 1@ = 0@ * 36 // умножаем номер снаряда на размер структуры снаряда
     1@ += 0xC891A8 // прибавляем адрес начала массива - получаем адрес начала структуры данного снаряда
     1@ += 8 // прибавляем смещение в структуре снаряда
     0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
     if
         1@ > 0 // если указатель на структуру машины больше 0
     then
         0AEB: 2@ = car_struct 1@ handle // то переводим указатель в хэндл
         break // и выходим из цикла
     end
end
if
     2@ <> -1
then
     // действия над машиной
end
 
VitalДата: Понедельник, 02.01.2012, 22:53 | Сообщение # 282
Группа: Проверенные
Сообщений: 206
Статус: Offline
Den_spb, спасибо большое! Попробую. Если все выйдет нормально, получится отличный скрипт. Может, я и сюда его выложу.

SCRIPTER
 
izerliДата: Суббота, 07.01.2012, 20:36 | Сообщение # 283
Группа: Проверенные
Сообщений: 90
Статус: Offline
Денис, а как можно узнать угол поворота стандартного компонента (например двери)? Попробовал посмотреть в базе опкод 08A6, но к сожалению мне пока не понятно...


Сообщение отредактировал izerli - Суббота, 07.01.2012, 20:37
 
Den_spbДата: Суббота, 07.01.2012, 22:12 | Сообщение # 284
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Иван, надо вычислить угол, на который повёрнута одна из локальных осей компонента (какую ось выбрать - зависит от направления вращения).
В случае с дверью можно взять вектор X (Right) или Y (Top). Удобнее взять Y:
Code
0A97: 1@ = car 0@ struct
1@ += 0x668    
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0 // получили структуру компонента
if
       1@ <> 0
then
       1@ += 0x10 // получили адрес локальной матрицы компонента
       0A8E: 2@ = 1@ + 0x10 // TopX
       0A8E: 3@ = 1@ + 0x14 // TopY
       0A8D: 2@ = read_memory 2@ size 4 virtual_protect 0
       0A8D: 3@ = read_memory 3@ size 4 virtual_protect 0
       0604: get_angle_between_vectors_{a,b} 2@ 3@ and_{0,1}_store_to 4@ // получили значение угла
       ....
end
 
izerliДата: Суббота, 07.01.2012, 22:20 | Сообщение # 285
Группа: Проверенные
Сообщений: 90
Статус: Offline
Денис, спасибо! Как то и не сообразил что можно через вектора.
 
Форум » Игры серии ГТА » Работа с памятью, exe » Работа с памятью игры, exe
Поиск: