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

Всем привет! В этом уроке мы рассмотрим детальнее ещё несколько типов транспорта - лодки, самолёты в вертолёты. Как-то совсем забыл о них, поэтому пришло их время :)

Начнём с лодок. Существует всего три одкода для работы с ними:

02D3: boat 0@ sail_to 3007.8489 -1994.3662 1.5716 // Заставляет лодку плыть в указанную точку
02DB: set_boat 0@ speed_to 10.0 // устанавливать скорость, с которой она будет двигаться
0323: enable_boat 0@ anchor 1 // Включает или отключает у лодки якорь ( судя по описанию ). Правда какой-то явного изменения в поведении лодки не наблюдалось.

Наведу простейший пример:

{$CLEO}
Model.Load(#REEFER)
038B: load_requested_models
0@ = Car.Create(#REEFER, 2937.3284, -1895.0162, 1.178)
Car.Angle(0@) = 260.6488
Model.Destroy(#REEFER)
02DB: set_boat 0@ speed_to 10.0
02D3: boat 0@ sail_to 3007.8489 -1994.3662 1.5716
0A93: end_custom_thread

Результат:

Интересно то, что лодка будет бороздить возле этой точки, так как попасть именно в неё очень малый шанс.

Для самолётов уже другое дело. Рассмотрим опкоды. Чтобы заставить самолёт лететь, достаточно использовать:

04D2: set_plane 0@ fly_autopilot_around_point 2279.0786 -1652.6747 48.4595 altitude_between 30.0 and 30.0
Здесь:
0@ - хэндл самолёта
2279.0786 -1652.6747 48.4595 - точка, куда должен добраться транспорт
30.0 - минимальная и максимальная высота над уровнем моря. Как правило эти параметры ставят одинаковыми, если поверхность ровная маршрута и бед препятствий.
070F: plane 0@ fly_direction 180.0 altitude_between 200.0 and 200.0

Устанавливает направление самолёту ( должен уже лететь ).

Здесь:
0@ - хэндл самолёта
180.0 - угол направления
200.0 - минимальная и максимальная высота над уровнем моря. Как правило эти параметры ставят одинаковыми
0710: plane 0@ follow_actor $PLAYER_ACTOR follow_car -1 radius 70.0

Заставляет самолёт следовать за актёром или транспортом.

Здесь:
0@ - хэндл самолёта
$PLAYER_ACTOR - объект следования ( актёр ).
-1 - объект следования ( транспорт ).
70.0 - радиус. Будет петлять около ceбъекта.
08E6: set_plane 0@ landing_gear 1

Открыть ( 1 ) или закрыть ( 0 ) шасси в самолёта 0@.

Среди опкодов, выделяются и конкретно под Гидру ( #HYDRA ). Их всего три:

0745: set_hydra 0@ thrust_to_horizontal
070E: hydra 0@ attack_player_car $PLAYER_CHAR radius 10.0
08A2: set_hydra 0@ attack_with_rockets_car_of_player $PLAYER_CHAR radius 30.0

Первый опкод поворачивает эту фиговину ( не знаю как правильно это называется ) в горизонтальное положение:

Второй опкод заставляет Гидру атаковать игрока находясь в радиусе 10.0. Третий опкод действует также, как и второй, только Гидра атакует, используя ракеты. Пример скрипта:

{$CLEO}
Model.Load(#HYDRA)
038B: load_requested_models
0@ = Car.Create(#HYDRA, 945.858, 253.3596, 29.1832)
Car.Angle(0@) = 222.5565
Model.Destroy(#HYDRA)
08A2: set_hydra 0@ attack_with_rockets_car_of_player $PLAYER_CHAR radius 30.0
0A93: end_custom_thread

Дальше на очереди у нас вертолёты. С ними работать проще. Перечислю основные опкоды для работы с ними.

04A2: set_heli 0@ fly_to -2244.48 129.14 34.56 altitude_between 0.0 and 0.0
0743: heli 0@ fly_to -2244.48 129.14 34.56 altitude 0.0 0.0

Опкоды заставляют вертолёт лететь в указанную точку на указанной высоте.

04D0: force_heli 0@ looking_angle_to 270.0
04D1: reset_heli 0@ looking_angle
0564: heli 0@ simulate_crash_landing

Первый опкод закрепляет угол кабины, старается смотреть нос самолёта в нужный угол. Второй опкод возвращает угол в управление пилота. Третий заставляет вертолёт упасть, симулировать падение. В оригинальных миссиях наблюдался такой случай когда вертолёт с СЖ сбили и он падал в океан.

Следующие опкоды заставляют вертолёт следовать за Актёрами ( или атаковать его ), транспортом и игроком:

0724: heli 0@ follow_and_attack_player $PLAYER_CHAR radius 50.0
0726: heli 0@ follow_actor $PLAYER_ACTOR follow_car -1 radius 20.0
0727: set_heli 0@ behavior_to_police_heli_and_follow_actor $PLAYER_ACTOR follow_car -1 radius 20.0
0780: heli 0@ hover_above actor $PLAYER_ACTOR car -1 altitude 15.0 170.0

Следующая пачка опкодов связана с двигателем:

07BB: set_heli 0@ horizontal_thrust_power 10
0825: set_helicopter 0@ instant_rotor_start
0A1C: set_helicopter 0@ play_engine_sounds 1

Первый заставляет отлетать вертолёт от земли с силой 10. Второй запускает двигатель. Третий включает или выключает звук мотора. Пример:

{$CLEO}
Model.Load(#MAVERICK)
Model.Load(#WMYDRUG)
038B: load_requested_models
0@ = Car.Create(#MAVERICK, 945.858, 253.3596, 29.1832)
Car.Angle(0@) = 222.5565
Model.Destroy(#MAVERICK)
Model.Destroy(#WMYDRUG)
0129: 1@ = create_actor_pedtype 4 model #WMYDRUG in_car 0@ driverseat
0825: set_helicopter 0@ instant_rotor_start
0A1C: set_helicopter 0@ play_engine_sounds 1
0726: heli 0@ follow_actor $PLAYER_ACTOR follow_car -1 radius 20.0
0A93: end_custom_thread

Результат:

К летающим средствам, которые имеют оружие ( пулемёт или ракеты ), можно применить следующие опкоды, которые заставляют использовать их:

084E: flying_vehicle 149@ use_primary_gun 1 
0841: flying_vehicle 114@ use_secondary_gun 1

Также есть опкоды, связанные с магнитами, но о них мы поговорим в следующих уроках, где будем писать новую полноценную миссию. На этом всё, с вами был wmysterio. Пока!


Теги: Boat, plane, лодка, вертолёт, Самолёт, Heli

etwnp   (09.07.15 19:17)
А как можно заставить самолет с пулеметом следовать и атаковать другой транспорт или актера с помощью пулемета?

0
wmysterio   (09.07.15 20:40)
Код
0726: heli 0@ follow_actor -1 follow_car $CAR radius 20.0
084E: flying_vehicle 149@ use_primary_gun 1 // это или
0841: flying_vehicle 114@ use_secondary_gun 1 //это заставляет стрелять  

etwnp   (09.07.15 21:19)
Не работает, я пробовал.
Вход на сайт

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

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

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