I myself use "settargetname=x" and "activatetarget=1". For example, this is a snippet from a script I have in a game where the player interacts with a character. He is assigned a tommy gun and ammo (there is much more but this is just a snippet)...
:state=18:hudshow=l01_initial_brief_007,etimerstart,state=19
:state=19,etimergreater=150,scancodekeypressed=28:rotateheadrandom=65,hudunshow=l01_initial_brief_007,state=20
;ACTIVATE PLR TOMMYGUN
:state=20:hudshow=l01_initial_brief_008,etimerstart,state=21
:state=21,etimergreater=150,scancodekeypressed=28:rotateheadrandom=40,hudunshow=l01_initial_brief_008,state=22
:state=22:settargetname=l01_plr_tommygun,activatetarget=1,etimerstart,state=23
:state=23,etimergreater=200:state=24
:state=24:hudshow=l01_initial_brief_009,etimerstart,state=25
:state=25,etimergreater=150,scancodekeypressed=20:rotateheadrandom=20,hudunshow=l01_initial_brief_009,state=26
:state=26:etimerstart,state=27
:state=27,etimergreater=2000:hideplrweapon,state=28
;ACTIVATE TOMMYGUN AMMO
:state=28:hudshow=l01_initial_brief_010,etimerstart,state=29
:state=29,etimergreater=150,scancodekeypressed=28:rotateheadrandom=65,hudunshow=l01_initial_brief_010,state=30
:state=30:settargetname=l01_plr_tommygunammo,activatetarget=1,etimerstart,state=31
:state=31,etimergreater=200:state=32
:state=32:hudshow=l01_initial_brief_011,etimerstart,state=33
:state=33,etimergreater=150,scancodekeypressed=20:rotateheadrandom=40,hudunshow=l01_initial_brief_011,state=34
:state=34:etimerstart,state=35
:state=35,etimergreater=500:state=36
I spawn the tommy gun and ammo using the commands "settargetname=x" and "activatetarget=1" and use these throughout the entire script spawning inventory and other items as requested by the player. I don't assign any special scripts other than the default or pickup scripts to the items, and I ensure the "spawn at start" is set to no. Using this method allows me more flexibility since the If Used field only allows for one item whereas I can spawn all the items I specify in one script (providing I have them placed in the level).
As far as having items spawn "behind" a player, you will need to ensure that the player when needed is "frozen" in place (plrfreeze=x). The spawning system is wacky in some degree and does not work as one would think it would, so you will need to be creative and work around the inherent issue.
There's no problem that can't be solved without applying a little scripting.