Ru/Disc Room: Difference between revisions
Line 222: | Line 222: | ||
== Проецирование видеоролика == | == Проецирование видеоролика == | ||
[[Image:Coop bts blueprints.jpg|thumb|right|300px| | [[Image:Coop bts blueprints.jpg|thumb|right|300px|В этой части начинается магия.]] | ||
'''Проецируемый ролик''' - это показ фильма, включающий взрыв роботов в конце. | |||
=== Шаг 1 - настройка видеоролика === | === Шаг 1 - настройка видеоролика === | ||
Создайте prop_static с моделью <code>projector_screen.mdl</code> (Легче найти, введя "projector" в поле фильтрации моделей). В её нижнем левом углу поместите [[vgui_movie_display]] со следующими свойствами: | |||
::{| class=standard-table | ::{| class=standard-table | ||
! Свойство || Значение | ! Свойство || Значение | ||
Line 245: | Line 245: | ||
|} | |} | ||
Снова откройте свойства logic_auto и добавьте следующие выходы: | |||
:{| border=1 cellpadding="2" cellspacing="1" | :{| border=1 cellpadding="2" cellspacing="1" | ||
|- align=left style="background:#DCDCDC; color:black" | |- align=left style="background:#DCDCDC; color:black" | ||
Line 254: | Line 254: | ||
|} | |} | ||
Создайте ещё одну энтити vgui_movie_display в том же самом месте, что и предыдущая (Просто протащите уже созданную с нажатой {{key|shift}} в сторону, а затем верните на место). Единственным отличием будет имя и видео, отображаемое ей: | |||
::{| class=standard-table | ::{| class=standard-table | ||
! Свойство || Значение | ! Свойство || Значение | ||
Line 274: | Line 274: | ||
=== Шаг 2 - поднимаем железный занавес === | === Шаг 2 - поднимаем железный занавес === | ||
[[Image:Projector Screen.jpg|thumb|right|300px| | [[Image:Projector Screen.jpg|thumb|right|300px|Примерно так всё это должно выглядеть.]] | ||
Помните ту энтити '''disc_loaded_relay''', которую мы использовали, ещё не создав? Теперь пришла и её очередь. Сперва создайте [[logic_relay]] и назовите её disc_loaded_relay. Откройте вкладку "Outputs" и добавьте следующие свойства: | |||
:{| border=1 cellpadding="2" cellspacing="1" | :{| border=1 cellpadding="2" cellspacing="1" | ||
|- align=left style="background:#DCDCDC; color:black" | |- align=left style="background:#DCDCDC; color:black" | ||
Line 286: | Line 286: | ||
|} | |} | ||
Создайте [[ambient_generic]] с этими свойствами: | |||
::{| class=standard-table | ::{| class=standard-table | ||
Line 296: | Line 296: | ||
|} | |} | ||
И добавьте в disc_loaded_relay ещё один выход: | |||
:{| border=1 cellpadding="2" cellspacing="1" | :{| border=1 cellpadding="2" cellspacing="1" | ||
|- align=left style="background:#DCDCDC; color:black" | |- align=left style="background:#DCDCDC; color:black" | ||
Line 305: | Line 305: | ||
|} | |} | ||
И наконец-таки всё должно работать! | |||
== Завершение == | == Завершение == |
Revision as of 12:04, 10 January 2014
Комната с диском - последнее испытание в конце каждой серии тестов в кооперативном режиме. Она находится в части комплекса, которой ГЛэДОС управлять не может, и которая служила людям последним защитным рубежом от разрастающейся власти ГЛэДОС над комплексом.
Источник дисков
Источник дисков - устройство, создающее диски. Оно восстанавливает копию диска, если он был утерян или растворён. Обычно оно находится рядом с получателем диска в конце последней камеры серии кооперативного режима. Однако, помещать его там совершенно не обязательно; если поместить источник в начале камеры, могут получиться интересные головоломки, главной задачей которых станет не потерять диск.
Шаг 1 - настройка

Создайте prop_static и выберите для неё модель models/props_gameplay/laser_disc_player.mdl
и поместите её где-нибудь в комнате. Отсюда игроки будут брать диск.
Теперь создайте диск, это энтити prop_dynamic_override. Настройте её свойства так:
Свойство Значение Name start_disc Parent spawner_door World Model laser_disc.mdl Disable Shadows Yes
Поместите диск внутри модели устройства, как показано на иллюстрации справа.
Теперь создайте браш размером 8x20x1 с текстурой tools/toolsinvisible
. Поместите его сверху модели диска, снова, как на иллюстрации справа. Преобразуйте браш в энтити (нажатием Ctrl+T) и сделайте её func_door. И задайте её свойства следующим образом:
Свойство Значение Name spawner_door Speed 26 Start Sound World.LaserDiskLoad Delay Before Reset (-1 stay) -1 Loop Moving Sound Yes Move Direction 0 0 0
Template:Note:ru Создайте ещё одну энтити, prop_physics_override, она будет диском, переносимым игроками. Нажмите ⇧ Shift и перетащите start_disc так, чтобы диск находился вне устройства, и чтобы только его 'край' касался щели устройства. Измените "Class" на prop_physics_override и назовите "disc".
Шаг 2 - воссоздание диска
Создадим шаблон, по которому диск будет восстановлен в случае его утери игроками. Template:Note:ru
Создайте point_template со следующими свойствами:
Свойство Значение Name template_disc_spawn Template 1 start_disc Template 2 spawner_door
Создайте ещё одну point_template с этими свойствами:
Свойство Значение Name template_disc Template 1 disc
Шаг 3 - система выходов
После создания всех энтитей нужно заставить источник работать, осталось подключить действия энтитей для создания диска; свяжем несколько входов и выходов!
Сначала создайте logic_auto со следующим выходом:
My Output > Target Entity Target Input Parameter Delay Only Once OnMapSpawn template_disk_spawn ForceSpawn 0.00 No
В свойствах spawner_door откройте вкладку 'Output' и добавьте следующие свойства:
Теперь добавьте выход в template_disc_spawn:
My Output > Target Entity Target Input Parameter Delay Only Once OnEntitySpawned spawner_door Open 0.00 No
Энтити, определяющая, когда диск теряется или уничтожается, должна иметь следующий выход:
My Output > Target Entity Target Input Parameter Delay Only Once OnTrigger template_disk_spawn ForceSpawn 0.00 No
Template:Tip:ru Теперь источник должен работать и поставлять новые диски при утере имеющегося. Однако, это лишь треть процесса создания работающей комнаты с диском.
Получатель диска
Получатель диска (или проигрыватель диска) - устройство, для которого предназначается диск; при вставке диска в получатель проигрывается видео с информацией, которую искала ГЛэДОС.
Шаг 1 - установка

Поместите prop_static в комнату и выберите модель models/props_gameplay/laser_disc_player.mdl
. Здесь, в конце уровня, игроки вставят диск.
Когда игрок помещает диск возле приёмника, диск, который игрок носил ранее, будет удалён, и загрузится другой, невидимый диск. Мы сделаем именно так, чтобы лучше контролировать, как диск войдет в приёмник, и чтобы просто избежать многих проблем. Потребуется ещё одна prop_dynamic_override, она будет загружена в устройство, будучи прикреплённой к func_door.
Свойство Значение Parent loader_door Disable Shadows Yes World Model laser_disc.mdl Name hidden_disc
Диск нужно разместить так, как показано на иллюстрации справа.
Теперь создайте браш func_door с текстурой tools/toolsinvisible
. Поместите его сверху на модель диска как на иллюстрации справа. Добавьте следующие свойства:
Свойство Значение Name loader_door Speed 8 Start Sound World.LaserDiskLoad Delay Before Reset (-1 stay) -1 Loop Moving Sound Yes Move Direction 0 180 0
Template:Note:ru Template:Note:ru
Шаг 2 - загрузка
На первом шаге создавались видимые энтити получателя, в этом шаге - невидимые энтити.
Первая - браш trigger_once, а вторая - filter_activator_name. И добавьте следующие свойства:
1. В trigger_once:
Свойство Значение Name Filter Name disc_filter
Установите флаг Physics Objects.
2. В filter_activator_name:
Свойство Значение Name disc_filter Filter Name disc
Шаг 3 - система выходов
Чтобы всё взаимодействовало, используем систему входов/выходов. Помните ту logic_auto, что мы использовали ранее? В её свойствах откройте вкладку "Outputs" и добавьте следующие свойства:
My Output > Target Entity Target Input Parameter Delay Only Once OnMapSpawn hidden_disc TurnOff 0.00 No
Добавьте следующий вход в trigger_once:
My Output > Target Entity Target Input Parameter Delay Only Once OnStartTouch hidden_disc TurnOn 0.00 No OnStartTouch !activator Kill 0.00 No OnStartTouch loader_door Open 0.00 No
Добавьте один выход в энтити loader_door:
My Output > Target Entity Target Input Parameter Delay Only Once OnFullyOpen disc_loaded_relay Trigger 0.00 No
Теперь получатель должен работать и принимать вставляемый диск. До завершения создания комнаты с диском ещё далеко.
Проецирование видеоролика
Проецируемый ролик - это показ фильма, включающий взрыв роботов в конце.
Шаг 1 - настройка видеоролика
Создайте prop_static с моделью projector_screen.mdl
(Легче найти, введя "projector" в поле фильтрации моделей). В её нижнем левом углу поместите vgui_movie_display со следующими свойствами:
Свойство Значение Name insert_disc_movie Movie Filename media/insert_disk.bik Loop Movie Yes Stretch to Fill Yes Force precache Yes Panel width 156 Panel height 112
Снова откройте свойства logic_auto и добавьте следующие выходы:
My Output > Target Entity Target Input Parameter Delay Only Once OnMapSpawn insert_disc_movie Enable 0.00 No
Создайте ещё одну энтити vgui_movie_display в том же самом месте, что и предыдущая (Просто протащите уже созданную с нажатой ⇧ Shift в сторону, а затем верните на место). Единственным отличием будет имя и видео, отображаемое ей:
Свойство Значение Name aperture_movie Movie Filename media/coop_bts_blueprints.bik Loop Movie Yes Stretch to Fill Yes Force precache Yes Panel width 156 Panel height 112
Шаг 2 - поднимаем железный занавес
Помните ту энтити disc_loaded_relay, которую мы использовали, ещё не создав? Теперь пришла и её очередь. Сперва создайте logic_relay и назовите её disc_loaded_relay. Откройте вкладку "Outputs" и добавьте следующие свойства:
My Output > Target Entity Target Input Parameter Delay Only Once OnTrigger insert_disc_movie Disable 2.00 No OnTrigger aperture_movie Enable 2.00 No
Создайте ambient_generic с этими свойствами:
Свойство Значение Name disc_windup_sound Sound Name World.LaserDiskPowerUp
И добавьте в disc_loaded_relay ещё один выход:
My Output > Target Entity Target Input Parameter Delay Only Once OnTrigger disc_windup_sound PlaySound 0.00 No
И наконец-таки всё должно работать!
Завершение
- Add an instance and set its VMF Filename to
coop_lighting_ents.vmf
. You can choose from here what fog options your map will have (fog density, color, etc). More importantly, however, it has four env_globals in it, each can enable, disable the bots pinging and taunting ability. You should have a logic_relay that is triggered when the disc is loaded with four outputs:
- Place a trigger_hurt with the Damage keyvalue set to 10000. Make sure it covers the whole disc room and don't forget to disable it. At the appropriate moment, probably when GLaDOS is making her final statement, enable the trigger_hurt brush to make the bots explode.
- Place a point_clientcommand in your room with the following settings:
Свойство Значение Name levelchange
To your trigger_hurt add this output:
My Output > Target Entity Target Input Parameter Delay Only Once OnHurt levelchange command changelevel {hub or next chamber} 0.00 No
- Place a static model facing your screen and set its model to
models/props_underground/projector.mdl
. On the projector place three point_spotlight, you'll know where. - Somewhere in the disc room there is usually a whiteboard (
models/props_office/whiteboard_coop.mdl
) claiming not to upload the disc. For consistency with Valve maps, I suggest placing one too. It comes with 6 different skins.