Рейтинг - 0.0 (0)

Этот урок посвящен ещё одному режиму - режиму RC. Его чаще называют режимом удалённого управления ( управление на расстоянии ).

Пример такого режима можно было наблюдать в миссия Зеро. Мы управляли маленьким самолётиком и уничтожали фургоны. Вот скрин с этим режимом:

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

Помещает игрока в режиме 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.

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

  1. Управляя транспортом, мы одновременно управляем и CJ. Поэтому его нужно перемещать в точку, где нет угрозы для жизни;
  2. В RC-режиме действуют номера клавиш когда СЖ идёт пешком, тоесть, чтобы ехать вперёд на транспорте, то нужно нажать пробел;

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

  1. Создать автомобиль в любой точке ( желательно не далеко от RC-машинки );
  2. Поместить СЖ в эту машину ( "072A" ) и закрепить её в текущей позиции;
  3. Поместить СЖ в режим 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-машинки скрипт завершит свою работу. Думаю, основную теорию я вам предоставил. Вы можете использовать её для своих миссий и скриптов :)


Теги: удалённое управление, RC, remote mode

Werewolf   (21.07.12 19:07)
А не легче если дать игроку управление RC то можно закрепить игрока в текущей позиций и тогда он с места не сдвинется пока не открепишь

NARC   (23.07.12 18:14)
2) в RC-режиме действуют номера клавиш когда СЖ идёт пешком, то есть, что бы ехать в перёд на транспорте, то нужно нажать пробел.
Вход на сайт

Поиск
Категории раздела
Мини-чат
Пожалуйста, все вопросы по скриптингу задавать на форуме!
Наш опрос
Как Вы относитесь к ситуации с OpenIV?
Всего ответов: 8
Активность на сайте
Пожертвования
Кошельки WebMoney:
U859420971000
R407741810602
Z331072372430
E314272616890
Друзья сайта
Полезные ресурсы
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Сегодня нас посетили:
wmysterio, DK22Pac
Реклама