Doom3.ru





















    •  Главная

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




  •  Doom3-info



  



  •  Doom3: RoE



  



  •  Статьи



  



  •  Quake4



  



  •  Quake Wars



  




Реклама




Ведём наблюдение (func_securitycamera)

 08.09.2006  15:27  Автор: X-Ray

Если у вас возникли подозрения по поводу добропорядочности ваших Npc, то можно развеять опасения, установив на карте камеры наблюдения.

Для этого нужно создать на карте несколько объектов:

1. Создаём на карте func_securitycamera, и через меню Entity\Model… подставляем в функцию эту модель камеры models/mapobjects/camera/camera01.ase
У готовой камеры появилась белая стрелка – это направление обзора камеры. Но нам оно явно не подходит (несоответствие стрелки от функции с объективом модели), и исправляем это дело дополнительными ключами:

key: modelAxis // направление обзора по оси
val: 1 // (X=0, Y=1, Z=2)

key: flipAxis // вывернуть ось обзора наизнанку, нужно когда ошибочно ведётся съёмка на модель камеры
val: 1

key: name
val: cam1
// желательно изменить имя на своё, чтобы легче ориентироваться в дальнейших действиях (обращение в скриптах к этому имени, будет ли видно это камеру через созданный экран наблюдения)

key: scanFov // угол обзора для съёмки
val: 45

key: sweepAngle
// угол поворота камеры
val: 45 // при значении в ноль камера не двигается

key: viewOffset // отдаляем обзор камеры от модели, проще говоря, делаем что-то типа “от третьего лица“
val: 20 -20 0 // при таком значении съёмка камеры будет вестись от края объектива модели (camera.ase) создавая эффект, как будто съёмка ведётся именно с этой позиции. По умолчанию съёмка ведётся с позиции 0 0 0, из-за чего могут быть видны края модели.

key: health // здоровеньки булы :D
val: 50

key: scanDist
// на каком расстоянии камера может видеть игрока
val: 300

key: sweepSpeed
// за сколько секунд будет проходить поворот камеры
val: 5

key: sweepWait
// задержка в секундах перед поворотом камеры
val: 3

Если вы попали в поле зрения камеры, то произойдёт сканирование обнаруженного, то есть вас и в дальнейшем активация звуковой тревоги. Теперь всё зависит от настройки ключей. Либо вас сразу обнаружат, либо у вас будет время скрыться из обзора камеры.

key: sightTime // сколько будет происходить сканирование камеры после её активации, если вы не успели уйти из обзора камеры в течении 3 сек., то раздастся тревожный сигнал
val: 3

key: sightResume
// если камера успела начать сканирование, но вы успели уйти до тревожного сигнала, то через 3 сек. камера продолжит наблюдение как вследствие ложного сигнала
val: 3

key: wait
// если вы всё ещё обнаружены, то камера начнёт повторное сканирование через 15 сек.
val: 15

key: s_volume
// уровень звука тревоги (default off)
val: 3

key: cameraTarget
val: cam1
// сюда пишем значение из ключа name, то есть имя (name) функции


С камерой всё. Теперь будем делать экран.

2. Всякие экранные заставки лучше делать из Simple Patch. Создаём браш и идём в главное меню редактора Patch\\Simple Patch Mesh … в меню Patch density оставляем всё как есть и жмём Ok.

Накладываем спец. текстуру на получившуюся плоскость.
Следуем в закладку Inspectors\\Media\\Textures\textures в конце списка, ищем текстуру cameraimg1 (текстура окрашена в салатовый цвет и имеет надпись Camera Gui). Вот её и накладываем на Simple Patch, подтягиваем fit’ом и придаём этому патчу func_static.
Добавляем ключи:

key: name
val: mymonitor
// желательно эту gui-панель подписать своим именем, которое мы будем использовать в написание скриптов

key: gui
val: guis/cameras/cam_on.gui
// выбираем Gui для экрана

key: cameraTarget
val: cam1
// сюда пишем имя камеры

Ну, вот и всё. И хотелось бы от себя немного добавить по поводу замеченных глюков. Иногда после обнаружения игрока камера вдруг меняет угол поворота, из-за которого сбивается настроенный обзор камеры. Теперь понятно, почему на оригинальных картах все камеры неподвижны. Так что на страх и риск делаем их как бы в “боевом режиме”. А обычное наблюдение без тревожных событий происходит нормалёк.


Как использовать несколько камер для одного мониторного экрана?

В этом деле без редактора Gui не обойдёшься. Даже если использовать оригинальную панель для просмотра на несколько камер. Поэтому пойдём по другому пути. Создадим свой экран на определённое количество камер.

Открываем Gui редактор через консоль основного. Вот такой командой: editguis
Идём в меню Window и устанавливаем галочки, где присутствует слово Show_

Navigator // в этом окошке отображены все названия материалов, из которых мы собираем наш gui. Здесь же выделяем какой-нибудь из материалов, при этом получаем о нём информацию в ниже описанных окнах.



// значок с глазиком обозначает, спрятан материал или нет. В основном нужен, если захотелось спрятать на время материал, чтобы не мешал созданию других. На gui в игре это не влияет.
Hide Selected (кн. H) // спрятать выделенный материал
Unhide Selected () // показать ранее спрятанный материал
Show Hidden (Shift + H) // показать все ранее спрятанные материалы

Transformer
W и H // размер ширины и высоты нашего выбранного материала
X и Y // сдвиг по осям нашего материала, или зажать кнопку мышки (при этом выделив его в окошке Navigator) на каком-нибудь материале и сдвинуть влево или вправо



Properties // отображает настройки для выбранного материала



//forecolor – цвет текста
//matcolor – цвет материала
//backcolor – цвет заднего фона
//1,1,1,1 добавляем это значение цвета в скрипты, если предусмотрены (можно с запятыми)


Создаём новый фон File\\New
Создание нового gui всегда начинается с нового фона Desktop, который мы получаем автоматически в меню Navigator. Теперь его можно отобразить на экране, выделив левой кнопкой мышки. Сначала фон будет чёрного цвета, но видно фиолетовую окантовку.

Щёлкаем правой кнопкой на Desktop и далее Properties…
Получаем новое окошко Item Properties. В этом меню можно добавить цвет, текст, текстуру для выбранного материала.

General

Name: Desktop // имя нашего материала (пишем любое удобное имя)
Включаем только Visible
Visible // будет ли виден материал в игре, или отобразить его в дальнейшем при помощи специальной команды. По умолчанию видимость включена.

Image

Backcolor: // активировав галку, мы можем сменить цвет фона и рядом там же прозрачность цвета или наоборот



примечание*
Если добавить цвет в Desktop, то все наложенные сверху материалы будут такого же цвета. Рекомендуется не включать цвет фона и оставить его по-умолчанию чёрным. И уже на него потом накладывать дополнительные материалы. Это касается в основном, когда в материал добавляешь текстуру.

Material: // активировав галку, мы можем наложить подготовленную текстуру на наш материал.



в папке gui лежат текстуры для оформления нашего Gui.
Изучить их можно будет, если посетить меню Inspectors, закладка Media.
Далее папка Materials\\gui

X scale // кол-во выбранной текстуры по оси X (по горизонтали)
Y scale // кол-во выбранной текстуры по оси Y (по вертикали)

Matcolor: // добавить цвет в текстуру

Text



Text: // Создаём текст для редактируемой текстуры
Scale: // Размер шрифта
Color: // цвет шрифта и рядом прозрачность
Alignment: // расположение текста (слева, по центру, справа)
X: // сдвиг текста по горизонтали
Y: // сдвиг текста по вертикали

Keys

Редактирование или добавление ключей.


В общем, если вы разобрались, как настроить материал и как он будет выглядеть, то перейдём к созданию дополнительных материалов.
Для этого жмём правой кнопкой на Desktop и далее в появившейся менюшке New\\windowDef. Появился новый материал unnamed в меню Navigator и маленький квадратик с фиолетовой окантовкой.

Теперь если есть желание (а оно должно быть, чтобы было качественно) то можно ещё наложить несколько материалов на наш Desktop, создав несколько таких unnamed’ов. И к каждому добавить по текстуре. В общем, немного приукрасить – добавить панелей, reflect, static…



Как будет выглядеть наш gui в самой игре, узнаем в главном меню этого редактора

Tools\\Viewer – окошко называется Gui Viewer (если есть активные кнопки с привязанными скриптами, то также можно здесь же проверить их работоспособность )

Делаем кнопки.
Создаём два unnamed’a и называем их для удобства button1 и button2. Разукрашиваем, пишем текст, накладываем текстуры. В общем, делаем так, чтобы они были похожи на кнопки.



Теперь щёлкаем правой кнопкой мышки в меню Navigator по button1. Далее Scripts… Ctrl + Enter

Заполняем это пустое окно вот этим скриптом:

onMouseEnter

{
set "forecolor" "1 0 0 0.9" ;
// какой цвет у текста, когда наводишь на него курсор, последняя цифра – это уровень прозрачности (0.1-1.0)
}

onMouseExit

{
set "forecolor" " 0 1 0 0.9 " ;
// какой цвет у текста, когда отводишь от него курсор, последняя цифра – это уровень прозрачности (0.1-1.0). Цвет обычно пишется тот, который был изначально в окне Properties\\forecolor

}

onAction

{
set "cmd" "setkeyval mymonitor gui_parm1 1 ; setkeyval mymonitor cameraTarget cam1 ; play guisounds_click" ;

set "noevents" "1" ;
// отключаем дальнейшие действия

set "forecolor" "0 0 1 1" ; // какой цвет становится у текста при активации кнопки

}

onTime 2000
// ждём 2 сек.

{

set "noevents" "0" ;
// включаем дальнейшие действия (делаем это для того, чтобы выждать время, равное 2 секундам, и только после его окончания мы сможем снова использовать нашу кнопку)
set "forecolor" "0 1 0 1"; // также через 2 сек возвращаем наш первичный цвет для текста
resetTime "0" // сбрасываем время для нового отсчёта (onTime 2000) при неоднократном использовании

}


А теперь рассмотрим поподробней выше описанную строчку для нашего скрипта:

set "cmd" "setkeyval mymonitor gui_parm1 1 ; setkeyval mymonitor cameraTarget cam1 ; play guisounds_click" ;

1. Здесь мы включаем команду, которая активирует выше созданный gui (в начале статьи), у которого имя mymonitor.
2. // gui_parm1 1, это какая надпись будет в панели, когда произойдёт переключение на камеру. Мы как бы подписываем наши камеры. Например, gui_parm1 camera1.
3. А наш mymonitor переключается на модель камеры с именем cam1.
4. Проигрываем звуковой шейдер с именем guisounds_click (подобные звучки находятся в base\\sound\\gui.sndshd)


Для второй кнопки вставляем точно такой же скрипт, но с другим названием следующей камеры-модели.

set "cmd" "setkeyval mymonitor gui_parm1 1 ; setkeyval mymonitor cameraTarget cam2 ; play guisounds_click" ;

Здесь меняем имя первой камеры (cam1) на второе (cam2). И так далее, если используем больше камер.

Ладно, если уж дело дошло до создания Gui, то напоследок расскажу, как можно ещё добавить несколько интересных фишек.


onMouseEnter

{

set "matcolor" "1 0 0 0.9" ;

}


Вместо forecolor пишем matcolor

matcolor // изменения цвета происходят с текстурой, наложенной на наш материал (например, button1)

forecolor // изменения цвета происходят с текстом, написанным на этой текстуре.


onMouseEnter

{

set "backcolor" "1 0 0 0.8" ;

}


backcolor // изменения цвета происходят с задним фоном нашего материала.


Переключиться с одного цвета на другой в чём либо (текст, текстура) можно вот таким способом:

onMouseEnter

{

transition "button1::matcolor" "1 0 0 1" "1 0 0 0.8" "2000" ;
transition "button2::matcolor" "1 0 0 1" "1 0 0 0.8" "2000" ;
transition "button1::forecolor" "1 0 0 1" "1 0 0 0.8" "500" ;
transition "button2::forecolor" "1 0 0 1" "1 0 0 0.8" "500" ;

}


transition // команда для цветового перехода
button1 // имя материала, и не обязательно то, в котором создаём; например, в первой кнопке можно и имя от второй, например button2. То есть, по такой схеме организуем все переходы цвета в разных материалах и в одном скрипте.
matcolor // где произойдут изменения в тексте или на текстуре
В первых кавычках с цифрами – это первичный цвет и уровень прозрачности.
Во вторых кавычках – это на какой переходим цвет.
И в последних кавычках – это сколько времени будет происходить переход (1000 = 1 сек.).
Используются и меньшие значения: 200, 500, 700, то есть практически мгновенно.

Карту-пример можно скачать здесь (124Кб)



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




Комментарии

#1  Sancho (-----.net.ua)   13:57  14.09.2006
2X-Ray
Без проблем. Исправил, карту добавил.

#2  Арбуз (-----.79.46)   10:25  20.07.2010
Сложно
Сложно!!!!!!!!!!!!!!!!!



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

Е-майл

Заголовок

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

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






Розовый





















Valuehost.Ru


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