I've been playing around with the scripting trying to get a simple script working for a coaster I'm building, and I'm going to have to crush a few peoples dreams of custom coasters.
Scripting is not for everybody. This is not a simple script setup that can be learned in a few minutes from watching a couple of YouTube videos. It is more in line with object-oriented programming found in C++ or Java.
The fact is, if you don't have a programming background, most of you will not be able to script even the simplest of tasks without a cubic buttload of help and time from someone that knows how to program. Couple that with the fact that the API is not set up for flexibility and each script needs to be tailored to the coaster it is for. Even modifying existing scripts will require a fair amount of knowledge and work.
Simple tasks that don't change the way a coaster works (like the script that attaches objects to trains posted in another thread) can be reused, and can be run in Circuit/Shuttle mode. Coaster affecting actions that require access to the sections, and blocks, require the coaster to be in Scripted mode, and there is no Automatic Block Mode when in Scripted.
What that means to you as a user. Automatic Block Mode (ABM) is the way most of us use NL2. Take this example: In ABM train pulls into a block brake, and if there is a train in the next block it stops, and when the block clears the train moves on automatically. In Scripted Mode, you have to write the script yourself. You have to check the block to see if it is clear. If it isn't you have to turn the brakes on to stop the train, keep polling to see when block is clear, when clear you have to release the brakes, and turn the transport on to move the track. It's like Full Manual Mode but instead of pushing lighted buttons, you have to write a line of code for everything. And you have to do this for the entire coaster. You are handed a coaster and trains, and you do everything else like determine when it's time to send the train out of the station, release/set brakes, switch transfers, set transport direction, turn on/off transports, etc... Everything it takes to get coasters around the track is up to you.
All I need to do in my script is automatically trigger a transfer table twice. Once to move the train to a different track, and once to move the transfer track back into place for the next train. So far I'm at 514 lines of code( probably 100 of that is comments and not actual code) just to get the train to leave the station, go about 100 yards down track to the first block brake and stop. That's one train and the transfer table still hasn't moved in script. I haven't written any code to make it safe to handle multiple trains, yet. I'm guessing another 600-1000 lines of code to make it work properly. So 1000-1500 lines of code to have a coaster that uses a transfer table automatically. I could cut that down a bit if I didn't care about making it handle problems properly, making it safe, or allowing people to run it in Manual mode, but it would be still be several hundred lines at a minimum.
I will admit I don't know everything about it, and I've been wrong a lot lately, but I don't think I missed the solution to this. Some of the functions required can only be used in Scripted Mode, and that mode does nothing for you as far as I can see.
If you are dead set on scripting yourself, go learn to program a language like C++ and Java, then come back and try.