Раздатчик кубов

From Valve Developer Community
< Ru
Jump to navigation Jump to search
English (en)Русский (ru)Translate (Translate)

В этой статье будет шаг за шагом показано, как создать "раздатчик кубов", который есть во всех тестовых камерах. Раздатчики могут быть использованы, чтобы дать игроку новый утяжеленный куб всякий раз, когда предыдущий уничтожен.


Создание

Шаг 1

Создайте энтити prop_dynamic(en) используя entity tool(en). Затем выберите модель models/props/box_dropper.mdl и выключите тени(Disable shadows). После этого создайте prop_dynamic и выберите модель models/props/box_dropper_cover.mdl и дайте ему имя box_dropper_model_cover. Совместите две модели так, чтобы они находились в том же месте, где должен находится раздатчик.

Шаг 2

Далее надо создать дыру в потолке, откуда будут выпадать кубы. Мы используем arch tool(en). Делаем арку 128l*128w*16h(длина, ширина, высота) вокруг нашего prop_dynamic со следующими настройками:

Wall width: 24
Number of Sides: 8
Arc: 360
Start Angle: 0
Add Height: 0

Далее используем vertex manipulation tool(en), чтобы переместить углы арки так, чтобы она напоминала квадрат с отверстием в середине. После этого покройте внутренний край арки текстурой metal/metalwall61f. Нижнюю часть арки покройте текстурой concrete/concrete_modular_ceiling001a.

Шаг 3

Создаем шахту над нашим раздатчиком. Внутренние размеры шахты должны быть 128w*128l(ширина, длина). Высота шахты должна составить 256 юнитов. Разделите шахту на две стороны по 128 юнитов каждая. Нижнюю сторону покройте текстурой metal/metalwall_bts_006a, верхнюю сторону покройте текстурой metal/metalwall_bts_006b_gradient. Наконец, потолок шахты покройте текстурой lights/light_orange001.

Шаг 4

Создайте маленькую 128w*128l*112h комнату над раздатчиком, покрытую текстурой nodraw(en). Далее мы делаем куб. Создайте энтити prop_physics(en) посередине комнаты и установите модель models/props/metal_box.mdl, дайте ему имя box. Укажите ему следующие Outputs:

  My Output Target Entity Target Input Parameter Delay Only Once
Io21.png OnOutOfWorld !activator Kill   0.00 No
Io12.png OnOutOfWorld logic_drop_box Trigger   0.00 Yes


Создайте point_template(en) посередине куба. Дайте ему имя box_template и в Template 1 укажите box. Создайте env_entity_maker(en) где-нибудь в верху шахты и назовите его entity_box_maker, в Point_template to spawn укажите box_template.


Создайте в любом месте на карте filter_activator_name(en). Задайте ему имя filter_boxes, в Filter Name укажите box.

Шаг 5

Создайте браш 96w*96l*4h покрытый текстурой nodraw под крышкой раздатчика. Преобразуйте этот браш в энтити func_brush(en). Укажите ему имя stop_tube_plugging, и укажите Start disabled на Yes.


Далее создайте 128w*128l*128h Триггер вокруг модели самого раздатчика. Преобразуйте его в trigger_multiple(en) и дайте ему имя trigger_box_dropper_clear, задайте Start disabled на Yes и в Filter Name укажите "filter_boxes". Отправляйтесь во флажки, уберите флаг с "Clients" и поставьте флаг на "Physics objects". Задайте следующие output’ы:

  My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnEndTouch entity_box_maker ForceSpawn   0.00 No
Io11.png OnEndTouch box_dropper_model_cover SetAnimation close 0.00 No
Io11.png OnEndTouch stop_tube_plugging Enable   0.00 No
Io21.png OnEndTouch !self Disable   0.00 No
Io11.png OnEndTouch stop_tube_plugging Disable   2.00 No
Io21.png OnTrigger !activator Wake   0.00 No


Шаг 6

Создайте logic_relay(en) и дайте ему имя logic_drop_box. Задайте ему следующие output’ы:

  My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnTrigger box_dropper_model_cover SetAnimation open 0.00 No
Io11.png OnTrigger stop_tube_plugging Disable   0.00 No
Io11.png OnTrigger trigger_box_dropper_clear Enable   0.00 No

Шаг 7

Создайте брашы и используйте clipping tool(en) чтобы придать им форму, как показано на скриншоте ниже. Преобразуйте их в func_detail(en) entity.


Теперь раздатчик готов и может быть использован на карте.

Внедрение на карту

Step 1

Поместите раздатчик на потолке там, где куб должен упасть.

Step 2

Установите триггер для отправки команды "Trigger" в энтити logic_drop_box. Это можно сделать несколькими способами, используя logic_auto(en), чтобы создавать куб при старте уровня, используя trigger_once(en) чтобы создавать куб, когда игрок зайдет в комнату или используя trigger_look(en) для создания куба, когда игрок посмотрит на раздатчик.

Step 3

Если на карте есть Поле антиэкспроприации(en) или Токсичная вода(en), то куб должен заново спавниться, если тот утерян. Для поля антиэкспроприации или trigger_portal_cleanser(en) надо добавить output OnDissolveBox. Выглядеть это должно так:

  My Output Target Entity Target Input Parameter Delay Only Once
Io21.png OnDissolveBox logic_drop_box Trigger   0.00 No


Для того, чтобы сделать респавн куба, если тот утонет в токсичной воде, надо создать trigger_multiple в "Токсичной воде", в фильтрах надо указать filter_boxes, во флажках надо поставить флаг на Physics objects, со следующими настройками:

  My Output Target Entity Target Input Parameter Delay Only Once
Io21.png OnStartTouch !activator Kill   0.00 No
Io11.png OnStartTouch logic_drop_box Trigger   0.00 No

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