Раздатчик кубов
В этой статье будет шаг за шагом показано, как создать "раздатчик кубов", который есть во всех тестовых камерах. Раздатчики могут быть использованы, чтобы дать игроку новый утяжеленный куб всякий раз, когда предыдущий уничтожен.
Создание
Шаг 1
Создайте энтити prop_dynamic
используя entity tool . Затем выберите модель models/props/box_dropper.mdl
и выключите тени(Disable shadows). После этого создайте prop_dynamic
и выберите модель models/props/box_dropper_cover.mdl
и дайте ему имя box_dropper_model_cover
. Совместите две модели так, чтобы они находились в том же месте, где должен находится раздатчик.
Шаг 2
Далее надо создать дыру в потолке, откуда будут выпадать кубы. Мы используем arch tool . Делаем арку 128l*128w*16h
(длина, ширина, высота) вокруг нашего prop_dynamic
со следующими настройками:
- Wall width: 24
- Number of Sides: 8
- Arc: 360
- Start Angle: 0
- Add Height: 0
Далее используем vertex manipulation tool , чтобы переместить углы арки так, чтобы она напоминала квадрат с отверстием в середине. После этого покройте внутренний край арки текстурой 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 . Далее мы делаем куб. Создайте энтити prop_physics
посередине комнаты и установите модель models/props/metal_box.mdl
, дайте ему имя box
. Укажите ему следующие Outputs:
My Output | Target Entity | Target Input | Parameter | Delay | Only Once | |
---|---|---|---|---|---|---|
OnOutOfWorld | !activator | Kill | 0.00 | No | ||
OnOutOfWorld | logic_drop_box | Trigger | 0.00 | Yes |
Создайте point_template
посередине куба. Дайте ему имя box_template
и в Template 1
укажите box
. Создайте env_entity_maker
где-нибудь в верху шахты и назовите его entity_box_maker
, в Point_template to spawn
укажите box_template
.
Создайте в любом месте на карте filter_activator_name
. Задайте ему имя filter_boxes
, в Filter Name
укажите box
.
Шаг 5
Создайте браш 96w*96l*4h
покрытый текстурой nodraw под крышкой раздатчика. Преобразуйте этот браш в энтити func_brush
. Укажите ему имя stop_tube_plugging
, и укажите Start disabled
на Yes.
Далее создайте 128w*128l*128h
Триггер вокруг модели самого раздатчика. Преобразуйте его в trigger_multiple
и дайте ему имя trigger_box_dropper_clear
, задайте Start disabled
на Yes и в Filter Name
укажите "filter_boxes
". Отправляйтесь во флажки, уберите флаг с "Clients" и поставьте флаг на "Physics objects". Задайте следующие output’ы:
Шаг 6
Создайте logic_relay
и дайте ему имя logic_drop_box
. Задайте ему следующие output’ы:
Шаг 7
Создайте брашы и используйте clipping tool чтобы придать им форму, как показано на скриншоте ниже. Преобразуйте их в func_detail
entity.
Теперь раздатчик готов и может быть использован на карте.
Внедрение на карту
Step 1
Поместите раздатчик на потолке там, где куб должен упасть.
Step 2
Установите триггер для отправки команды "Trigger" в энтити logic_drop_box
. Это можно сделать несколькими способами, используя logic_auto
, чтобы создавать куб при старте уровня, используя trigger_once
чтобы создавать куб, когда игрок зайдет в комнату или используя trigger_look
для создания куба, когда игрок посмотрит на раздатчик.
Step 3
Если на карте есть Поле антиэкспроприации или Токсичная вода , то куб должен заново спавниться, если тот утерян. Для поля антиэкспроприации
или trigger_portal_cleanser
надо добавить output OnDissolveBox. Выглядеть это должно так:
My Output | Target Entity | Target Input | Parameter | Delay | Only Once | |
---|---|---|---|---|---|---|
OnDissolveBox | logic_drop_box | Trigger | 0.00 | No |
Для того, чтобы сделать респавн куба, если тот утонет в токсичной воде, надо создать trigger_multiple
в "Токсичной воде", в фильтрах надо указать filter_boxes
, во флажках надо поставить флаг на Physics objects, со следующими настройками:
My Output | Target Entity | Target Input | Parameter | Delay | Only Once | |
---|---|---|---|---|---|---|
OnStartTouch | !activator | Kill | 0.00 | No | ||
OnStartTouch | logic_drop_box | Trigger | 0.00 | No |