Применение фильтров
Применение фильтров
Этот урок объясняет использование основного класса объектов под названием «фильтры». Фильтры - это класс объектов, которые позволяют запускать или активировать определённые действия на основе имени целевого объекта, имени класса, типе урона или их комбинации. Естественно это будет полезным для различного применения на карте. Если разрабатываете карту в формате CTF, нужно будет использовать фильтры, чтобы игроки не жульничали захватывая свой собственный флаг для заработка баллов. Они полезны для обеспечить возможности/запреты только объектам указанного класса, например npc_zombie смогут активировать что-то, а npc_crow не смогут.
Предполагается, что вы обладаете общими знаниями об объектах, переключателях и системе ввода-вывода, это лишь общее описание типов фильтрации и их назначения.
Выбор имени целевых объектов
Фильтрация по targetname использует объект filter_activator_name. Этот объект разрешает или запрещает вещи посредством определения конкретного имени целевого объекта. Требуется три ключа-параметра. Для того, чтобы переключатель мог вызвать его в мире, ему требуется ключ-параметр targetname. Для того, чтобы фильтровать объекты, требуется значение ключа-параметра filtername. И чтобы определить, что делать с этим фильтром, он требует ключа-параметра Negated, который может быть установлен в 0
или 1
. Это последнее значение, если оно установлено в 1, разрешает все объекты, соответствующие конкретному имени целевого объекта. Если установлено значение 0, оно допускает только объекты с совпадающим именем цели.
Этот переключатель имеет довольно много практических применений. Давайте рассмотрим мусорный контейнер с карты железнодорожной станции Half-Life 2. Как игра знает, что вам нужно выбросить банку, а не, скажем, одну из торгового автомата. Как он различает контейнеры вывозимых и может ли вам отбросить? Фильтры.
Если бы мы должны были воссоздать последовательность, сосредоточив внимание на аспекте фильтра, мы могли бы назвать банку, просто can
, установить в filter_activator_name ключ-параметр filtername со значеним can и ключ-параметр Negated в 1
. Если мы применим этот фильтр к trigger_once внутри корзины, и, скажем, ради этого урока, этот переключатель с близким шумом тревоги (также необходимо установить признаки переключателя, для распознавания физических объектов). Итак, когда мы бросаем физический объект с именем can
в объём переключателя, он будет воспроизводить звуковой сигнал.
Выбор имён классов
Для фильтрации по имени класса используется объект filter_activator_class. Поля targetname и negated используются здесь аналогично, хотя применение отличается. У этого объекта есть ключ-параметр filterclass в котором указывается имя класса по которому будет выполняться фильтрация (например, npc_zombie).
Хотя это кажется более обобщенной фильтрацией, которая есть, она имеет свои собственные применения. Например, давайте предположим, что создаёте последовательность, в которой хотите, чтобы некоторые зомби вышли вперед, а когда они попадут в определенную точку, это вызовет шумовой сигнал тревоги (опять же, ради учебника, Используется). Но что, если у вас есть другие НИП вокруг? Что, если ворона может вызвать звук? Или предметы физики? Это не сработает. Именно в таких случаях применяется фильтрация имён классов.
Нам не нужно придумывать для зомби специального имени, нужно чтобы от зомби просто срабатывал переключатель. Всё, что нужно сделать, это установить фильтр переключателя в наш filter_activator_class
и указать для ключа-параметра filterclass значение npc_zombie
. Установите признаки переключателя, скажем, физические объекты и НИПы. Настройте выходной сигнал тревоги и разбросайте некоторые элементы физики на карте. Попробуйте пробросить их через переключатель. Ничего не произошло. Класс filter_activator_class
гарантирует, что переключатель активируется только npc_zombies
.
Выбор типа урона
Для фильтрация типа повреждения используется объект filter_damage_type. Он использует те же два ключа-параметра, что и два предыдущих фильтра, но использует другое значение для урона - damagetype. Это нельзя использовать в качестве активатора, например, для запуска переключателя, но фильтрует, какие типы ущерба наносятся чему-либо. Ниже приведен список значений для указания различных типов урона в ключе-параметре damagetype:
- 0: GENERIC
- 1: CRUSH
- 2: BULLET
- 4: SLASH
- 8: BURN
- 16: VEHICLE / (TRAIN
)
- 32: FALL
- 64: BLAST
- 128: CLUB
- 256: SHOCK (Spawns particle with missing texture in
)
- 512: SONIC
- 1024: ENERGYBEAM
- 16384: DROWN
- 32768: PARALYSE
- 65536: NERVEGAS / (SAWBLADE
)
- 131072: POISON
- 262144: RADIATION
- 524288: DROWNRECOVER
- 1048576: ACID / (CRITICAL
)
- 2097152: SLOWBURN
- 4194304: REMOVENORAGDOLL
- 16777216: FULLGIB (в
)

VEHICLE
is namedFREEZE
ACID
is namedCHEMICAL
REMOVENORAGDOLL
is namedSLOWFREEZE


Это можно применить к НИП npc_combine_s , чтобы указать, что может повредить его. Например, можно сделать так, чтобы наносился урон только от огня. Этот объект полезен в сочетании с filter_multi, о чём поговорим далее.
Комбинированый отбор
Наконец, существует комбинированная фильтрация с использованием filter_multi. В этом случае все созданные фильтры используются одновременно, или с помощью операторов И или ИЛИ выбирается, чтобы что-то сработало. И подразумевает, что для срабатывания должны выполниться все условия, в свою очередь ИЛИ подразумевает, что для срабатывания достаточно выполнения одного любого условия. При этом используется набор типов урона, имени объекта или класса для создания сложного фильтра. Он использует аналогичные ключи-параметры, точно также. Фактически сам не выполняет никакой фильтрации, только объединяет значения, чтобы сделать сложный фильтр.
Удачного выбора объектов!