This section isn't going to have much rhyme or reason to it. It will basically be me rambling on about small (or large) nuances that I've learned while scripting. Just a bunch of things to be aware of, or interesting ways to use certain commands.
1) Start Small
Everyone wants to create a huge script that will do everything for them, so they can just sit back and watch. If you try this as your first, or even your tenth script, it's not going to work.
Just like everything else in life: When you are trying to create a masterpiece, you have to practice first. Attempting to make that huge script right off the bat will create huge problems for you, and chances are it will never work the way you want it to. By the time you get good enough to do a script that size, you're going to look at what you have done, decide it is a completely unworkable piece of trash, and start over from scratch. I've been there and done that.
2) Know the Commands
I'm going to provide all the commands, how they work, and give you detailed examples. You need to read through them at least once, and I suggest two to three times. I also suggest you print them out (I'll provide a truncated list on a separate page for printing) as it's much less painful to check a printout than to minimize your script, DR, and whatever else is on your desktop, so you can pull up a list of commands and their uses.
3) Read Other Scripts
This one is pretty important, but not an easy task. One of the fastest ways to learn how to make effective scripts, is grab one someone else has already made and read it. Its sounds easy doesn't it? Just read the script. Well it's not, at least not for a beginner.
"Reading" a script is not like reading a book, you don't start at the top and then go down the page from left to right. To effectively read a script you have to read it the way The Wizard is going to read it. You have to think of a script not so much in terms of text on a page, but as forks in a road. Each time you encounter a match table the script forks into a number of different directions depending on the command in the table and possibility of results. When reading you follow the forks, and see where they go, but read through each match table to make sure you under stand WHY its going to these places. Also, make sure you have a good 'search for text' function as its vital when reading through more complicated scripts.
Once you are able to 'Think' in the way a script moves they become immensely easier to create.
4) Actual Scripting Tips
I few tricks I learned during my scripting.
When doing match tables, try to find common text when you have multiple results that you want leading to the same outcome. 'roundtime' is a perfect example of this when doing combat scripts, where almost no two attacks are the same but they all have roundtimes.
When combining text with variables, always put the variable last. SF with it's new "setvariable" command thinks that putting text on the end of a built in variable means you are trying to recall a set variable. So use things like 'goto label%c' instead of 'goto %clabel' as the second will attempt to route to '%clabel:'
If you aren't exactly sure if a particular set of commands will work correctly, create a small script (I call mine test.cmd) and put in the questionable lines of script. Use echoes all over the place so you know what your variables are whether you are getting the outcomes you're looking for.
Always use lowercase letters for %s and %c. Case doesn't matter in Wizard for these, but in StormFront Uppercase letters for these variables (%S %C) are assumed to be Set Variables, not the save and counter variables.
If you ever come upon a section where you need to combine 2 variables to form 1 string, Wizard and StormFront both have different methods of doing this and neither method works for both.
For Wizard simply combine them: %s%c.
For StormFront end the first variable with % then put in the second variable: %s%%c.
Both of these will combine the save variable and the counter variable for the respective FE's. If save = 'BOX' and counter = '5' then the examples will = 'BOX5' If the SF method is used in Wizard you will get the result 'BOX%5' and if Wizard is used in StormFront you well get the result 'BOXc' This at least leads to a fix of sorts if using this method to route to labels.
The first goto will route to the correct label for wizard, but will route to 'BOXc:' in StormFront. So we simply place the StormFront method of combining under BOXc: and it routes to the correct label instead of abort the script.
Everyone says that you can only input 9 user variables %1-%9. This is untrue. The fact is you can INPUT as many user variables as you can fit into the command line. You can simply only call up the first 9 inside the script. But if you use %0 you can call the entire list at once. Even more useful however is the fact that with the shift command you can access the later variables by shifting out the first ones, allowing many more user interfaces.
Combine this with the ability of StormFront to save unique variables AND the counter command and you can save and use as many user variables as you can type in.