Explain better what you are trying to do, I was making assumptions with this.
A topic titled "Emit sound with timer" and "Hello where is my mistake ?" doesnt give much guidance.
One thing you can try with your code is declare b_StopSound[32] as global, and you need to size it 33 not 32. So at the top of all of your code, under the includes, put new bool:b_StopSound[33]. It is false by default so you do not need = false. Remove static b_StopSound[32] from the damage forward.
Add client_disconnect( id ) and use remove_task( id ) and b_StopSound[ id ] = false there.
SoundOff[client] = false has no effect to the variable you declared in the damage event. This only works when the variable is passed by reference, which it is not when passed with set_task().