Вертолет, несущий на магните авто
Нажимаем клавишу N и наблюдаем за тем как, прилетает вертолет с примагниченным авто, устанавливает его на место, отцепляется и улетает.
Рассмотрим работу скрипта.
Метка MAGNET :
Опкодом 03A4: name_thread 'MAGNET' задаем имя потоку далее следует проверка нажата ли клавиша 10 (N) если нет то идем в начало потока. Если клавиша нажата то идет загрузка необходимых нам в дальнейшем моделей вертолета, автомобиля и пилота.
Метка MAGNET_1:
Производим проверку загружены(доступны) ли модели.
Метка MAGNET_2:
Опкодоми
04C4: create_coordinate $X_Heli $Y_Heli $Z_Heli from_actor $PLAYER_ACTOR offset -104.527 -108.42 54.0
04C4: create_coordinate $X_Car $Y_Car $Z_Car from_actor $PLAYER_ACTOR offset -104.527 -108.42 50.0
создаем координаты в которых появятся вертолет и автомобиль.
04C4: create_coordinate $X_CAM $Y_CAM $Z_CAM from_actor $PLAYER_ACTOR offset 0.1 0.1 15.37
создаем координаты для установки камеры.
04C4: create_coordinate $X_POS $Y_POS $Z_POS from_actor $PLAYER_ACTOR offset -9.527 9.42 0.0
создаем координаты для установки автомобиля.
Далее соответственно делаем широкий экран и замораживаем игрока, а также устанавливаем камеру и направляем ее в нужное нам место.
Создаем вертолет и опкодом 0788: enable_heli $heli magnet 1 //цепляем магнит к вертолету.
Также создаем автомобиль.
Заметьте, что автомобиль создается в тех же координатах по х, y, что и вертолет но z у авто должно быть на 4 меньше чем у вертолета. Иначе авто не прикрепится к магниту. То есть магнит должен лечь на крышу авто. Я не нашел опкода который непосредственно цепляет авто к магниту.
Метка MAGNET_3:
04A2: heli $heli $X_POS $Y_POS 80.0 speed 10.0 80.0
вертолет летит в указанные координаты со скоростью 10.0.
0158: camera_on_vehicle $heli 15 1
направляем камеру на вертолет.
Метка MAGNET_4:
Проверяем находится ли вертолет над указанным местом, если да то устанавливаем скорость передвижения в 0.0 и опускаем вертолет до значения 20.0(20.0- высота над землей).
Метка MAGNET_5:
Проверяем установлен ли автомобиль в указанных координатах.
Метка MAGNET_5:
Опкод
0789: unknown_drop_car_from_magnet $heli // отцепить транспорт от магнита
Собственно говоря этим опкодом и отцепляем транспорт.
Далее размораживаем игрока и убираем широкий экран. Замораживание(отсутствие управления игроком) делалось для того, что бы не играющий на момент работы скрипта не имел возможности управлять игроком. Дело в том, что при нажатии на левую кнопку мышки автомобиль отцепляется от магнита, а стало быть последняя проверка не выполняется и мы получаем бесконечный цикл. По этой причине и замораживаем игрока, дабы избежать порчи скрипта.
Далее производим выгрузку моделей и идем на метку MAGNET.
Вот так работает скрипт.
004F: create_thread @MAGNET
……………………………………………..
:MAGNET
03A4: name_thread 'MAGNET'
0001: wait 0 ms
09E8: $9544 = actor $PLAYER_ACTOR active_interior
0001: wait 0 ms
00D6: if
$9544 == 0
004D: jump_if_false @MAGNET
00D6: if
0038: $ONMISSION == 0 // integer values
004D: jump_if_false @MAGNET
00D6: if
0256: player $PLAYER_CHAR defined
004D: jump_if_false @MAGNET
00D6: if
00E1: key_pressed 0 10
004D: jump_if_false @MAGNET
0247: request_model #LEVIATHN
0247: request_model #SECURICA
0247: request_model #WMYPLT
038B: load_requested_models
:MAGNET_1
00D6: if or
8248: not model #LEVIATHN available
8248: not model #SECURICA available
8248: not model #WMYPLT available
004D: jump_if_false @MAGNET_2
0001: wait 0 ms
0002: jump @MAGNET_1