Creating multiple buttons for one door

From Valve Developer Community
Jump to: navigation, search
Portal Level Creation

This tutorial will detail the basics of getting a door to open only when two (or more) buttons are activated.

Door, buttons and triggers

Create your doorway and two buttons by following the tutorial for creating a button and linked door through step 5 of the section titled "Triggers".

Note.png Note: Your buttons and triggers should be distinct from one another. Check all of the following on each button to make sure you have changed the button_* prefix to button#_*, with # representing which button it is:
  • The name of the movement door under the button (originally button_top_door)
  • The parent of your button_top_model (same as above)
  • The name of the two triggers button_trigger_player and button_trigger_box

Next, complete steps 7 and 8 under Triggers on the other tutorial for each button, making sure that you are using the appropriate button#_* prefix.

Setting the buttons to open the door

Create a math_counter entity, and put it near your door. Set the following properties:

Property Name Value
Name buttoncounter
Maximum Legal Value 2

Now go to the Outputs tab and set the following outputs:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnHitMax door_left Open <none> 0.00 No
Io11.png OnHitMax door_right Open <none> 0.00 No
Io11.png OnHitMax buttoncounter SetHitMin 1 0.00 No
Io11.png OnHitMin door_left Close <none> 0.00 No
Io11.png OnHitMin door_right Close <none> 0.00 No
Io11.png OnHitMin buttoncounter SetHitMin 0 0.00 No

Now go to each of your button_top_door brush entities and set these outputs:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnOpen buttoncounter Add 1 0.00 No
Io11.png OnClose buttoncounter Subtract 1 0.00 No


The counter starts at zero. When you activate a button by any means, the button adds 1 to the counter. When you deactivate a button, the button subtracts 1 from the counter. When the counter reaches the maximum value 2, it opens the door and sets the minimum value as 1. When the counter reaches this minimum value, it closes the door and clears the minimum value.

This scenario can be easily adapted to have more requirements, different requirements, or different actions.

See also