I agree with Shane on this. Trainz as a whole is very complex, probably the most complex 'game' I have ever seen with its multiple subsystems which control the scripting, and other function. Game trainers modify program code and memory content to change values. This can cause system instability which leads to crashes as it causes the program to execute commands out of sequence and pops and pokes unintended values on and off the memory register stacks where they shouldn't be.
The other issue is all software has holes as they are called, and in some cases the original developers made use of undocumented features in the hardware and software platform, with platform meaning PC, game console, and other hardware/software combination. These undocumented holes will work for the present system, and what the original developer intended. The unintended results of doing something like this is the software or that version will only work on that revision level of hardware or software. Let's say that a company created an FPS that worked with the latest NVidia card and ran on the latest AMD processor-based system. The developer chose this platform because they found that they could massage the most performance out of the processor by utilizing some undocumented register controls. They also found that the NVidia 9xxx-2gtx was the best combination because it too has some enhanced bus-speed controls which too are undocumented. The user comes along and decides to enhance the performance by adding in additional gun and running speed. This trainer now has modified the code in such a way that it is now altering how the program operates. This may only work on this platform, or it may not. It also has altered the code in such a way that the program could crash randomly as it now contains code loaded in memory that is put in the wrong places.
The Trainz series does not require this as the scripting and other controls are fully exposed to third-parties for altering. The only parts that are not exposed are those that are considered proprietary such as file formats, content format, and the code its self. Having said this, these exposed elements can be altered in such a way to cause the program to misbehave just as it would if it the code was exposed to a game trainer due to unintended consequences of adding in a script or altering an installed script to do something else.
John