I think what jc2 suggested is really important. The way I learned to script is by looking up how something I want to do is done somewhere else in the game. But sometimes particularly this issue got in the way, because sometimes things seemed like they just happened, so I didn't know where to look for the script. I learned eventually, but for the newbie, this is definitely important to cover.
jc2, in short, scripts can be fired by: 1. events 2. dialogs 3. ExecuteScript()
4. some GUI events (the script is then listed in a .2da)
I think this exhausts the different ways it can be fired. Correct me if I missed something!
The first one needs a lot of comments, hopefully to be dealt with in the stream