Doom3.ru





















    •  Главная

  •  Doom3-форум   •  Прислать новости




  •  Doom3-info



  



  •  Doom3: RoE



  



  •  Статьи



  



  •  Quake4



  



  •  Quake Wars



  




Реклама
Олимпик марсель футбол состав
Олимпик футбольный клуб марсель олимпик марсель футбол состав.
www.fcmarsel.ru




Триггеры и их назначение

 16.08.2006  13:35  Автор: X-Ray

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


trigger_once

Попадая в область этого триггера, игрок способен активировать заготовленную на карте функцию, скрипт, источник света или проиграть звук. Используется как включатель или выключатель какого-нибудь события (entity). Применяется для одноразового использования.

key: delay // Установить задержку между триггером и entity
val: // время задержки в сек.

key: call // Активировать скрипт под таким-то именем
val: // имя скрипта

key: requires // Устанавливаем требование для разрешающей активации триггера.
val: mykey // имя предмета

Для этого нужно поместить на карту предмет из папки items_, а именно item_key_blue (подойдёт любой ключ-модель: yellow, aco)



и установить у него вот такой ключ:
key: inv_name
val: mykey


Подбираем ключ-модель (item_key_blue), получаем вот такую надпись в левом экране:



Теперь мы сможем активировать триггер.


key: anyTouch // По умолчанию этот триггер может активировать только игрок, но с этим ключом дело будет обстоять иначе – теперь монстры или дружественный народ, войдя в область триггера, смогут активировать подключенное к нему событие (entity)
val: // 1 вкл / 0 выкл


key: triggerFirst // Если установить этот ключ у триггера, то для его активации нужно будет вызвать на него действие от другого события. Например, если установить на карту монстра и подконнетить его к триггеру – то только после убийства монстра этот триггер можно будет использовать в дальнейшем сценарии. К триггеру также можно подконнектить патроны и оружие, без подбора которых мы не сможем его активировать.
val: // 1 вкл / 0 выкл


key: noTouch // Всё то же самое что и у triggerFirst, только после подбора предмета функции, подключенные к триггеру, сработают моментально. И ненужно будет входить в область триггера.
val: // 1 вкл / 0 выкл.


key: noClient // При установке этого ключа триггер можно будет активировать только с помощью func_activator или NPC.
val: // 1 вкл / 0 выкл.

Как применить func_activator?

1. Устанавливаем на карту триггер и func_activator. Берём этот кубик с функцией и прислоняем его к триггеру, да так, чтобы они пересекались между собой. У func_activator выставляем вот такой ключ:
key: start_off // Выключаем
val: 1

2. Создаём ещё один триггер, от которого пойдёт сигнал на func_activator. А сигнал будем посылать через написанный скрипт. Для этого установим у триггера ключ, вызывающий скрипт:
key: call // Этой командой вызываем такой-то скрипт
val: test_command // имя скрипта




Пишем скрипт:

void test_command ()
{
$func_activator_1.activate( $trigger_once_2 );
}


// $func_activator_1 – имя функции
// activate – название команды для скрипта
// $trigger_once_2 – имя триггера к которому прислонена func_activator
Сохраняем с таким же именем, как у карты и закидываем в папку base\maps c расширением .script



trigger_multiple

Этот триггер аналогичен триггеру trigger_once, только используется для многократного использования – плюс дополнительные ключи.

key: wait // Создаём отрезок времени, через который можно будет заново использовать триггер
val: // Время в сек. При значении в –1, триггер используется один раз



trigger_hurt

Соприкоснувшись с областью этого триггера, игрок получает повреждение

key: delay // Задержка перед повреждением
val: // Время в сек.

key: def_damage // Подключаем систему повреждений
val: damage_lightBreak // Имя наносимого повреждения. Полный список находится в файле base\def\damage.def:

damage_triggerhurt_25
damage_co_electric_trac
damage_suicide
и так далее…

key: on // В каком состоянии будет находиться триггер после возрождения игрока на карте (включённый или выключенный)
val: // 1 вкл / 0 выкл



trigger_entityname (для многократного использования)

Всё то же самое, как и у trigger_multiple, кроме одного ключа.

key: entityname // Если установить этот ключ, то триггер сможет активировать только entity с указанным именем в значении
val: // имя (name) entity (NPC, monsters)


trigger_once_entityname

Обладает теми же свойствами, как и trigger_entityname, но для однократного использования.


trigger_facing

Чтобы активировать этот триггер, игроку нужно будет войти в область триггера и посмотреть, куда указана белая стрелка.

key: angle // Задаем направление угла. То есть, меняем направление стрелки – в какую сторону нужно будет смотреть, чтобы активировать триггер
val: 180 // по-умолчанию 0.

key: angleLimit // Задаем лимит угла
val: 45 // ограничиваем угол обзора на 45 градусов.


trigger_fade

После активации этого триггера произойдёт затухание экрана.

key: fadeTime
val: 5
// сколько будет происходить затухание (в сек.)

key: fadeColor // цвет затухания
val: 1 0 0 1 // если убрать последнюю единицу, то будет происходить обратное действие.

Первые три цифры – это какой цвет включить для затухания или наоборот
красный – 1 вкл
зеленный – 0 выкл
синий – 0 выкл

Или так: 0.415686 0.039216 0.039216 – цвет (_color) от другого источника света

Примечание* Если нужно выйти из эффекта затухания, то для этого потребуется установка схожего триггера с аналогичным ключом, но с другим значением в нём.

key: fadeColor
val: 1 0 0
// убираем единицу

и между ними установить задержку с помощью trigger_relay (key: delay// задержка, val: 5 // время задержки). Коннект (Ctrl+K) между триггерами должен происходить в таком раскладе: от trigger_once (или _multiple) к trigger_fade (с ключом для затухания), дальше trigger_relay (с задержкой) и в конце цепочки ещё один trigger_fade (с ключом для обратного действия)




trigger_timer

Через этот триггер можно повторить вызов от другого триггера (например, от trigger_once), причём этот вызов будет повторяться автоматически через определённое время.

key: start_on // В каком состоянии будет находиться триггер после возрождения игрока на карте (включённый или выключенный)
val: // 1 вкл / 0 выкл

key: wait // через какое время заново подать вызов на функции или скрипты
val: // время в сек.

Очень удобен для применения в скриптах. Приведу для этого небольшой пример.
Устанавливаем на карте trigger_once – его коннектим с trigger_timer, а trigger_timer с trigger_relay, у trigger_relay выставляем вот такой ключ:
key: call // вызываем скрипт
val: // имя скрипта

При такой комбинации работа функций, подвязанных к скрипту, будет повторяться через определённое время – указанное в trigger_timer




trigger_touch

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

void test_touch()
{
$func_mover_1.rotateOnce('0 0 90');
sys.wait(4);
$func_mover_2.moveToPos ( '8 88 104');
sys.wait(2);
$func_mover_3.moveToPos ( '8 -56 104');
sys.wait(1);
$char_campbell_1.playAnim( ANIMCHANNEL_TORSO, "turns" );
}


key: start_on
// В каком состоянии будет находиться триггер после возрождения игрока на карте (включённый или выключенный)
val: // 1 вкл / 0 выкл

key: call // вызываем скрипт
val: // имя скрипта

Работает от вызова другого триггера (например, от trigger_once), если находится в выключенном состоянии.


trigger_count

Этот триггер блокирует поступающие вызовы от других entity - триггеров
(trigger_multiple, trigger_once) , NPC’s, monster’s. Используется как пропускной пункт – то есть мы можем установить блокировку на первые два поступающих вызова, а третий уже пропустить на дальнейшую функцию.

key: count
val:
// сколько не пропускаем вызовов

key: repeat // повтор функции для блокировки
val: // 1 вкл / 0 выкл. При значении 0 триггер используется один раз


trigger_flashlight

Все те же функции, что и у trigger_multiple, только в этот раз игроку не понадобится входить в область триггера. Надо всего лишь посветить фонарём в ту сторону, где установлен триггер на карте. И это будет тоже самое, что наступить на триггер.


trigger_relay

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

key: delay // при поступления вызова от другого entity создаётся задержка
val: // время в сек.

key: call // активировать скрипт под таким-то именем
val: // имя скрипта





Другие материалы рубрики:




Комментарии

#1  СЛАВА РОССИИ (-----.86.130)   15:42  17.08.2006
хорошая темка

#2  M@R()N (-----.157.2)   19:04  19.06.2007
Молодцы,какая забота о фанах и мапперах!
Честное слово, молодцы!

#3  TнE FoREVERror (-----.fiord.ru)   19:46  14.07.2007
GUI
А как сделать так что-бы при нажатии на кнопку GUI открывалась и закрывалась дверь7 И для этого нужен триггер?

#4  WarlorD69 (-----.147.9)   22:45  05.06.2008
Нид хэлп
Доброго времени суток. Помогите, если сможете, я себе уже всю голову поломал. Нужно сделать, чтобы после убийства 4-х демонов на определенном месте открывался портал, ведущий в следующую комнату. Как это сделать?
Я даже просто портал поставить не могу(...



Добавить комментарий
Имя - заполнять обязательно

Е-майл

Заголовок

Текст комментария - заполнять обязательно

Введите эти цифры в это поле.






Розовый





















Valuehost.Ru


Яндекс цитированияRambler's Top100Rambler's Top100
DOOM3 is a registered trademark of id'Software
Copyright 2002-2017 © Doom3.ru