Taking the player on a tube ride

Avatar
Wsterfury
11 Posts
Posted May 26, 2011
Hello again!

Since all of my questions thus far have been answered quickly and efficiently, I'm starting to feel pretty good about coming here for advice and whatnot. Because of this, an Interesting Problem? follows.

I'd like to take the player on a short yet important ride between two different test chambers, using the pneumatic tubes. The idea is that they press a button and are whisked away to another portion of the level, fairly quickly. I know how to actually make a Pneumatic Diversity Vent, but...it doesn't seem like the player can actually fit into a tube.

Is there a way to allow a player to temporarily not abide by clipping and therefore be affected by the func_push to the point where they can move through the tubes with ease, or is there an even better solution to this predicament that I'm not thinking of?

Thanks!

Advertisement
Registered users don’t see ads! Register now!
Avatar
WinstonSmith
940 Posts
Posted May 26, 2011
Replied 6 minutes later
You can use a point_clientcommand to send a command of "+crouch" (without the quotes) when the player hops in the PDV; this will cause the player to crouch and [hopefully] fit in the tube. Optional: use the point_clientcommand to send a command of "-crouch" when they exit to make them automatically uncrouch.
Avatar
CraigChrist
41 Posts
Posted May 26, 2011
Replied 2 minutes later
I was trying to make Pneumatic Diversity Vent just for fun... I wanted to make it suck tiles of the wall. Which worked pretty well, but while testing it I accidentally got sucked into it and traveled all the way to the end.. so I guess it works fine. I used standard tube models (don't remember names right now) and func_push-es and point_push at the start of the tube.

but if somehow you can't get through the tube you can always disable the collision on it and make a larger tube with invisible brushes...

*edit

now that I think about it I might have crouched when I got sucked, not sure though...

Avatar
WinstonSmith
940 Posts
Posted May 26, 2011
Replied 2 minutes later

CraigChrist wrote:
*edit

now that I think about it I might have crouched when I got sucked, not sure though...

Heh, yeah, I can see this. Crouching at different times has become something of an involuntary reaction at times.

Avatar
CraigChrist
41 Posts
Posted May 26, 2011
Replied 29 minutes later
I was passing through a portal, and there were some physics objects that haven't got sucked and I couldn't pass because of them so I probably crouched to wiggle through and that was it :biggrin:

back on topic..

I don't know if it exists in portal but in l4d there was a trigger that forced a player to crouch. maybe that could be used? if it exists in portal of course.

Avatar
Wsterfury
11 Posts
Posted May 27, 2011
Replied 3 hours later

Hello again.

I set up a trigger_push chain for the tubes, along with a point_push to push the player into it. There's a point_clientcommand set up to fire +crouch and +jump when User1 is fired, and that happens via a trigger_once (that also enables the point_push).

The problem is, it doesn't seem to be working. :< Upon touching the trigger, nothing happens whatsoever. I've tried a couple different chains, but so far I can't seem to make heads or tails of it.

transition_tube_trigger: OnTrigger -&gt; transition_tube_push -&gt; Enable
transition_tube_trigger: OnTrigger -&gt; command_crouch -&gt; FireUser1

command_crouch: OnUser1 -&gt; !Player -&gt; Command -&gt; +crouch
command_crouch: OnUser1 -&gt; !Player -&gt; Command -&gt; +jump
Avatar
WinstonSmith
940 Posts
Posted May 27, 2011
Replied 13 minutes later

Wsterfury wrote:
```
transition_tube_trigger: OnTrigger -> transition_tube_push -> Enable
transition_tube_trigger: OnTrigger -> command_crouch -> FireUser1

command_crouch: OnUser1 -> !Player -> Command -> +crouch
command_crouch: OnUser1 -> !Player -> Command -> +jump




Ah, here's your issue--the point_clientcommand itself doesn't actually fire any outputs.  Instead, put the following outputs on the trigger_once that the player touches just before entering the PDV:

OnStartTouch-->[name of point_clientcommand]-->Command-->+crouch
OnStartTouch-->[name of point_clientcommand]-->Command-->+jump

And on the trigger touched upon exiting:

OnStartTouch-->[name of point_clientcommand]-->Command-->-crouch
```
The point_clientcommand entity receives an output from other entities; it then runs what's in the output's "Parameter" field as though you had typed that into the console.

Avatar
Wsterfury
11 Posts
Posted May 27, 2011
Replied 1 hour later
Okay, here I am again.

I got the clientcommand working just fine. The push itself, however, is sadly not running. Even the point_push stopped enabling from the trigger_once. The push triggers have "physics objects" flagged, and when I threw a test cube in the map the push did affect it; is there another flag I should have enabled?

As much of a hassle as this has been, this is one of those things I think I need to learn, and I think the map as a whole will be a lot cooler if I can get it to work.

Avatar
BaDOS
12 Posts
Posted May 27, 2011
Replied 36 minutes later
Decompile the map containing the neurotoxin implosion event and check what logic they use there, it should translate alright.

Also, you should have the 'Client' flag enabled.

Avatar
NocturnalGhost
200 Posts
Posted May 27, 2011
Replied 3 hours later
The game cheats a bit when it comes to this effect. The setup that they use consists of a point_viewproxy, which is set to freeze the player and shift your view to follow a func_tracktrain which travels through the pipes.

If you want to decompile the maps and take a look, the relevent maps are "sp_a2_bts5.bsp" for the initial part with the vent that sucks you in, and "sp_a2_bts6.bsp" for the tube ride. The maps are quite complex though, so you may be a bit overwhelmed if you are new to mapping. You should be able to figure it out by looking at the relevent entities though, and following their I/O comands through the chain of events that they use.

Advertisement
Registered users don’t see ads! Register now!
Avatar
Wsterfury
11 Posts
Posted May 27, 2011
Replied 9 hours later

NocturnalGhost wrote:
The game cheats a bit when it comes to this effect. The setup that they use consists of a point_viewproxy, which is set to freeze the player and shift your view to follow a func_tracktrain which travels through the pipes.

If you want to decompile the maps and take a look, the relevent maps are "sp_a2_bts5.bsp" for the initial part with the vent that sucks you in, and "sp_a2_bts6.bsp" for the tube ride. The maps are quite complex though, so you may be a bit overwhelmed if you are new to mapping. You should be able to figure it out by looking at the relevent entities though, and following their I/O comands through the chain of events that they use.

So I've noticed! It's taken some time and a little bit of learning into how func_tracks actually work, but I've got the track set up and it looks like this might just be doable yet. :> I'll probably edit this post in a bit if anything changes on that route though.