The first thing I noticed when I saw your scripts was that you wrote a bunch of [internal]s.
In the internal commands topic, the [internal]s represented internal commands. You don't actually type in [internal].
say(2)
changeplayercolour(red)
say(5)
...
Uhmmm this doesn't look right. You have to type in text(1,0,0,4) after the changeplayercolour command.
Internal scripting can be confusing (it sure was for me when I first tried it). If you want to use a single internal command, you can replace the entire script2 with
#
changeplayercolour(red)
This method works, I think, because that when iftrinkets(X,script) loads a script it copies the bottom line to the top of the script and executes it as an internal command. At least, that's what I've read.
This method is also handy for gotoroom(x,y)!
If you need further help, feel free to shoot me a PM.