Version History
- bug fixes and other changes
👏 Thanks to all people who helped and contributed to this release, and many thanks to my supporters on Patreon.
Previous versions allowed the compilation of some broken code. Now, it will produce an error. You can find examples of such code here.
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
👏 Thanks to everyone who contributed to this version: NicusorN5, Junior_Djjr, wmysterio, MatiDragon, DanielSant0s, JaggerJam69, Vital, Sdas50, nick7
- disassembler now outputs the content of a
hex..end
block as a string if it's a sequence of ASCII characters ending with 00 #33 - hotkeys using Numpad buttons have been changed (Zoom text: Ctrl + +/- and Navigate to label and back: Alt + Right/Left)
- updated translations to Hungarian, Spanish, Ukrainian and Chinese languages
- updated translation to Ukrainian language
- updated CLEO+ plugin to v1.0.4
- better integration with CLEO library:
- updated third-party tools in the
tools
directory:- CLEO v4.4
- SCRLog v2020.2
- compiler uses CLEO opcodes
0A9E
,0A9F
,0A90
,0A91
in certain expressions when no opcode is supplied - unified description and keywords for CLEO opcodes across different edit modes
- 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.- fixed incorrect number of parameters in opcode
04E3
inVCSSCM.INI
- fixed the issue with the disassembler ignoring
Write opcodes
option and producing a callable label when a regular label is expected
- added a simpler form of calling subroutines using labels: a label name followed by a pair of parentheses
()
substitutes agosub
command - 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 forgta-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 variables
script_controlled_player
andflag_player_on_mission
toPLAYER_ACTOR
andONMISSION
respectively in GTA III'sCustomVariables.ini
(#3) - renamed
macroes.txt
totemplates.txt
- included
constants.txt
missing in theGTA SA
mode
- added compiler support for the Liberty City Stories
SCM
format
- improved support for the version of GTA San Andreas for WinStore, Xbox 360, and PS3
- fixed an issue with opcodes
09A4
and0A18
not being properly decompiled in the SA_Mobile mode
- 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
- CLEO updated to the version 4.3.14
- fixed minor interface glitches for hi-res displays
- updated German, Polish, Chinese, Ukrainian translations
- added support for iOS and Android versions of GTA San Andreas
- updated Chinese and German translations
VCSCM.ini
is updated to include opcodes for the GTA VC mobile version and unsupported opcodes- when the option Add extra info to SCM is enabled, Sanny Builder remembers the game a script is compiled for, to use the proper edit mode when decompiling
- 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
- The Sanny Builder installation now includes the SCRLog CLEO plugin by LINK/2012 (can be found in the
tools
folder)
- 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
- added Chinese translation
- added classes
File
andAudiostream
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"
ortext1'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
- replaced properties
Actor.Armour
andActor.Car
with their correct versionsActor.AddArmour
andActor.MissionCar
- added a new property
Actor.CurrentCar
for the opcode03C0
in the SA and VC classes. - added new hotkeys
Ctrl+Num+
andCtrl+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
- 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
- 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
- the previous version of CLEO had a bug
- minor changes (the toolbar position wasn't saved)
- 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
directiveis created in the same directory; afterF7
the output file is created in the CLEO directory (similarly toSCM
files) - new translations: Italian, Portuguese
- bug-fixes update
- 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
andReadMem
- a possibility to use regular expressions when searching
- a possibility to save a source file in the
RTF
orHTML
formats - an ability to skip the splashes at SA startup
- a new key combo
Ctrl+Enter
- updated
SASCM.INI
- fixed a decompiler bug
- added the Memory Hacker plug-in
- disassembler supports the
SCM
format of Liberty City Stories - the compiler uses default values during compilation of a
main.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---------------
- added new commands
WriteMem
andReadMem
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 theINI
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) - reading/writing of the player's z_angle in Coord Manager; quick insertion of the z_angle value in the script by pressing
Ctrl+Shift+E
(for SA)
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.- Sanny Builder became multilingual
- a special version of Opcode Search Tool has been built into SB. The details can be found in the file
OST Readme.txt
- validating math expressions during disassembling when Write opcodes is disabled (to ensure that opcodes are used properly)
- an opportunity to choose a
script.img
file manually if the folder with themain.scm
file does not have one - the list of models can be sorted alphabetically/by value (
Alt+S
when the list is active) - minor corrections and changes
- minor updates
- added an opportunity to show the list of templates
- fixed some bugs
- 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
- 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
- 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
whereMYMISSION
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
- all math commands can be used without opcodes (
0004..008B
) - added models list showing
- minor changes and fixes
- 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 is0
(if
=if 0
)
- some bugs fixed
- 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 bemain.scm[0].txt
) - more informative error messages
- added a check for duplicated labels
- fixed some bugs
- 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)
- disassembling support for GTA SA
SCM
format - compilation of text sources into
main.scm
andscript.img
- basic features for text editing