00046. Плавающие и лётные средства передвижения

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

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. Пока!|1816|1|0|80715311png800480400240``\|39124344png800480400240\|77045220`png`800`480`400`240||plavajushhie_i_ljotnye_sredstva_peredvizhenija|1504599897

Last updated