Filter activator team
Оригинал Filter_activator_team
Содержание
Описание
Объекты-фильтры используются чтобы разрешать или запрещать другим объектам или игрокам, активировавшим цепочку событий, выполнять те или иные действия, фильтруя активаторов (!activator) по указанному признаку.
Объекты-фильтры могут использоваться некоторыми объектами неявно (без использования функции "TestActivator"). Объект filter_activator_team фильтрует активаторов (!activator) по признаку их номера команды (team) – Террорист (2), Контр-Террорист (3) или другие.
Особенности использования
- Этот объект обновляется в каждом раунде. Это означает что любые изменения объекта НЕ будут наследоваться в последующих раундах.
- Объект может быть установлен в любом месте на карте.
- На карте может быть установлено множество этих объектов
Ошибки
Внимание: Для многих триггер-объектов (trigger_*), и образованных от них объектов, может применяться событие "OnEndTouch". Нельзя использовать функцию "TestActivator" при событии "OnEndTouch". Это может привести к краху игры(!), в тот момент когда игрок, находясь внутри триггера, отключится от игры.
Заметки
Не только игроки могут быть активаторами (!activator) для фильтра filter_activator_team. Любому объекту на карте можно присвоить номер команды. Это можно сделать, если у объекта есть свойство "Team Num", или если выполнить для этого объекта функцию "<имя_объекта> | SetTeam | <номер_команды>", где <имя_объекта> - это имя любого объекта на карте, а <номер_команды> - это число 2 (Terrorist) или 3 (Counter-Terrorist).
Параметры
- Filter Mode – режим в котором работает фильтр (Разрешать/Запрещать);
- Filter Classname – имя класса объектов, которое будет фильтроваться; допускается использование символов-джокеров * (Wildcard), например:
- prop_* (фильтровать все объекты, имя класса которых начинается на "prop_"),
- player (фильтровать все объекты, имя класса которых равно "player").
Inputs
- TestActivator – проверить активатора (!activator) на признак класса; после вызова этой функции сразу же выполняется одно из событий "OnPass" или "OnFail", в зависимости от результата фильтрации; (у этой функции есть баг, см. пункт "Ошибки").
Outputs
- OnPass – выполняется если активатор (!activator) соответствует критерию фильтра; выполняется только при явном вызове функции "TestActivator";
- OnFail - выполняется если активатор (!activator) НЕ соответствует критерию фильтра; выполняется только при явном вызове функции "TestActivator".
Карта
csssdk_filter_activator_team.vmf
Используются объекты
- filter_activator_team
- trigger_multiple
- func_door
Описание карты
На карте всего две двери. Левая дверь открывает только для Террористов, а правая дверь – только для Контр-Террористов. Когда игроки подходят к дверям, они задевают объект trigger_multiple, для каждой двери свой. Объект trigger_multiple продолжает цепочку событий, вызывая функцию "TestActivator" для соответствующего объекта filter_activator_team. Объект filter_activator_team проверяет принадлежность игрока к той или иной команде и в зависимости от результата проверки открывает или закрывает соответствующие двери.
Обратите внимание, что объект filter_activator_team для двери террористов использует фильтрацию "Разрешить только Террористам", а объект filter_activator_team для двери Контр-Террористов использует фильтрацию "Разрешить всем, кроме Террористов". Если бы у объекта trigger_multiple, отвечающего за открытие дверей для Контр-Террористов, был установлен флажок "Everything", то любой объект смог бы открыть дверь. Даже дверь могла бы сама себя открыть, как бы парадоксально это не звучало.