|
|
Модератор форума: Slon |
Форум РЕДАКТОР - ArmA 2 Operation Arrowhead Скрипты Отлёт вертолёта по истечению времени (Не работает скрипт) |
Отлёт вертолёта по истечению времени |
› Воскресенье
› 29.04.2018
› 23:20
› Сообщение #
Всем привет,
Делаю простенькую миссию по удержанию точки до прибытия вертолёта. Замысел в следующем: есть вейпоинт вертолета "перемещение", как только он подлетает к точке и садится "по активации" срабатывает активация (задается значение true) переменной timeron. Она запускает параллельно 2 триггера: Таймер и триггер, который запускает cargocheck.sqf Суть триггера таймера, что по истечению 30 секунд он активирует (задает значение true) переменную timeoff и cargovert (пропускает вейпоинт "остановиться" у вертолета, чтобы он улетел). timeoff используется в скрипте cargocheck.sqf в цикле while. То есть тем самым ,по моему замыслу, игроку дается 30 секунд на то, чтобы погрузиться в вертолёт (учитываются все члены группы игрока). Если вертолет улетает без игрока и его подчиненных, то засчитывается поражение. Если в вертолете отряд игрока есть на момент отлёта засчитывается победа. Привожу код скрипта ниже с комментами. Может кто подскажет, что я делаю не так ? При срабатывании скрипта, обработчик ругается на 2-ю строчку кода. Код _playerGrp = units group pl; /* Пытаюсь записать в переменную всех членов группы игрока */ _isInVert = _playerGrp in vert; /* Группа игрока в вертолёте */ while {!timeoff} do { /* Срабатывает цикл, пока timeoff не станет равен true. Этим управляет отдельный триггер Таймер. По истечению 30 секунд в Таймере присваивается переменной значение true */ if (_isInVert) then { cargovert = true; /* Если эта переменная становится true, то активируется триггер который пропускает маршрутную точку "Остановиться" у вертолёта, игнорируя таймер */ endon = true; /* Если true то запускается триггер победы */ timeoff = true; } else { endon = false; /* Если false то запускается триггер поражения */ }; }; Добавлено (29.04.2018, 23:20) |
› Понедельник
› 30.04.2018
› 15:19
› Сообщение #
Команда in группы не обрабатывает.
И вообще, считать загрузившихся надо либо после цикла ожидания, if ({ ! (_x in vert)} count (units _playerGrp) == 0) then {...} либо внутри него с возможностью прерывания цикла. if ({ ! (_x in vert)} count (units _playerGrp) == 0) exitWith {} Сообщение отредактировал andrucio - Понедельник, 30.04.2018, 15:26
|
› Понедельник
› 30.04.2018
› 16:21
› Сообщение #
andrucio, спасибо, огромное. Скрипт работает, как я и задумывал. Теперь миссия смотрится более динамично и менее линейно. Вертолёт может улететь без игрока и его группы.
Выкладываю обновленную версию, может кому пригодится, как пример реализации такой фичи: Код _playerGrp = group pl; endon = false; /* По умолчанию стоит "Поражение" для триггера завершающего миссию поражением*/ while {!timeoff} do { if ({ ! (_x in vert)} count (units _playerGrp) == 0) exitWith { cargovert = true; /* true активирует триггер завершающей миссию победой */ endon = true; /* Изменяем триггер отвечающий з */ timeoff = true; /* Выход из цикла */ } }; |
| |||
| |||
Чат сайта |