00075. Динамические адреса памяти. ( Часть 2 - структура автомобиля )
Динамические адреса памяти. ( Часть 2 - структура автомобиля )|Привет всем! Сегодня мы рассмотрим структуру автомобиля а так же примеры с игровой памятью.|wmysterio|wmysterio||||Прежде всего, создадим автомобиль на гроув, с которым мы будем работать:
var
0@: car
#ADMIRAL: model
end
:CARSTRUCT
thread 'CARSTRUCT'
wait 0
#ADMIRAL.Load
038B: load_requested_models
:CARSTRUCT_1
wait 0
if
#ADMIRAL.Available
jf @CARSTRUCT_1
[email protected](#ADMIRAL, 2493.6321, -1670.4906, 12.3359)
#ADMIRAL.Destroy
0A93: end_custom_thread
После этого, узнаём адрес его структуры:
0A97: 1@ = car 0@ struct
Здесь:
1@ - переменная, в которую будет занесен адрес
0@ - хендл автомобиля
Дальше открываем базу данных и ищем нужное смещение. Ну вот, я выбрал размер колёс. После этого прибавляем к переменной 1@ смещение, указанное в БД.
0A8E: 2@ = 1@ + 0x458 // размер колёс
Как видите размер будет 4 байта ( float ) и значения будут дробные. Давайте напишем скрипт, что бы при нажатии кнопки 1`, колёса становились в трое больше.
{$CLEO}
0000:
var
0@: car
#ADMIRAL: model
end
:CARSTRUCT
thread 'CARSTRUCT'
wait 0
#ADMIRAL.Load
038B: load_requested_models
:CARSTRUCT_1
wait 0
if
#ADMIRAL.Available
jf @CARSTRUCT_1
[email protected](#ADMIRAL, 2493.6321, -1670.4906, 12.3359)
#ADMIRAL.Destroy
:CARSTRUCT_2
wait 0
if
0AB0: key_pressed 49 // 1
jf @CARSTRUCT_2
0A97: 1@ = car 0@ struct
0A8E: 2@ = 1@ + 0x458
0A8D: 3@ = read_memory 2@ size 4 virtual_protect 0 // получаем текущий размер колёс
3@ *= 3.0 // умножаем значение по этому адресу на 3.0
0A8C: write_memory 2@ size 4 value 3@ virtual_protect 0 // и запишем в этот же адрес значение, который мы умножили
0A93: end_custom_thread
Обращаю Ваше внимание, что нужно умножать значение адреса, а не сам адрес. Если значение адреса дробное, то и умножать, делить, сложить или вычитать нужно дробное число, то есть вот такой вариант будет не верным:

Теперь запускаем игру и проверяем правильность нашего скрипта:

Неплохо, правда? :) В следующем уроке мы рассмотрим структуру о бъекта.|1247|1|0|91926612
png
500300
400240``\|59237279
png446
56400
50``||dinamicheskie_adresa_pamjati_chast_2_struktura_avtomobilja|1499750565