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

Всем привет! Как вы уже догадались по названию урока речь пойдёт о структуре объекта.

Эта структура не очень большая, в отличии от актёра и автомобиля. Разнообразности тоже немного. Сегодня мы сделаем простой пример - сделаем "эффект бьющегося сердца". Для начала, создадим объект. Серце имеет ID 1240, поэтому на всякий случай загрузим модель и создадим объект на Гроув стрит:

{$CLEO}
0000:

:objStruct
thread 'objStruct'
wait 0
model.Load(1240)
038B: load_requested_models

:objStruct1
wait 0
if
model.Available(1240)
jf @objStruct1
0@ = object.Create(1240, 2493.6321, -1670.4906, 13.3359)

0A93: end_custom_thread

Дальше получаем адрес структуры объекта опкодом:

0A98: 1@ = object 0@ struct
Здесь:
1@ - переменная, в которой будет хранится адрес
0@ - сам объект

Сморим в базе данных Структуру объекта и узнаём адрес, отвечающий за размер объекта:

0A8E: 2@ = 1@ + 0x15C

Дальше нам понадобится 2 цикла FOR, что бы увеличивать и уменьшать объект:

for 3@ = 1.5 to 5.0 step 0.5
 0A8C: write_memory 2@ size 4 value 3@ virtual_protect 0
 wait 50
end

for 3@ = 4.5 downto 1.0 step 0.5
 0A8C: write_memory 2@ size 4 value 3@ virtual_protect 0
 wait 50
end

Цикл будет задавать размер объекту. Каждые 50 миллисекунд размер объекта будет увеличиваться на 0.5 в первом цикле и увеличиваться на 0.5 во втором цикле. Чтобы создать "эффект бьющегося сердца" нам понадобится ещё один цикл, который будет выполнятся, пока объект существует. Естественно for-ы будут вложены в этот цикл. Общий скрипт таков:

{$CLEO}
0000:

:objStruct
thread 'objStruct'
wait 0
model.Load(1240)
038B: load_requested_models

:objStruct1
wait 0
if
model.Available(1240)
jf @objStruct1
0@ = object.Create(1240, 2493.6321, -1670.4906, 13.3359)
0A98: 1@ = object 0@ struct
0A8E: 2@ = 1@ + 0x15C

while 03CA: object 0@ exists

 for 3@ = 1.5 to 5.0 step 0.5
 0A8C: write_memory 2@ size 4 value 3@ virtual_protect 0
 wait 50
 end
 
 for 3@ = 4.5 downto 1.0 step 0.5
 0A8C: write_memory 2@ size 4 value 3@ virtual_protect 0
 wait 50
 end

wait 0
end

0A93: end_custom_thread

Запускаем игру, и видим, что на Гроув сердце и в правду бьющееся:

Увы, анимацию я не смог вклеить, сложил две картинки, но вы можете скомпилировать этот код и посмотреть на результат.


Теги: структура объекта, динамические адреса памяти, адреса памяти
Вход на сайт

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

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

Сегодня нас посетили:
Реклама