Sanny Builder
In English
In English
  • Introduction
  • Credits
  • Version History
  • Language
    • Data Types
      • Constants
      • Variables
      • Arrays
    • Instructions
      • Opcodes
      • Keywords
      • Classes
      • Expressions
      • Built-in Commands
      • HEX..END
    • Control Flow
      • Labels
      • Conditions
      • Loops
      • Switch
    • Functions
    • Import/Export
    • Directives
    • Comments
  • Edit Modes
    • CustomLabels.ini
    • Code Templates
    • Enums.txt
    • Extensions
    • Opcodes List (SCM.INI)
  • Editor
    • Features
    • Options
      • General
      • Formats
      • Editor
      • Theme Editor
      • Hotkeys
      • Debugger
      • Edit modes
    • Console
    • Hotkeys
    • Opcode Search Tool
    • Command Line Interface
    • Language Service
    • SCM Debugger
  • SCM Documentation
    • GTA Limits
    • GTA III
      • Ped Types
      • Radar Icons
    • Vice City
      • Button IDs
      • Gang IDs
      • Garage IDs
      • Interiors
      • Ped Types
      • Radar Icons
      • Weapon IDs
    • San Andreas
      • Button IDs
      • Gang IDs
      • Garage IDs
      • Haircuts
      • Interiors
      • Particle Effects
      • Ped Types
      • Player Clothes
      • Player Body Parts
      • Special Actors
      • Statistics ID
      • Tattoos
      • Train Types
      • Vehicle Variations
      • Weapon IDs
      • Weather IDs
      • Zones
    • Liberty City Stories
      • Gang IDs
      • Model IDs
      • Player Clothes
      • Special Actors
      • Weapon IDs
      • Weather IDs
    • Vice City Stories
      • Gang IDs
      • Player Clothes
      • Weather IDs
  • Troubleshooting
    • Error Messages
      • 0001: INI file not found
      • 0002: Unknown array type
      • 0003: Error reading script.img
      • 0004: Unknown parameter type
      • 0005: Invalid edit mode
      • 0006: Unknown file header
      • 0007: File not found
      • 0008: Error reading opcodes list
      • 0009: Opcodes list not found
      • 0010: Unknown opcode
      • 0011: Unknown opcode
      • 0012: Incorrect jump instruction
      • 0013: Unknown directive
      • 0014: Incorrect expression
      • 0016: Script not found
      • 0017: Unknown type of variable
      • 0018: Invalid array size
      • 0019: Unknown array type
      • 0020: Variable is not declared as array
      • 0021: Incorrect variable name
      • 0022: Loop counter is not a variable
      • 0023: Unexpected instruction
      • 0024: Error reading integer number
      • 0025: Incorrect counter range
      • 0026: Error reading floating-point number
      • 0027: String is too long
      • 0028: Unterminated string
      • 0029: Invalid debug script ID
      • 0031: Invalid total number of elements
      • 0032: Invalid value in the header
      • 0033: Invalid local variable name
      • 0034: Local variable is out of range
      • 0035: Expected word
      • 0036: Local mission variable is out of range
      • 0037: Debug script not found
      • 0038: Unknown type of array
      • 0039: Invalid element definition
      • 0040: Constant name or value not found
      • 0041: Invalid mission id
      • 0042: Duplicate external script name
      • 0043: Invalid array index
      • 0044: Invalid array name
      • 0045: Invalid array syntax: variable name is missing
      • 0046: Invalid array syntax
      • 0047: Invalid array size
      • 0048: Error reading array size
      • 0049: Not enough parameters for opcode
      • 0050: Not enough parameters for command
      • 0051: Error writing script.img header
      • 0052: Error writing script.img
      • 0053: Recursive include
      • 0054: Label not found
      • 0055: Identifier not found
      • 0056: Label redeclared
      • 0057: Internal label not found
      • 0058: Invalid parameter
      • 0059: Invalid opcode definition
      • 0060: No input file
      • 0061: Empty source
      • 0062: IDE file not found
      • 0063: Mission label expected
      • 0064: Mission label not found
      • 0065: External script label not found
      • 0067: Forbidden character in external script name
      • 0068: Forbidden character in identifier
      • 0069: Forbidden character in object name
      • 0071: Incorrect number of conditions
      • 0072: Missing logical operator
      • 0073: Redundant logical operator
      • 0074: Disabled option
      • 0075: Incorrect hexadecimal value
      • 0076: Condition expected
      • 0079: Invalid parameter in Alloc command
      • 0080: Non-negative integer number expected
      • 0081: Too many actual parameters
      • 0082: Invalid syntax
      • 0083: Unknown model ID
      • 0084: Jump to offset 0
      • 0086: Invalid array index
      • 0087: Invalid variable
      • 0088: Global variable is out of range
      • 0089: Opcode not found
      • 0090: Duplicate constant
      • 0091: Not enough memory to allocate a local variable
      • 0092: Incorrect export symbol
      • 0093: Only headless scripts can export code
      • 0094: Duplicate export name
      • 0095: Incorrect import name
      • 0096: Incorrect import path
      • 0097: Too many actual parameters
      • 0098: Unknown operator
      • 0099: Left-hand side of the assignment must be a variable
      • 0100: Invalid operator
      • 0101: Variable is not a class instance
      • 0102: Switch statement needs a variable
      • 0103: Expected a switch case
      • 0104: Expected a value for the switch case
      • 0105: Expected a function argument name
      • 0106: Expected a function argument type
      • 0107: Expected function return type
      • 0108: Unsupported argument type
      • 0109: Expected variables to store function result
      • 0110: Function must return N values
      • 0111: Function not found in current scope
      • 0113: Duplicate function declaration
      • 0115: Invalid variable name. Name is reserved by another class or function
      • 0116: Invalid variable name
      • 0117: Invalid function name
      • 0118: Unexpected value to return
      • 0119: Unsupported type of argument
      • 0120: Expected calling convention type
      • 0121: Expected function's static address
      • 0122: A non-static function can't be called by name
      • 0123: A 'thiscall' function requires a pointer
      • 0124: Foreign functions can't return more than one value
      • 0125: Unexpected return type in function
      • 0126: Can't export a foreign function definition
      • 0127: Unexpected mission label in function
Powered by GitBook
On this page
  • v. 4.1.0 - Mar 15, 2024
  • v. 4.0.0 - Aug 4, 2024
  • v. 3.9.1 - Sep 18, 2023
  • v. 3.9.0 - Sep 9, 2023
  • v. 3.8.5 - Feb 22, 2023
  • v. 3.8.4 - Feb 17, 2023
  • v. 3.8.3 - Jan 8, 2023
  • v. 3.8.2 - Sep 8, 2022
  • v. 3.8.1 - Sep 1, 2022
  • v. 3.8.0 - Aug 4, 2021
  • v. 3.7.0 - Jan 30, 2021
  • v. 3.6.2 - Nov 29, 2020
  • v. 3.6.1 - Nov 27, 2020
  • v. 3.6.0 - Nov 11, 2020
  • v. 3.5.1 - Aug 21, 2020
  • v. 3.5.0 - Aug 18, 2020
  • v. 3.4.1 - Aug 6, 2020
  • v. 3.4.0 - Aug 4, 2020
  • v. 3.3.3 - Oct 20, 2019
  • v. 3.3.2 - Oct 19, 2019
  • v. 3.3.1 - Sep 14, 2019
  • v. 3.3.0 - Sep 8, 2019
  • v. 3.2.4 - Aug 4, 2019
  • v. 3.2.3 - Jul 7, 2019
  • v. 3.2.2 - Jul 5, 2014
  • v. 3.2.1 - May 4, 2014
  • v. 3.2.0 - Mar 22, 2014
  • v. 3.1.4 -Feb 22, 2014
  • v. 3.1.3 - Dec 22, 2013
  • v. 3.1.2 - Oct 6, 2013
  • v. 3.1.1 - Sep 22, 2013
  • v. 3.1.0 - Sep 14, 2013
  • v. 3.09 - Jul 28, 2013
  • v. 3.08 - Jul 5, 2013
  • v. 3.06 - Jun 17, 2013
  • v. 3.05 - Jun 5, 2013
  • v. 3.04 - Aug 17, 2008
  • v. 3.03 - Nov 17, 2007
  • v. 3.02 - Nov 16, 2007
  • v. 3.01- Aug 6, 2007
  • v. 3.00 - Aug 4, 2007
  • v. 2.99e - Jan 1, 2007
  • v. 2.99d - Dec 3, 2006
  • v. 2.99c - Nov 30, 2006
  • v. 2.99 - Sep 27, 2006
  • v. 2.98 - Aug 4, 2006
  • v. 2.97 - Jun 11, 2006
  • v. 2.96 - Apr 1, 2006
  • v. 2.9f - Feb 18, 2006
  • v. 2.9 - Dec 15, 2005
  • v. 2.6 - Nov 5, 2005
  • v. 2.5 - Oct 10, 2005
  • v. 2.0 - Sep 18, 2005
  • v. 1.1 - Sep 7, 2005
  • v. 1.0 - Sep 4, 2005
  • v. 0.8 - Aug 20, 2005
  • v. 0.7 - Aug 10, 2005
  • v. 0.6 - Aug 4, 2005

Version History

PreviousCreditsNextData Types

Last updated 2 months ago

v. 4.1.0 - Mar 15, 2024

  • edit mode enhancements, including a new feature to customize edit mode list

  • two new experimental modes for GTA San Andreas: one with and one with support for SAMPFUNCS extension

  • autocomplete (Ctrl+Space) improvements

  • code formatter (Ctrl+Alt+3)

  • main menu updates with new icons

  • new theme Night Blue by Vital

  • updated Turkish translation by Bloodriver the Conqueror

  • bug fixes

See the . Visit for additional information and support.

v. 4.0.0 - Aug 4, 2024

  • (function..end)

  • support

  • for main.scm scripts

  • binary number format (0b101010)

  • new tabs

  • other improvements and fixes

v. 3.9.1 - Sep 18, 2023

v. 3.9.0 - Sep 9, 2023

  • bug fixes and other changes

v. 3.8.5 - Feb 22, 2023

v. 3.8.4 - Feb 17, 2023

  • fix some compilation issues with classes using string literals

v. 3.8.3 - Jan 8, 2023

v. 3.8.2 - Sep 8, 2022

v. 3.8.1 - Sep 1, 2022

    if and
        0AB0: is_key_pressed 9
	0AB0: is_key_pressed 10
    0AA0: gosub_if_false @label // was not working before, now compiles
    • CLEO for San Andreas 4.4.1

    • CLEO for GTA III and Vice City 2.0.0.6

v. 3.8.0 - Aug 4, 2021

  • updated translations to Hungarian, Spanish, Ukrainian and Chinese languages

v. 3.7.0 - Jan 30, 2021

v. 3.6.2 - Nov 29, 2020

v. 3.6.1 - Nov 27, 2020

  • updated translation to Ukrainian language

  • updated CLEO+ plugin to v1.0.4

v. 3.6.0 - Nov 11, 2020

  • better integration with CLEO library:

    • updated third-party tools in the tools directory:

      • CLEO v4.4

      • SCRLog v2020.2

    • unified description and keywords for CLEO opcodes across different edit modes

  • IDE updates:

    • updated Spanish and Italian translations

    • added option to associate Sanny Builder with *.csa and *.csi files (CLEO Android scripts).

v. 3.5.1 - Aug 21, 2020

v. 3.5.0 - Aug 18, 2020

  • updated opcode definitions for LCS/VCS*

New opcode definitions for GTA LCS and GTA VCS are incompatible with the previous definitions. You must disassemble the main.scm prior to making any scripts for those games.

v. 3.4.1 - Aug 6, 2020

  • fixed incorrect number of parameters in opcode 04E3 in VCSSCM.INI

v. 3.4.0 - Aug 4, 2020

  • added a new tutorial on higher level constructions in the Sanny Builder language, see help\examples directory

  • IDE updates:

    • Run San Andreas menu action now checks for gta-sa.exe (Steam)

    • links to the new documentation portal in the main menu and error messages

  • minor updates:

    • updated opcode descriptions (player money += in SA, award_achievement in SA Mobile, 0479 in VCS)

    • renamed macroes.txt to templates.txt

v. 3.3.3 - Oct 20, 2019

v. 3.3.2 - Oct 19, 2019

  • fixed the opcode 059C in the Vice City mode

v. 3.3.1 - Sep 14, 2019

  • included constants.txt missing in the GTA SA mode

v. 3.3.0 - Sep 8, 2019

  • added compiler support for the Liberty City Stories SCM format

v. 3.2.4 - Aug 4, 2019

  • fixed a regression defect when a CHM help file can not be open

  • updated opcode definitions for GTA 3 and Vice City

  • added IDE support for CLEO 2.0 for III and VC

v. 3.2.3 - Jul 7, 2019

  • improved support for the version of GTA San Andreas for WinStore, Xbox 360, and PS3

  • fixed an issue with opcodes 09A4 and 0A18 not being properly decompiled in the SA_Mobile mode

v. 3.2.2 - Jul 5, 2014

  • added translation into Korean language (thanks to MINE)

v. 3.2.1 - May 4, 2014

  • added translation into Indonesian language (thanks to IMasterFX)

  • CLEO for GTA III and CLEO for Vice City updated (thanks to Silent)

v. 3.2.0 - Mar 22, 2014

  • adding custom edit modes by editing the games.xml file is now possible

  • new edit mode - GTA SA SCR

  • variables can be quickly declared using a type name prefix

  • CLEO updated to the version 4.3.16

  • mission names can be changed by editing appropriate missions.txt files

  • Sanny Builder only checks if the game directory path is not empty, no checks for specific files (such as an .exe)

  • minor improvements in the SB updating feature

  • changed the Sanny Builder icon and the menu icons

v. 3.1.4 -Feb 22, 2014

  • CLEO updated to the version 4.3.14

  • fixed minor interface glitches for hi-res displays

  • updated German, Polish, Chinese, Ukrainian translations

v. 3.1.3 - Dec 22, 2013

  • added support for iOS and Android versions of GTA San Andreas

  • updated Chinese and German translations

v. 3.1.2 - Oct 6, 2013

  • added Czech translation

  • added options to associate file extensions .cs and .cm with Sanny Builder

v. 3.1.1 - Sep 22, 2013

v. 3.1.0 - Sep 14, 2013

  • VCSCM.ini is updated to include opcodes for the GTA VC mobile version and unsupported opcodes

  • some hotkeys are now customizable in the options

  • added a feature to check automatically if an update exists at the program startup

  • updated Spanish and Chinese translations

  • Coords manager is now able to change the player's angle in GTA VC

v. 3.09 - Jul 28, 2013

  • Sanny Builder is licensed under the Sanny Builder Freeware/Donationware License Agreement

  • added a feature to check if an update is available

  • Coords manager is upgraded to work with all known versions of GTA3, VC and SA (thanks to Silent)

  • added an updated Chinese translation

  • minor design changes

v. 3.08 - Jul 5, 2013

  • added Chinese translation

  • added classes File and Audiostream for backward compatibility with CLEO 4 by Alien

File.Open, Audiostream.Load, Audiostream.Load3D were methods in CLEO 4. Now they are properties. It means, if you get an error when compiling old sources with these commands, change their syntax to: var = File.Open(file_name, mode) var = Audiostream.Load(file_name) var = Audiostream.Load3D(file_name)

  • the compiler now accepts a string literal as a parameter in a class property

  • the compiler now throws an error for a malformed string literal like text1"text2" or text1'text2' (without a leading quotation mark)

  • the compiler is able to compile comment markers (curly braces) within a string ("{text1}text2")

  • the semicolon (;) can not be used to comment out a line of the code

  • added flag icons for the available languages in the options

  • fixed some issues with disassembling of the VCS SCM format

v. 3.06 - Jun 17, 2013

  • replaced properties Actor.Armour and Actor.Car with their correct versions Actor.AddArmour and Actor.MissionCar

  • added a new property Actor.CurrentCar for the opcode 03C0 in the SA and VC classes.

  • added new hotkeys Ctrl+Num+ and Ctrl+Num- to quickly change the text size

  • fixed a bug of version 3.05 when the program hung on startup trying to open a file

v. 3.05 - Jun 5, 2013

  • added new translations for the following languages: Finnish, Polish, Hungarian, Turkish, Ukrainian

  • the CLEO library updated to version 4.1.1.30f (CLEO 4 by Alien)

  • added a possibility to install CLEO for GTA III and Vice City (made by Alien)

  • opcode files (**SCM.ini, opcodes.txt) replaced with the ones from the CLEO 4 library installation

v. 3.04 - Aug 17, 2008

  • the editor is able to to convert hexadecimal numbers to decimal ones and vice versa (Ctrl+H), and convert the model names to their IDs (Ctrl+Alt+H)

  • removed a warning message about script.img being used by the game when compiling a CLEO script

  • the post-compilation report shows the size of a CLEO script (as Largest script)

  • fixed a bug when compiling an array with constant numeric indexes

  • the installer no longer requires the system administrator rights

v. 3.03 - Nov 17, 2007

  • the previous version of CLEO had a bug

  • minor changes (the toolbar position wasn't saved)

v. 3.02 - Nov 16, 2007

  • new version of the CLEO library

  • main toolbar is movable

  • the Compile+Copy feature (F7) does not create a copy of the output file if the source has $E or $CLEO directives

  • during a compilation run after pressing F6, the output file for a source file with the $CLEO directive

    is created in the same directory; after F7 the output file is created in the CLEO directory (similarly to SCM files)

  • new translations: Italian, Portuguese

v. 3.01- Aug 6, 2007

  • bug-fixes update

v. 3.00 - Aug 4, 2007

  • the CLEO 3 library is integrated into Sanny Builder

  • disassembler supports the SCM format of Vice City Stories

  • an ability to create an external script named AAA

  • dropped support for the commands WriteMem and ReadMem

  • a possibility to use regular expressions when searching

  • a possibility to save a source file in the RTF or HTML formats

  • an ability to skip the splashes at SA startup

  • a new key combo Ctrl+Enter

  • updated SASCM.INI

v. 2.99e - Jan 1, 2007

v. 2.99d - Dec 3, 2006

  • fixed a decompiler bug

v. 2.99c - Nov 30, 2006

  • added the Memory Hacker plug-in

  • disassembler supports the SCM format of Liberty City Stories

  • the compiler uses default values during compilation of amain.scm with the missing header segments (DEFINE XXX)

  • a possibility to Drag&Drop a file into the editor to open it

If you get a compiler error message like Unknown directive xxxx when compiling the sources from v2.99, replace the line {$VERSION xxxx} to any place after the header, for instance before the comment //-------------MAIN---------------

v. 2.99 - Sep 27, 2006

  • added new commands WriteMem and ReadMem

  • HEX..END statement accepts labels and global variables

  • decompiler supports GXT files of GTA III & GTA VC

  • classes support the original order of the parameters (like in SASCM.INI by PLPynton). The script should have a line {$VERSION x.0.xxxx} to support such order, see comments in the INI about this

  • added option to confirm an exit from the program

  • converting of the selected piece of code

  • corrected some mistakes in the configuration files

  • removed auto-casting of an integer number to the float one when a variable is declared as Float. Now the compiler chooses an opcode depending on the number type only (in math expressions without opcodes)

The following opcodes were changed in SASCM.INI: 0181, 00c3, 00c4 in order to support the commands WriteMem and ReadMem. The original scripts did not use these opcodes and the unmodified games do not implement them so it should not break existing scripts.

The class member Car.SetSpeedInstantly was named incorrectly (with a wrong opcode) in the classes.db for SA. If you get an error message about this method during compilation, rename it toActor.DrivingPlane. We apologize.

v. 2.98 - Aug 4, 2006

  • Sanny Builder became multilingual

  • the list of models can be sorted alphabetically/by value (Alt+S when the list is active)

  • minor corrections and changes

v. 2.97 - Jun 11, 2006

  • minor updates

v. 2.96 - Apr 1, 2006

  • added an opportunity to show the list of templates

  • fixed some bugs

v. 2.9f - Feb 18, 2006

  • the DEFINE OBJECT list is now optional (the compiler can make it out of model names used in the script)

  • support for block comments {}

  • minor changes

v. 2.9 - Dec 15, 2005

  • new operator IN

  • added support for nested loops

  • new comment style: //

  • the editor now remembers the position of markers and the cursor in closed files

v. 2.6 - Nov 5, 2005

  • full support of SCM formats of Vice City and GTA 3

  • added a feature to display the list of variables and labels

  • minor changes:

    • missions can be referenced by their name (start_mission MYMISSION where MYMISSION is the label defined in lineDEFINE MISSION XX at @MYMISSION)

    • Ctrl+Space displays the list of imported models (DEFINE OBJECT)

    • if the disassembler can't find a script.img file, it uses the one from the game folder

v. 2.5 - Oct 10, 2005

  • all math commands can be used without opcodes (0004..008B)

  • added models list showing

  • minor changes and fixes

v. 2.0 - Sep 18, 2005

  • some math commands can be written without opcodes (e.g.0004, 0005, 0006, 0007, 0038, 0039, 0042, 0043)

  • for the opcode 00D6 the default parameter is 0 (if = if 0)

v. 1.1 - Sep 7, 2005

  • some bugs fixed

v. 1.0 - Sep 4, 2005

  • disassembler adds the model names and the text from american.gxt in a source file

  • added new options

  • fixed some bugs

v. 0.8 - Aug 20, 2005

  • disassembler adds an additional index to the file name if a file with the same name already exists (e.g, if main.scm.txt already exists, a new file will be main.scm[0].txt)

  • more informative error messages

  • added a check for duplicated labels

  • fixed some bugs

v. 0.7 - Aug 10, 2005

  • added new options for text editing

  • added an ability to work with multiple files simultaneously

  • added a function to auto-complete an opcode with the F1 button (beta)

v. 0.6 - Aug 4, 2005

  • disassembling support for GTA SA SCM format

  • compilation of text sources into main.scm and script.img

  • basic features for text editing

See the . Visit for additional information and support.

This release won't be possible without great feedback and testing from Sanny Builder community as well as support from my .

array name in expressions without opcode could be a constant

preserve global variable index when disassembling with extra info

default choice for option should be "As is"

fix an issue with compiling opcode 0B17

fix an issue when Sanny doesn't present the option to use the included script text.

fixed some issues with string variables ,

command names defined in JSON files are now valid

improvements (repeat the same byte N times, include binary files)

simplified and declarations (const x = 1, y = 2, float x, y, z)

new (bitwise, =@, =#)

{$INCLUDE_ONCE}

adding new can be done by copying them into the data folder, the modes.xml is gone

👏 Thanks to all people who helped and contributed to this release, and many thanks to my supporters on .

Previous versions allowed the compilation of some broken code. Now, it will produce an error. You can find examples of such code .

fix bug

keep previously opened documents when launching SB with an input file (Open with)

add "--decompile" parameter to

fix bugs , ,

fix bugs , ,

fix in model search

update CLEO+ plugin to

fix bugs ,

added support for more commands terminating an if statement with multiple conditions

new and updated (Spanish, Ukrainian, Romanian, Armenian)

contributed by the users

for local help files (CHM)

new for GTA SA PS2 with PS2 CLEO commands

updated local and plugin files:

plugin

fixed bugs ,

👏 Thanks to everyone who contributed to this version: , , , , , , , ,

: a new portal documenting all known opcodes

16

disassembler now outputs the content of a hex..end block as a string if it's a sequence of ASCII characters ending with 00

to let disassembler ignore custom information attached to the compiled script

to launch the editor with custom options

are now stored in a separate file and kept between updates

using Numpad buttons have been changed (Zoom text: Ctrl + +/- and Navigate to label and back: Alt + Right/Left)

updated plugin to v1.0.8

👏 Kudos to contributors to this release: , , , ,

declared are getting highlighted ()

the autocomplete list displays declared constants ()

each editor tab maintains its own selection ()

new VC Mobile mode with CLEO Android opcodes ()

added spaceeinstein's opcodes in VC PC mode

error messages now have a link to localized documentation if possible ()

configuration supports @sb: and @game: variables ()

plugin updated to v1.0.7

fixed bugs:

Read more on constants highlighting there: .

Kudos to for contributions to this release.

fixed a bug with labels missing in disassembled CLEO scripts

updated opcode definitions and keywords for CLEO opcodes

fixed several regression bugs in compiler ,

minor fixes and improvements (see the )

Kudos to and for their contributions.

support for in classes

new of opcode parameters: and

initial support for language

added for GTA SA with 250+ new opcodes

scripts (*.csa, *.csi) as compiled scripts

compiler uses CLEO opcodes 0A9E, 0A9F, 0A90, 0A91

added for all opcodes in GTA SA SCR mode

word thread has been replaced with script in opcode definitions and keywords ()

the game directory is no longer required to compile a script ()

the "Compile and Copy" destination could be configured ()

Kudos to and for updated translations.

fixed a bug with LCS and VCS compilation ()

arrays in LCS and VCS now get custom names from CustomVariables.ini and CustomArrays.ini ()

Kudos to for reporting the first bug and helping to test the fix.

updated

Unix-style syntax with hyphens ()

new options , ,

improved

games.xml renamed to modes.xml, inner updated

modes can now properties of other modes (useful for different versions of one game)

a new mode for SA v2.0 (using )

separate modes for VCS PSP and VCS PS2 ()

support for files

"hot" reloading of modes configuration ()

increased available space for the mode name section ()

removed SAMB to SB converter ()

fixed ()

fixed a bug with LCS and VCS compilation (, , )

fixed an issue with window not available after minimize ()

Kudos to and for their awesome contribution to this release.

fixed the issue with the disassembler ignoring Write opcodes and producing a callable label when a regular label is expected

added compiler support for the SCM format of GTA: Vice City Stories ()

added syntax for local variables with custom names ()

added a simpler form of calling subroutines using : a label name followed by a pair of parentheses () substitutes a gosub command

added more customization points for :

path to a GXT file used by the disassembler ()

path to opcodes.txt ()

exclusive

a new menu item to quickly bootstrap a CLEO script file (see the bottom note in )

renamed variables script_controlled_player and flag_player_on_mission to PLAYER_ACTOR and ONMISSION respectively in GTA III's CustomVariables.ini ()

reverted files in the help\GXT Strings directory to the older version ()

Kudos to , , , and for their awesome contribution to this release.

fixed a causing incorrect external scripts compilation

fixed bugs ,

fixed the bug

added aliases for the : TIMERA and TIMERB

changed the option to apply to the global variables

fixed bugs , , , ,

improved construct processing

fixed the bug

fixed bugs ,

added the feature (formerly 'jump to label' function)

improved of the script file extensions with Sanny Builder

fixed the bug

a value is now used when making a list of constants

fixed bugs ,

added a new directive to register a new opcode in the script

corrected behavior of the directive while scanning directories for the file

fixed bugs ,

when the option is enabled, Sanny Builder remembers the game a script is compiled for, to use the proper edit mode when decompiling

when the option Add extra info to SCM is enabled, Sanny Builder adds a source code into a script file (only when the directive or is present)

added a new directive to prohibit including a source code into a compiled script

$VERSION and $VERSION_RESTORE are deprecated

The Sanny Builder installation now includes the by LINK/2012 (can be found in the tools folder)

fixed bugs , , ,

added a feature to report found bugs via

fixed bugs , , , ,

added v1.1 as a default ASI loader for CLEO 3 and CLEO 4

There is a on using space characters in such parameter.

changed the syntax of the parameter

added new ++ and --

added support for block /* */

SASCM.INI got an update from the

Sanny Builder now remembers a number of closed files for the option

fixed a bug when the compiler failed to compile a source with multiple constructs

new \nosplash

support

new $INCLUDE,$EXTERNAL,$CLEO

to the end of a script file

support

a to decompile SCM files having no header

a new \compile

a possibility to use a floating-point value as the counter value in a loop

fixed a bug when parts of the code within the construct disappeared in

a HEX..END construct now accepts the type and string literals

a loop accepts model identifiers as the counter values

Memory Hacker became a .

support for constant numbers as indexes of global

a global variable gets disassembled with the type (&) if its address is not divisible by 4

new preprocessor : {$VERSION}, {$VERSION_RESTORE}

support for numbers

full support for the datatype

an opportunity to give to labels

an opportunity to choose a for custom names and strings

added to switch debug options

added escape sequences in

information about file (version, author, date)

a dropdown menu to switch

an opportunity to pass the current file name to an

reading/writing of the player's z_angle in ; quick insertion of the z_angle value in the script by pressing Ctrl+Shift+E (for SA)

added menu for

a special version of has been built into SB. The details can be found in the file OST Readme.txt

validating math expressions during disassembling when is disabled (to ensure that opcodes are used properly)

an a script.img file manually if the folder with the main.scm file does not have one

an opportunity to add a new directly from the editor; added template descriptions

new data type: & for direct byte address ().

improved the option

added an to replace mission numbers with their names

keypress

added

added

added support for WHILE and REPEAT

added a new function , allowing to assign a specific memory address to a global variable

an opportunity to variables and arrays as class instances

added (FOR..END)

new <>

added handle type for

an to switch off a warning that the script.img file is being used by the game

added support

added support

added construction for variables declaration

new < and <=

added a capability that the compiler itself set necessary value for the

added support

added support

added support

added the to customize labels output

added True and False which correspond to 1 and 0

added construction for writing hexadecimal values directly in a binary output

added

new format of

added from the BW's SA Mission Builder syntax

added an ability to SCM files with Sanny Builder

complete list of changes
SannyBuilder Discord
Patreon
#250
#251
#254
#258
#259
#265
Sanny Builder Library
keywords
edit modes
Patreon
here
Complete list of changes
#216
#151
#212
#213
#180
#210
#204
#168
a bug
1.1.3
#200
#187
#133
translations
new color themes
massive update
edit mode
CLEO
CLEO+ 1.1.2
#172
#189
NicusorN5
Junior_Djjr
wmysterio
MatiDragon
DanielSant0s
JaggerJam69
Vital
Sdas50
nick7
Complete list of changes
new color themes
#33
hotkeys
CLEO+
fixed 16 bugs
forms55
MatiDragon
Vital
wmysterio
XMDS
Complete list of changes
constants
#28
#40
edit mode
#87
sannybuilder/data#11
Opcode Restoration project
#101
CLEO+
#103
#114
#120
Language service
Complete list of changes
👏
XMDS
#99
#95
#96
#98
complete list
👏
wmysterio
XMDS
extensions
CLEO+ plugin
recognize Cleo for Android
in certain expressions when no opcode is supplied
keywords
see why
#48
#9
Complete list of changes
👏
MatiDragon
Wesser
#56
#53
👏
darkdraggy
command line interface
#42
edit modes
CustomLabels_v2.ini
#41
#15
#8
#27
#49
#0053
#0064
Opcode Search Tool
#35
👏
marcelo_20xx
fastman92
#2
edit modes
#7
#5
code templates
Code Templates
#3
#25
translation updates
👏
OrionSR
ZAZ
XMDS
Wesser
bug
#0036
#0050
#0048
#0031
#0032
#0033
#0040
#0044
HEX..END
#0000028
#0000026
#0000027
#0000024
#0000011
#0000020
#0000005
#0000019
directives
SCRLog CLEO plugin
#0000010
#0000014
#0000015
#0000016
the official bug tracker
#0000002
#0000003
#0000004
#0000006
#0000009
Silent's ASI Loader
operators
GTAG Database
HEX..END
constants
directives
separate tool
arrays
directives
console
INI
edit modes
Opcode Search Tool
ADMA
additional commands
loops
loops
arrays
classes
keywords
keywords
HEX...END
Somersault compiler
complete list of changes
SannyBuilder Discord
functions support
CLEO 5 modules
debugger
switch..end
#256
#72
m%
k%
#43
#32
HEX..END
operators
HEX..END
aDMA
Case converting
custom arrays
custom names
different case
option
const
variable
declaring
timer variables
VAR...END
new SBL edit modes
structure
inherit
custom IDE/DAT
CLI
new CLI parameter
-x
--game
--mode
directive
$OPCODE
$INCLUDE
$EXTERNAL
$CLEO
$NOSOURCE
custom user templates
integration with Sanny Builder Library
user tools
InstaSearch
comments
external tool
Coord Manager
external applications
code template
jump to label
recording
code templates
coords manager
converter
new debug option
possibility
debug mode
enumerated types
limit
declare
properties
extended parameters
types
\debug
command line parameter
command line parameter
FOR..END
FOR
labels
aDMA
hexadecimal
ADMA
long string literals
labels
file association
option
Ranges check
association
Add extra info to SCM
writing of the additional info
Write opcodes
opportunity to choose
option
opportunity
associate
code scan
Load all closed files
Alloc
IF..THEN..ELSE..END
operator
operators
IF command