00068. Использование RC

Использование RC|Этот урок посвящен ещё одному режиму - режиму RC. Его чаще называют режимом удалённого управления ( управление на расстоянии ).|wmysterio|wmysterio||||Пример такого режима можно было наблюдать в миссия Зеро. Мы управляли маленьким самолётиком и уничтожали фургоны. Вот скрин с этим режимом:

Сегодня мы рассмотрим опкоды для работы с этим режимом а так же напишем простенькие примеры. Начнем, опкоды:

Помещает игрока в режиме RC в машину:

0715: put_player $PLAYER_CHAR in_RC_mode_in_car $CAR

Здесь: $PLAYER_CHAR - хендл игрока $CAR - хендл созданной ранее машины ( лодки, вертолёта, самолёта )

Опкод считывает в переменную текущую RC-машину игрока:

0484: $CAR = player $PLAYER_CHAR RC_car

Выход игрока с режима RC:

04DB: exit_RC_mode

Для реальности разработчики сделали миниатюрные модели транспорта. Их имена начинаются с "#RC". Вот список всех доступных RC-моделей:

Модель

#RCBANDIT

#RCBARON

#RCCAM

#RCGOBLIN

#RCRAIDER

#RCTIGER

Однако возможно использовать и другие модели транспорта. Например: #INFERNUS. Вот скрин:

Если присмотреться, то заметно, что водитель отсутствует! Можно сказать, что призрак водит авто :) Нужно так же помнить, что здесь работает функция уничтожения. Она действует в любом транспорте! После детонации транспорта, возвращается контроль к самому CJ.

Минусы режима:

  • Управляя транспортом, мы одновременно управляем и CJ. Поэтому его нужно перемещать в точку, где нет угрозы для жизни;

  • В RC-режиме действуют номера клавиш когда СЖ идёт пешком, тоесть, чтобы ехать вперёд на транспорте, то нужно нажать пробел;

Что бы избавится от этих минусов нужно всего три шага:

  • Создать автомобиль в любой точке ( желательно не далеко от RC-машинки );

  • Поместить СЖ в эту машину ( "072A" ) и закрепить её в текущей позиции;

  • Поместить СЖ в режим RC;

Вот образец:

072A: put_actor $PLAYER_ACTOR into_car 1@ driverseat
car.LockInCurrentPosition(1@) = true
0715: put_player $PLAYER_CHAR in_RC_mode_in_car 0@

Таким образом мы можем нормально управлять RC-транспортом. Давайте напишем скрипт, что бы возле дома СЖ стоял самолётик. Возле него так же будет стоять #INFERNUS. Если СЖ сядет в инфернус, то ему дают удалённое управление самолётиком.

{$CLEO}
0000:

:NAME
thread 'NAME'
wait 0
model.Load(#INFERNUS)
model.Load(#RCBARON)
038B: load_requested_models

:NAME_1
wait 0
if AND
model.available(#INFERNUS)
model.available(#RCBARON)
jf @NAME_1
0@ = car.Create(#RCBARON, 2499.4604, -1684.9598, 13.4366)
car.Angle(0@) = 19.615
car.SetImmunities(0@, 1, 1, 1, 1, 1)
1@ = car.Create(#INFERNUS, 2509.5298, -1686.9619, 13.0763)
car.Angle(1@) = 45.9011
car.SetImmunities(1@, 1, 1, 1, 1, 1)
model.destroy(#INFERNUS)
model.destroy(#RCBARON)

:NAME_2
wait 0
if AND
car.Defined(0@)
car.Defined(1@)
then
 if AND
 8119: not car 0@ wrecked
 actor.InCar($PLAYER_ACTOR, 1@)
 then
 car.LockInCurrentPosition(1@) = true
 0715: put_player $PLAYER_CHAR in_RC_mode_in_car 0@
 jump @NAME_3
 end
end
jump @NAME_2

:NAME_3
wait 0
if
0119: car 0@ wrecked
jf @NAME_3
car.LockInCurrentPosition(1@) = false
car.SetImmunities(1@, 0, 0, 0, 0, 0)
0A93: end_custom_thread

Результат:

Естественно скрипт одноразовый. После уничтожения RC-машинки скрипт завершит свою работу. Думаю, основную теорию я вам предоставил. Вы можете использовать её для своих миссий и скриптов :)|1248|1|0|98696836png600360400240``\|89041466png600360400240\|52657795`png`600`360`400`240||ispolzovanie_rc|1499703465

Last updated