• Страница 1 из 1
  • 1
Триггер и бессознательное состояние игрока
def
Вторник, 08.12.2015, 13:37
Пост №: 1
4 охранника базы (юнитам присвоены имена o1,o2,o3,o4)
группа атакующих

жесткое условие: (если хоть один из охранников выйдет за пределы базы) или (все охранники будут уничтожены), __ то триггер срабатывает

Получился такой код:
(({_x in list autobase1} count [o1,o2,o3,o4]) != ({alive _x} count [o1,o2,o3,o4])) || ({alive _x} count [o1,o2,o3,o4] < 1)

Проблема:
При падении игрока в бессознательное состояние, триггер считает, что данный игрок более не находится в границах триггера, т.е. убежал с охраняемого объекта.

Пробовал так:
(({_x in list autobase1 || [_x] call ace_sys_wounds_fnc_isUncon} count [o1,o2,o3,o4]) != ({alive _x} count [o1,o2,o3,o4])) || ({alive _x} count [o1,o2,o3,o4] < 1)

либо  ACE_fnc_isUncon вместо ace_sys_wounds_fnc_isUncon, но так ничего и не добился, эти функции ace то возвращают что-то странное (1 для не раненых) либо вообще ничего не возвращают (и в логе без ошибок).

Кто-то знает решение проблемы?
Сообщение отредактировал def - Вторник, 08.12.2015, 14:45

Автор темы
 
def
Вторник, 08.12.2015, 13:58
Пост №: 2
Попробовал так:
(({_x in list autobase1 || _x getvariable ["ACE_isUnconscious", false]} count [o1,o2,o3,o4]) != ({alive _x} count [o1,o2,o3,o4])) || ({alive _x} count [o1,o2,o3,o4] < 1)

лучше стало, но не очень - положил бойца в бессознанку
o2 call ace_medical_fnc_setUnconscious
, считал
o2 call ace_sys_wounds_fnc_isUncon
- все верно, показывает, что без сознания. Сделал так раза три - как только в одну из итераций боец пришел в себя, триггер почему-то сработал. Подозреваю, что в момент проверки условия триггера между получением значений (in list \ isUncon \ count alive) условия успевают поменяться.
Сообщение отредактировал def - Вторник, 08.12.2015, 14:00

Автор темы
 
def
Вторник, 08.12.2015, 14:26
Пост №: 3
(({(_x in list autobase1) || (_x getvariable ["ACE_isUnconscious", false]) || (!alive _x)} count [o1,o2,o3,o4]) < 4 ) || ({alive _x} count [o1,o2,o3,o4] < 1)
Работает намного лучше, т.к. проверка по каждому конкретному юниту выполняется последовательно, в сравнении с предыдущим вариантом, но все-равно пару раз (из 20 тестов) выдала ошибочное срабатывание.
Сообщение отредактировал def - Вторник, 08.12.2015, 14:34

Автор темы
 
def
Среда, 09.12.2015, 08:24
Пост №: 4
вероятно можно поступить еще правильней, вместо isUnconscious сравнивания расстояние position игрока от центра триггера (формула сложнее, если зона триггера не круглая, а овальная или прямоугольная), но в моем случае это излишняя нагрузка.
Автор темы
 
  • Страница 1 из 1
  • 1
Поиск: