Releases: cleolibrary/CLEO5
CLEO 5.4.0
Download Instructions
An ASI loader is required for CLEO 5 to work. CLEO 5 comes pre-packaged with several popular ASI Loaders (Silent's ASI Loader and Ultimate ASI Loader).
If you don't have an ASI loader installed already or unsure which one to download:
- Download CLEO v5.4.0 with Silent's ASI Loader
If you prefer Ultimate ASI Loader:
- Download CLEO v5.4.0 with Ultimate ASI Loader
If you have an ASI loader installed already:
- Download this archive which contains ONLY CLEO 5 library and plugins.
Installation
- Unzip the archive to GTA San Andreas game directory.
Changelog
- fixed discrepancy between CLEO and native subtitles behavior:
PRINT_STRINGandPRINT_FORMATTEDnow queue correctly- CLEO messages are now added to the Brief Menu history, respecting the
ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFSflag (no change for.cs4scripts) - CLEO subtitles starting with a
~z~token are now hidden when "Show Subtitles" option is disabled (no change for.cs4scripts)
- CLEO config (
CLEO\.cleo_config.ini) improvements:- new
LogDirectoryoption to configure wherecleo.logandcleo_script.logare stored (root by default) - config is now recreated if missing, and new config keys are appended to existing user configs
- config is reloaded on a new game session
- new
READ_MEMORY_WITH_OFFSETandWRITE_MEMORY_WITH_OFFSETnow behave identically toREAD_MEMORY/WRITE_MEMORY;READ_MEMORY_WITH_OFFSETno longer reads input as a null-terminated string when the output is a string variable- removed a check preventing allocation of zero-sized memory blocks
- hardened path validation to prevent access to files outside of game root and settings directories
- fixed an issue causing scripts to load and execute twice on a new game session
- fixed multiple bugs related to game crashes and script handling
- fixed script corruption when loading a CLEO mission exceeding 69,000 bytes
- updated BASS and simdjson libraries; removed deprecated EAX check from BASS
Next version preview
Preview build including new features waiting for release.
Date: 2026-03-16
Hash: 3e82e69
Download
Changes since v5.3.0
- Update changelog for 5.4 release (#562)
- Log important items from cleo config (#561)
- Fix Brief messages override (#560)
- Reload CLEO config on new game session (#555)
- Fix intermittent crash on exit due to uninitialized callbacks (#558)
- Fix crash on exit with modified BaseIP (#552)
- Update message queueing logic when the queue is full (#551)
- Make ScmFunction lookup 1-based (#550)
- Fix discrepancy between CLEO and native subtitles behavior (#547)
- Fix script initialization (#548)
- Unify memory with offset commands (#545)
- Fix crash in logger on a single breakpoint command (#546)
- Update workflow (#539)
- Fix bugs (#538)
- Prevent mission buffer overflow on large CLEO mission (#534)
- Fix typo in error message for stack overflow (#532)
- Improve code quality and fix potential crashes (#530)
- Fix paths validation (#529)
- Allow allocation of 0 sized blocks (#513)
- Refactor CLEO config loading (#522)
- Fix double script loading and execution (#514)
- Avoid premature deleting of the current preview (#515)
- Refactor script suspend logic (#512)
- Run tests in normal and compat modes (#510)
- Update Libraries (#491)
- Update Workflows (#494)
View commits
CLEO 5.3.0
Download Instructions
An ASI loader is required for CLEO 5 to work. CLEO 5 comes pre-packaged with several popular ASI Loaders (Silent's ASI Loader and Ultimate ASI Loader).
If you don't have an ASI loader installed already or unsure which one to download:
- Download CLEO v5.3.0 with Silent's ASI Loader
If you prefer Ultimate ASI Loader:
- Download CLEO v5.3.0 with Ultimate ASI Loader
If you have an ASI loader installed already:
- Download this archive which contains ONLY CLEO 5 library and plugins.
Installation
- Unzip the archive to GTA San Andreas game directory.
Changelog
- moved CLEO core and plugin settings into a shared configuration file (
CLEO\.cleo_config.ini) - improved compatibility with ModLoader
- refactored error handling and relaxed checks for non‑critical errors
- keyboard input is now ignored when the game window is not focused
- increased text length limit from 255 to 399 for:
- fixed a memory leak caused by creating too many script TXDs
- fixed multiple issues with string‑formatting opcodes
- fixed a crash in print string commands when processing very long input
- fixed GET_AUDIO_STREAM_DURATION always returning
0 - fixed an incompatibility with the result of SAMP_RAKNET_HOOK_RETURN
CLEO 5.2.0
Download Instructions
An ASI loader is required for CLEO 5 to work. CLEO 5 comes pre-packaged with several popular ASI Loaders (Silent's ASI Loader and Ultimate ASI Loader).
If you don't have an ASI loader installed already or unsure which one to download:
- Download CLEO v5.2.0 with Silent's ASI Loader
If you prefer Ultimate ASI Loader:
- Download CLEO v5.2.0 with Ultimate ASI Loader
If you have an ASI loader installed already:
- Download this archive which contains ONLY CLEO 5 library and plugins.
Installation
- Unzip the archive to GTA San Andreas game directory.
Changelog
- added script execution log (
cleo\_cleo_script.log). By default, it's disabled. Configurable viacleo_plugins\DebugUtils.ini. - added call stack overflow error check to gosub and gosub_if_false commands
- added check for preceding gosub call in 0AA1 (return_if_false)
- added limit for memory allocated per script (see
cleo_plugins\SA.MemoryOperations.ini). Exceeding the limit will cause a warning in game - added listing of remaining memory blocks allocated by scripts to the cleo.log when closing or starting new game
- added support of string pointers as output type in 0AD4 (scan_string)
- added more checks for correctness of format string in 0AD4 (scan_string)
- fixed false positive
Code execution past script enderror messages when calling functions from CLEO modules - added error message when the script silently crashes in SAMP due to the script problem
- fixed problem with texture sprites corruption, now scripts can safely use sprites from multiple TXDs
- remove trailing whitespace from FXT entries preventing them from being displayed in game
- new SDK method:
CLEO_CallNativeOpcode. See SDK documentation: https://github.com/cleolibrary/CLEO5/wiki/CLEO-5-SDK
CLEO 5.1.0
Download Instructions
An ASI loader is required for CLEO 5 to work. CLEO 5 comes pre-packaged with several popular ASI Loaders (Silent's ASI Loader and Ultimate ASI Loader).
If you don't have an ASI loader installed already or unsure which one to download:
- Download CLEO v5.1.0 with Silent's ASI Loader
If you prefer Ultimate ASI Loader:
- Download CLEO v5.1.0 with Ultimate ASI Loader
If you have an ASI loader installed already:
- Download this archive which contains ONLY CLEO 5 library and plugins.
Installation
- Unzip the archive to GTA San Andreas game directory.
Changelog
- fixed collision of GXT texts hook with SAMP and other mods
- rewritten script drawing handling code. Logic moved from CLEO.asi to Text.cleo plugin
- relocated several opcodes from CLEO core into new GameEntities.cleo plugin
- fixed 0ADD (spawn_vehicle_by_cheating) crashing when invalid model id was used
- new CLEO plugin: Input.cleo
- new opcode 2080 (is_key_just_pressed)
- new opcode 2081 (get_key_pressed_in_range)
- new opcode 2082 (get_key_just_pressed_in_range)
- new opcode 2083 (emulate_key_press)
- new opcode 2084 (emulate_key_release)
- new opcode 2085 (get_controller_key)
- new opcode 2086 (get_key_name)
- added warning message to commands 0AC2-0AC5 if used with non-3d audio streams
- call function/method commands 0AA5-0AA7 are now setting logical result
- limited "previously called opcode" info in script error messages to show just commands of that script
- now more script error messages include previously executed command name
- added missing terminate_this_script command error message for scripts compiled with extra SCM info
CLEO 5.0.3
Download Instructions
An ASI loader is required for CLEO 5 to work. CLEO 5 comes pre-packaged with several popular ASI Loaders (Silent's ASI Loader and Ultimate ASI Loader).
If you don't have an ASI loader installed already or unsure which one to download:
- Download CLEO v5.0.3 with Silent's ASI Loader
If you prefer Ultimate ASI Loader:
- Download CLEO v5.0.3 with Ultimate ASI Loader
If you have an ASI loader installed already:
- Download this archive which contains ONLY CLEO 5 library and plugins.
Installation
- Unzip the archive to GTA San Andreas game directory.
Changelog
- added GxtHook.cleo plugin to ignored list
- fixed audio streams stopping when volume was set to 0.0
- fixed audio streams potentially not starting to play if still decoding or downloading
- volume of audio streams with type None and UserInterface no longer affected by screen fades
CLEO 5.0.2
Download Instructions
An ASI loader is required for CLEO 5 to work. CLEO 5 comes pre-packaged with several popular ASI Loaders (Silent's ASI Loader and Ultimate ASI Loader).
If you don't have an ASI loader installed already or unsure which one to download:
- Download CLEO v5.0.2 with Silent's ASI Loader
If you prefer Ultimate ASI Loader:
- Download CLEO v5.0.2 with Ultimate ASI Loader
If you have an ASI loader installed already:
- Download this archive which contains ONLY CLEO 5 library and plugins.
Installation
- Unzip the archive to GTA San Andreas game directory.
Changelog
- updated BASS library
- fixed Doppler effect calculations for 3d audio streams
- fixed sound glitches of 3d audio streams when playback starts or the camera mode changes
- fixed possible crashes when car/object/ped with attached 3d audio stream is deleted
- fixed CLEO sound artifacts when moving camera with mouse
- updated distance decay for 3d audio streams to match behavior of in-game sounds
- implemented proper support for 3d audio streams source size
- CLEO sounds volume is now affected by wide screen and fades in same way as in-game sounds
- updated "Audio_Demo" example script
- reverted muting 'music' type audio streams for game speeds other than default introduced in 5.0.1
- allow storing string result at static address (e.g.
get_name_of_vehicle_model 400 0xC16F98) - fixed path resolution issues when the game is installed in symlink or RAM Disk directory
- fixed audio playback not working in SAMP
CLEO 5.0.1
Download Instructions
An ASI loader is required for CLEO 5 to work. CLEO 5 comes pre-packaged with several popular ASI Loaders (Silent's ASI Loader and Ultimate ASI Loader).
If you don't have an ASI loader installed already or unsure which one to download:
- Download CLEO v5.0.1 with Silent's ASI Loader
If you prefer Ultimate ASI Loader:
- Download CLEO v5.0.1 with Ultimate ASI Loader
If you have an ASI loader installed already:
- Download this archive which contains ONLY CLEO 5 library and plugins.
Installation
- Unzip the archive to GTA San Andreas game directory.
Changelog
- cleo.log file moved back to the game root (as in CLEO4)
- Restored behavior of '.\' prefix for scripts in legacy compat mode
- fixed 0AB9 (get_audio_stream_state) not always returning Stopped, despite playback ended
- fixed 2507 (get_audio_stream_progress) sometimes returning values smaller than 1.0, despite playback ended
- fixed progress set with 2508 (set_audio_stream_progress) being ignored by stopped streams
- added new opcode 250B (get_audio_stream_progress_seconds)
- added new opcode 250C (set_audio_stream_progress_seconds)
- fixed 0AA3 (free_dynamic_library) clearing reference to libraries loaded more than once
CLEO 5.0.0
Download Instructions
An ASI loader is required for CLEO 5 to work. CLEO 5 comes pre-packaged with several popular ASI Loaders (Silent's ASI Loader and Ultimate ASI Loader).
If you don't have an ASI loader installed already or unsure which one to download:
- Download CLEO v5.0.0 with Silent's ASI Loader
If you prefer Ultimate ASI Loader:
- Download CLEO v5.0.0 with Ultimate ASI Loader
If you have an ASI loader installed already:
- Download this archive which contains ONLY CLEO 5 library and plugins.
Installation
- Unzip the archive to GTA San Andreas game directory.
Changelog
- support for CLEO modules feature sannybuilder/dev#264
- new Audio plugin
- audio related opcodes moved from CLEO core into separated plugin
- CLEO's audio now obey game's volume settings
- implemented Doppler effect for 3d audio streams (fast moving sound sources)
- CLEO's audio now follows game speed changes
- sound device can be now manually selected in .ini file
- new opcode 2500 (is_audio_stream_playing)
- new opcode 2501 (get_audio_stream_duration)
- new opcode 2502 (get_audio_stream_speed)
- new opcode 2503 (set_audio_stream_speed)
- new opcode 2504 (set_audio_stream_volume_with_transition)
- new opcode 2505 (set_audio_stream_speed_with_transition)
- new opcode 2506 (set_audio_stream_source_size)
- new opcode 2507 (get_audio_stream_progress)
- new opcode 2508 (set_audio_stream_progress)
- new opcode 2509 (get_audio_stream_type)
- new opcode 250A (set_audio_stream_type)
- new DebugUtils plugin
- new opcode 00C3 (debug_on)
- new opcode 00C4 (debug_off)
- new opcode 2100 (breakpoint)
- new opcode 2101 (trace)
- new opcode 2102 (log_to_file)
- implemented support of opcodes 0662, 0663 and 0664 (original Rockstar's script debugging opcodes. See DebugUtils.ini)
- new FileSystemOperations plugin
- forbidden scripts from accessing and changing any files outside game root or game settings directory
- file related opcodes moved from CLEO core into separated plugin
- opcode 0A9E (write_to_file) now supports literal numbers and strings
- opcode 0AD7 (read_string_from_file) no longer includes new line character(s) at end of read string
- fixed bug causing file stream opcodes not working correctly when read-write modes are used
- fixed buffer overflows in file stream read opcodes
- added/fixed support of all file stream opcodes in legacy mode (Cleo3)
- new opcode 2300 (get_file_position)
- new opcode 2301 (read_block_from_file)
- new opcode 2302 (write_block_to_file)
- new opcode 2303 (resolve_filepath)
- new opcode 2304 (get_script_filename)
- new Math plugin
- math related opcodes moved from CLEO core into separated plugin
- new opcode 2700 (is_bit_set)
- new opcode 2701 (set_bit)
- new opcode 2702 (clear_bit)
- new opcode 2703 (toggle_bit)
- new opcode 2704 (is_truthy)
- new opcode 2705 (pick_random_int)
- new opcode 2706 (pick_random_float)
- new opcode 2707 (pick_random_text)
- new opcode 2708 (random_chance)
- new MemoryOperations plugin
- memory related opcodes moved from CLEO core into separated plugin
- validation of input and output parameters for all opcodes
- opcode 0A8C (write_memory) now supports strings
- new opcode 2400 (copy_memory)
- new opcode 2401 (read_memory_with_offset)
- new opcode 2402 (write_memory_with_offset)
- new opcode 2403 (forget_memory)
- new opcode 2404 (get_script_struct_just_created)
- new opcode 2405 (is_script_running)
- new opcode 2406 (get_script_struct_from_filename)
- new opcode 2407 (is_memory_equal)
- new opcode 2408 (terminate_script)
- new Text plugin
- text related opcodes moved from CLEO core into separated plugin
- new opcode 2600 (is_text_empty)
- new opcode 2601 (is_text_equal)
- new opcode 2602 (is_text_in_text)
- new opcode 2603 (is_text_prefix)
- new opcode 2604 (is_text_suffix)
- new opcode 2605 (display_text_formatted)
- new opcode 2606 (load_fxt)
- new opcode 2607 (unload_fxt)
- new opcode 2608 (get_text_length)
- new opcode 2609 (add_text_label_formatted)
- new and updated opcodes
- implemented support for memory pointer string arguments for all game's native opcodes
- 0B1E (sign_extend)
- 0DD5 (get_game_platform)
- 2000 (get_cleo_arg_count)
- 2002 (cleo_return_with)
- 2003 (cleo_return_fail)
- 2800 (delete_section_from_ini_file)
- 2801 (delete_key_from_ini_file)
- 'argument count' parameter of 0AB1 (cleo_call) is now optional.
cleo_call @LABEL args 0can be written ascleo_call @LABEL - 'argument count' parameter of 0AB2 (cleo_return) is now optional.
cleo_return 0can be written ascleo_return - SCM functions can return string literals and string variables
- SCM functions (0AB1) now keep their own GOSUB's call stack
- fixed bug in 0AD4 (scan_string) causing data overruns when reading strings longer than target variable
- fixed result register not being cleared before function call in opcodes 0AA7 and 0AA8
- fixed 0ABA (terminate_all_custom_scripts_with_this_name) terminating only first found script
- changes in file operations
- file paths can now use 'virtual absolute paths'. Use prefix in file path strings to access predefined locations:
root:\for game root directoryuser:\for game save files directory.\for this script file directorycleo:\for CLEO directorymodules:\for CLEO\cleo_modules directory
- rewritten opcode 0A99 (set_current_directory). Now it no longer affects internal game sta...
- file paths can now use 'virtual absolute paths'. Use prefix in file path strings to access predefined locations:
CLEO 5.0.0-beta.1
Download Instructions
An ASI loader is required for CLEO 5 to work. CLEO 5 comes pre-packaged with several popular ASI Loaders (Silent's ASI Loader and Ultimate ASI Loader).
If you don't have an ASI loader installed already or unsure which one to download:
If you prefer Ultimate ASI Loader:
If you have an ASI loader installed already:
- Download this archive which contains ONLY CLEO 5 library and plugins.
Installation
- Unzip the archive to GTA San Andreas game directory.
Changelog
- support for CLEO modules feature sannybuilder/dev#264
- new Audio plugin
- audio related opcodes moved from CLEO core into separated plugin
- CLEO's audio now obey game's volume settings
- implemented Doppler effect for 3d audio streams (fast moving sound sources)
- CLEO's audio now follows game speed changes
- sound device can be now manually selected in .ini file
- new opcode 2500 (is_audio_stream_playing)
- new opcode 2501 (get_audio_stream_duration)
- new opcode 2502 (get_audio_stream_speed)
- new opcode 2503 (set_audio_stream_speed)
- new opcode 2504 (set_audio_stream_volume_with_transition)
- new opcode 2505 (set_audio_stream_speed_with_transition)
- new opcode 2506 (set_audio_stream_source_size)
- new opcode 2507 (get_audio_stream_progress)
- new opcode 2508 (set_audio_stream_progress)
- new opcode 2509 (get_audio_stream_type)
- new opcode 250A (set_audio_stream_type)
- new DebugUtils plugin
- new opcode 00C3 (debug_on)
- new opcode 00C4 (debug_off)
- new opcode 2100 (breakpoint)
- new opcode 2101 (trace)
- new opcode 2102 (log_to_file)
- implemented support of opcodes 0662, 0663 and 0664 (original Rockstar's script debugging opcodes. See DebugUtils.ini)
- new FileSystemOperations plugin
- forbidden scripts from accessing and changing any files outside game root or game settings directory
- file related opcodes moved from CLEO core into separated plugin
- opcode 0A9E (write_to_file) now supports literal numbers and strings
- fixed bug causing file stream opcodes not working correctly when read-write modes are used
- fixed buffer overflows in file stream read opcodes
- added/fixed support of all file stream opcodes in legacy mode (Cleo3)
- new opcode 2300 (get_file_position)
- new opcode 2301 (read_block_from_file)
- new opcode 2302 (write_block_to_file)
- new opcode 2303 (resolve_filepath)
- new opcode 2304 (get_script_filename)
- new Math plugin
- math related opcodes moved from CLEO core into separated plugin
- new opcode 2700 (is_bit_set)
- new opcode 2701 (set_bit)
- new opcode 2702 (clear_bit)
- new opcode 2703 (toggle_bit)
- new opcode 2704 (is_truthy)
- new MemoryOperations plugin
- memory related opcodes moved from CLEO core into separated plugin
- validation of input and output parameters for all opcodes
- opcode 0A8C (write_memory) now supports strings
- new opcode 2400 (copy_memory)
- new opcode 2401 (read_memory_with_offset)
- new opcode 2402 (write_memory_with_offset)
- new opcode 2403 (forget_memory)
- new opcode 2404 (get_script_struct_just_created)
- new opcode 2405 (is_script_running)
- new opcode 2406 (get_script_struct_from_filename)
- new opcode 2407 (is_memory_equal)
- new opcode 2408 (terminate_script)
- new Text plugin
- text related opcodes moved from CLEO core into separated plugin
- new opcode 2600 (is_text_empty)
- new opcode 2601 (is_text_equal)
- new opcode 2602 (is_text_in_text)
- new opcode 2603 (is_text_prefix)
- new opcode 2604 (is_text_suffix)
- new opcode 2605 (display_text_formatted)
- new opcode 2606 (load_fxt)
- new opcode 2607 (unload_fxt)
- new opcode 2608 (get_text_length)
- new and updated opcodes
- implemented support for memory pointer string arguments for all game's native opcodes
- 0B1E (sign_extend)
- 0DD5 (get_game_platform)
- 2000 (get_cleo_arg_count)
- 2002 (cleo_return_with)
- 2003 (cleo_return_fail)
- 'argument count' parameter of 0AB1 (cleo_call) is now optional.
cleo_call @LABEL args 0can be written ascleo_call @LABEL - 'argument count' parameter of 0AB2 (cleo_return) is now optional.
cleo_return 0can be written ascleo_return - SCM functions can return string literals and string variables
- SCM functions (0AB1) now keep their own GOSUB's call stack
- fixed bug in 0AD4 (scan_string) causing data overruns when reading strings longer than target variable
- fixed result register not being cleared before function call in opcodes 0AA7 and 0AA8
- fixed 0ABA (terminate_all_custom_scripts_with_this_name) terminating only first found script
- changes in file operations
- file paths can now use 'virtual absolute paths'. Use prefix in file path strings to access predefined locations:
root:\for game root directoryuser:\for game save files directory.\for this script file directorycleo:\for CLEO directorymodules:\for CLEO\cleo_modules directory
- rewritten opcode 0A99 (set_current_directory). Now it no longer affects internal game state or current directory in other scripts
- file paths can now use 'virtual absolute paths'. Use prefix in file path strings to access predefined locations:
- improved error handling
- more detailed error messages in multiple scenarios
- some errors now cause the script to pause, instead of crashing the game
- updated included Silent's ASI Loader to version 1.3
Bug Fixes
- fixed error in 004E (terminate_this_script) allowing to run multiple missions
- fixed handling of strings longer than 128 characters causing errors in some cases
- fixed error in handling of first string argument in 0AF5 (write_string to_ini_file)
- fixed resolution dependent aspect ratio of CLEO text in main menu
- fixed clearing mission locals when new CLEO mission is started
- when reading less than 4 bytes with 0A9D (readfile) now remaining bytes of the target varia...