Перейти к содержанию

Lex

[FRWL] Отряд FRWL
  • Публикаций

    140
  • Зарегистрирован

  • Посещение

  • Победитель дней

    8

Весь контент Lex

  1. 4. Я думаю в этом причина: waitUntil {sleep 5; WMT_pub_frzState >= 3}; Код с EH выполнится только после окончания фризтайма, соответственно waitUntil нужно перенести в конец кода.
  2. Ставишь уже два триггера с такими же настройками. Отличаться они будут полями "при активации" и "при деактивации". В первом триггере будет: При активации missionNamespace setVariable ['isInside_1', true, true]; [[[], {['VIP захвачен русскими!'] call WMT_fnc_ShowTaskNotification;} ], 'bis_fnc_spawn'] call bis_fnc_MP; При деактивации missionNamespace setVariable ['isInside_1', false, true]; [[[], {['VIP покинул зону!'] call WMT_fnc_ShowTaskNotification;} ], 'bis_fnc_spawn'] call bis_fnc_MP; Во втором триггере соответственно: При активации missionNamespace setVariable ['isInside_2', true, true]; [[[], {['VIP захвачен американцами!'] call WMT_fnc_ShowTaskNotification;} ], 'bis_fnc_spawn'] call bis_fnc_MP; И при деактивации missionNamespace setVariable ['isInside_2', false, true]; [[[], {['VIP покинул зону!'] call WMT_fnc_ShowTaskNotification;} ], 'bis_fnc_spawn'] call bis_fnc_MP; Как видишь, я теперь использую в каждом триггере свою переменную - "isInside_1" и "isInside_2", которая будет обозначать присутствие ВИПа в соответствующей зоне. Далее меняем код в init.sqf: if (isServer) then { if (isNil "isInside_1") then {isInside_1 = false; publicVariable "isInside_1";}; //объявляем переменные if (isNil "isInside_2") then {isInside_2 = false; publicVariable "isInside_2";}; missionComplete = false; [] spawn { i1 = 0; //для каждой зоны свой счетчик i2 = 0; _timeScore = 10; while {!missionComplete} do { if (isInside_1) then //если ВИП в первой зоне - наращиваем нужный счетчик { i1 = i1 + 1; } else { i1 = 0; }; if (isInside_2) then { i2 = i2 + 1; } else { i2 = 0; }; if (i1 >= _timeScore && alive Ivan) then { [[[], {[resistance, 'VIP удержан в зоне!'] call wmt_fnc_endmission;} ], 'bis_fnc_spawn'] call bis_fnc_MP; //удержан в первой зоне - победа зеленых [[[], {['VIP удержан в зоне!'] call WMT_fnc_ShowTaskNotification;} ], 'bis_fnc_spawn'] call bis_fnc_MP; missionComplete = true; }; if (i2 >= _timeScore && alive Ivan) then { [[[], {[west, 'VIP удержан в зоне!'] call wmt_fnc_endmission;} ], 'bis_fnc_spawn'] call bis_fnc_MP; //удержан во второй зоне - победа синих [[[], {['VIP удержан в зоне!'] call WMT_fnc_ShowTaskNotification;} ], 'bis_fnc_spawn'] call bis_fnc_MP; missionComplete = true; }; sleep 1; }; }; [] spawn { while {alive Ivan && !missionComplete} do //loop на проверку убийства ВИПа { sleep 0.5; }; if (!alive Ivan) then //если убит - выводим сообщение и завершаем миссию { [[[], {[west, 'VIP убит!'] call wmt_fnc_endmission;} ], 'bis_fnc_spawn'] call bis_fnc_MP; //выставляешь вместо west ту сторону, которая должна выиграть при убийстве юнита [[[], {['VIP убит!'] call WMT_fnc_ShowTaskNotification;} ], 'bis_fnc_spawn'] call bis_fnc_MP; missionComplete = true; }; }; }; Попробуй так, я не тестировал, но должно работать. Поправка к моему посту выше: стороны должны называться west (синие), east (красные) и resistance (независимые)
  3. 1) Создаешь триггер и настраиваешь так: Тип - Нет Активация - Кто угодно Тип активации - Присутствует Галочку на "Повторяемый" Размер и форму подбираешь сам. В условии пишешь: Ivan in thislist При активации: missionNamespace setVariable ['isInside', true, true]; [[[], {['VIP захвачен русскими!'] call WMT_fnc_ShowTaskNotification;} ], 'bis_fnc_spawn'] call bis_fnc_MP; При деактивации: missionNamespace setVariable ['isInside', false, true]; [[[], {['VIP покинул зону!'] call WMT_fnc_ShowTaskNotification;} ], 'bis_fnc_spawn'] call bis_fnc_MP; 2) Заходишь в атрибуты юнита, даешь ему имя в поле "Имя переменной", например, Ivan. 3) В папке с миссией создаешь файл init.sqf Наполняешь его следующим: if (isServer) then //выполнение только на сервере { if (isNil "isInside") then {isInside = false; publicVariable "isInside";}; missionComplete = false; [] spawn { i = 0; _timeScore = 10; //количество секунд для удержания в зоне while {!missionComplete} do //loop для проверки нахождения ВИПа и подсчет кол-ва секунд удержания { if (isInside) then { i = i + 1; //наращиваем счетчик, если ВИП в зоне } else { i = 0; //обнуляем если - нет }; if (i >= _timeScore && alive Ivan) then //вывод сообщения и завершение миссии после удержания за указанный период времени { [[[], {[resistance, 'VIP удержан в зоне!'] call wmt_fnc_endmission;} ], 'bis_fnc_spawn'] call bis_fnc_MP; //выставляешь ту сторону вместо resistance, которая должна выиграть при удержании ВИПа в зоне [[[], {['VIP удержан в зоне!'] call WMT_fnc_ShowTaskNotification;} ], 'bis_fnc_spawn'] call bis_fnc_MP; missionComplete = true; //переменная-триггер }; sleep 1; //интервал срабатывания цикла 1 сек. }; }; [] spawn { while {alive Ivan && !missionComplete} do //loop на проверку убийства ВИПа { sleep 0.5; }; if (!alive Ivan) then //если убит - выводим сообщение и завершаем миссию { [[[], {[blufor, 'VIP убит!'] call wmt_fnc_endmission;} ], 'bis_fnc_spawn'] call bis_fnc_MP; //выставляешь вместо blufor ту сторону, которая должна выиграть при убийстве юнита [[[], {['VIP убит!'] call WMT_fnc_ShowTaskNotification;} ], 'bis_fnc_spawn'] call bis_fnc_MP; missionComplete = true; }; }; }; P.S.: Кодировка файла должна быть UTF-8, иначе будут проблемы с русскими символами. P.S.S: Проверил в редакторе - все работает, но писал наспех, поэтому возможны проблемы на выделенном сервере.
  4. Еще если добавить возможность горизонтирования орудия, было бы просто замечательно.
  5. Прошу выдать тег [SW]
  6. Прошу снять с меня тег отряда
  7. Прошу выдать тег BL пожалуйста
×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.