Префиксы переключения состояний объектов
В первоначальной реализации вы уже могли наблюдать данную систему в моде Spirit of Half-Life. Суть её заключалась в возможности явным образом определить поведение активируемоей цели. Это означает, что объекты, которые могут находится в двух-трёх устойчивых состояниях, могут быть переведены в эти состояния явным образом. Классический пример — дверь, func_door. Если дверь находится в режиме «toggle», то каждая последущая активация либо открывает её либо закрывает (в зависимости от текущего состояния), однако у маппера нет возможности всегда активировать дверь только на открытие и, как следствие, игнорировать сигнал открывания двери, если последняя уже открыта.
Основное назначение префикс-системы как раз и призвано восполнить данный пробел и значительно расширить возможности маппера, попутно сделав его скрипты более стабильными и независимыми от поведения игрока, который может блокировать те или иные объекты, нарушая правильную работу скриптов. Итак, поле активации объектов (обычно называется Target
), может содержать следующие префиксы:
Префикс | Описание |
---|---|
+ | Активация цели, включение |
- | Деактивация цели, выключение |
< | Установка объекту какого-либо числового параметра через постфикс (параметр зависит от объекта) |
> | Сброс вышеустановленного параметра у объекта либо пользовательское действие (зависит от объекта) |
! | Удаление объекта с карты |
Параметры +
и -
работают одинаково на всех энтитях, за исключением тех объектов, активация которых не предусмотрена в принципе, например worldspawn или player. Аналогичным образом работает параметр !
, удаляющий объекты с карты, кроме тех объектов, которые защищены движком от случайного удаления. Это игроки и worldspawn.
Параметры <
и >
, напротив, глубоко индивидуальны для каждой энтити, поскольку в данной реализации отсутствует принципиальная возможность настройки абсолютно любого параметра у любого объекта. Как следствие, для каждой энтити производится настройка лишь его наиболее приоритетного параметра (если таковой вообще имеется). Так, например, у func_rotating данные префиксы позволяют менять скорость вращения и направление движения, для func_screenmovie — устанавливать воспроизведение видеофайла, в произвольно выбранное место, и т. д.
Более подробная информация о тех или иных префиксах расписана в документации на сами энтити. Постфикс в виде числового значения как правило является дополнением к тому или иному префиксу, однако некоторые логические энтити в состоянии пересылать данное числовое значение своим целям без изменения, т. е. пропускать его через себя, не реагируя на него и не внося в него изменения. О подобных особенностях также подробно написано в документации по конкретным объектам.