Filter Applications

From Valve Developer Community
< Ru
Jump to: navigation, search
English (en)日本語 (ja)Русский (ru)Translate (Translate)

Приложения для фильтров

Этот урок объясняет использование базового класса сущностей под названием «Фильтры». Фильтры - это класс сущностей, которые позволяют запускать или активировать определенные вещи, основываясь на целевом имени, имени класса, типе повреждения или комбинациях всех них. Излишне говорить, что это имеет много полезных приложений в уровне. Если вы разрабатываете форму карты CTF, вам нужно будет использовать фильтры. Они полезны для обеспечения определенных классов сущностей, возможно, только npc_zombie(en), активируют что-то, а npc_crow(en) не активируют его.

Предполагается, что у вас есть базовые знания о сущностях, триггерах и системе ввода-вывода.

Фильтрация целевых URL

Фильтрация по targetname использует объект filter_activator_name(en). Эта сущность разрешает или запрещает вещи посредством определения имени цели конкретного объекта. Требуется три ключевых значения. Для того, чтобы триггер мог вызвать его в мире, ему требуется 'targetname' keyvalue. Для того, чтобы фильтровать объекты, требуется значение keyvalue 'filtername' '. И чтобы определить, что делать с этим фильтром, он требует 'Negated' keyvalue, который может быть установлен в '0' или '1' . Это последнее значение, если оно установлено в 1, разрешает все сущности, соответствующие конкретному имени цели. Если установлено значение 0, оно допускает только объекты с совпадающим именем цели.

Этот триггер имеет довольно много практических применений. Давайте рассмотрим мусорный контейнер с карты железнодорожной станции Half-Life 2. Как игра знает, что вам нужно выбросить банку, а не, скажем, одну из торгового автомата. Как он различает контейнеры вывозимых и может ли вам отбросить? Фильтры.

«Если бы мы должны были воссоздать последовательность, сосредоточив внимание на аспекте фильтра, мы могли бы назвать банку, просто« can », установить имя_фильтра_фильтра с 'filtername' keyvalue 'can' и 'Negated 'Keyvalue of 1. Если мы применим этот фильтр к trigger_once внутри корзины, и, скажем, ради этого урока, этот триггер с близким шумом тревоги (мы также должны установить флаги на Триггер, говорящий о физических предметах.) Итак, когда мы бросаем физический предмет с именем цели «can» в объеме триггера, он будет воспроизводить звуковой сигнал.

Фильтрация имен классов

Фильтрация по имени класса использует объект filter_activator_class(en). Поля 'targetname' и 'negated' применяются здесь одинаково, хотя приложение отличается. У этого объекта есть 'filterclass' keyvalue, в которое вводится имя класса, для которого вы хотите фильтровать (например, npc_zombie.)

Хотя это кажется более обобщенной фильтрацией, которая есть, она имеет свои собственные применения. Например, давайте предположим, что вы делаете последовательность, в которой вы хотите, чтобы некоторые зомби вышли вперед, а когда они попадут в определенную точку, это вызовет шумовой сигнал тревоги (опять же, ради учебника, Используется.) Но что, если у вас есть другие NPC вокруг? Что, если ворона может вызвать звук? Или предметы физики? Это не сработает. Именно здесь применяется фильтрация имен классов.

Нам не нужно называть зомби ничего особенного, так как мы хотим, чтобы зомби вообще запускали триггер. Все, что нам нужно сделать, это установить фильтр триггера в наш filter_activator_class и ввести ключевое значение с именем 'filterclass' со значением npc_zombie . Установите флаги триггера, скажем, для предметов физики и NPC. Настройте выходной сигнал тревоги и разбросайте некоторые элементы физики на карте. Попробуйте бросить их через спусковой крючок. Ничего не произошло. Класс filter_activator_class гарантирует, что триггер активируется только npc_zombies.

Фильтрация типов повреждений

Фильтрация типа повреждения использует, как вы уже догадались,filter_damage_type(en).Он использует те же два ключевых значения, что и два других фильтра, которые мы обсудили, но использует другое значение для повреждения - 'damagetype' . Это нельзя использовать в качестве активатора, например, для запуска триггера, но фильтрует, какие типы повреждений наносятся на что-то. Ниже приведен список значений для различных типов повреждений ключа damagetype:

  • 0: GENERIC
  • 1: CRUSH
  • 2: BULLET
  • 4: SLASH
  • 8: BURN
  • 16: VEHICLE / (TRAIN Team Fortress 2)
  • 32: FALL
  • 64: BLAST
  • 128: CLUB
  • 256: SHOCK (Spawns particle with missing texture in Left 4 Dead 2)
  • 512: SONIC
  • 1024: ENERGYBEAM
  • 16384: DROWN
  • 32768: PARALYSE
  • 65536: NERVEGAS / (SAWBLADE Team Fortress 2)
  • 131072: POISON
  • 262144: RADIATION
  • 524288: DROWNRECOVER
  • 1048576: ACID / (CRITICAL Team Fortress 2)
  • 2097152: SLOWBURN
  • 4194304: REMOVENORAGDOLL
  • 16777216: FULLGIB (в Серия игр Left 4 Dead)
Note.pngПримечание:Some damage types are named incorrectly by default in base.fgd, instead using their GoldSource names.
  • VEHICLE is named FREEZE
  • ACID is named CHEMICAL
  • REMOVENORAGDOLL is named SLOWFREEZE
Tip.pngСовет:Team Fortress 2 Team Fortress 2: Fancy damage effects such as decapitation, disintegration or ice/gold statues on death can be applied via VScript. See TakeDamageCustom function or the trigger example.


Это может быть применено на npcs, например - Annpc_combine_s(en) Будет делать - это может указать, какие вещи могут повредить его. Например, вы можете сделать так, что только ожог повредит ему. Этот объект полезен в сочетании сfilter_multi(en),о чем мы поговорим далее.

Многоуровневая фильтрация

Наконец, существует многотипная фильтрация с использованием filter_multi(en) - это сравнивает все фильтры, которые вы сделали вместе, с помощью сравнения AND или OR, чтобы запустить что-то. И сделает так, чтобы все было пройдено до того, как оно выстрелит, и аналогично ИЛИ сделает так, чтобы прошел только один. Это используется комбинация повреждения, имени или фильтрации имени класса, чтобы сделать более сложный фильтр. Он использует аналогичные ключевые значения, как и те, - а это не делает какой-либо фактической фильтрации себя, он просто объединяет другие, чтобы сделать большой фильтр.

Резюме фильтра

Как видите, фильтрация - ценный ресурс, независимо от того, выполняете ли вы сценарий для Singleplayer или настраиваете последовательности в пользовательском типе deathmatch. Они могут быть очень мощными и полезными, как и любые другие объекты, если они используются правильно. Они также чрезвычайно гибкие. Их приложения почти бесконечны.

Удачной фильтрации!