Доставка ботов и техники с помощью вертолёта.

При поддержке нашего Discord сообщества!
Скрипт собран как конструктор, а равно можно его спокойно адаптировать под свои нужды.

Это просто вариант на тему этого скрипта.

ВАЖНО:

Зависит от грузоподъёмности конкретного (выбранного вами) вертолёта.

Не все вертолёты могут нести и технику и пехоту.
Другие вариации скрипта скоро будут выложены.

Подходит для открытой местности.

Нужные маркера:
  • mkr_spawn — точка появления.
  • mkr_drop — точка сброса (100 метров от маркера, чтобы вертолёт успешно тормозился. Поставишь меньше — вертушка будет висеть и тупить).
  • mkr_move — куда вертолёт улетает после выброса десанта, и удаляется.
  • mkr_inf_out — где будет высадка пехоты. Учитываем, что пилоты выбирают безопасное место не смотря на невидимую вертолётную площадку созданную в начале скрипта.

Код скрипта:


0 spawn {
// Создаём невидимую вертолётную площадку, для точной посадки вертолёта
private _helipad = "Land_HelipadEmpty_F" createVehicle  getMarkerPos "mkr_inf_out";
// Создаём группу десанта
private _supgroup = [getMarkerPos "mkr_spawn", West, (configfile >> "CfgGroups" >> "West" >> "BLU_F" >> "Infantry" >> "BUS_InfSquad")] call BIS_fnc_spawnGroup;
// Заводим их в группу для погрузки в вертолёт
private _unitsCargo = units _supgroup;
// Создаём вертолёт
private _heli = createVehicle ["B_Heli_Transport_03_F", getMarkerPos "mkr_spawn", [], 0, "FLY"];
// Создаём экипаж вертолёта
createVehicleCrew _heli;

private _veh = createVehicle ["B_MRAP_01_hmg_F", getMarkerPos "mkr_spawn"];

// Создаём контрмеры для цикличного использования
private _flares = {
    while {alive driver _this && {!(isTouchingGround _this)}} do {    
        sleep 3.5;
        _this action ["useWeapon", _this, driver _this, 0];
    };
};
// Создаём контрмеры для цикличного использования на отходе
private _flares2 = {
    while {alive driver _this} do {    
        sleep 3.5;
        _this action ["useWeapon", _this, driver _this, 0];
    };
};
// Создаём группу в экипаже вертолёта, для отдачи указаний
private _group = group driver _heli;
// Объеденяем с переменной _heli для отдачи приказов
_group addVehicle _heli;
// Задаём параметр храбрости для экпиажа вертолёта
{_x setSkill ["courage", 1]} forEach units _group;
// Проверочный hint
format ["Уровень параметра Courage = %1", leader _group skillFinal "courage"] remoteExec ["hint"];
// Пововрачиваем вертолёт при спавне куда нам надо
_heli setDir 270;
// Сажаем всех ботов группы десанта в вертолёт
{_x moveInCargo _heli} forEach _unitsCargo;
// Приказываем вертолёту двигаться куда надо
_heli domove getMarkerPos "mkr_drop";
// Задаём высоту полёта
_heli flyinheight 50;

_success = _heli setSlingLoad _veh;

// Ждём пока дистанция будет менее 1700 метров - начинаем выпускать ловушки
waitUntil {
sleep 1;
(_heli distance getMarkerPos "mkr_drop") < 1700
};
// Откидываем ловушки
_heli spawn _flares;
// Ждём пока дистанция будет менее 300 метров - приказываем садиться
waitUntil {
(_heli distance2d getMarkerPos "mkr_drop") < 100
};

dostop _heli;
_heli flyinheight 7;
waitUntil {
    Sleep 0.2;
        (getPosATL _veh select 2) < 1
};
_success = _heli setSlingLoad objNull;
waitUntil {isTouchingGround _veh};
// Садимся с высадкой десанта
_heli land "get out";
// Высота полёта = 0. На всякий случай.
_heli flyInHeight 0;
// Ждём пока вертолёт будет стоять на земле
waitUntil {isTouchingGround _heli};
// Приказываем группе десанта покинуть борт вертолёта
_supgroup leaveVehicle _heli;
// Ждём пока все челны группы десанта покинут вертолёт
waitUntil {
sleep 5;
count (_unitsCargo select {alive _x && (!isNull objectParent _x)}) == 0
};
// Добавляем группе вейпоинт для дальнейшего движения
_wp =_supgroup addWaypoint [getPos player, 0];
// Приказываем вертолёту уходить на указанные координаты
_heli domove getMarkerPos "mkr_move";
// Задаём высоту полёта
_heli flyinheight 50;
// Откидываем ловушки
_heli spawn _flares2;
// Ждём пока дистанция будет менее 300 метров - удаляем вертолёт
waitUntil {
    sleep 1;
        (_heli distance getMarkerPos "mkr_move") < 300
};
{deleteVehicle _x} forEach ((units group _heli) + [_heli]);
};

Есть вопросы или предложения — заходи в наше техническое Discord сообщество!