Знаю, есть много разных скриптов по доставке ботов вертолётом, и всё же вот ещё один, который можно вставить в sqf файл.
Пригодится в любой миссии.
Код в чистом виде:
0 spawn { private _helipad = "Land_HelipadEmpty_F" createVehicle [4364.91,3818.18,0]; private _supgroup = [[5027.42,5904.4,0], west, (configfile >> "CfgGroups" >> "West" >> "BLU_F" >> "Infantry" >> "BUS_InfAssault")] call BIS_fnc_spawnGroup; private _unitsCargo = units _supgroup; private _heli = createVehicle ["B_Heli_Transport_01_F", [5027.42,5904.4,0]]; createVehicleCrew _heli; 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 270; {_x moveInCargo _heli} forEach _unitsCargo; _heli domove [4364.91,3818.18,0]; waitUntil { sleep 1; (_heli distance [4364.91,3818.18,0]) < 300 }; _heli land "get out"; _heli flyInHeight 0; waitUntil {isTouchingGround _heli}; _supgroup leaveVehicle _heli; waitUntil { sleep 5; count (_unitsCargo select {alive _x && (!isNull objectParent _x)}) == 0 }; _heli domove [5027.46,5904.23,0]; _heli flyinheight 50; waitUntil { sleep 1; (_heli distance [5027.46,5904.23,0]) < 300 }; {deleteVehicle _x} forEach ((units group _heli) + [_heli]); };
Код с расшифровкой:
0 spawn { // Создаём невидимую вертолётную площадку private _helipad = "Land_HelipadEmpty_F" createVehicle [4364.91,3818.18,0]; // Создаём группу десанта private _supgroup = [[5027.42,5904.4,0], west, (configfile >> "CfgGroups" >> "West" >> "BLU_F" >> "Infantry" >> "BUS_InfAssault")] call BIS_fnc_spawnGroup; // Определяем группу десанта в другую переменную, для запихивания в грузовое отделение private _unitsCargo = units _supgroup; // Создаём вертолёт который будет перевозить ботов private _heli = createVehicle ["B_Heli_Transport_01_F", [5027.42,5904.4,0]]; // Создаём экипаж вертолёта createVehicleCrew _heli; // Выделяем экипаж в отдельную группу private _group = group driver _heli; _group addVehicle _heli; // Задаём параметр Courage {_x setSkill ["courage", 1]} forEach units _group; // Проверяем какой уровень Courage у нас получается. Надо => 0.90 // Показывает hint справа вверху с покзателем этого параметра format ["Уровень параметра Courage = %1", leader _group skillFinal "courage"] remoteExec ["hint"]; // Поворачиваем вертолёт в нужную нам сторону (от 0 до 360, в градусах) _heli setDir 270; // Пихаем экипаж в грузуовое отделение вертолёта {_x moveInCargo _heli} forEach _unitsCargo; // Приказываем вертолёту двигаться на укзааные координаты _heli domove [4364.91,3818.18,0]; // Ждём пока дистанция сократится до < 300 метров waitUntil { sleep 1; (_heli distance [4364.91,3818.18,0]) < 300 }; // прикзываем вертолёту сесть _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 }; // Приказываем вертолёту улетать _heli domove [5027.46,5904.23,0]; // Высота полёта = 50 _heli flyinheight 50; // Ждём пока дистанция сократится до < 300 метров waitUntil { sleep 1; (_heli distance [5027.46,5904.23,0]) < 300 }; // Удаляем экипаж вертолёта и сам вертолёт {deleteVehicle _x} forEach ((units group _heli) + [_heli]); };
Можно ещё откидывать дымы по кругу при посадке, соответственно вставив код ниже в нужное вам место. Но некоторые люди говорят что этот код весьма устарел. Правда он по-прежнему работает:
// Выкидываем дымы по кругу private _dir = 0; private _a = 0; while{_a < 16}do{ _sPos = [((getPos _heli) select 0) + (sin _dir) * 12, ((getPos _heli) select 1) + (cos _dir) * 12, ((getPos _heli) select 2)]; _smoke1 = "SmokeShellBlue" createVehicle _sPos; _a = _a + 1; _dir = _dir + (360 / 16); };
Бонус от товарища Dusin (участник нашего Discord)
private _step = 360 / 6; // Шаг поворота от одного до второго дыма private _hPos = getPos _heli; private _hDir = getDir _heli; private ["_smoke", "_sPos"]; { _x params ["_dir", "_endDir"]; _dir = _hDir + _dir; _endDir = _hDir + _endDir; while { _dir <= _endDir } do { _sPos = [ (_hPos # 0) + (sin _dir) * random [8,12,16] , (_hPos # 1) + (cos _dir) * random [8,12,16] , 0.25 ]; _smoke = "SmokeShellBlue" createVehicle _sPos; _dir = _dir + (360 / _step); }; } forEach [ /* Лишнее удалить */ [0, 360] /* Если хотим по кругу */ , [45, 135] /* Справа */ , [225, 315] /* Слева */ ];
Наше видео на эту тему (показан старый форум, сейчас тут этот сайт):
Обсудить этот скрипт можно в нашем Discord канале