Editor - F3 - Triggers - Commands - Generic - Switch
Команда-условный оператор каскадной проверки.
Предназначена для проверки списка условий до тех пор, пока либо не будет найдено рабочее условие,
либо не сработает вариант default.
Чтобы добавить вариант проверки, нужно нажать на команде ПКМ и выбрать вариант CASE.
Вариант DEFAULT срабатывает если ни один CASE не сработал.
DEFAULT если вам понадобится, то его нужно добавлять последним.
Чтобы настроить проверку условий выбранного варианта, нужно дважды кликнуть на нём ЛКМ.
Появится окно настройки параметров варианта:
Параметры:
1) Type (ссылка удалена) - Выбор типа условия;
2) Mode (ссылка удалена) - Режим работы условия.
Чтобы добавить команды внутрь вариантов, нужно нажать на варианте ПКМ и выбрать пункт Add inside.
(Команды на своём уровне можно добавлять просто по Add)
1) Копировать или перемещать команды из (в) условные операторы
(и между вариантами) - невозможно.
2) Условные операторы и варианты удаляются вместе со всем содержимым.
(При этом запрашивается подтверждение).
Примечания:
1) Настраивать условия для варианта DEFAULT - невозможно;
2) DEFAULT может быть только один, и должен быть только в конце;
3) Через эту команду можно организовывать аналог конструкции IF-ELSE.
Принцип равного распределение вероятностей свича:
Т.к. свич обрабатывает все условия срабатывания последовательно, то логично, что к последнему из заданных вариантов он обратится с наименьшей вероятностью.
Для парирования этого - вероятности следует рассчитывать исходя из их числа:
1) N=Кол-во, V=0, K=1; 2) Вариант V [rand = K/N]; 3) N=N-1, V=V+1.
Где:
N - Это кол-во вариантов (всех case плюс один default);
V - Это текущий вариант (Перечислитель);
K - Это базовый коэффициент вероятности (по умолчанию 1 = 100%)
Например, для равномерного распределения четырёх вероятных событий будет такой расчёт:
0.25 = 1/4
0.33 = 1/3
0.5 = 1/2
1 = 1/1
Получаемый свичер будет таким:
switch
...case rand 0.25
......[Команды]
...case rand 0.33
......[Команды]
...case rand 0.5
......[Команды]
...default
......[Команды]
Примечание:
Для изменения вероятности конкретного варианта нужно менять
базовый коэффициент самого варианта для case, и вообще всех коэффициентов case (поровну) для default.
Принцип IF-ELSE, реализуемый через свитч:
Т.к. в скриптах миссий не предусмотрена конструкция контр-условия (ELSE), то её приходится реализовывать через свич.
Делается это просто:
switch
...case [Условие] - Это будет IF`ом
......[Команды]
...default - Это будет ELSE
......[Команды]