User talk:Srs bsnss

From Valve Developer Community
Jump to: navigation, search

I'm sick of seeing the red text at the top of my screen, so here I am, making this page exist. Srs bsnss 01:33, 4 July 2013 (PDT)


This is kinda tricky. There are three ways that it can be done.

  1. Animations - this is what Valve uses. There's a cube model, I forget it's name, which has animations that are designed for specific sets of pipes and so I wouldn't recommend it, unless you copy-paste some tubes from Valve maps.
  2. A system of trigger_push entities. This is the dodgiest method, and is used only once or twice in the official game. It involves trigger_pushes pushing the cube through the pipes. It would not recommend it, unless you need to use the physical cube in the test.
  3. Path_tracks and tracktrains. This is how I do tube cubes and have generally found it to be the easiest and best way.

How to do method #3

  • Inside your pipe system, at the start, create a path_track entity. Give it a name like vac_path1. Set the 'Next Stop' to vac_path2. Duplicate it (hold shift + drag), and it should automatically re-name it and connect it to the first one. Continue this process of duplicating the one before until you have enough to satisfy your pipes (pro tip: more path_tracks in bends will make it smoother). One the last one, give it the output:
OnPass > !activator > Kill
  • Create a prop_dynamic_override. Set it's model to metal_box.mdl. Name it whatever you want (e.g. vac_box)
  • Use the brush tool to create a func_tracktrain (a brush entity). It only needs to be a 32x32x32 cube, if not smaller. Align it with the center of the prop_dynamic_override. Give it the following settings:
Name = vac_tracktrain
First Stop = vac_path1
Max/Initial Speed = 800 is good, but whatever you like

  • Go back to the prop_dynamic_override's settings, set 'Parent' to vac_tracktrain.
  • Create a point_template entity. Name it vac_temp. Give it the following settings:
Temp 1 = vac_tracktrain
Temp 2 = vac_box

  • Create a logic_timer. Give it the following settings:
Name = vac_timer
Random Time = Yes
Min. Interval = 0.3 is good but whatever you want
Max. Interval = 1.3 is good but whatever you want.

Smaller gap will mean a greater frequency of cubes.

  • Give it the following output:
OnTimer > vac_temp > ForceSpawn.

  • Simply trigger the logic_timer, and you're done! Cubes!

But what if you want different objects? This only produces one type of cube!

  • Repeat the middle steps, I.E., create a new prop_dynamic_override, a new func_tracktrain, and a new point_template for your other object.
  • Create a logic_case. Give it a name like vac_spawner and give it the following outputs:
OnCase01 > vac_temp > ForceSpawn
OnCase02 > vac_temp2 > ForceSpawn
OnCase03 > vac_temp3 > ForceSpawn

etc. etc.

  • Go into the settings of the logic_timer. Remove the original output and give it this one:
OnTimer > vac_spawner > PickRandom.
  • Ta-da! Random objects through your tubes! Make sure you give them separate names, of course, as well as re-parenting and so on.

Hopefully this helps.