well first of all, you don't execute 'My_0.01_settask', but the problem is that that function isn't really looped, or executed every frame.
So this check:
if(SoundTimer[id]-halflife_time()>1.0)
is only called one time.
__________________
before you criticize someone, you should walk a mile in their shoes. that way, when you criticize them, you're a mile away and you have their shoes.