CLEO 4 Library (v18.104.22.168f)
an auto-installer of CLEO 4 for San Andreas - stable version
CLEO 4 Library (v4.2a)
a stand-alone RAR archive of CLEO 4 for San Andreas with source code - unstable version
an auto-installer of CLEO for Vice City
an auto-installer of CLEO for GTA III
CLEO 3 Library (installer)
an auto-installer of CLEO 3
CLEO 3 Library (archive)
a stand-alone RAR archive of CLEO 3
SCMLog (version 1.0.5)
logs every executed opcode and write the information to an output file
MP3 Player (with sources)
allows to listen to the MP3 files easily everywhere in the game
allows to use custom texts in your scripts without modifying the GXT files
hooks a way the main menu textures are being drawn to change their position and size. Video background is also supported
FXT Editor (with sources)
a handy tool made by WordsBG to create and edit FXT files used by the GXT Hook plugin
Quick Opcode 1.0
a CLEO plugin by Alexander to make your own custom opcodes
a CLEO plugin by DK22Pac adding 100 new opcodes
a CLEO4 plugin by Deji adding 2 new opcodes to control the system clipboard
an advanced version of SCMLog by LINK/2012
CLEO 3 allows adding new scripts needlessly to start a new game. Strictly speaking, the main.scm state does not matter for these scripts, as CLEO scripts are run and functioned separately from it.
What does it give? You can add new script at any stage of the game or delete an existing one. Even so, you do not need to edit the main.scm, so the need to start a new game, the saves incompatibility, some script limits – all these problems disappear right away.
The CLEO script is an ordinary script written using the opcodes in Sanny Builder. Each script should be made as a single file with an extension .cs (Custom Script). The major requirement in writing such scripts is that they must be compiled as the external scripts.
There are several ways of making of a CLEO script being able to work correctly in the game. First: you add a new external script in the main.scm, compile it, and then extract that script from the file script.img. The extracted file will have the extension .scm, so you only need to change it on the .cs and copy to the folder ‘game\CLEO’.
The second way is easier. Create a new file in Sanny Builder, write the directive $E at the beginning of it, and compile. The compiled file will be the same as that one extracted from the script.img. You only need to change its extension to the .cs and copy to the ‘game\CLEO’.
To install the CLEO script you need to copy the file with an extension .cs to the folder ‘game\CLEO’. The file name does not matter, but it uses at the thread initialization to set the internal name_thread of it. For example, the CLEO thread located in the file showsavescreen.cs has the name SHOWSAV.
To remove the script, just delete the proper file from the CLEO directory.
The CLEO thread status may be saved and loaded along with the common threads. It does not saved by default. The saves themselves are located in the folder CLEO\cleo_saves. There is an own save for each save slot. The save file stores only the data of the CLEO threads having the saving flag enabled (0A95 opcode). The save file stores not only the active threads, but also the ones being forced to end (0A93 opcode), to prevent their re-run at loading. If at the game loading one of saved threads is not found, there is no error. If you add a new script that is not present in the current save file, it will be loaded along with the others and begin to work from the very beginning.
The CLEO thread is an ordinary thread on the whole. It has 32 local variables and 2 timers incrementing constantly. You can pass in up to 34 parameters at creation of that thread or a CLEO mission (by analogy with the opcode 004F).
An important thing concerns with data communication between a CLEO script and the main.scm. To use the SCM code, its variables, threads you have to compile the CLEO script as an external one (the first way). But this method is not recommended, as such a script becomes very sensible to any main.scm change. Implicitly, a CLEO script should be sufficient for itself and use minimum of the SCM data. However, you can freely use global variables names from the CustomVaribles.ini (for example, $PLAYER_CHAR, $PLAYER_ACTOR, $ONMISSION, etc).
Also, for the data communicate between the main.scm and CLEO, or between the CLEO scripts you may use the CLEO variables (see opcodes 0AB3, 0AB4).
The CLEO complete set includes examples of simple scripts with sources.