Need help with my elevator!

Can some make an easy step-by-step guide on how to make an elevator like the one on hightower.
I've tried by myself and I've read and tried to understand frozen's thread but I just can't get it to work.
Please help me!

I have done something on the subject. Be warned, however: it's not easy. This is the most efficient way to do it if you would like to make multiple elevators (in before Booj comes in and corrects me). This will also work for a single elevator (and is how I have it set up in the .vmf/walkthrough), but there is another method which is SLIGHTLY more efficient. I designed this for use with my 3 elevators in my Dynamic Payload Contest map.

My current post doesn't walk you through making the cart rollback when unattended for 30 seconds (it doesn't happen automatically anymore because the team_train_watcher can't handle the movement), but the .vmf has the system set up and working if you'd like to take a look at that.

The Push Logic

I'm using Boojum's stock team_train_watcher (called "sspl_watcher") with the "Handle Train Movement" flag set to "No" and one Output added:

A math_remap converts the number of current players on the cart into an integer we can use. I have mine named "cart_push_remap" with "Maximum Valid Input Value" and "Output Value When Input is Max" both set to 3.
I have a single output:

Code:

OutValue | bomb_cart_case | InValue | *NO PARAMETER* | 0

Of course, we can't do anything if the sspl_pushzone (the cart's trigger_capture_area) gives us no numbers to work with! Add the following outputs to Boojum's default sspl_pushzone:

The second one I call my "multiplier." This modifies your overall speed. We use it to make the elevator go slower, but you should also use it if you want to speed up or slow down the cart (whenever you would typically send a SetSpeedForwardMultiplier output to your team_train_watcher). Most of the fields are default, except for the "name" and "initial value" fields (cart_speed_multiplier and 1, respectively). It also has 2 outputs:

It SHOULD multiply against the cart's current speed when it changes, but I like to send a "GetValue" output to the entity after I send whatever speed adjustment I want to make to the multiplier with a delay of .10, just to be safe. Redundancy.

Now to set up our three logic_relays for the conclusion of the push logic. These handle stopping the cart if no one is nearby, making it roll back down a hill should you want a traditional rollback zone (elevators get their own logic_case), and the usual rollback if a cart is left unattended.
The first is akin to your cart_speed_watcher in that it takes output from the pushzone and translates it into something your cart can use. I named mine "stopped_relay" and left the "Start Disabled" tag set to "No".
As for the output:

Code:

OnTrigger | cart_speed_watcher | SetValue | 0 | 0

The second is like your multiplier where it is only used for rolling back down a hill (for traditional rollback, see Rewind's post). This does NOT apply to your elevator.

To use this for a rollback zone, just enable "rollback_relay" and disable "stopped_relay" as the cart enters the rollback zone (at the same time you disable the path_track behind it). Keep the flags set on your rollback zone to "Rollback zone on HUD (Auto-roll if team_train_watcher handles movement)," even though you don't have auto-roll. This keeps it on your HUD regardless. Make sure to disable it again after the rollback zone!

Your third should be named "cart_rollback_relay". Here are your outputs:

Now create your elevator's func_tracktrain platform. Follow Frozen's instructions, giving it a dummy path alongside the cart. Make sure the keyvalues match those of the cart if you want them to appear to be going the same speed. If you're following the naming scheme of this tutorial, name it "elevator_train" and make the "First Stop Target" field "elevator_platform_path_start" (and make a path_track where you want it to wind up named "elevator_platform_path_end").

Copy the cart's trigger_capture_area and paste it on your platform. Change these keyvalues:

Code:

Name: elevator_pushzone
Parent: elevator_train
Start Disabled: Yes

Now create a logic_relay. This will handle the auto-rollback from the elevator.

At the BOTTOM of your elevator, change the "Angles" field in the top right until the circle with a single line in it is lined up with the direction you want your cart to be facing as seen from the TOP viewport.
Change the "Orientation Type" to "Face this path_track's angles".
Do the same for any other path_tracks inside your elevator (including the dummy ones the elevator follows).
On all of the cart's path_tracks, make sure you have "rollback zone on HUD" checked. I don't believe you need this checked for the elevator's path_tracks, as the team_train_watcher isn't handling movement there, either.

NOTE: For all path_track outputs (except for the StopSpark output on the bottom elevator path_track) check the "Fire Once Only" checkbox.

Now if you (and I) have followed this properly, then you'll have a working elevator! There may need to be some tweaking involved; it is a fairly complex system and likely can be simplified some.
Follow everything from the "Elevator Logic" section down if you'd like a second elevator.
You can have up to 4 rollback/rollforward zones appearing on the HUD. Any more won't show up, so while you CAN have more than 4 elevators or other rollback zones, I wouldn't suggest it.
If I have missed some entity logic or this doesn't work somehow, let me know and I'll see if I can debug it. It was quite a bit of work getting all those outputs correct, and I may have missed something somewhere along the way.