Канал в IRC
RusNet: #cmt
Учебник по созданию карт
Глава VII. Разное.

§ 7.5 Активация нескольких объектов (multi_manager)

В этой статье мы расскажем о принципе действия очень полезного объекта multi_manager, который применяется для последовательной активации нескольких объектов через заданные промежутки времени. Для создания тестовой карты мы будем использовать следующие энтити-объекты:

Multi_manager является точечным энтити-объектом, поэтому место его расположения на карте роли не играет. Данный объект в игре невидим и никак не мешает игрокам передвигаться. В обычных свойствах этого объекта есть лишь один параметр Name, т.е. имя multi_manager'a. Имя обязательно нужно указывать для возможности активации.

Основные же параметры выставляются при отжатой кнопке "SmartEdit" (см. рис. ниже).

Нажмем кнопку "Add", чтобы добавить новую запись. Появится небольшое окошко. В строку "Key" вписывается имя объекта, который необходимо активировать, а в строку "Value" - время в секундах до активации. Время можно задавать не только целыми секундами: 0,1,2,3.., но и секундами с десятыми или сотыми долями (0.1, 0.25, 0.5, 1.3, 2.7, 73.5). Дробная часть отделяется точкой.

Добавление нового объекта в свойства multi_manager


Multi_manager позволяет активировать до 16 различных объектов. А если учесть, что в качестве активируемого объекта может сам multi_manager, то общее количество контролируемых объектов может быть довольно большим.

Давайте рассмотрим простой пример. У нас есть небольшая комната, в центре которой расположен источник света light. По углам комнаты расположены еще 4 лампочки light, которые в начале раунда будут выключены (установлен флажок "Initially dark"). Имена у лампочек следующие: light1, light2, light3, light4.

Смысл эксперимента заключается в последовательном включении и выключении каждой лампочки (эдакая дискотека в стиле 80-х годов :). Последовательность включения и выключения лампочек, а также время активации запишем в свойства multi_manager при отжатой кнопке "SmartEdit". Дополнительно создадим на стене кнопку (func_button), которая будет активировать multi_manager, а тот в свою очередь цепочку из 4-х лампочек (см. рис. ниже).

Игрок нажимает на кнопку, кнопка активирует multi_manager, multi_manager активирует цепочку лампочек


Итак, последовательность действий следующая:

(1) игрок нажал на кнопку (func_button)
(2) кнопка запускает multi_manager
(3) multi_manager включает/выключает лампочки с заданными интервалами:

лампочка-1 через 0.0 с - ВКЛ.
лампочка-1 через 0.5 с - ВЫКЛ.
лампочка-2 через 0.5 с - ВКЛ.
лампочка-2 через 1.0 с - ВЫКЛ.
лампочка-3 через 1.0 с - ВКЛ.
лампочка-3 через 1.5 с - ВЫКЛ.
лампочка-4 через 1.5 с - ВКЛ.
лампочка-4 через 2.0 с - ВЫКЛ.

В свойства multi_manager для удобства будем вписывать включение и выключение лампочек, расстанавливая их по времени активации, но в принципе последовательность записи значения не имеет. Если в свойства multi_manager вписать объект, который уже есть в списке, то к имени такого объекта будут добавлены символы #1, #2, #3 и т.д. (см. рис. ниже).

При повторной активации объекта, уже имеющегося в списке, к его имени добавляются знаки #1, #2 ...


Объекту multi_manager присвоим имя lgt_multi и впишем это имя в свойства кнопки (func_button) в параметр "Targetted object". Вот собственно и все. Когда игрок нажмет кнопку, по очереди загорятся и погаснут четыре лампочки по углам комнаты.

У объекта multi_manager есть один флаг "multithreaded". Если этот флаг отмечен, то multi_manager запустится повторно независимо от того, выполняет он какую-то последовательность действий или нет. Если флаг не отмечен, то multi_manager нельзя запустить повторно, пока он не закончит активацию последнего объекта из списка.

В современных картах объект multi_manager применяется довольно часто. Например, при помощи multi_manager'a можно запускать несколько звуков или активировать цепочку взрывов.


Ссылки

multi_manager.zip [12Кб] - в архиве карта-пример в форматах BSP и RMF.


Глава VII. Разное.


К оглавлению Учебника

© http://cs-mapper.by.ru/
CMT (CS Mapping Tutorials) - © 2006-2011. Created by VM
[ Script Execution time: 0.0035 ]