Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
Changelog:
- поддержка модулей CLEO с функцией sannybuilder/dev#264
Новый аудио плагин:
- Коды операций, связанные со звуком, перенесены из ядра CLEO в отдельный плагин
- звук CLEO теперь подчиняется настройкам громкости игры.
- реализован эффект Доплера для 3D аудиопотоков (быстро движущиеся источники звука)
- звук CLEO теперь следует за изменениями скорости игры.
- звуковое устройство теперь можно выбрать вручную в файле .ini.
- новый код операции 2500 (is_audio_stream_playing)
- новый код операции 2501 (get_audio_stream_duration)
- новый код операции 2502 (get_audio_stream_speed)
- новый код операции 2503 (set_audio_stream_speed)
- новый код операции 2504 (set_audio_stream_volume_with_transition)
- новый код операции 2505 (set_audio_stream_speed_with_transition)
- новый код операции 2506 (set_audio_stream_source_size)
- новый код операции 2507 (get_audio_stream_progress)
- новый код операции 2508 (set_audio_stream_progress)
- новый код операции 2509 (get_audio_stream_type)
- новый код операции 250A (set_audio_stream_type)
Новый плагин DebugUtils:
- новый код операции 00C3 (debug_on)
- новый код операции 00C4 (debug_off)
- новый код операции 2100 (точка останова)
- новый код операции 2101 (трассировка)
- новый код операции 2102 (log_to_file)
- реализована поддержка кодов операций 0662, 0663 и 0664 (исходные коды операций отладки скриптов Rockstar. См. DebugUtils.ini)
Новый плагин FileSystemOperations:
- запрещен скриптам доступ и изменение любых файлов за пределами корневого каталога игры или каталога настроек игры.
- коды операций, связанные с файлами, перенесены из ядра CLEO в отдельный плагин
- код операции 0A9E (write_to_file) теперь поддерживает литеральные числа и строки.
- исправлена ошибка, из-за которой коды операций файлового потока работали неправильно при использовании режимов чтения-записи.
- исправлено переполнение буфера в кодах операций чтения файлового потока
- добавлена/исправлена поддержка всех кодов операций файлового потока в устаревшем режиме (Cleo3)
- новый код операции 2300 (get_file_position)
- новый код операции 2301 (read_block_from_file)
- новый код операции 2302 (write_block_to_file)
- новый код операции 2303 (resolve_filepath)
- новый код операции 2304 (get_script_filename)
Новый math плагин:
- коды операций, связанные с математикой, перенесены из ядра CLEO в отдельный плагин
- новый код операции 2700 (is_bit_set)
- новый код операции 2701 (set_bit)
- новый код операции 2702 (clear_bit)
- новый код операции 2703 (toggle_bit)
- новый код операции 2704 (is_truthy)
Новый плагин MemoryOperations:
- коды операций, связанные с памятью, перенесены из ядра CLEO в отдельный плагин
- проверка входных и выходных параметров для всех кодов операций
- код операции 0A8C (write_memory) теперь поддерживает строки
- новый код операции 2400 (copy_memory)
- новый код операции 2401 (read_memory_with_offset)
- новый код операции 2402 (write_memory_with_offset)
- новый код операции 2403 (forget_memory)
- новый код операции 2404 (get_script_struct_just_created)
- новый код операции 2405 (is_script_running)
- новый код операции 2406 (get_script_struct_from_filename)
- новый код операции 2407 (is_memory_equal)
- новый код операции 2408 (terminate_script)
Новый text плагин:
- текстовые коды операций перенесены из ядра CLEO в отдельный плагин
- новый код операции 2600 (is_text_empty)
- новый код операции 2601 (is_text_equal)
- новый код операции 2602 (is_text_in_text)
- новый код операции 2603 (is_text_prefix)
- новый код операции 2604 (is_text_suffix)
- новый код операции 2605 (display_text_formatted)
- новый код операции 2606 (load_fxt)
- новый код операции 2607 (unload_fxt)
- новый код операции 2608 (get_text_length)
Новое и обновленные опкоды:
Изменено в файлах операций:
- реализована поддержка аргументов строки указателя памяти для всех собственных кодов операций игры.
- 0B1E (sign_extend)
- 0DD5 (get_game_platform)
- 2000 (get_cleo_arg_count)
- 2002 (cleo_return_with)
- 2003 (cleo_return_fail)
- параметр «количество аргументов» 0AB1 (cleo_call) теперь является необязательным. cleo_call @LABEL args 0 можно записать как cleo_call @LABEL
- Параметр «количество аргументов» 0AB2 (cleo_return) теперь является необязательным. cleo_return 0 можно записать как cleo_return
- функции SCM могут возвращать строковые литералы и строковые переменные.
- функции SCM (0AB1) теперь сохраняют собственный стек вызовов GOSUB.
- исправлена ошибка в 0AD4 (scan_string), приводившая к переполнению данных при чтении строк длиннее целевой переменной
- фиксированный регистр результата не очищался перед вызовом функции в кодах операций 0AA7 и 0AA8
- исправлена ошибка 0ABA (terminate_all_custom_scripts_with_this_name), завершающая только первый найденный скрипт
Улучшенная обработка ошибок:
- пути к файлам теперь могут использовать «виртуальные абсолютные пути». Используйте префикс в строках пути к файлу для доступа к предопределенным местам:
для корневого каталога игрыКод:root:\
для каталога файлов сохранения игрыКод:user:\
для этого каталога файлов сценарияКод:.\
для каталога CLEOКод:cleo:\
для каталога CLEO\cleo_modulesКод:modules:\
- переписан код операции 0A99 (set_current_directory). Теперь это больше не влияет на внутреннее состояние игры или текущий каталог в других скриптах.
- более подробные сообщения об ошибках в нескольких сценариях
- некоторые ошибки теперь приводят к приостановке выполнения скрипта, а не к сбою игры
Обновлено, включая загрузчик Silent ASI Loader до версии 1.3.
Bug Fixes:
- исправлена ошибка в 004E (terminate_this_script), позволяющая запускать несколько миссий
- исправлена обработка строк длиной более 128 символов, приводившая в некоторых случаях к ошибкам
- исправлена ошибка обработки первого строкового аргумента в 0AF5 (write_string to_ini_file)
- фиксированное соотношение сторон текста CLEO в главном меню, зависящее от разрешения
- исправлена очистка местных жителей миссии при запуске новой миссии CLEO
- при чтении менее 4 байтов с помощью 0A9D (файл чтения) теперь оставшиеся байты целевой переменной обнуляются
- исправлено недопустимое ограничение длины в 7 символов, равное 0AAA (get_script_struct_named)
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 0 can be written as cleo_call @LABEL
- 'argument count' parameter of 0AB2 (cleo_return) is now optional. cleo_return 0 can be written as cleo_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 directory
- user:\ for game save files directory
- .\ for this script file directory
- cleo:\ for CLEO directory
- modules:\ 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
- 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 methods:
- CLEO_RegisterCommand
- CLEO_RegisterCallback
- CLEO_GetVarArgCount
- CLEO_PeekIntOpcodeParam
- CLEO_PeekFloatOpcodeParam
- CLEO_PeekPointerToScriptVariable
- CLEO_SkipUnusedVarArgs
- CLEO_ReadParamsFormatted
- CLEO_ReadStringParamWriteBuffer
- CLEO_GetOpcodeParamsArray
- CLEO_GetParamsHandledCount
- CLEO_IsScriptRunning
- CLEO_TerminateScript
- CLEO_GetScriptVersion
- CLEO_GetScriptInfoStr
- CLEO_GetScriptFilename
- CLEO_GetScriptWorkDir
- CLEO_SetScriptWorkDir
- CLEO_ResolvePath
- CLEO_ListDirectory
- CLEO_ListDirectoryFree
- CLEO_GetScriptByName
- CLEO_GetScriptByFilename
- CLEO_GetScriptDebugMode
- CLEO_SetScriptDebugMode
- 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