You are on page 1of 3


Change Log

-- 4.3.22 --
* Now creates cleo, cleo/cleo_saves and cleo/cleo_text directories on startup if
they do not exist
* Fix to issue with 0AE9 not returning result

-- 4.3.21 --
* Fixed operand type IDs in CLEO.h
* Added 'extern' to variables declared in CLEO.h
* Fix to issue with 0AB1 in missions not storing mission locals

-- 4.3.19-20 --
* Fixed issue with 0AB1 passing incorrect variable scope in missions
* Updated SDK version

-- 4.3.17-18 --
* Fixed potential future problem with 0AB0 which used methods with undefined
* Fixed incorrect method used for 0AB7

-- 4.3.16 --

* Fixed bugs with CLEO saves when saved scripts ended

* Prevented crashing when invalid audiostream handles are used

-- 4.3.15 --

* Improvemed compatibility fix for opcodes 0AE1, 0AE2 and 0AE3 with incorrect
find_next usage

-- 4.3.14 --

* Fixed 0AAA only returning custom scripts

* Fixed many things which use the 'SCM Block' or 'Mission Local Storage' space
* Fixed parameters being passed to script local storage instead of mission local
storage through 0A94
* Fixed potential problems with iteration through the script queues (may cause rare
and hard to trace bugs)

-- 4.3.13 --

* Fixed crashing when starting a new game after a game has already started with
CLEO scripts installed
* Possibly fixed other issues with starting a game with CLEO scripts installed

-- --

* Un-did the 'Scripts no longer load prematurely' fix as it caused scripts to not
load certain circumstances (like before CLEO 4)
* Included 'cleo_text' folder in installation

-- 4.3.12 --

* Fixed string parameter skipping in 'SkipOpcodeParams' used by CLEO plugins

* 0AC8 now returns a NULL value to the output var if allocation failed (as it did
before 4.3a)
* 0AC9 now checks the memory was allocated by 0AC8 before attempting to free it
* FXT references are now case insensitive (as they were before 4.3a)
* File operations now check the input handle isn't null (as it seems was the way
before 4.3a)
* 'Loaded mission' status now reset on new/loaded game (as it was before 4.3a)
* Scripts no longer load prematurely (like before 4.3a)
* Resolved conflicts with other menu hooks such as 'HUME'
* Other minor tweaks

-- 4.3.11 --

* Fixed crash with 0ADA in scripts beginning with an opcode ending in '00'

-- 4.3.10 --

* Improvements to opcodes 0AE1, 0AE2 and 0AE3 - now loops around the pool even when
the 'find_next' flag isn't used correctly
* Fixed 0AD2 not returning peds targetted with the mouse, while targetting with a
pad worked

-- 4.3.9 --

* Will now be able to start a CLEO mission after recently finishing a standard
* Will no longer error & terminate when scripts fail to open and instead simply log
the error
* Will no longer terminate on warnings
* No longer includes paths in automatically generated script names (e.g.
cleo\dir\demo.cs is now named 'demo.cs' and not 'dir\dem')
* Improved handling of script load errors

-- 4.3.8 --

* Fixed crash which would occur when missions were ended with 004E

-- 4.3.7 --

* Custom missions launched by CLEO scripts now inherit their compatibility mode -
possibly fixing incompatibilities with mods using custom missions
* The current directory set by 0A99 is now script-dependant and only affects
running CLEO scripts (not the entire game or the main.scm)
* Text and texture/sprite draws are now script-dependant (doesn't affect main.scm

-- 4.3 --

* Replaced code which dynamically allocated and deallocated memory for script
parameters every time 0AA5-0AA8 were called with static arrays
* Removed a script execution loop replacement which wasn't used for anything
important and weirdly only worked with 1.0US that caused crashes with script
logging plugins
* Added support for Steam (v3) versions of gta_sa.exe
* Prevented the local storage from being initialized in SCM functions when the
script is in CLEO 3 compatibility mode ('.cs3' extension)

* Updates to behaviour of following opcodes:

CHANGE_DIRECTORY can now correctly change to the program directory

OPEN_FILE now uses a 'legacy' mode when passing an integer as the mode parameter
for compatibility of CLEO file handles and SA file handles
Note that you should really not pass CLEO file handles to game functions. However,
this legacy mode now ensures that the handles are compatible.
Other file functions have also been updated ensuring that game file handles are
passed to relevant game functions.
It is recommended to not rely on passing files to game functions and instead use
CLEO 4's in-built file functions in future.

CALL now accepts string input, which is passed as a string pointer following string

SCAN_STRING now returns a condition result

FIND_FIRST_FILE now accepts string array output

FIND_ALL_RANDOM_OBJECTS_IN_SPHERE now ensures no fading objects are returned and
returns -1 instead of 0 on failure

FIND_ALL_RANDOM_CARS_IN_SPHERE now ensures no script vehicles or fading vehicle are
returned and returns -1 instead of 0 on failure

FIND_ALL_RANDOM_CHARS_IN_SPHERE now ensures no script characters or fading
characters are returned and returns -1 instead of 0 on failure

ADD_TEXT_LABEL now updates existing text labels if they already exist

IS_END_OF_FILE_REACHED now returns true if a file error occured

GET_CHAR_PLAYER_IS_TARGETING now returns -1 instead of 0 when no target is found

STORE_CLOSEST_ENTITIES now ensures no script entities or fading entities are
returned and ensures the player ped is not returned