you gonna have to dig into scripting anyway if you want this.
I'm just suggesting, cos I've never done this myself but...I think you could:
-check if the player/soldier has fired (eventhandler "fired" orso)
-if fired, run a short script.
-check if a gun was fired (and not a grenade etc)
-that script checks which way the player/sold is facing
-check the position (lying prone standing)
-creates a smokepuff (drop command), taking in consideration the direction of the player and from the position of the player the most likely height of the gun.
-maybe add a delay, so smoke come out only after the round of bullets, and not after each bullet
*but....if you just want this on the player, than it's ok I think (and possible). If you want it on all units, you will have a huge amount of script running and checking very often (you odn't want to smoke come out 1 second after you fired...it has to be there right after your shot)
I think you can look these commands up at the Editors Depot (check the online references eg) and also read some basic tute's on scripting. Hope this helps.
(once again, just my theory...no experience)