Этот скрипт спаунит грузовик с водителем и группой десанта, привозит на указанное место, выгружает их, уезжает на указанное место и удаляется.
Группа десанта идёт выполнять поставленные задачи.
0 spawn{ private _truck = "B_Truck_01_transport_F" createVehicle ([13433.8,21015.3,0]); _truck setDir 260; createVehicleCrew _truck; private _group = group driver _truck; _group addVehicle _truck; private _suppGroup = [[13433.8,21015.3,0], west, (configfile >> "CfgGroups" >> "West" >> "BLU_F" >> "Infantry" >> "BUS_InfAssault")] call BIS_fnc_spawnGroup; private _unitsCargo = _suppGroup; {_x moveInCargo _truck} forEach units _unitsCargo; _truck move [13809.9,21107.3,0]; waitUntil { sleep 1; (_truck distance [13809.9,21107.3,0]) < 10 }; { [_x] allowGetIn false; _x spawn { _this allowDamage false; waitUntil {isNull objectParent _this}; _this allowDamage true; }; _x action ["Eject", vehicle _x]; } forEach units _suppGroup; private _wp =_suppGroup addWaypoint [[13889.2,21128.5,0], 0]; _wp setWaypointType "SAD"; _wp setWaypointSpeed "FULL"; _wp setWaypointCombatMode "RED"; private _wp1 =_suppGroup addWaypoint [[13926.8,21114.8,0], 0]; _wp1 setWaypointType "SAD"; _wp1 setWaypointSpeed "FULL"; _wp1 setWaypointCombatMode "RED"; waitUntil { {_x in _truck} count units _unitsCargo != count units _unitsCargo }; _truck move [14564.9,20912.5,0]; waitUntil { sleep 1; (_truck distance [14564.9,20912.5,0]) < 10 }; {deleteVehicle _x} forEach ((units group _truck) + [_truck]); };
Код с комментариями:
0 spawn{ // Создаём транспорт private _truck = "B_Truck_01_transport_F" createVehicle ([13433.8,21015.3,0]); // Поворачиваем транспорт по азимуту _truck setDir 260; // Создаём экипаж транспорта createVehicleCrew _truck; // Создаём группу водителя экипажа - для отдачи приказов ему private _group = group driver _truck; // С этого момента приказы для _truck выполняются _group _group addVehicle _truck; // Создаём группу private _suppGroup = [[13433.8,21015.3,0], west, (configfile >> "CfgGroups" >> "West" >> "BLU_F" >> "Infantry" >> "BUS_InfAssault")] call BIS_fnc_spawnGroup; // Заносим группу в новую переменную. private _unitsCargo = _suppGroup; // Сажаем юнитов на пасажирские места {_x moveInCargo _truck} forEach units _unitsCargo; // Приказываем транспорту ехать на указанную точку _truck move [13809.9,21107.3,0]; // Ждём пока расстояние до точки будет < 10 метров waitUntil { sleep 1; (_truck distance [13809.9,21107.3,0]) < 10 }; // Запрещаем залезать обратно, приказываем высадится, выключаем урон на мгновение выхода из транспорта { [_x] allowGetIn false; _x spawn { _this allowDamage false; waitUntil {isNull objectParent _this}; _this allowDamage true; }; _x action ["Eject", vehicle _x]; } forEach units _suppGroup; // Создаём для деснта 2 вейпоинта private _wp =_suppGroup addWaypoint [[13889.2,21128.5,0], 0]; _wp setWaypointType "SAD"; _wp setWaypointSpeed "FULL"; _wp setWaypointCombatMode "RED"; private _wp1 =_suppGroup addWaypoint [[13926.8,21114.8,0], 0]; _wp1 setWaypointType "SAD"; _wp1 setWaypointSpeed "FULL"; _wp1 setWaypointCombatMode "RED"; // Ждём пока все юниты той группы выйдут с пассажирских мест waitUntil { {_x in _truck} count units _unitsCargo != count units _unitsCargo }; // Приказываем транспорту двигаться на указанную точку _truck move [14564.9,20912.5,0]; // Ждём пока расстояние до точки будет < 10 метров waitUntil { sleep 1; (_truck distance [14564.9,20912.5,0]) < 10 }; // Удаляем транспорт и его экипаж {deleteVehicle _x} forEach ((units group _truck) + [_truck]); };
Обсудить этот скрипт можно в нашем Discord канале