Ru/Indicator Lights (Portal 2): Difference between revisions

From Valve Developer Community
< Ru
Jump to navigation Jump to search
m (obsolete language category)
 
(7 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{otherlang2
{{lang|title=Индикаторные огни|Indicator Lights (Portal 2)}}
|title = Индикаторные огни
|en = Indicator Lights (Portal 2)
}}
[[File:Indiclights 2.png|right|96px]]
[[File:Indiclights 2.png|right|96px]]
'''Индикаторные огни''' - световые дорожки в тестовых камерах, указывающие на взаимосвязанные энтити, например, кнопка и раздатчик.
'''Индикаторные огни''' - световые дорожки в тестовых камерах, указывающие на взаимосвязанные энтити, например, кнопка и раздатчик.
Line 8: Line 5:


== Создание индикаторных огней ==
== Создание индикаторных огней ==
[[image:Indicator example1.jpg|300px|thumb|right|Размещённые индикаторные огни]]
[[File:Indicator example1.jpg|300px|thumb|right|Размещённые индикаторные огни]]
Данное руководство предполагает наличие базовых знаний [[Hammer]].  
Данное руководство предполагает наличие базовых знаний {{L|Hammer}}.  


'''1)''' В своей карте создайте две энтити, которые будут взаимодействовать. Это могут быть как [[Button (Portal 2):ru#Напольные кнопки|сверхпрочная сверхударная сверхкнопка :)]], открывающая выходную [[Test Door (Portal 2):ru|дверь]], так и [[Button (Portal 2):ru#Кнопка-пьедестал|кнопка-пьедестал]], которая запустит [[Diversity Vent:ru|пневматическую трубу]], из которой потечёт [[Gel_(Portal_2):ru|гель]], давая игроку на один шаг приблизиться к решению. То, что произойдёт, решаете вы, но всегда следом за '''активируемой штукой''' помещайте энтити [[env_texturetoggle]] — это поможет нам сменить цвет индикаторных огней в дальнейшем, а также напомнит, где вы разместили энтити - карта станет более понятной.
'''1)''' В своей карте создайте две энтити, которые будут взаимодействовать. Это могут быть как {{L|Button (Portal 2)#Напольные кнопки|сверхпрочная сверхударная сверхкнопка :)}}, открывающая выходную {{L|Test Door (Portal 2)|дверь}}, так и {{L|Button (Portal 2)#Кнопка-пьедестал|кнопка-пьедестал}}, которая запустит {{L|Diversity Vent|пневматическую трубу}}, из которой потечёт {{L|Gel_(Portal_2)|гель}}, давая игроку на один шаг приблизиться к решению. То, что произойдёт, решаете вы, но всегда следом за '''активируемой штукой''' помещайте энтити {{L|env_texturetoggle}} — это поможет нам сменить цвет индикаторных огней в дальнейшем, а также напомнит, где вы разместили энтити - карта станет более понятной.


'''2)''' Выберите текстуру огней в браузере текстур, для данного руководства: "<code>signage/indicator_lights/indicator_lights_floor</code>" (легко находится, если ввести "indicator" в поле фильтра).
'''2)''' Выберите текстуру огней в браузере текстур, для данного руководства: "<code>signage/indicator_lights/indicator_lights_floor</code>" (легко находится, если ввести "indicator" в поле фильтра).
Line 19: Line 16:
<br>B1. <code>signage/indicator_lights/indicator_lights_corner_wall</code>
<br>B1. <code>signage/indicator_lights/indicator_lights_corner_wall</code>
<br>B2. <code>signage/indicator_lights/indicator_lights_corner_floor</code>
<br>B2. <code>signage/indicator_lights/indicator_lights_corner_floor</code>
{{Note:ru|Текстуры в каждой паре оверлеев функционально и внешне неразличимы; но при желании вы можете использовать оба оверлея.}}
{{Note|Текстуры в каждой паре оверлеев функционально и внешне неразличимы; но при желании вы можете использовать оба оверлея.}}


'''3)''' Выберите инструмент [[Hammer_Overlay_Tool|Overlay]] в Hammer, и разместите оверлеи огней там, где вам нужно. Функционально нет разницы, как они размещены, хотя между взаимодействующими энтитями желательно провести логичную линию, обычно это кратчайший путь между двумя энтитями; не забудьте, что в некоторых местах кратчайший путь идёт по стене. Кроме того, в целях согласованности с индикаторами в картах Valve, на сгибах световых дорожек (но не в переходах от пола к стене, например) в углу помещайте <code>signage/indicator_lights/indicator_lights_corner_wall</code>, также, как и в начале у активатора (но не активируемого объекта).
'''3)''' Выберите инструмент {{L|Hammer_Overlay_Tool|Overlay}} в Hammer, и разместите оверлеи огней там, где вам нужно. Функционально нет разницы, как они размещены, хотя между взаимодействующими энтитями желательно провести логичную линию, обычно это кратчайший путь между двумя энтитями; не забудьте, что в некоторых местах кратчайший путь идёт по стене. Кроме того, в целях согласованности с индикаторами в картах Valve, на сгибах световых дорожек (но не в переходах от пола к стене, например) в углу помещайте <code>signage/indicator_lights/indicator_lights_corner_wall</code>, также, как и в начале у активатора (но не активируемого объекта).


Длина одной световой ленты - 4 кружка, но иногда вам может потребоваться другое их количество. К счастью, вы можете изменить свойства оверлея, чтобы удлинить его, а не использовать несколько оверлеев. Это можно сделать, отредактировав ключевое значение '''U Start''' или '''U End''' в окне свойств оверлея. Другой способ - растянуть оверлей 'физически' в одном из '''двухмерных видов''' — но сначала убедитесь, что флаг 'Texture Lock' снят. Помните, что индикаторные огни никогда не проходят между плиток!
Длина одной световой ленты - 4 кружка, но иногда вам может потребоваться другое их количество. К счастью, вы можете изменить свойства оверлея, чтобы удлинить его, а не использовать несколько оверлеев. Это можно сделать, отредактировав ключевое значение '''U Start''' или '''U End''' в окне свойств оверлея. Другой способ - растянуть оверлей 'физически' в одном из '''двухмерных видов''' — но сначала убедитесь, что флаг 'Texture Lock' снят. Помните, что индикаторные огни никогда не проходят между плиток!
{{tip:ru|Вы можете вводить десятичные ключевые значения для длины лент. Это пригодится, если вам нужна лента из 5 кружков, например, для этого вам потребуется ввести значение 1.25 (каждый кружок имеет длину 0.25). Так что, если вам потребуется линия из 11 кружков, длина ленты должна равняться 2.75.}}
{{tip|Вы можете вводить десятичные ключевые значения для длины лент. Это пригодится, если вам нужна лента из 5 кружков, например, для этого вам потребуется ввести значение 1.25 (каждый кружок имеет длину 0.25). Так что, если вам потребуется линия из 11 кружков, длина ленты должна равняться 2.75.}}


4. Выберите размещённые вами оверлеи (ТОЛЬКО те пометки, которые вам нужны) и назовите их одинаково. В данном руководстве мы используем "indlights_1". Затем откройте свойства помещённой вами env_texturetoggle, и введите то же имя в поле Target Brush(es). Теперь назовите env_texturetoggle "texturetoggle_lights_01"
4. Выберите размещённые вами оверлеи (ТОЛЬКО те пометки, которые вам нужны) и назовите их одинаково. В данном руководстве мы используем "indlights_1". Затем откройте свойства помещённой вами env_texturetoggle, и введите то же имя в поле Target Brush(es). Теперь назовите env_texturetoggle "texturetoggle_lights_01"
Line 34: Line 31:
! My Output > !! Target Entity !! Target Input !! Parameter !! Delay !! Only Once
! My Output > !! Target Entity !! Target Input !! Parameter !! Delay !! Only Once
|-
|-
| [[Image:Io11.png]] || OnPressed || texturetoggle_lights_01 || SetTextureIndex || 1 || 0.00 || No
| [[File:Io11.png]] || OnPressed || texturetoggle_lights_01 || SetTextureIndex || 1 || 0.00 || No
|-
|-
| [[Image:Io11.png]] || OnButtonReset || texturetoggle_lights_01 || SetTextureIndex || 0 || 0.00 || No
| [[File:Io11.png]] || OnButtonReset || texturetoggle_lights_01 || SetTextureIndex || 0 || 0.00 || No
|}
|}
В общем, теперь по нажатии кнопки <code>texturetoggle_lights_01</code> изменит оверлеи, подключенные к ней, на их альтернативный "вариант", а именно на соответствующую оранжевую текстуру. После этого кнопка сбросит "вариант" на обычный синий цвет.
В общем, теперь по нажатии кнопки <code>texturetoggle_lights_01</code> изменит оверлеи, подключенные к ней, на их альтернативный "вариант", а именно на соответствующую оранжевую текстуру. После этого кнопка сбросит "вариант" на обычный синий цвет.
Line 43: Line 40:


== Рамка с галочкой ==
== Рамка с галочкой ==
[[Image:Indicator checkbox placement.jpg|250px|right|thumb|Место, где будет помещена '''prop_indicator_panel'''.]]
[[File:Indicator checkbox placement.jpg|250px|right|thumb|Место, где будет помещена '''prop_indicator_panel'''.]]
'''Рамка с галочкой''' - бинарный индикатор, то есть он может иметь только два состояния. Он указывает на текущее состояние энтити - синяя пометка 'X', если неактивна, и оранжевая галочка, когда активна.
'''Рамка с галочкой''' - бинарный индикатор, то есть он может иметь только два состояния. Он указывает на текущее состояние энтити - синяя пометка 'X', если неактивна, и оранжевая галочка, когда активна.


1. Создайте [[prop_static]] со следующими свойствами:
1. Создайте {{L|prop_static}} со следующими свойствами:
::{| class=standard-table
::{| class=standard-table
!  Свойство || Значение
!  Свойство || Значение
Line 54: Line 51:
Поместите её в конце световой дорожки.
Поместите её в конце световой дорожки.


2. В том же самом месте и с теми же "Pitch Yaw roll" поместите [[prop_indicator_panel]]. Лучше это сделать shift-перетаскиванием prop_static в то же место.
2. В том же самом месте и с теми же "Pitch Yaw roll" поместите {{L|prop_indicator_panel}}. Лучше это сделать shift-перетаскиванием prop_static в то же место.
{{Note:ru|Вид '''prop_indicator_panel'''' не должен ввести вас в заблуждение; В игре она выглядит лишь как рамка с галочкой. Именно поэтому также необходима <code>models/props/sign_frame01/sign_frame01.mdl</code>.}}  
{{Note|Вид '''prop_indicator_panel'''' не должен ввести вас в заблуждение; В игре она выглядит лишь как рамка с галочкой. Именно поэтому также необходима <code>models/props/sign_frame01/sign_frame01.mdl</code>.}}  


3. Заполните поля '''prop_indicator_panel'''' согласно вашему замыслу. Дайте энтити имя, и проверьте, что она связана с оверлеем, а ''не'' env_texturetoggle.
3. Заполните поля '''prop_indicator_panel'''' согласно вашему замыслу. Дайте энтити имя, и проверьте, что она связана с оверлеем, а ''не'' env_texturetoggle.
Line 66: Line 63:
|}
|}


{{Note:ru|Если вы хотите заполнить поле 'Indicator Lights' в свойствах prop_indicator_panel, то prop_indicator_panel будет работать как env_texturetoggle. Так что, когда она "включена" (Check) или "отключена" (Uncheck), она изменит "вариант" индикаторных огней, то есть путь, указанный к ним, соответственно.}}
{{Note|Если вы хотите заполнить поле 'Indicator Lights' в свойствах prop_indicator_panel, то prop_indicator_panel будет работать как env_texturetoggle. Так что, когда она "включена" (Check) или "отключена" (Uncheck), она изменит "вариант" индикаторных огней, то есть путь, указанный к ним, соответственно.}}


4. Добавьте к энтити активатора ещё два входа:
4. Добавьте к энтити активатора ещё два входа:
Line 74: Line 71:
! My Output > !! Target Entity !! Target Input !! Parameter !! Delay !! Only Once
! My Output > !! Target Entity !! Target Input !! Parameter !! Delay !! Only Once
|-
|-
| [[Image:Io11.png]] || OnPressed || checkmark_indlights_1 || Check || &nbsp; || 0.00 || No
| [[File:Io11.png]] || OnPressed || checkmark_indlights_1 || Check || &nbsp; || 0.00 || No
|-
|-
| [[Image:Io11.png]] || OnButtonReset || checkmark_indlights_1 || Uncheck || &nbsp; || 0.00 || No
| [[File:Io11.png]] || OnButtonReset || checkmark_indlights_1 || Uncheck || &nbsp; || 0.00 || No
|}
|}
Теперь у вас есть и работающая рамка с галочкой, также не забудьте связать активатор с активируемой энтитей.
Теперь у вас есть и работающая рамка с галочкой, также не забудьте связать активатор с активируемой энтитей.


== Таймер в рамке ==
== Таймер в рамке ==
'''Таймер в рамке''' действует практически так же, как рамка с галочкой: показывает активное состояние управляемой энтити. Однако, таймер показывает, что действие будет длиться ограниченное количество времени. Как правило, рекомендуется, чтобы активатор являлся простой [[Button (Portal 2):ru#Кнопка-пьедестал|кнопкой]], поскольку при активации [[Button (Portal 2):ru#Напольные кнопки|напольной кнопкой]] игрок ожидает, что действие будет выполняться, пока напольная кнопка нажата.
'''Таймер в рамке''' действует практически так же, как рамка с галочкой: показывает активное состояние управляемой энтити. Однако, таймер показывает, что действие будет длиться ограниченное количество времени. Как правило, рекомендуется, чтобы активатор являлся простой {{L|Button (Portal 2)#Кнопка-пьедестал|кнопкой}}, поскольку при активации {{L|Button (Portal 2)#Напольные кнопки|напольной кнопкой}} игрок ожидает, что действие будет выполняться, пока напольная кнопка нажата.


Перед добавлением таймера подумайте, ''действительно'' ли он вам нужен, и если это так, то на протяжении какого времени таймер должен быть активен? Не делайте задачу невыполнимой, вам лишь нужно добавить небольшое напряжение в головоломку.  
Перед добавлением таймера подумайте, ''действительно'' ли он вам нужен, и если это так, то на протяжении какого времени таймер должен быть активен? Не делайте задачу невыполнимой, вам лишь нужно добавить небольшое напряжение в головоломку.  
Line 109: Line 106:
| Indicator Lights || indlights_1
| Indicator Lights || indlights_1
|}
|}
{{Note:ru|Свойство Is checked показывает, будет ли панель сразу с галочкой. Так как вам нужен таймер, укажите 'No'.}}
{{Note|Свойство Is checked показывает, будет ли панель сразу с галочкой. Так как вам нужен таймер, укажите 'No'.}}


3. Добавьте кнопку со следующими свойствами:
3. Добавьте кнопку со следующими свойствами:
Line 124: Line 121:
|}
|}
Заданное в поле 'Delay Before Reset' время сообщит кнопке, сколько времени должен тикать таймер. Задание 'Prevent fast reset?' на значение 'No' позволит нажать кнопку ещё раз в ходе работы таймера. Это позволит игроку перезапустить таймер, чтобы успеть сделать нужные действия.
Заданное в поле 'Delay Before Reset' время сообщит кнопке, сколько времени должен тикать таймер. Задание 'Prevent fast reset?' на значение 'No' позволит нажать кнопку ещё раз в ходе работы таймера. Это позволит игроку перезапустить таймер, чтобы успеть сделать нужные действия.
{{Tip:ru|Также рекомендуется использовать поле 'Delay Before Reset', чтобы кнопку нельзя было нажать в то время, пока подключенная энтити ещё работает. Так, например, при получении [[Cube (Portal 2):ru|куба]] вы не сможете растворить куб прежде, чем закроется раздатчик.}}
{{tip|Также рекомендуется использовать поле 'Delay Before Reset', чтобы кнопку нельзя было нажать в то время, пока подключенная энтити ещё работает. Так, например, при получении {{L|Cube (Portal 2)|куба}} вы не сможете растворить куб прежде, чем закроется раздатчик.}}


4. И последнее, что нужно сделать для работы таймера, добавить этот выход на вкладке Output:
4. И последнее, что нужно сделать для работы таймера, добавить этот выход на вкладке Output:
Line 132: Line 129:
! My Output > !! Target Entity !! Target Input !! Parameter !! Delay !! Only Once
! My Output > !! Target Entity !! Target Input !! Parameter !! Delay !! Only Once
|-
|-
| [[Image:Io11.png]] || OnPressed || checktime_indlights_1 || Start || &nbsp; || 0.00 || No
| [[File:Io11.png]] || OnPressed || checktime_indlights_1 || Start || &nbsp; || 0.00 || No
|}
|}
Таймер будет сбрасываться автоматически по истечении заданного времени. Однако, вы можете добавить команду 'Stop', чтобы остановить таймер в его текущем состоянии или чтобы отправить выход 'Reset' для сброса таймера вручную.
Таймер будет сбрасываться автоматически по истечении заданного времени. Однако, вы можете добавить команду 'Stop', чтобы остановить таймер в его текущем состоянии или чтобы отправить выход 'Reset' для сброса таймера вручную.
Line 140: Line 137:
В браузере текстур выберите текстуру для огней (введите "neon" в фильтр).
В браузере текстур выберите текстуру для огней (введите "neon" в фильтр).
<br>Мы возьмём "<code>signage/indicator_lights/indicator_neon_straight</code>"
<br>Мы возьмём "<code>signage/indicator_lights/indicator_neon_straight</code>"
{{Note:ru|Оверлеи индикаторных огней из [[Underground (Portal 2):ru|старой лаборатории]] обычно представляют собой текстуру 64x64 с одной неоновой лентой.}}
{{Note|Оверлеи индикаторных огней из {{L|Underground (Portal 2)|старой лаборатории}} обычно представляют собой текстуру 64x64 с одной неоновой лентой.}}


Как вы могли заметить, стандартный размер текстуры огней гораздо больше, чем должен быть. Чтобы это исправить, включите флаг 'Texture Lock', и в одном из '''двухмерных видов''' уменьшайте размер оверлея, пока он не станет размером 16x16. Теперь вернитесь к шагу 2 в создании индикаторной дорожки и триггеров.
Как вы могли заметить, стандартный размер текстуры огней гораздо больше, чем должен быть. Чтобы это исправить, включите флаг 'Texture Lock', и в одном из '''двухмерных видов''' уменьшайте размер оверлея, пока он не станет размером 16x16. Теперь вернитесь к шагу 2 в создании индикаторной дорожки и триггеров.
Line 154: Line 151:
=== Завершение ===
=== Завершение ===


Чтобы добавить звук мерцающих неоновых огней, просто поместите [[ambient_generic]] на панель с галочкой со следующими свойствами:
Чтобы добавить звук мерцающих неоновых огней, просто поместите {{L|ambient_generic}} на панель с галочкой со следующими свойствами:
::{| class=standard-table
::{| class=standard-table
!  Свойство || Значение
!  Свойство || Значение
Line 168: Line 165:
! My Output > !! Target Entity !! Target Input !! Parameter !! Delay !! Only Once
! My Output > !! Target Entity !! Target Input !! Parameter !! Delay !! Only Once
|-
|-
| [[Image:Io11.png]] || OnPressed || <indicator_light_name>_sound || PlaySound ||  || 0.00 || No
| [[File:Io11.png]] || OnPressed || <indicator_light_name>_sound || PlaySound ||  || 0.00 || No
|}
|}
[[Category:Portal 2 Level Design:ru]]
{{ACategory|Portal 2 Level Design}}

Latest revision as of 03:50, 22 August 2024

English (en)Русский (ru)Translate (Translate)
Indiclights 2.png

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

Создание индикаторных огней

Размещённые индикаторные огни

Данное руководство предполагает наличие базовых знаний Hammer(en).

1) В своей карте создайте две энтити, которые будут взаимодействовать. Это могут быть как сверхпрочная сверхударная сверхкнопка :)(en), открывающая выходную дверь(en), так и кнопка-пьедестал(en), которая запустит пневматическую трубу(en), из которой потечёт гель(en), давая игроку на один шаг приблизиться к решению. То, что произойдёт, решаете вы, но всегда следом за активируемой штукой помещайте энтити env_texturetoggle(en) — это поможет нам сменить цвет индикаторных огней в дальнейшем, а также напомнит, где вы разместили энтити - карта станет более понятной.

2) Выберите текстуру огней в браузере текстур, для данного руководства: "signage/indicator_lights/indicator_lights_floor" (легко находится, если ввести "indicator" в поле фильтра).

A1. signage/indicator_lights/indicator_lights_floor
A2. signage/indicator_lights/indicator_lights_wall
B1. signage/indicator_lights/indicator_lights_corner_wall
B2. signage/indicator_lights/indicator_lights_corner_floor

Note.pngПримечание:Текстуры в каждой паре оверлеев функционально и внешне неразличимы; но при желании вы можете использовать оба оверлея.

3) Выберите инструмент Overlay(en) в Hammer, и разместите оверлеи огней там, где вам нужно. Функционально нет разницы, как они размещены, хотя между взаимодействующими энтитями желательно провести логичную линию, обычно это кратчайший путь между двумя энтитями; не забудьте, что в некоторых местах кратчайший путь идёт по стене. Кроме того, в целях согласованности с индикаторами в картах Valve, на сгибах световых дорожек (но не в переходах от пола к стене, например) в углу помещайте signage/indicator_lights/indicator_lights_corner_wall, также, как и в начале у активатора (но не активируемого объекта).

Длина одной световой ленты - 4 кружка, но иногда вам может потребоваться другое их количество. К счастью, вы можете изменить свойства оверлея, чтобы удлинить его, а не использовать несколько оверлеев. Это можно сделать, отредактировав ключевое значение U Start или U End в окне свойств оверлея. Другой способ - растянуть оверлей 'физически' в одном из двухмерных видов — но сначала убедитесь, что флаг 'Texture Lock' снят. Помните, что индикаторные огни никогда не проходят между плиток!

Tip.pngСовет:Вы можете вводить десятичные ключевые значения для длины лент. Это пригодится, если вам нужна лента из 5 кружков, например, для этого вам потребуется ввести значение 1.25 (каждый кружок имеет длину 0.25). Так что, если вам потребуется линия из 11 кружков, длина ленты должна равняться 2.75.

4. Выберите размещённые вами оверлеи (ТОЛЬКО те пометки, которые вам нужны) и назовите их одинаково. В данном руководстве мы используем "indlights_1". Затем откройте свойства помещённой вами env_texturetoggle, и введите то же имя в поле Target Brush(es). Теперь назовите env_texturetoggle "texturetoggle_lights_01"

5. Выберите энтити activator и откройте вкладку её выходов. В данном руководстве используется энтити простой кнопки, поэтому все выходные параметры в таблице будут соответствовать ей. Вам нужно только добавить следующие два входа к вашему активатору:

My Output > Target Entity Target Input Parameter Delay Only Once
Io11.png OnPressed texturetoggle_lights_01 SetTextureIndex 1 0.00 No
Io11.png OnButtonReset texturetoggle_lights_01 SetTextureIndex 0 0.00 No

В общем, теперь по нажатии кнопки texturetoggle_lights_01 изменит оверлеи, подключенные к ней, на их альтернативный "вариант", а именно на соответствующую оранжевую текстуру. После этого кнопка сбросит "вариант" на обычный синий цвет.

Готово! Индикаторные огни должны работать!

Рамка с галочкой

Место, где будет помещена prop_indicator_panel.

Рамка с галочкой - бинарный индикатор, то есть он может иметь только два состояния. Он указывает на текущее состояние энтити - синяя пометка 'X', если неактивна, и оранжевая галочка, когда активна.

1. Создайте prop_static(en) со следующими свойствами:

Свойство Значение
World Model models/props/sign_frame01/sign_frame01.mdl

Поместите её в конце световой дорожки.

2. В том же самом месте и с теми же "Pitch Yaw roll" поместите prop_indicator_panel(en). Лучше это сделать shift-перетаскиванием prop_static в то же место.

Note.pngПримечание:Вид prop_indicator_panel' не должен ввести вас в заблуждение; В игре она выглядит лишь как рамка с галочкой. Именно поэтому также необходима models/props/sign_frame01/sign_frame01.mdl.

3. Заполните поля prop_indicator_panel' согласно вашему замыслу. Дайте энтити имя, и проверьте, что она связана с оверлеем, а не env_texturetoggle.

Свойство Значение
Name checkmark_indlights_1
Indicator Lights indlights_1
Note.pngПримечание:Если вы хотите заполнить поле 'Indicator Lights' в свойствах prop_indicator_panel, то prop_indicator_panel будет работать как env_texturetoggle. Так что, когда она "включена" (Check) или "отключена" (Uncheck), она изменит "вариант" индикаторных огней, то есть путь, указанный к ним, соответственно.

4. Добавьте к энтити активатора ещё два входа:

My Output > Target Entity Target Input Parameter Delay Only Once
Io11.png OnPressed checkmark_indlights_1 Check   0.00 No
Io11.png OnButtonReset checkmark_indlights_1 Uncheck   0.00 No

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

Таймер в рамке

Таймер в рамке действует практически так же, как рамка с галочкой: показывает активное состояние управляемой энтити. Однако, таймер показывает, что действие будет длиться ограниченное количество времени. Как правило, рекомендуется, чтобы активатор являлся простой кнопкой(en), поскольку при активации напольной кнопкой(en) игрок ожидает, что действие будет выполняться, пока напольная кнопка нажата.

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

1. Снова, поместите prop_static со следующими свойствами:

Свойство Значение
World Model models/props/sign_frame01/sign_frame01.mdl

Поместите её в конце световой дорожки.

2. Поместите prop_indicator_panel в том же месте, что и sign_frame01.mdl. Теперь решите, сколько времени запускаемая энтити будет активна. В данном руководстве мы выберем 8 секунд, так что добавим следующие свойства:

Свойство Значение
Name checktime_indlights_1
Timer Duration 8
Start visible? Yes
Is a timer Yes
Is checked No
Indicator Lights indlights_1
Note.pngПримечание:Свойство Is checked показывает, будет ли панель сразу с галочкой. Так как вам нужен таймер, укажите 'No'.

3. Добавьте кнопку со следующими свойствами:

Property Name Value
Name button_01
Delay Before Reset 8
Play timer sound? Yes
Prevent fast reset? No

Заданное в поле 'Delay Before Reset' время сообщит кнопке, сколько времени должен тикать таймер. Задание 'Prevent fast reset?' на значение 'No' позволит нажать кнопку ещё раз в ходе работы таймера. Это позволит игроку перезапустить таймер, чтобы успеть сделать нужные действия.

Tip.pngСовет:Также рекомендуется использовать поле 'Delay Before Reset', чтобы кнопку нельзя было нажать в то время, пока подключенная энтити ещё работает. Так, например, при получении куба(en) вы не сможете растворить куб прежде, чем закроется раздатчик.

4. И последнее, что нужно сделать для работы таймера, добавить этот выход на вкладке Output:

My Output > Target Entity Target Input Parameter Delay Only Once
Io11.png OnPressed checktime_indlights_1 Start   0.00 No

Таймер будет сбрасываться автоматически по истечении заданного времени. Однако, вы можете добавить команду 'Stop', чтобы остановить таймер в его текущем состоянии или чтобы отправить выход 'Reset' для сброса таймера вручную.

Индикаторные огни старой лаборатории

Indiclights neon 1.png

В браузере текстур выберите текстуру для огней (введите "neon" в фильтр).
Мы возьмём "signage/indicator_lights/indicator_neon_straight"

Note.pngПримечание:Оверлеи индикаторных огней из старой лаборатории(en) обычно представляют собой текстуру 64x64 с одной неоновой лентой.

Как вы могли заметить, стандартный размер текстуры огней гораздо больше, чем должен быть. Чтобы это исправить, включите флаг 'Texture Lock', и в одном из двухмерных видов уменьшайте размер оверлея, пока он не станет размером 16x16. Теперь вернитесь к шагу 2 в создании индикаторной дорожки и триггеров.

Рамка с галочкой старой лаборатории

Создайте блок браша размером 32Wx2Lx32H с текстурой tools/toolsnodraw. Спереди поместите оверлей signage/indicator_lights/indicator_neon_check, стороны покройте текстурой plastic/plastickwall004a_dirty. Проверьте, что установлен флаг 'Texture Lock', и подгоните размер оверлея по брашу. Переместите браш в конец индикаторной дорожки.

Преобразуйте браш в энтити func_brush и дайте ей то же имя, что было у ваших энтитей info_overlay.

Теперь всё должно работать.

Завершение

Чтобы добавить звук мерцающих неоновых огней, просто поместите ambient_generic(en) на панель с галочкой со следующими свойствами:

Свойство Значение
Name <имя_индикаторных_огней>_sound
Sound Name VFX.OGSignFlicker

Проверьте, чтобы на вкладке флагов он НЕ был зациклен (looped)? и добавьте ещё один выход к активатору:

My Output > Target Entity Target Input Parameter Delay Only Once
Io11.png OnPressed <indicator_light_name>_sound PlaySound 0.00 No