If state=0 [true when script is initialized] and the player is within the zone then play sound $0, start the timer and change state to 1.
Think of state as a container which holds a global variable. When the script first runs, the variable is initialized at zero, so state=0 is true, or not false.
We tend to think that the engine reads each line of a script over and over again until it finds a condition which is true, but in reality it looks for a condition which is not false, which is why the following works.
::sound=$0,destroy
The first colon can be thought of as "IF", and the second colon can be thought of as "THEN". Coma's [,] can be thought of as "AND". In the example, there is no condition to test and since nothing is false, the engine moves on to the action portion of the statement and destroys the entity.
There is no goto, but the engine continues to read each statement in sequence until it finds another condition which is not false. When it does, it executes the actions. So when the variable in STATE is changed to 1, the engine will continue to read each line stopping and executing the one which contains STATE=1, if it finds no other false conditions in that line.
Very simply put, IF this AND that is not false, then do this AND that. Changing the STATE value allows us to progress the script in a given sequence to fit our needs.
Best.
I'm sorry, my answers are limited. You must ask the right question.