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

From Valve Developer Community
< Ru
Jump to navigation Jump to search
m (preparation to translation)
Line 3: Line 3:
|en = Indicator Lights (Portal 2)
|en = Indicator Lights (Portal 2)
}}
}}
{{Finishtranslation:ru}}
[[File:Indiclights 1.png|right|96px]]
[[File:Indiclights 2.png|right|170px]]
[[File:Indiclights 2.png|right|96px]]
'''Индикаторные огни''' представляют собой линии из маленьких ламп, которые служат в тестовых камерах для указания взаимодействия между двумя или более энтити на карте, часто между кнопкной и другим энтити в мире. Обычно лампы горят голубым, если они неактивны, и оранжевым, когда активны.
'''Indicator Lights''' are lines of small lights that are present in test chambers to indicate the interaction between two or more entities in the map, for example a button and a cube dropper.
The typical usage of the lights is the lights being blue when inactive, and orange when active.


== Как сделать Лампы-индикаторы ==
== Создание индикаторных огней ==
[[image:Indicator example1.jpg|300px|thumb|right|Indicator lights all laid out]]
[[image:Indicator example1.jpg|300px|thumb|right|Indicator lights all laid out]]
Этот урок предполагает, что вы обладаете базовыми знаниями о [[Hammer]].  
This tutorial assumes basic knowledge of [[Hammer]].  
=== Шаг 1 ===
1. In your map, create two entities you want to interact with each other. These could vary from a [[Button (Portal 2)#Floor Button|Heavy Duty Super-Colliding Super-Button]] opening a simple exit [[Test Door (Portal 2)|door]], to a [[Button (Portal 2)#Button|button]] that will temporarily interact with a [[Diversity Vent]] which will deliver [[Gel (Portal 2)|gel]] bringing the player one step closer to the solution. Whatever you decide to do is up to you, but always next to the '''activated thing''' place an [[env_texturetoggle]] entity — this will help us change the indicator colors further in the tutorial and help you remember were you place your entities, resulting in a cleaner map.
Создайте два энтити, на вашей карте, которые требуют взаимодействия друг с другом. Они могут варьироваться от [[Button_(Portal_2):ru|напольной кнопки]] для открывания простой выходной [[Test_Door_(Portal_2):ru|двери]], до [[Button_(Portal_2):ru|кнопок]], которые будут временно взаимодействовать с [[Diversity_Vent:ru|пневматическими трубами]], поставляющими [[Gel_(Portal_2):ru|гель]], в результате чего игрок станет на один шаг ближе к решению. Что бы вы не решите, зависит от вас, but always рядом с '''активатором''' разместите [[env_texturetoggle]] энтити - это поможет нам изменять цвет индикатора далее в уроке и поможет вам помнить, где вы разместили ваши энтити, resulting in a cleaner map.


=== Шаг 2 ===
2. Select a texture for the lights in the texture browser, for this tutorial use "<code>signage/indicator_lights/indicator_lights_floor</code>" (Easily found by typing "indicator" in the filter bar).
Выберите текстуру для света в окне просмотра текстур, для нашего урока используйте "signage/indicator_lights/indicator_lights_floor" (Для более быстрого поиска введите "indicator" в панели фильтра).


A1. <code>signage/indicator_lights/indicator_lights_floor</code>
A1. <code>signage/indicator_lights/indicator_lights_floor</code>
Line 22: Line 21:
{{Note:ru|The textures in each pair of overlays are functionally and cosmetically indistinguishable; but you can still use both overlays if desired.}}
{{Note:ru|The textures in each pair of overlays are functionally and cosmetically indistinguishable; but you can still use both overlays if desired.}}


=== Шаг 3 ===
3. Select the [[Hammer_Overlay_Tool|Overlay]] option in hammer, and place your lights overlays as desired. Functionally it doesn't matter how they're placed, though a logical line between the entities interacting is desired, usually the shortest way between the two entities; don't forget the shortest way could travel on walls at some point. Also, to keep consistent with Valve's approach to these lights, when the line turns a corner (not including transitions from wall to floor, for example), a <code>signage/indicator_lights/indicator_lights_corner_wall</code> should be in the corner, as well as at the start of the activator (but not the activated thing).
Select the [[Hammer_Overlay_Tool|Overlay]] option in hammer, and place your lights overlays as desired. Functionally it doesn't matter how they're placed, though a logical line between the entities interacting is desired, usually the shortest way between the two entities; don't forget the shortest way could travel on walls at some point. Also, to keep consistent with Valve's approach to these lights, when the line turns a <code>signage/indicator_lights/indicator_lights_corner_wall</code> should be in the corner, thus his name came to be.


The length of one strip is four circles, however sometimes you might want to have fewer overlays to keep your map clean. Luckily you can adjust the overlay properties to make it longer rather than make duplicates of the strip. This is accomplished by editing the '''U Start''' or '''U End''' keyvalue in the properties window for the overlay. Another way of accomplishing this is to stretch 'physically' the overlay in one of the '''2D views''' - make sure that the 'Texture Lock' is unchecked.  
The length of one strip is four circles, however sometimes you might want to have fewer overlays to keep your map clean. Luckily you can adjust the overlay properties to make it longer rather than make duplicates of the strip. This is accomplished by editing the '''U Start''' or '''U End''' keyvalue in the properties window for the overlay. Another way of accomplishing this is to stretch 'physically' the overlay in one of the '''2D views''' make sure that the 'Texture Lock' is unchecked. Remember that indicator lights never go in between tiles!
{{tip:ru|Remember that you can add decimal key values to the strips length. This is helpful if you want a strip of 5 circles, for example, which would be possible if you set the strip's length to 1.25 (each circle is 0.25). So if you want a strip of 11 circles, the strip's length would be 2.75.}}
{{tip|Remember that you can add decimal key values to the strips length. This is helpful if you want a strip of 5 circles, for example, which would be possible if you set the strip's length to 1.25 (each circle is 0.25). So if you want a strip of 11 circles, the strip's length would be 2.75.}}


=== Шаг 4 ===
4. Select the overlays you just placed (and ONLY the overlays you want) and name them all the same. Use "indlights_1" for this tutorial. Then open up the env_texturetoggle you previously placed, and enter the same name into the Target Brush(es) field. Now name the env_texturetoggle "texturetoggle_lights_01"
Select the overlays you just placed (and ONLY the overlays you want) and name them all the same. Use "indlights_1" for this tutorial. Then open up the env_texturetoggle you previously placed, and enter the same name into the Target Brush(es) field. Now name the env_texturetoggle "texturetoggle_lights_01"


=== Шаг 5 ===
5. Select the '''activator''' entity, and go to the outputs menu. In this tutorial a simple button entity was used, so all output parameters in the table would relate to it. All you need to do is to add these two outputs to your activator:
Select the '''activator''' entity, and go to the outputs menu. In this tutorial a simple button entity was used, so all output parameters in the table would relate to it. All you need to do is to add these two outputs to your activator:
:{| 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 42: Line 38:
| [[Image:Io11.png]] || OnButtonReset || texturetoggle_lights_01 || SetTextureIndex || 0 || 0.00 || No
| [[Image:Io11.png]] || OnButtonReset || texturetoggle_lights_01 || SetTextureIndex || 0 || 0.00 || No
|}
|}
So basically, now when the button is pressed the <code>texturetoggle_lights_01</code> will change the overlays connected to it to the alternate "skin" of their's - the appropriate orange texture. After that when the button will reset the "skin" would return to the normal color - blue.
So basically, now when the button is pressed the <code>texturetoggle_lights_01</code> will change the overlays connected to it to the alternate "skin" of theirs, namely the appropriate orange texture. After that when the button will reset the "skin" would return to the normal color of blue.


Done, your indicator lights should now be working!
Done! Your indicator lights should now be working!


== Checkmark Box ==
== Рамка с галочкой ==
[[Image:Indicator checkbox placement.jpg|250px|right|thumb|Where to put the '''prop_indicator_panel'''.]]
[[Image:Indicator checkbox placement.jpg|250px|right|thumb|Where to put the '''prop_indicator_panel'''.]]
A '''checkmark box''' is a binary indicator, meaning it only has off and on states. It is used to indicate the operated entity 'active state' - a blue 'X' mark when inactive and an orange 'V' mark when active.
A '''checkmark box''' is a binary indicator, meaning it only has off and on states. It is used to indicate the operated entity 'active state' - a blue 'X' mark when inactive and an orange checkmark when active.


=== Шаг 1 ===
1. Create a [[prop_static]] with the following properties:
Create a [[prop_static]] with the following properties:
::{| class=standard-table
::{| class=standard-table
!  Property Name || Value
!  Property Name || Value
Line 59: Line 54:
Align it so it will be at the end of your light path.
Align it so it will be at the end of your light path.


=== Шаг 2 ===
2. At the exact same spot, with the exact same "Pitch Yaw roll" place a [[prop_indicator_panel]]. The best way to do this  is to shift-drag the prop_static to the same place by moving it a unit to one direction and returning it.
At the exact same spot, with the exact same "Pitch Yaw roll" place a [[prop_indicator_panel]]. The best way to do this  is to shift-drag the prop_static to the same place by moving it a unit to one direction and returning it.
{{Note|Do not be fooled by the '''prop_indicator_panel''''s appearance; in-game it is only drawn as the checkmark-box. This is why the <code>models/props/sign_frame01/sign_frame01.mdl</code> is needed as well.}}  
{{Note:ru|Do not be fooled by the '''prop_indicator_panel''''s appearance; in-game it is only drawn as the checkmark-box. This is why the <code>models/props/sign_frame01/sign_frame01.mdl</code> is needed as well.}}  


=== Шаг 3 ===
3. Fill the '''prop_indicator_panel''''s fields as desired. Give the entity a name, and make sure it is linked to the overlay ''not'' the env_texturetoggle.
Fill the '''prop_indicator_panel''''s fields as desired. Give the entity a name, and make sure it is linked to the overlay ''not'' the env_texturetoggle.
::{| class=standard-table
::{| class=standard-table
!  Property Name || Value
!  Property Name || Value
Line 75: Line 68:
{{Note:ru|If you decide to fill the 'Indicator Lights' field in the prop_indicator_panel's properties, the prop_indicator_panel will act as an env_texturetoggle. So when it is "Checked" or Unchecked" it will change the "skin" of the indicator light path you attached to it accordingly.}}
{{Note:ru|If you decide to fill the 'Indicator Lights' field in the prop_indicator_panel's properties, the prop_indicator_panel will act as an env_texturetoggle. So when it is "Checked" or Unchecked" it will change the "skin" of the indicator light path you attached to it accordingly.}}


=== Шаг 4 ===
4. Add to the activator entity another two outputs:
Add to the activator entity another two 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 88: Line 80:
So now you have an operating checkmark box as well, don't forget to link the activator to the activated entity too.
So now you have an operating checkmark box as well, don't forget to link the activator to the activated entity too.


== Checkmark Timer ==
== Таймер в рамке ==
A '''checkmark timer''' acts almost as the checkmark box: showing the active state of the operated entity. However, it shows that the operation will last a limited amount of time. It is usually advised that the activator would be a simple [[Button (Portal 2)#Button|button]] because when activating a [[Button (Portal 2)#Floor Button|floor button]] the player expects the operation to be permanent until he steps off the button.
A '''checkmark timer''' acts almost as the checkmark box: showing the active state of the operated entity. However, it shows that the operation will last a limited amount of time. It is usually advised that the activator would be a simple [[Button (Portal 2)#Button|button]] because when activating a [[Button (Portal 2)#Floor Button|floor button]] the player expects the operation to be permanent until they step off the button.


Before placing a timer think if you ''really'' need it, and if so, how much time is the timer's active state going to be? You don't want the task to be impossible, you just want to add an element of stress to the puzzle.  
Before placing a timer think if you ''really'' need it, and if so, how much time is the timer's active state going to be? You don't want the task to be impossible, you just want to add an element of stress to the puzzle.  


=== Шаг 1 ===
1. Again, place a prop_static with the following properties:
Again, place a prop_static with the following properties:
::{| class=standard-table
::{| class=standard-table
!  Property Name || Value
!  Property Name || Value
Line 102: Line 93:
Align it so it will be at the end of your light path.
Align it so it will be at the end of your light path.


=== Шаг 2 ===
2. Place a prop_indicator_panel at the exact same spot as the <code>sign_frame01.mdl</code>. Now you have to ask yourself: "how much time do I want the operated entity to be active?". For this tutorial I picked 8 seconds, so all I have to do is to add the following properties:
Place a prop_indicator_panel at the exact same spot as the <code>sign_frame01.mdl</code>. Now you have to ask yourself: "how much time do I want the operated entity to be active?". For this tutorial I picked 8 seconds, so all I have to do is to add the following properties:
::{| class=standard-table
::{| class=standard-table
!  Property Name || Value
!  Property Name || Value
Line 119: Line 109:
| Indicator Lights || indlights_1
| Indicator Lights || indlights_1
|}
|}
{{Note:ru|Is checked marks if the panel will start with the 'V' mark. Because you want a timer make sure this field is set to 'No'.}}
{{Note|Is checked marks if the panel will start with the checkmark. Because you want a timer make sure this field is set to 'No'.}}


=== Шаг 3 ===
3. Add a button with the following properties:
Add a button with the following properties:
::{| class=standard-table
::{| class=standard-table
!  Property Name || Value
!  Property Name || Value
Line 135: Line 124:
|}
|}
Setting the time in the 'Delay Before Reset' field will tell the button how much time the timer sound should be played. Setting the 'Prevent fast reset?' to 'No' allows to re-press the button at any given time during the timer duration. This will allow the player to restart the timer when he understands he acted to slowly without having to wait for the timer to reset on its own.
Setting the time in the 'Delay Before Reset' field will tell the button how much time the timer sound should be played. Setting the 'Prevent fast reset?' to 'No' allows to re-press the button at any given time during the timer duration. This will allow the player to restart the timer when he understands he acted to slowly without having to wait for the timer to reset on its own.
{{Tip:ru|It is also useful to use the 'Delay Before Reset' field to prevent pressing the button again while the connected entity is still working. For example, when delivering a [[Cube (Portal 2)|cube]] you don't want the player to be able to fizzle it before it reaches the ground.}}
{{Tip|It is also useful to use the 'Delay Before Reset' field to prevent pressing the button again while the connected entity is still working. For example, when delivering a [[Cube (Portal 2)|cube]] you don't want the player to be able to fizzle it before the dropper has closed completely.}}


=== Шаг 4 ===
4. The last thing that needs to be done to make this timer operating is to add this single output in the Output tab:
The last thing that needs to be done to make this timer operating is to add this single output in the Output tab:
:{| 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 148: Line 136:
The timer will reset automatically when the time runs out. However, you can still add a 'Stop' command to stop the timer on it's current value or to send a 'Reset' output to reset it manually.
The timer will reset automatically when the time runs out. However, you can still add a 'Stop' command to stop the timer on it's current value or to send a 'Reset' output to reset it manually.


== Лампы-индикаторы из Old Aperture ==
[[File:Indiclights neon 1.png|right|360px]]
{{todo:ru|they're a bit different than the normal lights...}}
 
*<code>signage/indicator_lights/indicator_neon_straight</code>
== Индикаторные огни старой лаборатории ==
 
Select a texture for the lights in the texture browser (Easily found by typing "neon" in the filter bar).
<br>In this tutorial we'll be using "<code>signage/indicator_lights/indicator_neon_straight</code>"
{{Note|The [[Underground (Portal 2)|Old-Aperture]] indicator lights overlay is normally a 64x64 texture with a single neon stripe.}}
 
As you might have noticed the default texture size of each light is a lot bigger than what it should be. To simply fix it check the 'Texture Lock' key, and in one of the '''2D views''' shrink the overlay until it's a 16x16 one light texture. Now go back to [[Indicator Lights (Portal 2)#Step_2|'''Step 2''']] to finish the indicator line and triggers.
 
== Рамка с галочкой старой лаборатории ==
 
Create a 32Wx2Lx32H block brush textured with tools/toolsnodraw. Place a <code>signage/indicator_lights/indicator_neon_check</code> overlay on the front, and texture the sides with <code>plastic/plastickwall004a_dirty</code>. Make sure your 'Texture Lock' key is checked and shrink the overlay to fit the brush. Move this brush so it is aligned with your indicator lights.
 
Tie the brush to a func_brush entity and give it the same name as your info_overlay entities.
 
Everything should be working now.
 
=== Завершение ===
 
To add a neon light-up flicker sound, simply place a [[ambient_generic]] on your checkmark box with the following properties:
::{| class=standard-table
!  Property Name || Value
|-
| Name || <indicator_light_name>_sound
|-
| Sound Name || VFX.OGSignFlicker
|}
Make sure, in the flags tab, that it is NOT looped, and add another Output to your activator:
:{| border=1 cellpadding="2" cellspacing="1"
|- align=left style="background:#DCDCDC; color:black"
!
! My Output > !! Target Entity !! Target Input !! Parameter !! Delay !! Only Once
|-
| [[Image:Io11.png]] || OnPressed || <indicator_light_name>_sound || PlaySound ||  || 0.00 || No
|}
[[Category:Portal 2 Level Design:ru]]
[[Category:Portal 2 Level Design:ru]]

Revision as of 05:18, 12 January 2014

Template:Otherlang2

Indiclights 1.png
Indiclights 2.png

Indicator Lights are lines of small lights that are present in test chambers to indicate the interaction between two or more entities in the map, for example a button and a cube dropper. The typical usage of the lights is the lights being blue when inactive, and orange when active.

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

Indicator lights all laid out

This tutorial assumes basic knowledge of Hammer. 1. In your map, create two entities you want to interact with each other. These could vary from a Heavy Duty Super-Colliding Super-Button opening a simple exit door, to a button that will temporarily interact with a Diversity Vent which will deliver gel bringing the player one step closer to the solution. Whatever you decide to do is up to you, but always next to the activated thing place an env_texturetoggle entity — this will help us change the indicator colors further in the tutorial and help you remember were you place your entities, resulting in a cleaner map.

2. Select a texture for the lights in the texture browser, for this tutorial use "signage/indicator_lights/indicator_lights_floor" (Easily found by typing "indicator" in the filter bar).

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 Template:Note:ru

3. Select the Overlay option in hammer, and place your lights overlays as desired. Functionally it doesn't matter how they're placed, though a logical line between the entities interacting is desired, usually the shortest way between the two entities; don't forget the shortest way could travel on walls at some point. Also, to keep consistent with Valve's approach to these lights, when the line turns a corner (not including transitions from wall to floor, for example), a signage/indicator_lights/indicator_lights_corner_wall should be in the corner, as well as at the start of the activator (but not the activated thing).

The length of one strip is four circles, however sometimes you might want to have fewer overlays to keep your map clean. Luckily you can adjust the overlay properties to make it longer rather than make duplicates of the strip. This is accomplished by editing the U Start or U End keyvalue in the properties window for the overlay. Another way of accomplishing this is to stretch 'physically' the overlay in one of the 2D views — make sure that the 'Texture Lock' is unchecked. Remember that indicator lights never go in between tiles!

Tip.pngСовет:Remember that you can add decimal key values to the strips length. This is helpful if you want a strip of 5 circles, for example, which would be possible if you set the strip's length to 1.25 (each circle is 0.25). So if you want a strip of 11 circles, the strip's length would be 2.75.

4. Select the overlays you just placed (and ONLY the overlays you want) and name them all the same. Use "indlights_1" for this tutorial. Then open up the env_texturetoggle you previously placed, and enter the same name into the Target Brush(es) field. Now name the env_texturetoggle "texturetoggle_lights_01"

5. Select the activator entity, and go to the outputs menu. In this tutorial a simple button entity was used, so all output parameters in the table would relate to it. All you need to do is to add these two outputs to your 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

So basically, now when the button is pressed the texturetoggle_lights_01 will change the overlays connected to it to the alternate "skin" of theirs, namely the appropriate orange texture. After that when the button will reset the "skin" would return to the normal color of blue.

Done! Your indicator lights should now be working!

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

Where to put the prop_indicator_panel.

A checkmark box is a binary indicator, meaning it only has off and on states. It is used to indicate the operated entity 'active state' - a blue 'X' mark when inactive and an orange checkmark when active.

1. Create a prop_static with the following properties:

Property Name Value
World Model models/props/sign_frame01/sign_frame01.mdl

Align it so it will be at the end of your light path.

2. At the exact same spot, with the exact same "Pitch Yaw roll" place a prop_indicator_panel. The best way to do this is to shift-drag the prop_static to the same place by moving it a unit to one direction and returning it.

Note.pngПримечание:Do not be fooled by the prop_indicator_panel's appearance; in-game it is only drawn as the checkmark-box. This is why the models/props/sign_frame01/sign_frame01.mdl is needed as well.

3. Fill the prop_indicator_panel's fields as desired. Give the entity a name, and make sure it is linked to the overlay not the env_texturetoggle.

Property Name Value
Name checkmark_indlights_1
Indicator Lights indlights_1

Template:Note:ru

4. Add to the activator entity another two outputs:

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

So now you have an operating checkmark box as well, don't forget to link the activator to the activated entity too.

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

A checkmark timer acts almost as the checkmark box: showing the active state of the operated entity. However, it shows that the operation will last a limited amount of time. It is usually advised that the activator would be a simple button because when activating a floor button the player expects the operation to be permanent until they step off the button.

Before placing a timer think if you really need it, and if so, how much time is the timer's active state going to be? You don't want the task to be impossible, you just want to add an element of stress to the puzzle.

1. Again, place a prop_static with the following properties:

Property Name Value
World Model models/props/sign_frame01/sign_frame01.mdl

Align it so it will be at the end of your light path.

2. Place a prop_indicator_panel at the exact same spot as the sign_frame01.mdl. Now you have to ask yourself: "how much time do I want the operated entity to be active?". For this tutorial I picked 8 seconds, so all I have to do is to add the following properties:

Property Name Value
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 marks if the panel will start with the checkmark. Because you want a timer make sure this field is set to 'No'.

3. Add a button with the following properties:

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

Setting the time in the 'Delay Before Reset' field will tell the button how much time the timer sound should be played. Setting the 'Prevent fast reset?' to 'No' allows to re-press the button at any given time during the timer duration. This will allow the player to restart the timer when he understands he acted to slowly without having to wait for the timer to reset on its own.

Tip.pngСовет:It is also useful to use the 'Delay Before Reset' field to prevent pressing the button again while the connected entity is still working. For example, when delivering a cube you don't want the player to be able to fizzle it before the dropper has closed completely.

4. The last thing that needs to be done to make this timer operating is to add this single output in the Output tab:

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

The timer will reset automatically when the time runs out. However, you can still add a 'Stop' command to stop the timer on it's current value or to send a 'Reset' output to reset it manually.

Indiclights neon 1.png

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

Select a texture for the lights in the texture browser (Easily found by typing "neon" in the filter bar).
In this tutorial we'll be using "signage/indicator_lights/indicator_neon_straight"

Note.pngПримечание:The Old-Aperture indicator lights overlay is normally a 64x64 texture with a single neon stripe.

As you might have noticed the default texture size of each light is a lot bigger than what it should be. To simply fix it check the 'Texture Lock' key, and in one of the 2D views shrink the overlay until it's a 16x16 one light texture. Now go back to Step 2 to finish the indicator line and triggers.

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

Create a 32Wx2Lx32H block brush textured with tools/toolsnodraw. Place a signage/indicator_lights/indicator_neon_check overlay on the front, and texture the sides with plastic/plastickwall004a_dirty. Make sure your 'Texture Lock' key is checked and shrink the overlay to fit the brush. Move this brush so it is aligned with your indicator lights.

Tie the brush to a func_brush entity and give it the same name as your info_overlay entities.

Everything should be working now.

Завершение

To add a neon light-up flicker sound, simply place a ambient_generic on your checkmark box with the following properties:

Property Name Value
Name <indicator_light_name>_sound
Sound Name VFX.OGSignFlicker

Make sure, in the flags tab, that it is NOT looped, and add another Output to your activator:

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