Вертолёт приносит КШМ. КШМ точка респавна (до уничтожения).

Ну что же, вот и новая запись спустя много лет 😉

В этот раз это скрипт, который спавнит вертолёт, подцепляет к нему лёгкую машину (Ифрит, например) и он несёт её на указанное место.

Нам понадобится три маркера, их описание есть в начале кода скрипта.

При подлёте к указанному месту вертолёт начинает отстреливать тепловые ловушки, подлетает к указанному месту, отцепляет машину оставляя её на земле и улетает так же отстреливая тепловые ловушки. Подлетая к маркеру отхода вертолёта

В этом скрипте храбрость экипажа выкручена на максимум, так что обстрелы их мало волнуют.

ВАЖНО!
Танк так не притащить. И даже БТР так не приносится. У вертолётов есть своя грузоподъёмность, которая ограничивает варианты привозимой техники.

Код в чистом виде:

/*
Нужные маркера:

mkr_spawn - точка появления
mkr_drop - точка сброса (100 метров от маркера, чтобы не снижать скорость. Поставишь меньше - вертушка будет висеть и тупить)
mkr_move - куда вертолёт улетает после отцепа техники, и удаляется
*/


0 spawn {
private _heli = createVehicle ["B_Heli_Transport_03_F", getMarkerPos "mkr_spawn", [], 0, "FLY"];
createVehicleCrew _heli;
private _flares = {
    while {alive driver _this && {!(isTouchingGround _this)}} do {    
        sleep 3.5;
        _this action ["useWeapon", _this, driver _this, 0];
    };
};
private _group = group driver _heli;
_group addVehicle _heli;
{_x setSkill ["courage", 1]} forEach units _group;
// format ["Уровень параметра Courage = %1", leader _group skillFinal "courage"] remoteExec ["hint"];
_heli setDir 210;
_heli domove getMarkerPos "mkr_drop";
private _MHQ = createVehicle ["I_MRAP_03_F", getMarkerPos "mkr_spawn"];
_success = _heli setSlingLoad _MHQ;
_heli flyinheight 30;
waitUntil {
    sleep 1;
        (_heli distance getMarkerPos "mkr_drop") < 2700
};
_heli spawn _flares;
waitUntil {
    sleep 1;
        (_heli distance2d getMarkerPos "mkr_drop") < 100
};
dostop _heli;
_heli flyinheight 7;
waitUntil {
    Sleep 0.2;
        (getPosATL _MHQ select 2) < 1
};
_success = _heli setSlingLoad objNull;
waitUntil {isTouchingGround _MHQ};
[resistance, _MHQ] call BIS_fnc_addRespawnPosition;
_heli domove getMarkerPos "mkr_move";
_heli flyinheight 50;
waitUntil {
    sleep 1;
        (_heli distance getMarkerPos "mkr_move") < 300
};
{deleteVehicle _x} forEach ((units group _heli) + [_heli]);
};

Код с расшифровкой (надеюсь нигде не накосячил пока комментарии писал. Если что — используй код выше):

/*
Нужные маркера:

mkr_spawn - точка появления
mkr_drop - точка сброса (100 метров от маркера, чтобы не снижать скорость. Поставишь меньше - вертушка будет висеть и тупить)
mkr_move - куда вертолёт улетает после отцепа техники, и удаляется
*/


0 spawn {
// Создаём вертолёт. Вертолёт должен в стандартной версии игры поднимать эту технику на троссы.
private _heli = createVehicle ["B_Heli_Transport_03_F", getMarkerPos "mkr_spawn", [], 0, "FLY"];
// Создаём экипаж вертолёта.
createVehicleCrew _heli;
// Прописываем ловушки, которые вертолёт будет использовать. Их интервал тут указан в 3.5 секунды.
private _flares = {
    while {alive driver _this && {!(isTouchingGround _this)}} do {    
        sleep 3.5;
        _this action ["useWeapon", _this, driver _this, 0];
    };
};
// Переходим к лидеру группы. (для команд нет юнитов, есть отряды. Даже 1 юнит = отряд.)
private _group = group driver _heli;
// Теперь, отдавая приказы вертолёту (_heli) мы передаём их лидеру группы
_group addVehicle _heli;
// Выкручиваем храбрость экипажа.
{_x setSkill ["courage", 1]} forEach units _group;
// Проверочный хинт. Если вдруг трусят, то посмотреть уровень храбрости.
// format ["Уровень параметра Courage = %1", leader _group skillFinal "courage"] remoteExec ["hint"];
// Направление носа вертолёта при спавне.
_heli setDir 210;
// Куда вертолёту лететь.
_heli domove getMarkerPos "mkr_drop";
// Создаём КШМ. Вертолёт должен в стандартной версии игры поднимать эту технику на троссы.
private _MHQ = createVehicle ["I_MRAP_03_F", getMarkerPos "mkr_spawn"];
// Подцеспляем КШМ к вертолёту, на троссах.
_success = _heli setSlingLoad _MHQ;
// Задаём высоту полёта вертолёта.
_heli flyinheight 30;
// Ждём пока (в данном случае 2700 метров) дистанция до точки будет равна указанной ниже.
waitUntil {
    sleep 1;
        (_heli distance getMarkerPos "mkr_drop") < 2700
};
// Начинаем отстреливать ловушки.
_heli spawn _flares;
// Проверяем дистанцию до точки отцепа техники.
waitUntil {
    sleep 1;
        (_heli distance2d getMarkerPos "mkr_drop") < 100
};
// Приказываем остановится.
dostop _heli;
// Задаём высоту полёта в 7 метров.
_heli flyinheight 7;
// Проверяем что между машиной и землёй осталось менее 1 метра.
waitUntil {
    Sleep 0.2;
        (getPosATL _MHQ select 2) < 1
};
// Отцепляем тросы от машины.
_success = _heli setSlingLoad objNull;
// Ждём пока машина коснётся земли.
waitUntil {isTouchingGround _MHQ};
// Добавляем точку респауна на эту машину.
[resistance, _MHQ] call BIS_fnc_addRespawnPosition;
// Приказываем вертолёту улетать к указанному маркеру отхода.
_heli domove getMarkerPos "mkr_move";
// Задаём высоту полёта.
_heli flyinheight 50;
// Проверяем дистанцию до маркера отхода вертолёта.
waitUntil {
    sleep 1;
        (_heli distance getMarkerPos "mkr_move") < 300
};
// Когда дистанция до маркера отхода достигнута - удалём вертолёт.
{deleteVehicle _x} forEach ((units group _heli) + [_heli]);
};

Обсудить этот скрипт можно в нашем Discord канале