Перейти к содержимому


Фотография

Триггер на нахождение целой группы в транспорте?


Лучший Ответ Schatten , 18 July 2019 - 23:05

Подскажите где ошибка для группы и как создать триггер на нахождение целой группы в заданном транспорте?

Ошибка в неправильном использовании команды in, об этом игра сообщит (в частности, сообщение размещено в RPT-файле).
А это условие активации триггера:

((units EscapeTeam) findIf { (alive _x) and { !(_x in Boat1) } }) < 0
Перейти к сообщению


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 OFFLINE   mickeymen

mickeymen

    Ст. Прапорщик

  • Пользователи
  • 731 сообщений

Отправлено 18 July 2019 - 22:51

Доброго времени суток у меня  простой вопрос.

 

Подскажите пожалуйста как создать триггер на нахождение группы в транспорте?

 

Например я разместил группу пехотинцев, в Init группы я поставил

EscapeTeam = group this;

Таким образом группа называется - EscapeTeam

 

далее мне нужен триггер на нахождение этой группы в лодке с именем Boat1. Как только вся группа полностью сядет в лодку, нужно чтобы сработал триггер.

 

Я пробовал вставлять в условие триггера:

EscapeTeam in Boat1

но это не работает, есть сообщение об ошибке. Если я использую один юнит, например 

player in Boat1

тогда триггер срабатывает, в итоге я не могу создать триггер для целой группы внутри транспорта, а для одного юнита это работает.

 

Подскажите где ошибка для группы и как создать триггер на нахождение целой группы в заданном транспорте?


Сообщение отредактировал mickeymen: 18 July 2019 - 22:52

  • 0

#2 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1780 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 18 July 2019 - 23:05   Лучший Ответ

Подскажите где ошибка для группы и как создать триггер на нахождение целой группы в заданном транспорте?

Ошибка в неправильном использовании команды

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

, об этом игра сообщит (в частности, сообщение размещено в RPT-файле).
А это условие активации триггера:

((units EscapeTeam) findIf { (alive _x) and { !(_x in Boat1) } }) < 0

Сообщение отредактировал Schatten: 18 July 2019 - 23:08

  • 0

#3 OFFLINE   mickeymen

mickeymen

    Ст. Прапорщик

  • Пользователи
  • 731 сообщений

Отправлено 19 July 2019 - 02:20


Ошибка в неправильном использовании команды in

 

 

вот странность, если переменная это один юнит тогда это не ошибка, а если переменная это отряд, тогда ошибка. Видимо такая особенность

 

 

 


А это условие активации триггера

Да сработало! большое спасибо! 

 

однако выглядит строка чрезмерно сложно. Не могли бы вы ее разъяснить?

 

что означает - alive _x (живой х)  - Кто это или что это в данном случае - живой _x ?

 

что означает - !(_x in Boat1я знаю что ! - это "НЕ", но понятия не имею что это такое в сумме. 

 

Но больше всего не понимаю почему все это <  0 ? Хотелось бы понять каждое значение.


Сообщение отредактировал mickeymen: 19 July 2019 - 02:22

  • 0

#4 OFFLINE   moroz89

moroz89

    Мл.сержант

  • Пользователи
  • 116 сообщений

Отправлено 19 July 2019 - 05:34

(units EscapeTeam) вернет массив всех юнитов группы.
findIf выполнит код справа для каждого элемента массива (то есть для каждого юнита). В коде используется MagicVariable _x. Каждый раз, когда выполняется код, вместо _x подставляется следующий элемент массива (юнит в Вашем случае).
Код вернет индекс элемента массива, для которого код вернет true. Если такого элемента нет, то вернет -1.
Каждого юнита проверяем:
Что он жив (alive _x),
Что он не в лодке !(_x in Boat1).
По итогу, findIf вернет >=0, только в том случае, если оба условия правда. Юнит жив (true) и юнит не в лодке !(false).
Если этого не произошло, значит вернет -1, поэтому и нужна проверка < 0.
  • 1

#5 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1780 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 19 July 2019 - 10:31

moroz89, классное объяснение! Могу лишь добавить две вещи:

1 Проще говоря, триггер активируется, если не окажется юнитов в группе, которые живы и не в лодке. То есть остальные будут или мёртвыми (причём не важно, в лодке или нет), или живыми и в лодке.

2 Нужно обязательно проверять, жив ли юнит, поскольку мёртвые юниты тоже состоят в группе. Если не проверять, то триггер не активируется, пока все юниты (и живые, и мёртвые) не окажутся в лодке. И если живые могут залезть в лодку, то мёртвые нет.


Сообщение отредактировал Schatten: 19 July 2019 - 11:15

  • 0

#6 OFFLINE   mickeymen

mickeymen

    Ст. Прапорщик

  • Пользователи
  • 731 сообщений

Отправлено 21 July 2019 - 02:07

Ребята спасибо за ваше разъяснения


  • 0




Яндекс.Метрика