I have added a download of a demo of a small 2 player coop map using the new xbox commands. 2 controllers are needed to control both players otherwise player 2 just follows you. if player 2 leaves the view he automatically walks into view.
my FPSC scripting isn't that great, I'm sure someone else coud script this better.
heres the player1 script
;artificial intelligence script
desc = XBox 360 control entity
;triggers
:state=0:reloadweapon,settargetname=enemy1
:state=0:hideplrweapon,preventplrselectinggun=1,state=1
:state=1,plrdistfurther=250:plrspeedmod=50,plrforcemove=50
:state=1,plrdistwithin=240:plrforcemove=0
:state=1,reachtarget:coloff
:state=1,anywithin=5:settarget=pass
:state=1,xb_left_thumb_up=0:state=2
:state=1,xb_left_thumb_down=0:state=4
:state=1,xb_left_thumb_left=0:state=6
:state=1,xb_left_thumb_right=0:state=8
:state=1,xb_right_trigger=0:timerstart,state=80
:state=1,xb_no_button=0,xb_a_button=0:state=10
:state=80,random=24:settargetname=enemy1
:state=80,random=24:settargetname=enemy2
:state=80,random=24:settargetname=enemy3
:state=80,random=24:settargetname=enemy4
:state=80,random=8,timergreater=250:reloadweapon,rotatetotarget,useweapon,rundecal=6,state=1
:state=2:timerstart,state=3
:state=3,timergreater=100:runfore=30,animationnormal,animate=5,timerstart,state=1
:state=3,xb_right_trigger=0:rotatetotarget,reloadweapon,useweapon
:state=4:timerstart,state=5
:state=5,timergreater=100:runback=30,animationreverse,animate=5,timerstart,state=1
:state=5,xb_right_trigger=0:rotatetotarget,reloadweapon,useweapon
:state=6:timerstart,state=7
:state=7,timergreater=100:rotatey=-15,timerstart,state=1
:state=7,xb_right_trigger=0:rotatetotarget,reloadweapon,useweapon
:state=8:timerstart,state=9
:state=9,timergreater=100:rotatey=15,timerstart,state=1
:state=9,xb_right_trigger=0:rotatetotarget,reloadweapon,useweapon
:state=10:animate=31
:state=10,xb_left_thumb_left=0:rotatey=-15,state=1
:state=10,xb_left_thumb_right=0:rotatey=15,state=1
:state=10,xb_left_thumb_up=0:state=11
:state=11:animate=32,movefore=7,state=1
:always:plrpointatobject=0
;end of script
here's player2 script
;artificial intelligence script
desc = XBox 360 control entity
;triggers
:state=0:reloadweapon,settargetname=enemy1
:state=0:state=1
:state=1,anywithin=5:settarget=pass
:state=1,reachtarget:coloff
:state=1,inview=0:state=12
:state=1,xb_left_thumb_up=1:state=2
:state=1,xb_left_thumb_down=1:state=4
:state=1,xb_left_thumb_left=1:state=6
:state=1,xb_left_thumb_right=1:state=8
:state=1,xb_right_trigger=1:timerstart,state=80
:state=1,xb_no_button=1,xb_a_button=1:state=10
:state=80,random=24:settargetname=enemy1
:state=80,random=24:settargetname=enemy2
:state=80,random=24:settargetname=enemy3
:state=80,random=24:settargetname=enemy4
:state=80,random=8,etimergreater=250:reloadweapon,rotatetotarget,useweapon,rundecal=6,state=1
:state=2:etimerstart,state=3
:state=3,etimergreater=100:runfore=30,animationnormal,animate=5,etimerstart,state=1
:state=3,xb_right_trigger=1:rotatetotarget,reloadweapon,useweapon
:state=4:etimerstart,state=5
:state=5,etimergreater=100:runback=30,animationreverse,animate=5,etimerstart,state=1
:state=5,xb_right_trigger=1:rotatetotarget,reloadweapon,useweapon
:state=6:etimerstart,state=7
:state=7,etimergreater=100:rotatey=-15,etimerstart,state=1
:state=7,xb_right_trigger=1:rotatetotarget,reloadweapon,useweapon
:state=8:etimerstart,state=9
:state=9,etimergreater=100:rotatey=15,etimerstart,state=1
:state=9,xb_right_trigger=1:rotatetotarget,reloadweapon,useweapon
:state=10:animate=31
:state=10,xb_left_thumb_left=1:rotatey=-15,state=1
:state=10,xb_left_thumb_right=1:rotatey=15,state=1
:state=10,xb_left_thumb_up=1:state=11
:state=11:animate=32,movefore=7,state=1
:state=12:settargetname=player1,rotatetotarget,animate=2,movetotarget=-200,state=13
:state=13:settargetname=enemy,state=1
;end of script
and an enemy script
;Artificial Intelligence Script
;Header
;Triggers
:state=0:state=1
:state=1,random=25:settargetname=player1
:state=1,random=25:settargetname=player2
:state=1,anywithin=400:settarget,state=2
:state=1,shotdamage=10:rotatetotarget
:state=1,noiseheard=5:rotateheadrandom=85
:state=1,random=10:rotateheadrandom=75
:state=2:rotatetotarget,resethead,animate=5,state=3
:state=3,random=10,rateoffire:reloadweapon,useweapon,rundecal=6,runfore=20
:state=3,losetarget=10:state=4,animate=1
:state=3,plrdistwithin=500:state=4,animate=1
:state=4:rotatetotarget
:state=4,anywithin=200:settarget,state=0
:state=4:state=0
;End of Script