
Давно меня интересовал вопрос:
Хочу использовать объекты карты для своих сценариев.. но в силу малых познаний не мог этого сделать.
Спасибо огромное ребятам из 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 канале