It seems a bit of an odd way to organise it, my way of animating the models is to have the idle animation working, as the 'w' key is pressed, the frame is set to the start of the animation then increased as the key is held, then reverts back to the beginning again.
Here's some code to keep it organized if you want, you don't have to though, it just may help. I adapted it a bit to keep with the animations of your model. It's not tested, just adapted so there maybe a mistake in it.
Create these variables first(out of the main loop)
IAS=(The first frame of the idle animation)
IAE=(The last frame of the idle animation)
WAS=(The first frame of the movement animation)
WAE=(The last frame of the movement animation)
rem default frame settings
move=0
if object frame(2)<82 or object frame(2)>184
reload=0
endif
rem player idle
if move=0
inc IAE,1
set object frame 2,IAS
if IAE<IAS then IAE=(The last frame of the idle animation)
endif
rem player forwards movement
if scancode()=17
move=1
set object frame 2,WAS
inc WAS,1
if WAS>WAE then WAS=(The first frame of the movement animation)
endif
rem player backwards movement
if scancode()=31
move=1
set object frame 2,WAE
dec WAE,1
if WAE<WAS then WAE=(The last frame of the movement animation)
endif
rem player reload
if scancode()=19
reload=1
play object 2,82,184
endif
I was not sure if the frames were the animations of the player or the weapon, but they should work the same. I went on a bit here, but this was an attempt to improve my own programming and help you.
I think I know what the problem was in the first place if you just wish to keep your code and correct it -
The reload animation will only play once as you have told it to.
The reload variable will only return to 0 if the object is not in an animation at the present time, since you have an idle animation going then it will constantly be playing.
Hope that helped, I may not have solved your problem but here it is anyway.
V