this addeventhandler ["fired",{[this] exec "mgshot.sqs"}]
Tsk, would it hurt to check out the exact format of the command from comref?
If you had done that, you would've only got one answer that would suffice.
this addEventHandler ["fired",{_this exec "mgshot.sqs"}]
It MUST be followed to the letter, _this in this case means an array of "fired", not the unit in whose init that is in. "fired" _this will contain that unit, the weapon, ammo, muzzle and all that, while this [_this] would contain only the unit, and ofp won't understand why an EH won't contain anything else, as far as I can comprehend it's picky ways.