Триггер и бессознательное состояние игрока
|
|
def
|
Вторник, 08.12.2015, 13:37
|
|
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
|
|
Попробовал так: (({_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
|
|
(({(_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
|
|
вероятно можно поступить еще правильней, вместо isUnconscious сравнивания расстояние position игрока от центра триггера (формула сложнее, если зона триггера не круглая, а овальная или прямоугольная), но в моем случае это излишняя нагрузка.
|
|
Автор темы
|
|
|
|
|