Filter damage type

Материал из CSM Wiki
Версия от 07:31, 22 сентября 2009; Kogemyaka (обсуждение | вклад) (Новая страница: «{{sdk beginsrc}} [http://developer.valvesoftware.com/wiki/Filter_damage_type Filter_damage_type] == Описание == Объекты-фильтры использ…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску

Оригинал Filter_damage_type

Описание

Объекты-фильтры используются чтобы разрешать или запрещать другим объектам или игрокам, активировавшим цепочку событий, выполнять те или иные действия, фильтруя активаторов (!activator) по указанному признаку.

Объекты-фильтры могут использоваться некоторыми объектами неявно (без использования функции "TestActivator"). Объект filter_damage_type используется только неявно, фильтруя повреждения для объектов в зависимости от типа повреждения (огнём, пулей, взрывом и т.д.).

Особенности использования

  • Этот объект обновляется в каждом раунде. Это означает что любые изменения объекта НЕ будут наследоваться в последующих раундах.
  • Объект может быть установлен в любом месте на карте.
  • На карте может быть установлено множество этих объектов

Ошибки

  Warning.png Внимание:  Для многих триггер-объектов (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 невозможно отфильтровать повреждения, наносимые игроку водой – когда игрок долгое время находится под водой.

Параметры

  • Filter Mode – режим в котором работает фильтр (Разрешать/Запрещать);
  • Damage Type – тип повреждений, который будет фильтроваться:
    • CRUSH [1] – повреждения, полученные в результате любых физических столкновений и взаимодействий; например: удар бревном, падение физических объектов с большой высоты, действие силы тяжести и т.п.; (может использоваться как для разрушаемых объектов, так и для игроков);
    • SLASH [5] – повреждения от острых предметов; например: физические объекты могут указывать в свойстве "Impact Damage Type" какой тип повреждений они наносят – тупой (CRUSH) или острый (SLASH); (может использоваться как для разрушаемых объектов, так и для игроков);
    • BURN [8] – повреждения огнём от объекта env_fire; (может использоваться как для разрушаемых объектов, так и для игроков);
    • FALL [32] – повреждение от падения с большой высоты; (может использоваться только для игроков);
    • BLAST [64] – повреждения взрывом; (может использоваться как для разрушаемых объектов, так и игроков);
    • CLUB [128] – повреждения от броска гранатами; (может использоваться как для разрушаемых объектов, так и для игроков);
    • ENERGYBEAM [1024] – повреждения от объекта env_beam; (может использоваться как для разрушаемых объектов, так и для игроков);
    • BULLET CS:S [4098] – повреждения от пуль при выстреле из любого вида оружия, в том числе и ножа; (может использоваться как для разрушаемых объектов, так и для игроков);
    • LASER CS:S [67108864] – повреждения от объекта env_laser; (может использоваться как для разрушаемых объектов, так и для игроков);
    • BLAST UNDERWATER CS:S [134217792] – повреждения взрывом, который не должен задевать объекты, находящиеся под водой; этот тип повреждений не учитывается игрой CS:S, поэтому под водой все объекты будут получать подобное повреждение;
    • SLOWBURN CS:S [268435464] – повреждения при горении огнём - когда горит сам игрок или объект; (может использоваться как для разрушаемых объектов, так и для игроков);

Inputs

  • TestActivator – проверить активатора (!activator) на признак класса; после вызова этой функции сразу же выполняется одно из событий "OnPass" или "OnFail", в зависимости от результата фильтрации; (у этой функции есть баг, см. пункт "Ошибки").

Outputs

  • OnPass – выполняется если активатор (!activator) соответствует критерию фильтра; выполняется только при явном вызове функции "TestActivator";
  • OnFail - выполняется если активатор (!activator) НЕ соответствует критерию фильтра; выполняется только при явном вызове функции "TestActivator".

Карта

csssdk_filter_damage_type.vmf

Используются объекты

  • filter_damage_type
  • func_button
  • func_detail
  • prop_physics
  • env_entity_igniter
  • env_fire
  • prop_static
  • trigger_multiple
  • weapon_hegrenade
  • WATER
  • env_cubemap
  • water_lod_control

Описание карты

На карте:

    • три группы бочек;
    • площадь, охваченная огнём;
    • небольшой бассейн с водой;
    • вышка, с которой не допрыгнуть до бассейна;
    • комплект боевых гранат.

Первая группа бочек не реагирует ни на какие типы повреждений, кроме выстрелов из огнестрельного оружия, поэтому эту группу бочек можно уничтожить только стреляя по ней из любого типа огнестрельного оружия (нож, пистолеты, автоматы, дробовики, снайперские винтовки и т.д.). Можете попробовать взорвать первую группу бочек при помощи гранаты, чтобы убедиться в работе фильтра.

Вторую группу бочек можно уничтожить только при помощи взрыва. Возьмите гранату на складе - справа от точки появления игроков. Третью группу бочек невозможно повредить ничем, кроме огня, когда бочки горят сами. Обратите внимание, что огонь, создаваемый объектом env_fire, не может причинить урон этой группе бочек. Нажмите кнопку на первом пульте, чтобы поджечь третью группу бочек при помощи объекта env_entity_igniter.

Через огненную преграду, созданную при помощи сразу нескольких объектов env_fire, игрок вряд ли сможет пробежать и остаться в живых, поэтому напротив площади с огнём был поставлен пульт с кнопкой. Нажав на кнопку пульта, игрок становится невосприимчив к огню на 3 секунды. За это время можно успеть пробежать через всю огненную область. Во время действия этого эффекта кнопка подсвечивается зелёным светом.

Теперь лезем на вышку и ,поднявшись на самый верх, видим стрелку, указывающую направление в котором нужно спрыгивать с вышки. Если спрыгнуть в другую сторону, то игрок получит повреждения при ударе о землю, а если спрыгнуть в правильном направлении, то игрок не получит никаких повреждений при ударе о землю. Когда игрок прыгает с вышки в правильном направлении, в полёте он задевает объект trigger_multiple, который устанавливает для игрока фильтр повреждений, запрещающий урон при падении с большой высоты (FALL). Эффект длится 3 секунды.

Остался только бассейн. Захватите с собой боевую гранату со склада и прыгайте в бассейн с водой. На выходе из бассейна установлен объект trigger_multiple, который снимает с игрока все фильтры повреждений, установленные ранее. Над поверхностью воды установлен объект trigger_multiple, который устанавливает игроку фильтр повреждений, запрещающий любой тип урона. Другими словами - даёт игроку бессмертие! Можете проверить бессмертие на себе, находясь в бассейне, бросив под себя боевую гранату. Как известно, находясь долгое время под водой, игрок начинает задыхаться и это приводит к потере жизни. Но если вовремя выбраться на воздух, то жизнь постепенно автоматически восстановится. Даже имея бессмертие, здоровье игрока под водой будет уменьшаться. Это происходит из-за того, что фильтр повреждений никак не может повлиять на повреждения, полученные от воды.

Находясь в бассейне так же обратите внимание на то, что медленно высовывая голову над поверхностью воды и опустив голову немного вниз, можно увидеть как движок Source отсекает невидимую область карты – в низовье бассейна (там где были бочки). Выглядит это как будто бы там ничего нет и при этом видно голубое небо, хотя должно было быть видно стены. Старайтесь избегать такого безобразия на ваших картах.

Смотрите также