Этот скрипт спаунит грузовик с водителем и группой десанта, привозит на указанное место, выгружает их, уезжает на указанное место и удаляется.
Группа десанта идёт выполнять поставленные задачи.
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 канале