Создать аккаунт

Editor - F3 - Triggers - Conditions (Условия)

517
0
Загружено: 25 июн 2023, 16:55
Опубликовал: TonaTor

Условия запуска триггера.

Триггер срабатывает, когда значение поля (пункт 4), в котором заданы логические отношения между условиями (пункт 3), становится истинным.

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

Не вейпоинтовые триггеры могут сработать один раз за всю игру,
после чего будут считаться исполненными, (но это можно отменять).
(Исполненными они начинают считаться ещё до начала выполнения своих команд).
Статус исполнения триггеров можно как перезагружать автоматически (в настройках триггера) (пункт 2), так и переключать на желаемый, через команду Trigger (ССЫЛКА) в любых местах любых триггеров.

Триггер нельзя вызывать по собственному желанию;
Можно лишь стимулировать условия, при которых, триггер будет вызван самой игрой.

Если хотите вызывать функции, то делайте это через команду Call (ССЫЛКА) со специальными триггерами, созданными через окно функций (ССЫЛКА).

Частота автоматической проверки условий триггеров составляет примерно - 2-3 раза в секунду. Жёстко ли зависит ли эта частота от квантования движка - НАДО БЫ ПРОВЕРИТЬ!

Тело триггера (блок команд) вызывается в отдельном, новом потоке (исполняемом триггерном процессе).
Причём, каждый вызов триггера - это новый поток.
Всем новичкам - Внимание! Не допускайте ассинхронизацию работы триггера, т.к. это запросто ломает логику происходящего на сцене и логику работы других скриптов!

На скриншоте подписаны следующие элементы:
1) Путь и название выбранного триггера;

2) Флажок автоматической перезагрузки триггера при его исполнении.
(Автоматическая отмена статуса "Исполнен").
При выполнении условий запуска триггеров - игра вновь сможет вызвать этот триггер. Но! Работа этого флажка не явная.
Чтобы триггер перезапускался через этот флажок, нужно, чтобы хотя бы на один такт проверки условий триггеров - условия
выполнения триггера (пункт 4) выдали значение "Ложь";
И только после этого, статус "Исполнен" будет снят с триггера. При этом, статус "Исполнен" может быть автоматически снят, даже если триггер ещё не успел закончить свою работу! Это может запросто привести к ассинхронному выполнению этого же триггера в параллельном потоке и к поломке логики происходящего.

Если вам нужно железобетонное снятие статуса "Исполнен" с триггера;
И при этом вы хотите чтобы это происходило когда это надо вам, а не когда это вздумается игре, то не включайте этот флажок, а делайте это через команду Trigger (ССЫЛКА), которую нужно расположить в конце блока команд триггера.

И разумеется - через флажок не получится перезапускать триггеры, у которых нет условий, т.к. нет значений условий которые будут меняться;
Там всегда будет "Истина".
И не надейтесь, что скрипты будут работать сами по себе и так, как вам это представляется.

3) Список условий, которые игре можно будет принимать во внимание,
в процессе проверки истинности взаимоотношений условий запуска триггера.

Условия имеют следующий формат записи:
3.1) Порядковый номер условия (который привязан к условию, а не к его позиции в списке);
3.2) Название условия;
3.3) Параметры условия в кратком формате (сколько влезло).

Чтобы добавить условие - нужно нажать ПКМ в окне.
 - Появится меню добавления новых условий:

Подробнее об условиях:
 +Camera (ССЫЛКА)
 +Entities (ССЫЛКА)
 +Near (ССЫЛКА)
 +Crew (ССЫЛКА)
 +Linked (ССЫЛКА)
 +See_enemy (ССЫЛКА)
 +See_actors (ССЫЛКА)
 +Arrival (ССЫЛКА)
 +Inventory (ССЫЛКА)
 +Event (ССЫЛКА)
 +Trigger (ССЫЛКА)
 +Rand (ССЫЛКА)
 +Signal (ССЫЛКА)
 +Task (ССЫЛКА)
 +Difficulty (ССЫЛКА)
 +Cmp_i (ССЫЛКА)
 +Mined (ССЫЛКА)
 +Waypoint_canmove (ССЫЛКА)
 +Side (ССЫЛКА)
 +Mod (ССЫЛКА)
 +Altitude (ССЫЛКА)
 +Reinforcements_score (ССЫЛКА)
 +Mission_option (ССЫЛКА)
 +Mp (ССЫЛКА)

*Некоторых условий нет в некоторых редакторах.

Выбрав и нажав на условие - оно добавится в список условий и если строка условий (пункт 4) не была вручную отредактирована, то и туда запишется номер условия (согласно выбранному стандарту условий (по умолчанию - логическое "И")).

Для редактирования параметров условия - нужно дважды нажать на нём ЛКМ.

При нажатии ПКМ на условии - снова появится меню добавления условий, но к нему добавится несколько пунктов:

M.1) Delete - удаляет условие.
При этом запрашивается подтверждение:

*Удаляя условие - не забудьте проверить его удаление из поля логики.

M.2) Up - поднимает условие вверх по списку;
M.3) Down - опускает условие вниз по списку.
*Последние два пункта выполняют декоративную роль.

4) Поле логики взаимоотношения проверяемых условий.
Условия запуска триггера считаются истинными только тогда,
когда результатом расчёта логики взаимоотношений условий - является "Истина".

Для расчета условий применяются номера условий и логические символы.

Условия из списка (пункт 3) могут выдавать только логическую "Истину" или "Ложь".

Логика их взаимосвязи выстраивается следующими элементами:
1) "&" - (Амперсанд) - логическое "И";
2) "|" - (Вертикальная черта) - логическое "ИЛИ";
3) "!" - (Восклицательный знак) - логическое "НЕ" (инверсия значения);
4) "( )" - (Круглые скобки) - нужны для вычисления локального
значения группы условий.

Логическое "И" может выдать истину только в том случае, если
значение аргумента слева и справа истины.
В любом ином случае будет выдаваться ложь.
Примеры:
Истина & Истина = Истина
Истина & Ложь = Ложь
Ложь & Истина = Ложь
Ложь & Ложь = Ложь

Логическое "ИЛИ" может выдать истину в том случае, если
значение хотя бы одного её аргумента (левого или правого) истинно.
Примеры:
Истина | Истина = Истина
Истина | Ложь = Истина
Ложь | Истина = Истина
Ложь | Ложь = Ложь

Логическое "НЕ" - инвертирует значение своего аргумента:
Примеры:
!Истина = Ложь
!Ложь = Истина

Круглые скобки помогают упростить визуальное восприятие логики,
а также помогают оптимизировать условия.
Пример проверки на то, что ни одно условие не сработало:
Без скобок "!1 & !2 & !3"
Со скобками: "!(1 | 2 | 3)"
Условия в скобках анализируются раньше событий вне скобок.
Пользуйтесь!

Примеры:
П.1): "1 | 2 | !3"
 - Условие в целом будет выполнено, если произойдут события 1 или 2 или не произошло событие 3.

П.2) "(1 | !2) & (3 & !4) & (5 | 6 & 7) & !8"
 - Условие в целом будет выполнено если:
1. Произойдет событие 1 или не произошло событие 2
2. Произойдет событие 3 и не произошло событие 4
3. Произойдет событие 5 или 6 и событие 7
4. И не произошло событие 8

Конструкции, как в последнем примере - встречаться может быть будут и не часто.
Но в любом случае - надо развивать свою логику и уделять пристальное внимание логической проработке условий, к которым игрок может прийти самым невероятным образом.


Для редактирования поля логики нудно нажать на нём ПКМ.
Появится меню действий с ним:

M2.1) 1 & 2 &... -  Изменяет стандарт проверки
условий на "все логические И".
Поле логики взаимоотношений очищается; После чего все условия из списка условий перечисляются в нём через логическое "И".

M2.2) 1 | 2 |... - Изменяет стандарт проверки
условий на "все логические ИЛИ".
Поле логики взаимоотношений очищается; После чего все условия из списка условий перечисляются в нём через логическое "ИЛИ".

M2.3) Edit - Позволяет редактировать логику вручную.
Соблюдайте синтаксис. После редактирования нажимайте "Enter".
После ручного редактирования - новые условия из списка условий (пункт 3) перестанут автоматически добавляться в поле логики.
 - Их придётся прописывать вручную.


Небольшой лайвхак напоследок:
Во время симуляции (ССЫЛКА) можно навести курсор на строку логики,
 - При этом появится подсказка, где в квадратных скобках будут
отображаться значения аргументов (Истина - 1; Ложь - 0):

Смотрите также:

Комментарии
Без политики и матов. Комментарии проходят модерацию.