Объекты-фильтры используются чтобы разрешать или запрещать другим объектам или игрокам, активировавшим цепочку событий, выполнять те или иные действия, фильтруя активаторов (!activator) по указанному признаку.
Объекты-фильтры могут использоваться некоторыми объектами неявно (без использования функции "TestActivator"). Объект filter_damage_type используется только неявно, фильтруя повреждения для объектов в зависимости от типа повреждения (огнём, пулей, взрывом и т.д.).
Внимание: Для многих триггер-объектов (trigger_*), и образованных от них объектов, может применяться событие "OnEndTouch". Нельзя использовать функцию "TestActivator" при событии "OnEndTouch". Это может привести к краху игры(!), в тот момент когда игрок, находясь внутри триггера, отключится от игры.
Фильтр filter_damage_type проверяет тип повреждения на точное соответствие тому, что указан в свойстве "Damage type". Если попробовать скомбинировать значения разных типов повреждения, например: FALL (32) + BURN (8) = 40, присвоив значение 40 свойству "Damage type", фильтр не будет фильтровать такой тип повреждений. Однако можно воспользоваться объектом filter_multi, который позволяет комбинировать несколько фильтров повреждений в один. Используйте свойства "Logic Type" и "Negate
При помощи объекта filter_damage_type невозможно отфильтровать повреждения, наносимые игроку водой – когда игрок долгое время находится под водой.
csssdk_filter_damage_type.vmf
На карте:
Первая группа бочек не реагирует ни на какие типы повреждений, кроме выстрелов из огнестрельного оружия, поэтому эту группу бочек можно уничтожить только стреляя по ней из любого типа огнестрельного оружия (нож, пистолеты, автоматы, дробовики, снайперские винтовки и т.д.). Можете попробовать взорвать первую группу бочек при помощи гранаты, чтобы убедиться в работе фильтра.
Вторую группу бочек можно уничтожить только при помощи взрыва. Возьмите гранату на складе - справа от точки появления игроков. Третью группу бочек невозможно повредить ничем, кроме огня, когда бочки горят сами. Обратите внимание, что огонь, создаваемый объектом env_fire, не может причинить урон этой группе бочек. Нажмите кнопку на первом пульте, чтобы поджечь третью группу бочек при помощи объекта env_entity_igniter.
Через огненную преграду, созданную при помощи сразу нескольких объектов env_fire, игрок вряд ли сможет пробежать и остаться в живых, поэтому напротив площади с огнём был поставлен пульт с кнопкой. Нажав на кнопку пульта, игрок становится невосприимчив к огню на 3 секунды. За это время можно успеть пробежать через всю огненную область. Во время действия этого эффекта кнопка подсвечивается зелёным светом.
Теперь лезем на вышку и ,поднявшись на самый верх, видим стрелку, указывающую направление в котором нужно спрыгивать с вышки. Если спрыгнуть в другую сторону, то игрок получит повреждения при ударе о землю, а если спрыгнуть в правильном направлении, то игрок не получит никаких повреждений при ударе о землю. Когда игрок прыгает с вышки в правильном направлении, в полёте он задевает объект trigger_multiple, который устанавливает для игрока фильтр повреждений, запрещающий урон при падении с большой высоты (FALL). Эффект длится 3 секунды.
Остался только бассейн. Захватите с собой боевую гранату со склада и прыгайте в бассейн с водой. На выходе из бассейна установлен объект trigger_multiple, который снимает с игрока все фильтры повреждений, установленные ранее. Над поверхностью воды установлен объект trigger_multiple, который устанавливает игроку фильтр повреждений, запрещающий любой тип урона. Другими словами - даёт игроку бессмертие! Можете проверить бессмертие на себе, находясь в бассейне, бросив под себя боевую гранату. Как известно, находясь долгое время под водой, игрок начинает задыхаться и это приводит к потере жизни. Но если вовремя выбраться на воздух, то жизнь постепенно автоматически восстановится. Даже имея бессмертие, здоровье игрока под водой будет уменьшаться. Это происходит из-за того, что фильтр повреждений никак не может повлиять на повреждения, полученные от воды.
Находясь в бассейне так же обратите внимание на то, что медленно высовывая голову над поверхностью воды и опустив голову немного вниз, можно увидеть как движок Source отсекает невидимую область карты – в низовье бассейна (там где были бочки). Выглядит это как будто бы там ничего нет и при этом видно голубое небо, хотя должно было быть видно стены. Старайтесь избегать такого безобразия на ваших картах.