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
0@.Create(#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
0@.Create(#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|91926612png500300400240``\|59237279png4465640050``||dinamicheskie_adresa_pamjati_chast_2_struktura_avtomobilja|1499750565

Last updated