Делаем новые миссии. CLEO - скрипты, cutscene, статьи, программы. Игровые новости.
 
3.12.14 16:35 |

Вертолет, несущий на магните авто.

Раздел: Скрипты | Автор: yelmi | Рейтинг: 0.00 (0) | Хитов 3603
Нажимаем клавишу 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'
09E8: $9544 = actor $PLAYER_ACTOR active_interior
0001: wait 0 ms
00D6: if
$9544 == 0 // проверяем равен ли 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

: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
02A3: toggle_widescreen 1 (on)
01B4: set_player $PLAYER_CHAR frozen_state 0 (frozen)
015F: set_camera_position $X_CAM $Y_CAM $Z_CAM 0.0 0.0 0.0
0160: point_camera $X_CAM $Y_CAM $Z_CAM 2
00A5: $heli = create_car #LEVIATHN at $X_Heli $Y_Heli $Z_Heli
0788: enable_heli $heli magnet 1 //цепляем магнит к вертолету
0825: (unknown) $heli
0129: $DRIV = create_actor 24 #WMYPLT in_car $heli driverseat
0224: set_car $heli health_to 5000
02AC: set_car $heli immunities 0 0 0 1 0
0186: $Marker = create_marker_above_car $heli
07E0: set_marker $Marker type_to 1
02AA: set_car $heli immune_to_nonplayer 1
00A5: $car = create_car #SECURICA at $X_Car $Y_Car $Z_Car
03ED: (unknown) $car 1
04A2: heli $heli fly_to $X_Heli $Y_Heli 80.0 speed 0.0 80.0

:MAGNET_3
04A2: heli $heli $X_POS $Y_POS 80.0 speed 10.0 80.0
0158: camera_on_vehicle $heli 15 1

:MAGNET_4
0001: wait 0 ms
00D6: if
01AF: car $heli 0 $X_POS $Y_POS 80.0 radius 15.0 15.0 80.0
004D: jump_if_false @MAGNET_4
04BA: set_car $heli speed_instantly 0.0
0001: wait 1000 ms
04A2: heli $heli fly_to $X_POS $Y_POS 20.50 speed 0.0 20.50
0001: wait 2000 ms
04BA: set_car $heli speed_instantly 0.0

:MAGNET_5
0001: wait 0 ms
00D6: if
01B0: car $car stopped 0 $X_POS $Y_POS $Z_POS radius 10.0 10.0 10.0
004D: jump_if_false @MAGNET_5

:MAGNET_6
0789: unknown_drop_car_from_magnet $heli // отцепить транспорт от магнита
01B4: set_player $PLAYER_CHAR frozen_state 1 (unfrozen)
02A3: toggle_widescreen 0 (off)
04A2: heli $heli fly_to 0.0 0.0 100.0 speed 10.0 100.0
01C3: remove_references_to_car $heli
01C3: remove_references_to_car $car
01C2: remove_references_to_actor $DRIV
0249: release_model #LEVIATHN
0249: release_model #SECURICA
0249: release_model # WMYPLT
0164: disable_marker $Marker
02EB: restore_camera_with_jumpcut
0373: set_camera_directly_behind_player
0001: wait 3000 ms
0002: jump @MAGNET


Удачи.

 

  1 2 3 4 5 6 7 8 9 10  

Родственные ссылки
» Другие статьи раздела Скрипты
» Эта статья от пользователя yelmi

5 cамых читаемых статей из раздела Скрипты:
» Подключаем внешний скрипт «CARMOD» в очищенном main.scm.
» Запускаем внешний скрипт «PLAYER_PARACHUTE».
» Добавляем внешний скрипт в очищенный main.scm. Часть 3
» Добавляем внешний скрипт в очищенный main.scm. Часть 1
» Вертолет, несущий на магните авто.

5 последних статей раздела Скрипты:
» Вертолет, несущий на магните авто.
» Добавляем внешний скрипт в очищенный main.scm. Часть 3
» Добавляем внешний скрипт в очищенный main.scm. Часть 2
» Добавляем внешний скрипт в очищенный main.scm. Часть 1
» Подключаем внешний скрипт «CARMOD» в очищенном main.scm.

¤ Перевести статью в страницу для печати
¤ Послать эту cтатью другу

MyArticles 0.6 beta for RUNCMS: by RunCms.ru


Реклама

Вверх     Вернуться на главную. Вход в Систему. Статьи. Скачать. Миссии. ФОРУМ Обратная связь.   
   
   
Яндекс.Метрика
   
   
- Генерация страницы: 0.03 секунд -