Extensions

An extension is a set of new instructions added to the vanilla game. The CLEO library and its plugins is the most known way of adding those.

To make Sanny Builder aware of the custom instructions and explicitly signal their intentional usage, a script must have {$USE} directive. The {$USE} directive enables a particular set of instructions (see below the list of extensions).

{$USE CLEO}
{$USE ini}
{$USE CLEO+}

Each opcode included in Sanny Builder's INI files has been categorized to belong to some extension. Currently it is done via the file extensions.txt.

See #74 for more information on how this feature is expected to function in the future.

Implicit Extensions

Standard game opcodes have been included in the default extension that is implicitly available in any script. {$USE default} is possible but redundant.

Using {$CLEO} directive also implies {$USE CLEO} so standard CLEO opcodes are available to the compiler already.

Extensions List

Sanny Builder ships some common and recognized extensions for different edit modes:

Extension Name

Source

Edit Modes where available

CLEO

{$USE CLEO}

CLEO for GTA III CLEO for Vice City

CLEO 4.4

GTA III

Vice City

GTA SA v1.0, v2.0, (v1.0 - SCR)

ini

{$USE ini}

IniFiles.cleo plugin (ships with CLEO)

GTA III Vice City

GTA SA v1.0, v2.0, (v1.0 - SCR)

file

{$USE file}

FileSystemOperations plugin (ships with CLEO)

GTA III Vice City

GTA SA v1.0, v2.0, (v1.0 - SCR)

bitwise

{$USE bitwise}

IntOperations plugin (ships with CLEO4)

GTA III Vice City

GTA SA v1.0, v2.0, (v1.0 - SCR)

clipboard

{$USE clipboard}

ClipboardControl plugin

GTA III Vice City

GTA SA v1.0, v2.0, (v1.0 - SCR)

memory

{$USE memory}

MemoryModule plugin

GTA III Vice City

CLEO+

{$USE CLEO+}

CLEO+ plugin

GTA SA v1.0, v2.0, (v1.0 - SCR)

newOpcodes

{$USE newOpcodes}

newOpcodes plugin

GTA SA v1.0, v2.0

vcmobile

{$USE vcmobile}

Vice City on mobile devices

Vice City

Using opcodes from the third-party libraries not listed there is possible, the compiler will not require the {$USE} directive.