Introduction: it's possible that a correctly written CLEO script will work one computer, but it won't work on another computer because of configuration. You might have seen videos of CLEO scripts working for some users, but still you have a problem with that CLEO script; it crashes your game. Then you wonder, why it doesn't work just for me.
1. Game exe exists in many versions, because of patches made by R*.
But each new compiled EXE has different memory layout and data are at different memory locations, while many CLEO scripts use only one address that works with only one specified version of game executable.
Most CLEO scripts can only work with this EXE version:
GTA San Andreas v1.0 [US] HOODLUM No-CD Fixed EXE:
EXE size: 14 383 616 bytes
Make sure your gta_sa.exe size is equal to the size listed above.
Some of scripts (created by fastman92 most notably) may be designed to still work with version:
GTA: San Andreas v1.01 [EURO] No-CD/Fixed EXE:
EXE size: 15 806 464 bytes
2. Make sure that you put all mod files correctly, please refrain from copying files from CLEO directory only, but leaving all other files and thinking they're useless.
If there's a directory "put_to_root_of_GTASA", then you have to put all files from this directory to root of GTA San Andreas.
3. There are two major CLEO versions currently to download - CLEO3 and CLEO4 (GTA San Andreas).
There is CLEO1 for GTA III and GTA VC currently.
GTA San Andreas:
CLEO4 covers all CLEO3 commands, but also adds new commands too. CLEO4 aims to be backwards compatible and scripts written for CLEO3 that don't work on CLEO4 are almost non-existent. They are exceptions rather than a convention.
Check what is CLEO version required to run your new CLEO script. If script requires CLEO4, then you must install CLEO4 or CLEO5 (if released ever), but not older CLEO library with version such as 3.
If you have CLEO4 installed, please ensure that there's no GxtHook.cleo in CLEO directory. If this file exists, please immediately remove it. There are scripts that check CLEO version by the existence of GxtHook.cleo.
GxtHook.cleo is no longer neccessary in CLEO4, GXT support has been added to CLEO4 library internally.
4. If you have CLEO4, be sure to know that though this library adds many new script commands internally, few of commands are added externally by CLEO plugin files.
Then these commands may be used by scripts and lack thereof will be followed by a crash.
Make sure you CLEO directory contains these files:
FileSystemOperations.cleo IniFiles.cleo IntOperations.cleoIf not, please reinstall CLEO4.
5. DEP. Still your script may keep on crashing the game even though your game files are valid.
Many advanced CLEO scripts redirect EXE functions to their private script space. The code to which EXE functions may be valid, but game will still crash.
In Windows each process has its own private memory. The process memory is then split into chunks called memory pages.
Every separate memory has specified protection access: Read/Write/Execute. Can be specified more than one option.
The purpose of DEP (Data execution prevention) is to prevent execution of ASM code from a page that has no Execute option set up. It's not natural for a process to execute code from such page and could be a subject for some intentionally invalid files causing the buffer overflow in buggy program and execution of malware code.
Private space of CLEO scripts is allocated and page permission of that part of memory is: Read/Write.
No execution permission for private CLEO script space is going to make a game crash when EXE function is redirected.
Fortunately there's a way to get around this problem by disabling DEP.
No longer a execution permission of memory page will be required to execute code.
Click right on Computer -> Properties:
Open Advanced system settings.
Go to card "Advanced".
[Performance] - go to Settings.
Go to "Data execution prevention" card.
Select option "Turn on DEP for essential Windows programs and services only".
6. Enjoy Analog clock, Car spawner, In-game Timecyc Editor, SpeedoSA, this and more will work from now on.