Префиксы и постфиксы переключения состояний (target) объектов

XashXT

Префиксы и постфиксы переключения состояний (target) объектов

В первоначальной реализации вы уже могли наблюдать данную систему в моде Spirit of Half-Life. Суть её заключалась в возможности явным образом определить поведение активируемоей цели. Это означает, что объекты, которые могут находится в двух-трёх устойчивых состояниях, могут быть переведены в эти состояния явным образом. Классический пример — дверь, func_door. Если дверь находится в режиме «toggle», то каждая последущая активация либо открывает её либо закрывает (в зависимости от текущего состояния), однако у маппера нет возможности всегда активировать дверь только на открытие и, как следствие, игнорировать сигнал открывания двери, если последняя уже открыта.

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

+ Активация цели, включение
- Деактивация цели, выключение
< Установка объекту какого-либо числового параметра через постфикс (параметр зависит от объекта)
> Сброс вышеустановленного параметра у объекта либо пользовательское действие (зависит от объекта)
! Удаление объекта с карты

Параметры + и - работают одинаково на всех энтитях, за исключением тех объектов, активация которых не предусмотрена в принципе, например worldspawn или player. Аналогичным образом работает параметр !, удаляющий объекты с карты, кроме тех объектов, которые защищены движком от случайного удаления. Это игроки и worldspawn.

Параметры < и >, напротив, глубоко индивидуальны для каждой энтити, поскольку в данной реализации отсутствует принципиальная возможность настройки абсолютно любого параметра у любого объекта. Как следствие, для каждой энтити производится настройка лишь его наиболее приоритетного параметра (если таковой вообще имеется). Так, например, у func_rotating данные префиксы позволяют менять скорость вращения и направление движения, для func_screenmovie — устанавливать воспроизведение видеофайла, в произвольно выбранное место, и т. д.

Более подробная информация о тех или иных префиксах расписана в документации на сами энтити. Постфикс в виде числового значения как правило является дополнением к тому или иному префиксу, однако некоторые логические энтити в состоянии пересылать данное числовое значение своим целям без изменения, т. е. пропускать его через себя, не реагируя на него и не внося в него изменения. О подобных особенностях также подробно написано в документации по конкретным объектам.

Ограничения системы

Основным ограничением является непредсказуемость поведения части префиксов, что в свою очередь несколько снижает ценность системы как глобальной.