Рейтинг - 0.0 (0)

Привет всем! Сегодня мы рассмотрим структуру автомобиля а так же примеры с игровой памятью.

Прежде всего, создадим автомобиль на гроув, с которым мы будем работать:

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

Обращаю Ваше внимание, что нужно умножать значение адреса, а не сам адрес. Если значение адреса дробное, то и умножать, делить, сложить или вычитать нужно дробное число, то есть вот такой вариант будет не верным:

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

Неплохо, правда? :) В следующем уроке мы рассмотрим структуру объекта.


Теги: структура автомобиля, динамические адреса памяти, адреса памяти

SanKing   (26.08.12 10:50)
Твои уроки по скриптингу - самые лучшие!

KiLLeR96   (26.08.12 11:52)
Так только колеса можно?

wmysterio   (26.08.12 15:51)
Я взял для примера, всё что мне удалось разузнать находится в "базе данных"

HYPERMUV   (26.08.12 15:37)
спасибо

Cool_T   (31.03.14 11:02)
Молодец!
Вход на сайт

Поиск
Категории раздела
Мини-чат
Пожалуйста, все вопросы по скриптингу задавать на форуме!
Наш опрос
Что Вы думаете о "Проекте 'Неизвестный': Чёрный список"?
Всего ответов: 0
Активность на сайте
Пожертвования
Кошельки WebMoney:
U859420971000
R407741810602
Z331072372430
E314272616890
Друзья сайта
Полезные ресурсы
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Сегодня нас посетили:
wmysterio, DK22Pac, eglive
Рекомендую
Реклама