Плавающие и лётные средства передвижения
Всем привет! В этом уроке мы рассмотрим детальнее ещё несколько типов транспорта - лодки, самолёты в вертолёты. Как-то совсем забыл о них, поэтому пришло их время :)
Начнём с лодок. Существует всего три одкода для работы с ними:
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. Пока!
Теги:



084E: flying_vehicle 149@ use_primary_gun 1 // это или
0841: flying_vehicle 114@ use_secondary_gun 1 //это заставляет стрелять
U859420971000
R407741810602
Z331072372430
E314272616890