Создание задания с объектами карты

Давно меня интересовал вопрос:
Хочу использовать объекты карты для своих сценариев.. но в силу малых познаний не мог этого сделать.
Спасибо огромное ребятам из TacticalShift, в частности Ranger за скрипт, и KOKaKOJIbKA (Без твоего терпения я мало что понял бы. Спасибо.) за его доработку под мои нужды.

Как узнать ID объектов читай в этой статье.

И так, сделаем эту возможность общедоступной. Может начнут появляться годные миссии в русскоязычном комьюнити в большем количестве чем сейчас (есть, но мало).
Код в чистом виде:

tower_1 = [0,0,0] nearestObject 1779011;
tower_2 = [0,0,0] nearestObject 1564268;
tower_3 = [0,0,0] nearestObject 1566939;
["THIS_desTower", true, ["Пойди и взорви","Основная задача",""],[0,0,0], "ASSIGNED", 1,false,true,"Attack",false] call BIS_fnc_setTask;
private _array = [tower_1,tower_2,tower_3];
{
_nul = _x addMPEventHandler ["MPKilled", {
_name = switch true do {
case (!alive tower_1) : {"VZORVALI TOWER 1"};
case (!alive tower_2) : {"VZORVALI TOWER 2"};
case (!alive tower_3) : {"VZORVALI TOWER 3"};
};
hint _name;
(_this select 0) removeMPEventHandler ["MPKilled", 0];
}];
} count _array;
waitUntil {uiSleep 0.5; {!alive _x} count _array isEqualTo (count _array)};
["THIS_desTower", "SUCCEEDED",true] spawn BIS_fnc_taskSetState;

Код с расшифровкой по основным моментам:

// Заносим ID объектов карты в переменные
tower_1 = [0,0,0] nearestObject 1779011;
tower_2 = [0,0,0] nearestObject 1564268;
tower_3 = [0,0,0] nearestObject 1566939;
// Создаётся задача на уничтожение объектов
// Переменная задания, кому назначено, описание, название, координаты, статус, оповещение, кому видно (true = всем), тип (описаны основные моменты)
["THIS_desTower", true, ["Пойди и взорви","Основная задача",""],[0,0,0], "ASSIGNED", 1,false,true,"Attack",false] call BIS_fnc_setTask;
// Крутится проверка, которая следит за состоянием указанных объектов. При уничтожении объекта выдаётся хинт с заданным в этом случае сообщением.
private _array = [tower_1,tower_2,tower_3];
{
_nul = _x addMPEventHandler ["MPKilled", {
_name = switch true do {
case (!alive tower_1) : {"VZORVALI TOWER 1"}; // после выполнения условия что объект не живой выдаётся хинт.
case (!alive tower_2) : {"VZORVALI TOWER 2"}; // после выполнения условия что объект не живой выдаётся хинт.
case (!alive tower_3) : {"VZORVALI TOWER 3"}; // после выполнения условия что объект не живой выдаётся хинт.
};
hint _name;
(_this select 0) removeMPEventHandler ["MPKilled", 0];
}];
// Считает наличие живых переменных
} count _array;
// Подсчитывает количество живых указанных объектов, сравнивая с заданным числом в начале
waitUntil {uiSleep 0.5; {!alive _x} count _array isEqualTo (count _array)};
// Когда все три (в данном случае) условия выполнены - задание выполнено
["THIS_desTower", "SUCCEEDED",true] spawn BIS_fnc_taskSetState;

Наше видео на эту тему (показан старый форум, сейчас тут этот сайт):

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