Now let's create a new file called laser.c. Simply substitute your own model in this function. The only thing really non-standard here is that the 'nextthink' function is 0.1 seconds into the future. Moving the lasersight around Now lets look at LaserSightThink. Remember it gets called every 0.1 seconds, to move the laser sight around as the player moves.
Lets look at how a 'trace' is done.
If tr.fraction is 1.0, we didn't find anything directly in front of us within a range of 8192 units. This is only applicable if you use your own lasersight model, and give it a second skin for when a target is aquired. The last lines ensure the lasersight will think again, and soon. For example, make the second skin brighter. Or even make a cross where the middle of the cross is dark in color on the first skin and bright red on the second skin.