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

Начнём с лодок. Существует всего три одкода для работы с ними:
  • 02D3: boat 0@ sail_to 3007.8489 -1994.3662 1.5716
Заставляет лодку плыть в указанную точку. Здесь:
0@ - хэндл лодки
3007.8489 -1994.3662 1.5716 - цель пути.


А также можно устанавливать скорость, с которой она будет двигаться:
  • 02DB: set_boat 0@ speed_to 10.0
Где:
0@ - хэндл лодки
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 - радиус. Будет петлять около объекта.


  • 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. Пока.

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)
Не работает, я пробовал.
Вход на сайт

Поиск
Категории раздела
Мини-чат
Наш опрос
Что скажете о новом дизайне?
Всего ответов: 0
Активность на сайте
Друзья сайта
Статистика

Онлайн всего: 2
Гостей: 1
Пользователей: 1
wmysterio
Сегодня нас посетили:
wmysterio