Alternative Multi-Stop Elevator: Difference between revisions
Kwp17pitts (talk | contribs) No edit summary |
(Removed WIP category) |
||
Line 1: | Line 1: | ||
{{Note|This is a six floor elevator, However theretically can take a near unlimited nuber of floors though its best to restrict a limit that best fits to the map design (this has been tested up to ten floors so far --[[User:Kwp17pitts|Kwp17pitts]] 10:18, 5 February 2012 (PST))}} | {{Note|This is a six floor elevator, However theretically can take a near unlimited nuber of floors though its best to restrict a limit that best fits to the map design (this has been tested up to ten floors so far --[[User:Kwp17pitts|Kwp17pitts]] 10:18, 5 February 2012 (PST))}} | ||
Revision as of 00:56, 21 February 2012

How It all works
- Initial Start
First when the player gets int an elevator, he or she will press a button representing a floor. Lets say Elevator_M6_Button_&i was pressed (Pressing Elevator_F6_Button_&i refer to the same set of commands), it would first trigger the F6_ButtonFunctions_&i commands to trigger Close_AllDoors_&i, F6_TestRelay_&i, LockButtons_&i. Also calling Elevator_&i and Elevator_Weight_&i to SetPosition to 5 (func_movelinear always start with 0). As well as calling the Elevator_Chime_&i to PlaySound.
- Process of Closing All Doors
Close_AllDoors_&i actually closes one door, but calls on the CompareAll_&i to do its own work of finding the open doors thus preventing refiring all of the doors to animate unnecessarily. When CompareAll_&i is triggered, it causes all of logic_compare enities named F1_Compare_&i through F6_Compare_&i to force their comparisons to be made.
F6_TestRelay_&i will trigger the Test_Relay_All_&i(which forces the value of zero and tests it for branchesz F1_Branch_Button_&i through F6_Branch_Button_&i) and retrigger F6_Branch_Button_&i to have its value set at one and tested.
LockButtons_&i Locks all of the buttons inside and outside of the elevator for the duration of the cycle (prevents the elevator from changing floors while running)
When Elevator_&i gets to the sixth floor, it passes over the F6_Trigger_&i (Passe over others as well) .When the elevator is touching F6_Trigger_&i , it sets the value of 1 and tests it on F6_Branch_Trigger_&i, when it is not touching it sets F6_Branch_Trigger_&i to 0 and tests it. (This also fires other commands but they are not critical to operation).
The F6_Branch_Listener_&i Listens to find if both F6_Branch_Button_&i and F6_Branch_Trigger_&i set to 1. If that is the case it fires F6_Timer_&i to start. After the duration of 3 seconds have passed, it triggers UnlockButtons_&i, 1/6 of a second later it locks both Elevator_F6_Button_&i and Elevator_M6_Button_&i, 5/6 of a second later it disables F6_Timer_&i, and last at 1 5/6 of a second later, Elevator_M_Door_&i is opened and F6_DoorBranch_&i value is set at 1 and tested.
When the'F6_DoorBranch_&i conditions are met ,It triggers F6_DoorTimerOpen_&i to be enabled and fires the timer 1/6 of a second later. When the time is up it fires Elevator_OpenDoor_F6_&i to tigger. Then Elevator_F6_Door_&i is triggered to open, Elevator_Sound_F6_Door_&i PlaySound, and F6_SetAllCompare_&i is triggered setting all of the logic_compare entities F1_Compare_&i Through F6_Compare_&i to 6. When the condition is met, F6_Compare_&i will trigger F6_DoorBranch_&i set the value to 0 and test it.
Construction
This elevator's surrounding construction fallows simililar to the MultiStop elevator tutorial, however, the elevator itself is constructed from a func_movelinear. Therefore, you will not need any pathtracks. This allows the elevator to stop exactly at each point rather than slightly above or below the intended destination.
Brush Entities
This would be the entity that will move thw player to his or her desired floor
ClassInfo
- Class
- Name
- Elevator_&i
- Move Direction (Pitch Yaw Roll)
- -90 0 0
- Move Distance
- 160
Note:To figure the move distance, add the height of the wall height plus floor thickness (The walls were 128 tall, floors were 32 thick)
- 160
- Block Damage
- 2000
Note:Necessary to prevent the elevator from getting jammed
- 2000
- Sound played when the brush starts moving
- (Pick A Sound)
- Sound played when the brush stops moving
- (Pick A Sound)
Outputs
NONE

Place this at the top most floor
ClassInfo
- Class
- Name
- Elevator_Weight_&i
- Move Direction (Pitch Yaw Roll)
- 90 0 0
- Move Distance
- 160
Note:To figure the move distance, add the height of the wall height plus floor thickness (The walls were 128 tall, floors were 32 thick)
- 160
- Block Damage
- 2000
Note:Necessary to prevent the elevator from getting jammed
- 2000
- Sound played when the brush starts moving
- (Pick A Sound)
- Sound played when the brush stops moving
- (Pick A Sound)
Outputs
NONE
This entity would be placed on a wall outside of the elevator
ClassInfo
- Class
- Name
- Elevator_F1_Button_&i
Outputs
My Output | Target Entity | Target Input | Parameter | Delay | |
---|---|---|---|---|---|
![]() |
OnPressed | F1_ButtonFunctions_&i | Trigger | 0.00 |
Flags
☑ Don't move
☐ Toggle
☐ Touch Activates
☐ Damage Activates
☑ Use Activates
☐ Starts Locked
☐ Sparks
This entity would be placed inside of the elevator and will move with it.
ClassInfo
- Class
- Name
- Elevator_M1_Button_&i
- Parent
- Elevator_&i
Outputs
My Output | Target Entity | Target Input | Parameter | Delay | |
---|---|---|---|---|---|
![]() |
OnPressed | F1_ButtonFunctions_&i | Trigger | 0.00 |
Flags
☑ Don't move
☐ Toggle
☐ Touch Activates
☐ Damage Activates
☑ Use Activates
☐ Starts Locked
☐ Sparks
This is used for detecting the elevator as it passes over. It is mainly used for door control, though it can be used for indicator lights.

ClassInfo
- Class
- Name
- F1_Trigger_&i
Outputs
Flags
☐ Clients
☐ NPCs
☐ Pushables
☐ Physics Objects
☐ Only player ally NPCs
☐ Only clients in vehicles
☑ Everything (not including physics debris)
☐ Only clients *not* in vehicles
☐ Physics debris
☐ Only NPCs in vehicles (respects player ally flag)
Functional Relays
These Fuctional relays were created to reduce the number of commands when operating the elevator. More for organizational purposes. For example, rather than rewriting 6 or 12 commands in roughly 24 diferent places, we can write one command for the same 24 places.
This Locks the buttons to prevent players from retriggering while the elevator is operating.
ClassInfo
- Class
- Name
- LockButtons_&i
Outputs
This unlocks when the elevator is done with the full cycle.
ClassInfo
- Class
- Name
- UnockButtons_&i
Outputs
This forces all of the logic_compare entities to compare the currently set values to effect the doors on all floors.
ClassInfo
- Class
- Name
- CompareAll_&i
Outputs
This is to force close all of the doors when the elevator starts its cycle. (Utilizing the CompareAll_&i relay)
ClassInfo
- Class
- Name
- Close_AllDoors_&i
Outputs
My Output | Target Entity | Target Input | Parameter | Delay | |
---|---|---|---|---|---|
![]() |
OnTrigger | CompareAll_&i | Trigger | 0.00 | |
![]() |
OnTrigger | Elevator_M_Door_&i | SetAnimation | close | 0.00 |
Used for setting all of the values to false (0) the the elevator has a destination change.
ClassInfo
- Class
- Name
- Test_Relay_All_&i
Outputs
Used to open the first floor door when the map starts.
ClassInfo
- Class
Outputs
My Output | Target Entity | Target Input | Parameter | Delay | |
---|---|---|---|---|---|
![]() |
OnMapSpawn | Elevator_M_Door_&i | SetAnimation | open | 0.00 |
![]() |
OnMapSpawn | F1_DoorBranch_&i | SetValueTest | 1 | 0.00 |
Floor Spacific Functions
Increment F1 in a entity name to the next intended floor (That includes the output commands as well)
- EX. (F1_TestRelay_&i to F2_TestRelay_&i)

This triggers the cycle instructions to get to the particular floor (Triggered by one of the two elevator buttons)
ClassInfo
- Class
- Name
- F1_ButtonFunctions_&i
Outputs
ClassInfo
- Class
- Name
- F1_TestRelay_&i
Outputs
My Output | Target Entity | Target Input | Parameter | Delay | |
---|---|---|---|---|---|
![]() |
OnTrigger | F1_Branch_Button_&i | SetValueTest | 1 | 0.01 |
![]() |
OnTrigger | Test_Relay_All_&i | Trigger | 0 | 0.00 |
This branch will only have a true value (1) if the corresponging button has been pressed (ex. if "Elevator_F1_Button_&i" was pressed, F1_Branch_Button_&i would be set to true)
ClassInfo
- Class
- Name
- F1_Branch_Button_&i
- Initial value
- 0
Outputs
NONE
This branch will only have a true value (1) if the corresponging trigger has been tripped (ex. if "F1_Trigger_&i" was pressed, "F1_Branch_Trigger_&i" would be set to true)
ClassInfo
- Class
- Name
- F1_Branch_Trigger_&i
- Initial value
- 0
Outputs
NONE
This listens to the values of both branches, of the same floor, before triggering the timer control. (This is only set to look for the true value of the branches)
ClassInfo
- Class
- Name
- F1_Branch_Listener_&i
- Logic Branch 01
- F1_Branch_Button_&i
- Logic Branch 02
- F1_Branch_Trigger_&i
Outputs
My Output | Target Entity | Target Input | Parameter | Delay | |
---|---|---|---|---|---|
![]() |
OnAllFalse | F1_Timer_&i | Disable | 0.00 | |
![]() |
OnAllTrue | F1_Timer_&i | Enable | 0.00 | |
![]() |
OnMixed | F1_Timer_&i | Disable | 0.00 | |
![]() |
OnAllTrue | F1_Timer_&i | FireTimer | 0.10 |
This was used to prevent retriggering the doors, only activates the fallowing commands after a 3 second delay.
ClassInfo
- Class
- Name
- F1_Timer_&i
- Start Disabled
- Yes
- Refire Interval
- 3
Outputs
A set of instructions to open the specified door on the same floor.
ClassInfo
- Class
- Name
- Elevator_OpenDoor_F1_&i
Outputs
My Output | Target Entity | Target Input | Parameter | Delay | |
---|---|---|---|---|---|
![]() |
OnTrigger | Elevator_F1_Door_&i | SetAnimation | open | 0.00 |
![]() |
OnTrigger | Elevator_Sound_F1_Door_&i | PlaySound | 0.00 | |
![]() |
OnTrigger | F1_SetAllCompare_&i | Trigger | 0.00 |
A set of instructions to close the specified door on the same floor.
ClassInfo
- Class
- Name
- Elevator_CloseDoor_F1_&i
Outputs
My Output | Target Entity | Target Input | Parameter | Delay | |
---|---|---|---|---|---|
![]() |
OnTrigger | Elevator_F1_Door_&i | SetAnimation | close | 0.00 |
![]() |
OnTrigger | Elevator_Sound_F1_Door_&i | PlaySound | 0.00 |
timer delay for opening the door on the specified floor (prevents glitching the animations)
ClassInfo
- Class
- Name
- F1_DoorTimerOpen_&i
- Start Disabled
- Yes
- Refire Interval
- 3
Outputs
My Output | Target Entity | Target Input | Parameter | Delay | |
---|---|---|---|---|---|
![]() |
OnTimer | Elevator_OpenDoor_F1_&i | Trigger | 0.00 |
---
timer delay for closing the door on the specified floor (prevents glitching the animations)
ClassInfo
- Class
- Name
- F1_DoorTimerClose_&i
- Start Disabled
- Yes
- Refire Interval
- 3
Outputs
My Output | Target Entity | Target Input | Parameter | Delay | |
---|---|---|---|---|---|
![]() |
OnTimer | Elevator_CloseDoor_F1_&i | Trigger | 0.00 |
This controls when the door should be open or closed
ClassInfo
- Class
- Name
- F1_DoorBranch_&i
- Initial value
- 0
Outputs
This sets all of the floors to a certain value (if we were going to floor 6, all of the value are set to six, then only one logic_compare enity is tripped that uses 6 as its compare value therefor only triggering the doors on the sixth floor)
ClassInfo
- Class
- Name
- F1_SetAllCompare_&i
Outputs
ClassInfo
- Class
- Name
- F1_Compare_&i
- Compare value
- 1 {{Note| This must be change to the cooresponding floor number (If F6_Compare_&i then this value must be set at 6)
Outputs
My Output | Target Entity | Target Input | Parameter | Delay | |
---|---|---|---|---|---|
![]() |
OnEqualTo | F1_DoorBranch_&i | SetValueTest | 0 | 0.00 |