Releases: cleolibrary/CLEO5
Releases · cleolibrary/CLEO5
5.0.0-alpha.52
- 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
- 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 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 (writememory_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 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 and updated opcodes
- implemented support for memory pointer string arguments for all game's native opcodes
- 0B1E (sign_extend)
- 0DD5 (get_game_platform)
- 2002 (cleo_return_with)
- 2003 (cleo_return_fail)
- 'argument count' parameter of 0AB1 (cleo_call) is now optional.
cleo_call @LABEL args 0
can be written ascleo_call @LABEL
- 'argument count' parameter of 0AB2 (cleo_return) is now optional.
cleo_return 0
can be written ascleo_return
- cleo_return_* opcodes now can pass strings as return arguments
- 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
- 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 directoryuserfiles:\
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 variable are set to zero
- fixed invalid 7 characters length limit of 0AAA (get_script_struct_named)
SDK AND PLUGINS
- now all opcodes in range 0-7FFF can be registered by plugins
- plugins moved to cleo\cleo_plugins directory
- new SDK method: CLEO_RegisterCommand
- new SDK method: CLEO_RegisterCallback
- new SDK method: CLEO_GetVarArgCount
- new SDK method: CLEO_PeekIntOpcodeParam
- new SDK method: CLEO_PeekFloatOpcodeParam
- new SDK method: CLEO_PeekPointerToScriptVariable
- new SDK method: CLEO_SkipUnusedVarArgs
- new SDK method: CLEO_ReadParamsFormatted
- new SDK method: CLEO_ReadStringParamWriteBuffer
- new SDK method: CLEO_GetOpcodeParamsArray
- new SDK method: CLEO_GetParamsHandledCount
- new SDK method: CLEO_GetScriptVersion
- new SDK method: CLEO_GetScriptInfoStr
- new SDK method: CLEO_GetScriptFilename
- new SDK method: CLEO_GetScriptWorkDir
- new SDK method: CLEO_SetScriptWorkDir
- new SDK method: CLEO_ResolvePath
- new SDK method: CLEO_ListDirectory
- new SDK method: CLEO_ListDirectoryFree
- new SDK method: CLEO_GetScriptByName
- new SDK method: CLEO_GetScriptByFilename
- new SDK method: CLEO_GetScriptDebugMode
- new SDK method: CLEO_SetScriptDebugMode
- new SDK method: CLEO_Log
CLEO internal
- introduced unit test scripts
- project migrated to VS 2022
- configured game debugging settings
- plugins moved into single solution
- configured automatic releases on GitHub
- added setup_env.bat script
Special Thanks
- 123nir for the alpha-testing, troubleshooting and valuable bug reports
5.0.0-alpha.51
- 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
- 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 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 (writememory_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 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 and updated opcodes
- implemented support for memory pointer string arguments for all game's native opcodes
- 0B1E (sign_extend)
- 0DD5 (get_game_platform)
- 2002 (cleo_return_with)
- 2003 (cleo_return_fail)
- 'argument count' parameter of 0AB1 (cleo_call) is now optional.
cleo_call @LABEL args 0
can be written ascleo_call @LABEL
- 'argument count' parameter of 0AB2 (cleo_return) is now optional.
cleo_return 0
can be written ascleo_return
- cleo_return_* opcodes now can pass strings as return arguments
- SCM functions (0AB1) now keep their own GOSUB's call stack
- 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 directoryuserfiles:\
for game save files directory.\
for this script file directorycleo:\
for CLEO directorymodules:\
for CLEO\cleo_modules directory
- rewritten opcode 0A99 (set_current_directory). It no longer affects internal game state and 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 variable are set to zero
- fixed invalid 7 characters length limit of 0AAA (get_script_struct_named)
SDK AND PLUGINS
- now all opcodes in range 0-7FFF can be registered by plugins
- plugins moved to cleo\cleo_plugins directory
- new SDK method: CLEO_RegisterCommand
- new SDK method: CLEO_RegisterCallback
- new SDK method: CLEO_GetVarArgCount
- new SDK method: CLEO_PeekIntOpcodeParam
- new SDK method: CLEO_PeekFloatOpcodeParam
- new SDK method: CLEO_PeekPointerToScriptVariable
- new SDK method: CLEO_SkipUnusedVarArgs
- new SDK method: CLEO_ReadParamsFormatted
- new SDK method: CLEO_ReadStringParamWriteBuffer
- new SDK method: CLEO_GetOpcodeParamsArray
- new SDK method: CLEO_GetParamsHandledCount
- new SDK method: CLEO_GetScriptVersion
- new SDK method: CLEO_GetScriptInfoStr
- new SDK method: CLEO_GetScriptFilename
- new SDK method: CLEO_GetScriptWorkDir
- new SDK method: CLEO_SetScriptWorkDir
- new SDK method: CLEO_ResolvePath
- new SDK method: CLEO_ListDirectory
- new SDK method: CLEO_ListDirectoryFree
- new SDK method: CLEO_GetScriptByName
- new SDK method: CLEO_GetScriptByFilename
- new SDK method: CLEO_GetScriptDebugMode
- new SDK method: CLEO_SetScriptDebugMode
- new SDK method: CLEO_Log
CLEO internal
- introduced unit test scripts
- project migrated to VS 2022
- configured game debugging settings
- plugins moved into single solution
- configured automatic releases on GitHub
- added setup_env.bat script
Special Thanks
- 123nir for the alpha-testing, troubleshooting and valuable bug reports
5.0.0-alpha.49
- 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
- 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 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
- 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 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 (writememory_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 and updated opcodes
- 0B1E (sign_extend)
- 0DD5 (get_game_platform)
- 2002 (cleo_return_with)
- 2003 (cleo_return_fail)
- 'argument count' parameter of 0AB1 (cleo_call) is now optional.
cleo_call @LABEL args 0
can be written ascleo_call @LABEL
- 'argument count' parameter of 0AB2 (cleo_return) is now optional.
cleo_return 0
can be written ascleo_return
- cleo_return_* opcodes now can pass strings as return arguments
- SCM functions (0AB1) now keep their own GOSUB's call stack
- 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 directoryuserfiles:\
for game save files directory.\
for this script file directorycleo:\
for CLEO directorymodules:\
for CLEO\cleo_modules directory
- rewritten opcode 0A99 (set_current_directory). It no longer affects internal game state and 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 variable are set to zero
- fixed invalid 7 characters length limit of 0AAA (get_script_struct_named)
SDK AND PLUGINS
- now all opcodes in range 0-7FFF can be registered by plugins
- plugins moved to cleo\cleo_plugins directory
- new SDK method: CLEO_RegisterCommand
- new SDK method: CLEO_RegisterCallback
- new SDK method: CLEO_GetVarArgCount
- new SDK method: CLEO_PeekIntOpcodeParam
- new SDK method: CLEO_PeekFloatOpcodeParam
- new SDK method: CLEO_PeekPointerToScriptVariable
- new SDK method: CLEO_SkipUnusedVarArgs
- new SDK method: CLEO_ReadParamsFormatted
- new SDK method: CLEO_ReadStringParamWriteBuffer
- new SDK method: CLEO_GetOpcodeParamsArray
- new SDK method: CLEO_GetParamsHandledCount
- new SDK method: CLEO_GetScriptVersion
- new SDK method: CLEO_GetScriptInfoStr
- new SDK method: CLEO_GetScriptFilename
- new SDK method: CLEO_GetScriptWorkDir
- new SDK method: CLEO_SetScriptWorkDir
- new SDK method: CLEO_ResolvePath
- new SDK method: CLEO_GetScriptByName
- new SDK method: CLEO_GetScriptByFilename
- new SDK method: CLEO_GetScriptDebugMode
- new SDK method: CLEO_SetScriptDebugMode
- new SDK method: CLEO_Log
CLEO internal
- introduced unit test scripts
- project migrated to VS 2022
- configured game debugging settings
- plugins moved into single solution
- configured automatic releases on GitHub
- added setup_env.bat script
Special Thanks
- 123nir for the alpha-testing, troubleshooting and valuable bug reports
5.0.0-alpha.48
- 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
- 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 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
- 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 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 (writememory_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 and updated opcodes
- 0B1E (sign_extend)
- 0DD5 (get_game_platform)
- 2002 (cleo_return_with)
- 2003 (cleo_return_fail)
- 'argument count' parameter of 0AB1 (cleo_call) is now optional.
cleo_call @LABEL args 0
can be written ascleo_call @LABEL
- 'argument count' parameter of 0AB2 (cleo_return) is now optional.
cleo_return 0
can be written ascleo_return
- cleo_return_* opcodes now can pass strings as return arguments
- SCM functions (0AB1) now keep their own GOSUB's call stack
- 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 directoryuserfiles:\
for game save files directory.\
for this script file directorycleo:\
for CLEO directorymodules:\
for CLEO\cleo_modules directory
- rewritten opcode 0A99 (set_current_directory). It no longer affects internal game state and 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 variable are set to zero
- fixed invalid 7 characters length limit of 0AAA (get_script_struct_named)
SDK AND PLUGINS
- now all opcodes in range 0-7FFF can be registered by plugins
- plugins moved to cleo\cleo_plugins directory
- new SDK method: CLEO_RegisterCommand
- new SDK method: CLEO_RegisterCallback
- new SDK method: CLEO_GetVarArgCount
- new SDK method: CLEO_PeekIntOpcodeParam
- new SDK method: CLEO_PeekFloatOpcodeParam
- new SDK method: CLEO_PeekPointerToScriptVariable
- new SDK method: CLEO_SkipUnusedVarArgs
- new SDK method: CLEO_ReadParamsFormatted
- new SDK method: CLEO_ReadStringParamWriteBuffer
- new SDK method: CLEO_GetOpcodeParamsArray
- new SDK method: CLEO_GetParamsHandledCount
- new SDK method: CLEO_GetScriptVersion
- new SDK method: CLEO_GetScriptInfoStr
- new SDK method: CLEO_GetScriptFilename
- new SDK method: CLEO_GetScriptWorkDir
- new SDK method: CLEO_SetScriptWorkDir
- new SDK method: CLEO_ResolvePath
- new SDK method: CLEO_GetScriptByName
- new SDK method: CLEO_GetScriptByFilename
- new SDK method: CLEO_GetScriptDebugMode
- new SDK method: CLEO_SetScriptDebugMode
- new SDK method: CLEO_Log
CLEO internal
- introduced unit test scripts
- project migrated to VS 2022
- configured game debugging settings
- plugins moved into single solution
- configured automatic releases on GitHub
- added setup_env.bat script
Special Thanks
- 123nir for the alpha-testing, troubleshooting and valuable bug reports
5.0.0-alpha.47
- 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
- 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 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
- 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 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 (writememory_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 and updated opcodes
- 0B1E (sign_extend)
- 0DD5 (get_game_platform)
- 2002 (cleo_return_with)
- 2003 (cleo_return_fail)
- 'argument count' parameter of 0AB1 (cleo_call) is now optional.
cleo_call @LABEL args 0
can be written ascleo_call @LABEL
- 'argument count' parameter of 0AB2 (cleo_return) is now optional.
cleo_return 0
can be written ascleo_return
- cleo_return_* opcodes now can pass strings as return arguments
- SCM functions (0AB1) now keep their own GOSUB's call stack
- 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 directoryuserfiles:\
for game save files directory.\
for this script file directorycleo:\
for CLEO directorymodules:\
for CLEO\cleo_modules directory
- rewritten opcode 0A99 (set_current_directory). It no longer affects internal game state and 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 variable are set to zero
- fixed invalid 7 characters length limit of 0AAA (get_script_struct_named)
SDK AND PLUGINS
- now all opcodes in range 0-7FFF can be registered by plugins
- plugins moved to cleo\cleo_plugins directory
- new SDK method: CLEO_RegisterCommand
- new SDK method: CLEO_RegisterCallback
- new SDK method: CLEO_GetVarArgCount
- new SDK method: CLEO_PeekIntOpcodeParam
- new SDK method: CLEO_PeekFloatOpcodeParam
- new SDK method: CLEO_PeekPointerToScriptVariable
- new SDK method: CLEO_SkipUnusedVarArgs
- new SDK method: CLEO_ReadParamsFormatted
- new SDK method: CLEO_ReadStringParamWriteBuffer
- new SDK method: CLEO_GetOpcodeParamsArray
- new SDK method: CLEO_GetParamsHandledCount
- new SDK method: CLEO_GetScriptVersion
- new SDK method: CLEO_GetScriptInfoStr
- new SDK method: CLEO_GetScriptFilename
- new SDK method: CLEO_GetScriptWorkDir
- new SDK method: CLEO_SetScriptWorkDir
- new SDK method: CLEO_ResolvePath
- new SDK method: CLEO_GetScriptByName
- new SDK method: CLEO_GetScriptByFilename
- new SDK method: CLEO_GetScriptDebugMode
- new SDK method: CLEO_SetScriptDebugMode
- new SDK method: CLEO_Log
CLEO internal
- introduced unit test scripts
- project migrated to VS 2022
- configured game debugging settings
- plugins moved into single solution
- configured automatic releases on GitHub
- added setup_env.bat script
Special Thanks
- 123nir for the alpha-testing, troubleshooting and valuable bug reports
5.0.0-alpha.46
- 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
- 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 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
- 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)
- 2302 (resolve_filepath)
- 2303 (get_script_filename)
- 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 (writememory_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 and updated opcodes
- 0B1E (sign_extend)
- 0DD5 (get_game_platform)
- 2002 (cleo_return_with)
- 2003 (cleo_return_fail)
- 'argument count' parameter of 0AB1 (cleo_call) is now optional.
cleo_call @LABEL args 0
can be written ascleo_call @LABEL
- 'argument count' parameter of 0AB2 (cleo_return) is now optional.
cleo_return 0
can be written ascleo_return
- cleo_return_* opcodes now can pass strings as return arguments
- SCM functions (0AB1) now keep their own GOSUB's call stack
- 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 directoryuserfiles:\
for game save files directory.\
for this script file directorycleo:\
for CLEO directorymodules:\
for CLEO\cleo_modules directory
- rewritten opcode 0A99 (set_current_directory). It no longer affects internal game state and 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 variable are set to zero
- fixed invalid 7 characters length limit of 0AAA (get_script_struct_named)
SDK AND PLUGINS
- now all opcodes in range 0-7FFF can be registered by plugins
- plugins moved to cleo\cleo_plugins directory
- new SDK method: CLEO_RegisterCommand
- new SDK method: CLEO_RegisterCallback
- new SDK method: CLEO_GetVarArgCount
- new SDK method: CLEO_PeekIntOpcodeParam
- new SDK method: CLEO_PeekFloatOpcodeParam
- new SDK method: CLEO_PeekPointerToScriptVariable
- new SDK method: CLEO_SkipUnusedVarArgs
- new SDK method: CLEO_ReadParamsFormatted
- new SDK method: CLEO_ReadStringParamWriteBuffer
- new SDK method: CLEO_GetOpcodeParamsArray
- new SDK method: CLEO_GetParamsHandledCount
- new SDK method: CLEO_GetScriptVersion
- new SDK method: CLEO_GetScriptInfoStr
- new SDK method: CLEO_GetScriptFilename
- new SDK method: CLEO_GetScriptWorkDir
- new SDK method: CLEO_SetScriptWorkDir
- new SDK method: CLEO_ResolvePath
- new SDK method: CLEO_GetScriptByName
- new SDK method: CLEO_GetScriptByFilename
- new SDK method: CLEO_GetScriptDebugMode
- new SDK method: CLEO_SetScriptDebugMode
- new SDK method: CLEO_Log
CLEO internal
- project migrated to VS 2022
- configured game debugging settings
- plugins moved into single solution
- configured automatic releases on GitHub
- added setup_env.bat script
Special Thanks
- 123nir for the alpha-testing, troubleshooting and valuable bug reports
5.0.0-alpha.45
- 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
- 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 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
- 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)
- 2302 (resolve_filepath)
- 2303 (get_script_filename)
- 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 (writememory_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 and updated opcodes
- 0B1E (sign_extend)
- 0DD5 (get_game_platform)
- 2002 (cleo_return_with)
- 2003 (cleo_return_fail)
- 'argument count' parameter of 0AB1 (cleo_call) is now optional.
cleo_call @LABEL args 0
can be written ascleo_call @LABEL
- 'argument count' parameter of 0AB2 (cleo_return) is now optional.
cleo_return 0
can be written ascleo_return
- cleo_return_* opcodes now can pass strings as return arguments
- SCM functions (0AB1) now keep their own GOSUB's call stack
- 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 directoryuserfiles:\
for game save files directory.\
for this script file directorycleo:\
for CLEO directorymodules:\
for CLEO\cleo_modules directory
- rewritten opcode 0A99 (set_current_directory). It no longer affects internal game state and 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 variable are set to zero
- fixed invalid 7 characters length limit of 0AAA (get_script_struct_named)
SDK AND PLUGINS
- now all opcodes in range 0-7FFF can be registered by plugins
- plugins moved to cleo\cleo_plugins directory
- new SDK method: CLEO_RegisterCommand
- new SDK method: CLEO_RegisterCallback
- new SDK method: CLEO_GetVarArgCount
- new SDK method: CLEO_PeekIntOpcodeParam
- new SDK method: CLEO_PeekFloatOpcodeParam
- new SDK method: CLEO_PeekPointerToScriptVariable
- new SDK method: CLEO_SkipUnusedVarArgs
- new SDK method: CLEO_ReadParamsFormatted
- new SDK method: CLEO_ReadStringParamWriteBuffer
- new SDK method: CLEO_GetOpcodeParamsArray
- new SDK method: CLEO_GetParamsHandledCount
- new SDK method: CLEO_GetScriptVersion
- new SDK method: CLEO_GetScriptInfoStr
- new SDK method: CLEO_GetScriptFilename
- new SDK method: CLEO_GetScriptWorkDir
- new SDK method: CLEO_SetScriptWorkDir
- new SDK method: CLEO_ResolvePath
- new SDK method: CLEO_GetScriptByName
- new SDK method: CLEO_GetScriptByFilename
- new SDK method: CLEO_GetScriptDebugMode
- new SDK method: CLEO_SetScriptDebugMode
- new SDK method: CLEO_Log
CLEO internal
- project migrated to VS 2022
- configured game debugging settings
- plugins moved into single solution
- configured automatic releases on GitHub
- added setup_env.bat script
Special Thanks
- 123nir for the alpha-testing, troubleshooting and valuable bug reports
5.0.0-alpha.44
- 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
- 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 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
- 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)
- 2302 (resolve_filepath)
- 2303 (get_script_filename)
- 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 (writememory_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 and updated opcodes
- 0B1E (sign_extend)
- 0DD5 (get_game_platform)
- 2002 (cleo_return_with)
- 2003 (cleo_return_fail)
- 'argument count' parameter of 0AB1 (cleo_call) is now optional.
cleo_call @LABEL args 0
can be written ascleo_call @LABEL
- 'argument count' parameter of 0AB2 (cleo_return) is now optional.
cleo_return 0
can be written ascleo_return
- cleo_return_* opcodes now can pass strings as return arguments
- SCM functions (0AB1) now keep their own GOSUB's call stack
- 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 directoryuserfiles:\
for game save files directory.\
for this script file directorycleo:\
for CLEO directorymodules:\
for CLEO\cleo_modules directory
- rewritten opcode 0A99 (set_current_directory). It no longer affects internal game state and 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 variable are set to zero
- fixed invalid 7 characters length limit of 0AAA (get_script_struct_named)
SDK AND PLUGINS
- now all opcodes in range 0-7FFF can be registered by plugins
- plugins moved to cleo\cleo_plugins directory
- new SDK method: CLEO_RegisterCommand
- new SDK method: CLEO_RegisterCallback
- new SDK method: CLEO_GetVarArgCount
- new SDK method: CLEO_PeekIntOpcodeParam
- new SDK method: CLEO_PeekFloatOpcodeParam
- new SDK method: CLEO_PeekPointerToScriptVariable
- new SDK method: CLEO_SkipUnusedVarArgs
- new SDK method: CLEO_ReadParamsFormatted
- new SDK method: CLEO_ReadStringParamWriteBuffer
- new SDK method: CLEO_GetOpcodeParamsArray
- new SDK method: CLEO_GetParamsHandledCount
- new SDK method: CLEO_GetScriptVersion
- new SDK method: CLEO_GetScriptInfoStr
- new SDK method: CLEO_GetScriptFilename
- new SDK method: CLEO_GetScriptWorkDir
- new SDK method: CLEO_SetScriptWorkDir
- new SDK method: CLEO_ResolvePath
- new SDK method: CLEO_GetScriptByName
- new SDK method: CLEO_GetScriptByFilename
- new SDK method: CLEO_GetScriptDebugMode
- new SDK method: CLEO_SetScriptDebugMode
- new SDK method: CLEO_Log
CLEO internal
- project migrated to VS 2022
- configured game debugging settings
- plugins moved into single solution
- configured automatic releases on GitHub
- added setup_env.bat script
Special Thanks
- 123nir for the alpha-testing, troubleshooting and valuable bug reports
5.0.0-alpha.43
- 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
- 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 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
- 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)
- 2302 (resolve_filepath)
- 2303 (get_script_filename)
- 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 (writememory_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 and updated opcodes
- 0B1E (sign_extend)
- 0DD5 (get_game_platform)
- 2002 (cleo_return_with)
- 2003 (cleo_return_fail)
- 'argument count' parameter of 0AB1 (cleo_call) is now optional.
cleo_call @LABEL args 0
can be written ascleo_call @LABEL
- 'argument count' parameter of 0AB2 (cleo_return) is now optional.
cleo_return 0
can be written ascleo_return
- cleo_return_* opcodes now can pass strings as return arguments
- SCM functions (0AB1) now keep their own GOSUB's call stack
- 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 directoryuserfiles:\
for game save files directory.\
for this script file directorycleo:\
for CLEO directorymodules:\
for CLEO\cleo_modules directory
- rewritten opcode 0A99 (set_current_directory). It no longer affects internal game state and 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 variable are set to zero
- fixed invalid 7 characters length limit of 0AAA (get_script_struct_named)
SDK AND PLUGINS
- now all opcodes in range 0-7FFF can be registered by plugins
- plugins moved to cleo\cleo_plugins directory
- new SDK method: CLEO_RegisterCallback
- new SDK method: CLEO_GetVarArgCount
- new SDK method: CLEO_PeekIntOpcodeParam
- new SDK method: CLEO_PeekFloatOpcodeParam
- new SDK method: CLEO_PeekPointerToScriptVariable
- new SDK method: CLEO_SkipUnusedVarArgs
- new SDK method: CLEO_ReadParamsFormatted
- new SDK method: CLEO_ReadStringParamWriteBuffer
- new SDK method: CLEO_GetOpcodeParamsArray
- new SDK method: CLEO_GetParamsHandledCount
- new SDK method: CLEO_GetScriptVersion
- new SDK method: CLEO_GetScriptInfoStr
- new SDK method: CLEO_GetScriptFilename
- new SDK method: CLEO_GetScriptWorkDir
- new SDK method: CLEO_SetScriptWorkDir
- new SDK method: CLEO_ResolvePath
- new SDK method: CLEO_GetScriptByName
- new SDK method: CLEO_GetScriptByFilename
- new SDK method: CLEO_GetScriptDebugMode
- new SDK method: CLEO_SetScriptDebugMode
- new SDK method: CLEO_Log
CLEO internal
- project migrated to VS 2022
- configured game debugging settings
- plugins moved into single solution
- configured automatic releases on GitHub
- added setup_env.bat script
Special Thanks
- 123nir for the alpha-testing, troubleshooting and valuable bug reports
5.0.0-alpha.42
- 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
- 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 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
- 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)
- 2302 (resolve_filepath)
- 2303 (get_script_filename)
- 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 (writememory_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 and updated opcodes
- 0B1E (sign_extend)
- 0DD5 (get_game_platform)
- 2002 (cleo_return_with)
- 2003 (cleo_return_fail)
- 'argument count' parameter of 0AB1 (cleo_call) is now optional.
cleo_call @LABEL args 0
can be written ascleo_call @LABEL
- 'argument count' parameter of 0AB2 (cleo_return) is now optional.
cleo_return 0
can be written ascleo_return
- cleo_return_* opcodes now can pass strings as return arguments
- SCM functions (0AB1) now keep their own GOSUB's call stack
- 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 directoryuserfiles:\
for game save files directory.\
for this script file directorycleo:\
for CLEO directorymodules:\
for CLEO\cleo_modules directory
- rewritten opcode 0A99 (set_current_directory). It no longer affects internal game state and 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 variable are set to zero
- fixed invalid 7 characters length limit of 0AAA (get_script_struct_named)
SDK AND PLUGINS
- now all opcodes in range 0-7FFF can be registered by plugins
- plugins moved to cleo\cleo_plugins directory
- new SDK method: CLEO_RegisterCallback
- new SDK method: CLEO_GetVarArgCount
- new SDK method: CLEO_PeekIntOpcodeParam
- new SDK method: CLEO_PeekFloatOpcodeParam
- new SDK method: CLEO_SkipUnusedVarArgs
- new SDK method: CLEO_ReadParamsFormatted
- new SDK method: CLEO_ReadStringParamWriteBuffer
- new SDK method: CLEO_GetOpcodeParamsArray
- new SDK method: CLEO_GetParamsHandledCount
- new SDK method: CLEO_GetScriptVersion
- new SDK method: CLEO_GetScriptInfoStr
- new SDK method: CLEO_GetScriptFilename
- new SDK method: CLEO_GetScriptWorkDir
- new SDK method: CLEO_SetScriptWorkDir
- new SDK method: CLEO_ResolvePath
- new SDK method: CLEO_GetScriptByName
- new SDK method: CLEO_GetScriptByFilename
- new SDK method: CLEO_GetScriptDebugMode
- new SDK method: CLEO_SetScriptDebugMode
- new SDK method: CLEO_Log
CLEO internal
- project migrated to VS 2022
- configured game debugging settings
- plugins moved into single solution
- configured automatic releases on GitHub
- added setup_env.bat script
Special Thanks
- 123nir for the alpha-testing, troubleshooting and valuable bug reports