Garry's Mod

Garry's Mod

2,852 ratings
Track Assembly Tool
Type: Tool, Addon
Tags: Fun, Build
File Size
0.708 MB
Jul 16, 2014 @ 10:56am
Jul 2 @ 12:13pm
267 Change Notes ( view )

Subscribe to download
Track Assembly Tool

In 1 collection by [Sk$Bh]Trick or treat KID!
DVD's addon collection
254 items
This script can give you the ability to connect prop-segmented track pieces fast. It is optimized and brings the track building time consuming to a minimum. It uses pre-defined active points to snap the segments the best way there is in Garry's Mod

Feature List
  • Context menu for direct track entity value export and manipulation
  • Track curve fitting aligment based on ray intersection for precise piece layout
  • Extendable database via text file or a lua script[]
  • Extendable database via text file load list[] and list prefixes[] categories[]
  • Switching database storage between Lua table and SQL
  • Spawning pieces on the map
  • Snapping pieces on the map surface ( if checked )
  • Snapping/spawning with custom user offsets
  • Snapping/spawning with zero pitch ( good for track leveling )
  • Snapping/spawning at the mass-center or the active point ( if checked )
  • Snapping the first piece yaw to user defined angle
  • Snapping already spawned pieces by using only the physgun
  • Fast changing the active track ends ( Alt + mouse scroll good switching turns direction )
  • Custom user defined active radius based snapping
  • Custom active point and radius location assistant
  • Custom active point position angle and orientation adviser
  • Advanced duplicator can be used on the track created
  • Custom entity properties ( weld, freeze, no-collide )
  • User can disable phys-gun grabbing on a piece ( good for turntables )
  • Ability to list up the most used pieces on the server ( E + Right )
  • Ability to search among the most server popular pieces by Lua patterns[]
  • Ability to export server and client database as a file
  • Tool-tips for every button are available and can be translated easily
  • Ability to spawn scripted track switches of other class ( Ron's 2ft )
  • Ability to modify the bodygroups and skins of a track piece ( with duping )
  • Ability to modify track piece suface behavior ( wood, metal, slime, tire )
  • Ability to extend a track piece spawn with additional entities
  • Includes integrated wiremod extension

For detailed manual, please refer to


Wiki page:

Git repository:

Report errors to:



One way turns problem:

Reuploading and source stealing will not be tolerated !
Selling it is also out of option, as the open source suggests !

If you want to support me and you like what I do:
Popular Discussions View All (20)
Jun 10 @ 12:18pm
Ghosting certain tracks seriously lags
33.66 Million Snails
Jun 9 @ 12:02pm
Support for Modular Canal Pack?
Aug 29, 2019 @ 1:58am
Track assembly problem
< >
[Sk$Bh]Trick or treat KID!  [author] Jun 19 @ 6:24am 
@Epic Gamer 101

Could you please give an example ?
Lumehr Jun 17 @ 1:06pm 
Thanks, and yeah Facepunch automatically redirects itself through Wayback I think.

Think I fixed it. Incase someone else is reading this and is curious,

I was using it for a swep, and self.owner was not found because the holder (an NPC) died, which stopped the NPC from being even tested as Self.Owner of the item. So I declared this NPC as a variable and THEN check if it is valid.

Weird thing, I was scratching my head about that for so long but now it seem so obvious - thanks!
[Sk$Bh]Trick or treat KID!  [author] Jun 16 @ 12:51pm 

You have to scope the entity. The timer runs only once after given amount of seconds and it is destroyed and function has been executed. Here I am doing operations on the track physics object "pyPiece" that is defined in about 10 rows above.

How did you open Facepunch forums anyway. They moved to knockout and discord.
Did you use a time machine of some sort... Oh, wait ....*/

You did ! :D
Lumehr Jun 16 @ 10:19am 
I found this through a 4 year old Facepunch thread and I was wondering how you fixed the problem of being unable to perform operations on a deleted entity with Timer.simple, because IsValid etc. does not work.

Do you remember how you fixed that? Thank you
[Sk$Bh]Trick or treat KID!  [author] Jun 9 @ 5:10am 
@Костя 24 minutes ago

You can try spawning them, but the active track ends will be miss-aligned. If you run a train on them, it will always derail at the joints. If you need more information why Magnum insisted them to be Hammer-only, I think you better ask him.
Костя Jun 9 @ 4:43am 
About the fact that this is only for Hammer, I know, but I still want to put them right in the game.
[Sk$Bh]Trick or treat KID!  [author] Jun 9 @ 3:18am 
@Костя 1 hour ago

1. Magnum's track pack is jut a prefab used by mappers for compiling maps. Magnum himself noted that these are not designed to be used as props and they are intended to be used in Hammer, where they fit together perfectly. Check the read-me for details:

2. About adding your rails you probably want to use DSV to hook you database externally:

If you need a genuine example of how to use DSV you can go take a look at Shinji,s rails:
Костя Jun 9 @ 1:32am 
Will you do support for Magnum's Trakpak2? Or how can I add my rails?
Костя Jun 8 @ 11:17am 
Thanks :balloon:
[Sk$Bh]Trick or treat KID!  [author] Jun 8 @ 10:38am 
@Костя 5 hours ago

1. You change the working mode to `Ray intersect snap` under ID 2
2. Hold `E` and `Reload` on a rail to define the relation ray
3. Point to another rail and click to complete the process