One possible solution is to store arrays of all units in your mission, and query their ammo in a script. If a unit has opened fire you then have to check it against all other units to see if he's facing him (you can do that using getdir and trigonometry, or maybe using vectors and dotproduct).
This isn't very reliable though, and its also quite complicated to script.