You can keep the scripts pretty small - I once made a fired EH which created a light source for some kind of laser cannon. Will probably work with models too: just create a fired EH, define the bullet, shell or whatever, create the object, make a loop and use a setpos (maybe also a setdir) command. Exec sth like this in the fired EH:
_shot = nearestobject [_this select 0, _this select 4]
_obj = "objName" camcreate getpos _shot
#loop
_pos = getpos _shot
_obj setpos _pos
~0.001
? _shot == _shot : goto "loop"
deleteVehicle _obj
The object\Shell model should have no FireGeometry LOD, else it will explode right away.
And don't forget to execute something like this first (otherwise every fired shot by the unit will be affected):
? (_this select 4) == "NameOfAmmo" : _this exec "pathOfWhatIdidAbove.sqs";
...
exit
I hope my twisted words are somehow helpful.