Создание триггера через скрипт

И так, если налепить много триггеров в редакторе — это снижает производительность сервера, а значит и клиента. А иногда их надо много.

Решение: Делаем и удаляем их скриптами.

Это далеко не полный список вариантов, статья будет дополнена.

Примеры все рабочие и используются в моей миссии.

Первый вариант:

Код в чистом виде:

trg_data = createTrigger ["EmptyDetector", [26714.2,24605.6,0]];
trg_data setTriggerArea [20, 20, 0, true, 15];
trg_data setTriggerActivation ["GUER", "PRESENT", false];
trg_data setTriggerStatements ["this", "execVM 'tasks\BET_minefield.sqf'", "deleteVehicle trg_data"];

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

// Создаём триггер, задаём ему тип и позицию. https://community.bistudio.com/wiki/createTrigger
trg_data = createTrigger ["EmptyDetector", [26714.2,24605.6,0]];
// Задаём зону триггера и его форму (true = прямоугольный, false = эллиптический). https://community.bistudio.com/wiki/setTriggerArea
trg_data setTriggerArea [20, 20, 0, true, 15];
// Задаём тип активации триггера. https://community.bistudio.com/wiki/setTriggerActivation
trg_data setTriggerActivation ["GUER", "PRESENT", false];
// Задаём что будет происходить при активации и деактивации триггера https://community.bistudio.com/wiki/setTriggerStatements
trg_data setTriggerStatements ["this", "execVM 'tasks\BET_minefield.sqf'", "deleteVehicle trg_data"];
// У меня он при активации запускает файл 'BET_minefield.sqf', а при деактивации удаляет сам себя.

Второй вариант (триггер переключает статус задания):

Код в чистом виде:

trg1 = createTrigger ["EmptyDetector", [26766.4,24623.1,0]];
trg1 setTriggerArea [61.5, 68, 131, true, -1];
trg1 setTriggerActivation ["EAST", "NOT PRESENT", false];
trg1 setTriggerStatements ["this", " ['BET_first_base', 'SUCCEEDED',true] spawn BIS_fnc_taskSetState;", " "];

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

// Создаём триггер, задаём ему тип и позицию. https://community.bistudio.com/wiki/createTrigger
trg1 = createTrigger ["EmptyDetector", [26766.4,24623.1,0]];
// Задаём зону триггера и его форму (true = прямоугольный, false = эллиптический). https://community.bistudio.com/wiki/setTriggerArea
trg1 setTriggerArea [61.5, 68, 131, true, -1];
// Задаём тип активации триггера. https://community.bistudio.com/wiki/setTriggerActivation
trg1 setTriggerActivation ["EAST", "NOT PRESENT", false];
// Задаём что будет происходить при активации и деактивации триггера https://community.bistudio.com/wiki/setTriggerStatements
trg1 setTriggerStatements ["this", " ['BET_first_base', 'SUCCEEDED',true] spawn BIS_fnc_taskSetState;", " "];
// У меня он при активации переводит статус задания 'BET_first_base' в "ВЫПОЛНЕНО", а при деактивации ничего не делает.
Удаляется он потом вызываясь по имени из другого скрипта.

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