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


Сегодня мы рассмотрим опкоды для работы с этим режимом а так же напишем простенькие примеры. Начнем, опкоды:
  • 0715: put_player $PLAYER_CHAR in_RC_mode_in_car $CAR
Помещает игрока в режиме RC в машину. Здесь:
$PLAYER_CHAR - хендл игрока
$CAR - хендл созданной ранее машины(лодки, вертолёта, самолёта)

  • 0484: $CAR = player $PLAYER_CHAR RC_car
Опкод считывает в переменную текущую RC-машину игрока
  • 04DB: exit_RC_mode
Выход игрока с режима RC

Для реальности разработчики сделали миниатюрные модели транспорта. Их имена начинаются с #RC. Вот список всех доступных RC-транпорта:
Code
#RCBANDIT
#RCBARON
#RCCAM
#RCGOBLIN
#RCRAIDER
#RCTIGER
Однако возможно использовать и другие модели транспорта, например #INFERNUS. Вот скрин:


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

Минусы режима:
1) управляя транспортом мы одновременно управляем и CJ. По этому его нужно перемещать в точку, где нет угрозы для жизни.
2) в RC-режиме действуют номера клавиш когда СЖ идёт пешком, то есть, что бы ехать в перёд на транспорте, то нужно нажать пробел.
Что бы избавится от этих минусов нужно всего три шага:
- создать автомобиль в любой точке(желательно не далеко от RC-машинки)
- поместить СЖ в эту машину(072A:) и закрепить её в текущей позиции(car.LockInCurrentPosition($NEW_CAR) = true)
- поместить СЖ в режим RC
Вот образец:
Code
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. Если СЖ сядет в инфернус, то ему дают удалённое управление самолётиком.
Code
{$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-машинки скрипт завершит свою работу.

Думаю основную теорию я вам предоставил. Вы можете использовать её для своих миссий и скриптов  :)

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

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

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

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

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