Try this: (Note: When scripts get this long, I tend to comment it a lot to keep things organized.)
desc = Sprint 2.0
;///The actual run control, testing various things (like arrow keys)
:plrusingrun=1,etimergreater=1000,keypressed= 32 1:CustAnimGun=1,etimerstart
:plrusingrun=1,etimergreater=1000,keypressed= 31 1:CustAnimGun=1,etimerstart
:plrusingrun=1,etimergreater=1000,keypressed= 30 1:CustAnimGun=1,etimerstart
:plrusingrun=1,etimergreater=1000,keypressed= 17 1:CustAnimGun=1,etimerstart
:plrusingrun=1,etimergreater=1000,keypressed= 200 1:CustAnimGun=1,etimerstart
:plrusingrun=1,etimergreater=1000,keypressed= 203 1:CustAnimGun=1,etimerstart
:plrusingrun=1,etimergreater=1000,keypressed= 208 1:CustAnimGun=1,etimerstart
:plrusingrun=1,etimergreater=1000,keypressed= 205 1:CustAnimGun=1,etimerstart
;///This is to test for ending animation for running, including movement keys.
:state=0,plrusingrun=0:CustAnimGun=2,state=1
:keypressed= 32 0,keypressed= 31 0,keypressed= 30 0,keypressed= 17 0,keypressed= 200 0,keypressed= 203 0,keypressed= 208 0,keypressed= 205 0,state=0:CustAnimGun=2,state=1
;///And this is to make sure that the animation doesn't loop. (also in the last line. That's what the state parts are for Ply. :) )
:state=1,plrusingrun=1:state=0
Also, in the gunspec, replace the part you previously added with:
customanims = 2
canim1 = [ANIMATION FRAMES FOR THE SPRINTING ACTION]
canim2 = [LAST FRAME OF THE ANIMATION],[LAST FRAME OF THE ANIMATION AGAIN]
I should be getting paid for this.