Oh, that was rather complicated, but you can always check the .map in the .pk3.
Notice that there is three func_trains, and they are all weapon clipped (three so there is no gap in the middle and you can't see them; this is so the shadow and lighting works right). Then on a very small grid size, I made a brush slightly lower than the player clip, and used the conveyor belt shader that had the exact same scroll speed as the train. Testing new scroll speeds does not require a recompile, just edit and overwrite old one.
You should be able to figure out the rest from there, and there's probably some easier way to do it (possibly a shader file that can move a player?).
