00067. Использование турелей
Использование турелей|Мы продолжае м изучать скриптинг, и сегодня речь пойдет о турелях, а точнее о режиме турели.|wmysterio|wmysterio||||Что это значит? Думаю в оригинальной игре вам предоставлялись шансы пострелять как бы с места пассажира: по-центру появляется прицел и можем стрелять. Например: в миссии Зеро нам нужно было сбивать самолётики миниганом. Мы не могли сдвинуться с места, но могли вращать оружие и стрелять. Такой режим принято называть режимом турели ( от слова turret ). Вот как выглядит этот режим:

Знакомо, правда? Давайте рассмотрим опкоды для работы с турелью:
0464: put_actor $PLAYER_ACTOR into_turret_on_car $CAR at_car_offset -0.2 0.5 0.0 position 0 shooting_angle_limit 0.0 with_weapon 0
06A7: put_actor $PLAYER_ACTOR into_turret_on_car $CAR at_car_offset -0.2 0.5 0.0 position 1 shooting_angle 110.0 70.0 with_weapon 43
Данные опкоды позволяют использовать турель на машине.
Здесь:
$PLAYER_ACTOR - хэндл актёра
$CAR - хэндл машины, к которой будет прицеплен режим
-0.2 0.5 0.0 - определяется позиция, с которой можно будет вести обстрел. Эти координаты берутся относительно автомобиля. Мы поговорим об этом ниже
position 0 - выбирается позиция. Я точно не знаю что именно имеется ввиду под словом "позиция", поэтому используйте число указанное в опкодах
shooting_angle_limit 0.0 - определяется лимит поворота на определённый угол
with_weapon 0 - указывается номер оружия, с которого будет вестись обстрел
shooting_angle 110.0 70.0 - Указывается лимит углов поворота. Первое число - поворот по горизонтали. Если поставить 360.0, то можно стрелять вокруг всей тачки. Второе число - поворот по вертикали ( вверх/вниз ). Советую так оставить число 70.0, так как если поставить число больше игра может вылететь. Советую вам использовать опкод 06A7, с ним у меня проблем не возникало, а вот с другим были проблемы с номером оружия
Так же есть возможность прицепить режим турели к объекту:
04F4: put_actor $PLAYER_ACTOR into_turret_on_object $OBJECT offset_from_object_origin -0.2 0.5 0.0 orientation 0 both_side_angle_limit 360.0 lock_weapon 38
Здесь:
$PLAYER_ACTOR - хендл актёра
$OBJECT - хендл созданного объекта
-0.2 0.5 0.0 - определяется позиция, с которой можно будет вести обстрел. Эти координаты берутся относительно объекта, на котором будет турель
360.0 - угловой лимит по горизонтали
38 - номер оружия, с которого буд ет обстрел
Что бы выйти с режима турели используется опкод:
0465: remove_actor $PLAYER_ACTOR from_turret_mode
Увы, я не нашел опкода, который позволит ходить с турелью. Если я что нибудь разнюхаю, выложу сюда. Если игрока поставить в режим турели, то он не будет передвигаться, а будет следовать за автомобилем или объектом.
Давайте рассмотрим координаты относительно объекта ( оффсеты ) "offset_from_object 0.0 0.0 0.0". Допустим в нас есть объект-звезда. Так и или иначе в неё есть перед ( место, куда "смотрит" объект ). Назовём это место "перёд объекта". Естественно у объекта есть центр. Это будет точка. На рисунке она обозначена красным цветом.

Эта точка имеет координаты 0.0 0.0 0.0. Если мы будем увеличивать только первое число, то оффсет переместится в сторону "перёд объекта":

Если мы будем уменьшать значение и уйдем в минус, то оффсет передвинется в противоположную сторону, то есть, как бы это интересно не звучало, в з"ад объекта" )))

Редактирование первого числа позволяет сдвигать оффсет по желтой линии на рисунке. По зелёной линии мы сможем смещать оффсет влево ( второе число положительное ) или вправо ( второе число отрицательное ) от объекта:
влево ( второе число положительное ) 0.0 2.0 0.0 | вправо ( второе число отрицательное ) 0.0 -2.0 0.0 |
---|---|
![]() | ![]() |
Третье число указывает высоту смещения от объекта. Если оно положительное, то оффсет сместится вверх. Если отрицательное - сместится вниз. Для примера, оффсет "5.0 -5.0 0.0" будет в этой точке:

Самое главное, что координаты ведутся относительно объекта, то есть нам ничего другого вычислять не надо. Объект может быть где угодно и под любыми углами - за нас всё уже сделано! :)
Что касается оффсета автомобиля, то там есть отличия:
- Первое число - движение влево ( отрицательное число ) / вправо( положительное число );
- Второе число - движение назад ( отрицательное число ) / вперед ( положительное число );
- Третье число - движение вниз ( отрицательное число ) / вверх ( положительное число );
Как по мне, то такой вариант намного лучше, чем с объектами. Почему разработчики сделали для каждого класса свои оффсеты - не берусь предположить :) С оффсетами вроде разобрались. Переходим к скриптингу. Давайте напишем скрипт, что бы нажатии кнопки T`, СЖ помещался в режим турели и он мог стрелять с минигана. Для разнообразия сделаем, что бы СЖ оказался возле какого то транспорта:
{$CLEO}
0000:
:NAME
thread 'NAME'
wait 0
model.Load(#MINIGUN)
038B: load_requested_models
:NAME_1
wait 0
if
model.Available(#MINIGUN)
jf @NAME_1
:NAME_2
wait 0
0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 0@ closest_ped_to 1@
if AND
0AB0: key_pressed 84 // T
car.Defined(0@)
then
if AND
83C9: not car 0@ damaged
82BF: not car 0@ sunk
then
06A7: put_actor $PLAYER_ACTOR into_turret_on_car 0@ at_car_offset 1.0 0.2 0.3 position 1 shooting_angle 360.0 70.0 with_weapon 38
wait 250
jump @NAME_3
end
end
jump @NAME_2
:NAME_3
wait 0
if OR
actor.Dead($PLAYER_ACTOR)
0AB0: key_pressed 84 // T
03C9: car 0@ damaged
02BF: car 0@ sunk
then
0465: remove_actor $PLAYER_ACTOR from_turret_mode
wait 250
jump @NAME_2
end
jump @NAME_3
Вот скрин:

Выбираем нужную тачку и нажимаем T
, помещаемся в неё и начинаем палить во всё подряд! Нажимаем ещё раз <kbd>T
, и выходим с режима турели. Интересный вышел скриптик, который можно и в миссию запихнуть ;)Что касается других актёров, то их тоже можно ставить в режим турели. Они просто будут стоять на месте и стрелять ( нужно заставить их убить кого то опкодом "05E2" ).
Одно я точно не знаю - нужна ли загрузка нужной модели или нет, но на всякий случаи загружайте ;)|1868|1|0|92582055
png
600375
400250``\|15433893
png473
486399
410\|63004922`png`473`486`399`410
|44693461png
473486
399410``\|69616219
png473
486399
410\|25373552`png`473`486`399`410
|19110219png
473486
399410``\|50413679
png600
375400
250``||ispolzovanie_turelej|1499697357