Итак, все мы с удовольствием отведали итальянской кухни с момента выхода в свет седьмой версии Counter-Strike.
Особенной популярностью пользуются цыплята, приготовленные в перьях на
итальянский манер. О том, как их приготовить в купе с вашим любимым
гарниром (читай, реализовать подобное в ваше карте) и пойдет речь.
Итак, для того, чтобы приготовить цыпленка по-итальянски, вам понадобятся:
- Один цыпленок свежий (файл
models/chick.mdl из папки Half-life\cstrike).
- Пучок перьев куриных (файл
models/feather.mdl из папки Half-life\cstrike).
- Соответствующая атмосфера из итальянских текстур и оперной музыки.
Примечание: вместо цыпленка вы можете использовать любую другую модель (а также свою собственную, предварительно поместив ее в папку
Half-life\cstrike\models). О том, как создавать модели вы узнаете из других выпусков кулинарной книги.
Возьмите свежего цыпленка в перьях и, не обдирая его, поместите в нужное место на карте. Для этого вставьте точечный объект
(point-based entity)
cycler_sprite, ориентируя по вертикали центр объекта по уровню плоскости, на которой будет стоять курица.

После чего, необходимо нафаршировать цыпленка соответствующим
образом. Для этого надо изменить свойства спрайта. Нам интересны
свойства
Sprite и Frames per second. В поле Sprite укажите имя файла-модели
models/chick.mdl, а поле Frames per second оставьте скорость воспроизведения анимации модели равной 1 кадру в секунду. Также укажите имя модели
Name=chicken. Эти нехитрые действия придадут вашему спрайту вид
курицы, которую вы сможете лицезреть, откомпилировав свой уровень.
Выглядит это примерно так:

Приятное зрелище, неправда ли? Однако наш цыпленок, хоть и полностью
приготовлен, еще не обладает тем особым итальянским вкусом, который мы
все от него ждали. А именно, наша курица абсолютно
"пустотела", то есть можно ходить сквозь нее, стрелять
сквозь нее, и
т.д. Не слишком реально? Давайте попробуем исправить это.
Создайте еще четыре точечных объекта где-нибудь рядом с курицей: два объекта
env_render, один объект env_shooter и один ambient_generic. Давайте разберем каждый объект подробно.
Первый объект env_render отвечает за
"рождение" цыпленка. Этот объект способен изменять параметры отображения модели. Дело в том, что в
Counter-Strike невозможно включать/выключать модель с помощью триггера. Чтобы реализовать появление/исчезание модели
cycler_sprite необходимо регулировать ее параметры отображения. Для
включения модели делаем ее полностью непрозрачной, а
для выключения – полностью прозрачной. Поэтому для рождения цыпленка устанавливаем следующие параметры объекта
env_render:
- Name –
chickenrespawn. С помощью имени мы сможем активировать рождение цыпленка в любой момент.
- Target – цель для изменения параметров отображения. Мы хотим сделать видимой нашу модель курицы, поэтому укажем
chicken.
- Параметры отображения
-- определяют непрозрачность объекта.
- Render FX -- Normal
- Render Mode -- Solid
- FX Amount -- 255
- FX Color -- 0 0 0
Второй объект env_render отвечает за исчезание цыпленка, то есть имитирует его смерть. Свойства его следующие:
- Name – chickenkill. С помощью имени мы сможем активировать смерть цыпленка в любой момент.
- Target – Мы хотим сделать видимой нашу курицу, поэтому укажем
chicken.
- Параметры отображения -- определяют прозрачность объекта.
- Render FX -- Normal
- Render Mode -- Solid
- FX Amount -- 0 -- Именно здесь цыпленок становится невидимым!
- FX Color -- 0 0 0
И оставьте в покое флаги обоих объектов -- они вам не понадобятся!
Объект env_shooter поможет нам отделить перья от готового цыпленка. При активации этот объект
выбрасывает указанное количество моделей, в нашем случае -- перьев. Свойства его следующие:
- Name -- перья должны вылетать при убийстве курицы, поэтому имя совпадает с именем второго объекта
env_render -- chickenkill.
- Number of Gibs -- количество перьев, например 20.
- Delay between shots -- не нужен. Оставьте равным 0.
- Gib velocity -- скорость вылета перьев, например 150.
- Course Variance -- отклонение от прямой. Так как это перья, отклонение должно быть значительным, например 4 или 5.
- Gib life -- продолжительность жизни перьев в секундах, после чего они савми изчезнут, например 10.
- Параметры отображения -- не меняем.
- Model -- модель перьев,
models/feather.mdl.
- Repeatable -- установите этот флаг, чтобы можно было потрошить курицу в каждом раунде.
Последни точечным объектом является
ambient_generic. С его помощью имитируется предсмертный крик
цыпленка, который так греет душу каждого проходящего по итальянскому
базарчику террориста. Для нашего случая важны два параметра --
Name=chickenkill и filename=misc/killChicken.wav, а также два флага --
Medium radius и Is NOT Looped. Имя такое же, как и у предыдущих двух объектов, так как все три срабатывают одновременно при смерти курицы.
Похоже, что цыпленок нафарширован должным образом. Осталось совсем
немного -- определить триггеры для рождения и смерти курицы. Начну со
второго, так как это наиболее простой вариант.
Итак, поверх модели курицы создаем невидимый разбиваемый,
брашевый (brush-based) объект func_breakable. Для этого рисуем прямоугольник из текстуры
AAATRIGGER, обращаем его в объект func_breakable и определяем его свойства:
- Target on break -- chickenkill. При
разрушении (выстрел в курицу, а попадание в невидимы разрушаемый
объект), активируется процесс смерти цыпленка -- срабатывают все
объекты
chickenkill (невидимая курица, перья и похоронный марш).
- Strength -- 1. Убивает с одного выстрела наверняка.
- Material type -- Flesh. Объект состоит из плоти и крови.
- Параметры отображения -- эти два параметра, совместно с текстурой
AAATRIGGER делают объект невидимым.
- Render Mode -- Texture
- FX Amount -- 0
Расположение
всех этих объектов выглядит следующим
образом:

Теперь необходимо предусмотреть
появление цыпленка. К сожалению в Counter-Strike
некоторые объекты и их свойства не обнуляются с началом нового раунда,
поэтому приходится делать это вручную. Например, наша курица, после
первой смерти, будет появляться невидимой, что нас совершенно не
устраивает. Чтобы вновь сделать ее
вновь видимой, надо активировать первый
env_render с именем chicken_respawn. Для этого, в месте появления контр- или просто террористов, надо создать невидимый объект
trigger_multiple, указав в качестве мишени chicken_respawn.
Только создать его нужно так, чтобы кто-нибудь обязательно задел или
прошел сквозь него, иначе курица не появится. Также установите параметр
Delay before reset примерно 180. При повторном заходе
в область действия триггера после этого времени и до окончания раунда,
убитая курица "воскреснет", и убить ее вы сможете только в следующем
раунде.
Вот, собственно, и
все, о том как приготовить настоящего
цыпленка по-итальянски. Приятного аппетита!
|