И так, если налепить много триггеров в редакторе — это снижает производительность сервера, а значит и клиента. А иногда их надо много.
Решение: Делаем и удаляем их скриптами.
Это далеко не полный список вариантов, статья будет дополнена.
Примеры все рабочие и используются в моей миссии.
Первый вариант:
Код в чистом виде:
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 канале