Arrays

An array represents an indexed collection of elements of the same type (called the base type).

Array Declaration

<type> <array name>[<size>]

The type can be one of the following: Int, Float, String, LongString or any available class name:

int intArray[10]
float floatArray[10]
string stringArray[10]
longstring longStringArray[10]
Car cars[5]

Accessing array elements after declaration

After declaring an array, you can access its elements using square brackets notation. Arrays use zero-based indexes, where the first element of the array is available at the index 0, the second one at the index 1, etc:

float values[10]
values[0] = 100.0

string stringArray[10]
stringArray[0] = 'str1'
stringArray[1] = 'str2'
stringArray[2] = 'str3'

longstring longStringArray[10]
longStringArray[0] = "str1"
longStringArray[1] = "str2"
longStringArray[2] = "str3"

You can also index array elements using variables, like so:

int index = 2
int list[5]
list[index] = 10 // set the third element of the array to 10

An element of an array can be used just like any other variable. If the array has a class type, each element can be used to call methods of that class:

Player main
Player others[2]

main.addScore(10) // ADD_SCORE main 10
others[0].AddScore(10) // ADD_SCORE others[0] 10

Spreading Arrays

Arrays support spread syntax with the ... operator as a quick way to represent all array elements.

For example, if you have an array of 3 elements like so:

float pos[3]

You can spread it to store the result of a command that returns three float numbers, e.g. get_char_coordinates:

...pos = get_char_coordinates $scplayer 
// same as pos[0], pos[1], pos[2] = get_char_coordinates $scplayer

You can also spread an array to pass all elements to a command that requires that amount of arguments, e.g. set_char_coordinates:

set_char_coordinates $scplayer ...pos
// same as set_char_coordinates $scplayer pos[0] pos[1] pos[2]

You can also use spread syntax when calling functions.

Legacy syntax

The legacy syntax is produced when you disassemble a script that uses arrays. This syntax represents low-level array implementation and is not recommended for direct use in new scripts. Instead, declare an array and access elements using square bracket notation (see above).

San Andreas

<array name>(<index var name>,<size><type>)
$index = 0
$array($index,10i) = 1

<array name>: a local or global variable <index var name>: any variable containing an index of the element to read or write <size>: a value between 1 and 255 (inclusive) <type>: one of characters i f s v:

Letter

Item Type

Item Size (bytes)

i

integer

4

f

float

4

s

string

8

v

string

16

Liberty City Stories, Vice City Stories

In LCS, VCS, array elements are only 4 bytes in length. Therefore, there is no need in type declaration.

<array name>(<index var name>,<size>)
$index = 0
$array($index,10) = 1

Last updated