# Squirrel(松鼠)脚本

## What is Squirrel

Squirrel is a programming language used in titanfall 2 and northstar mods, it is worth noting that the version of squirrel used by titanfall appears to be a modified version of the langauge

### File format

All files using squirrel are saved as .nut or .gnut

when creating mods your mod will typically be a series of functions and callbacks

## Squirrel as a typed language

All variables and functions in squirrel must have a type defined on declaration

```cpp
function dosomething()
```

is not acceptable and should instead be

```cpp
void function dosomething()
```

Similarly when declaring a variable

```cpp
funnynumber = 69
```

will not work, instead use:

```cpp
int funnynumber = 69
```

### Variable types

`void`: can be used to define functions that do not return a value, but still do things. most of your functions will be void

`interger`: a whole number

`float`: a none-whole number.

`string`: text

`entity`: an entity and all its associated information

`bool`: true or false (Squirrel does not treat 1 as true or 0 as false)

`array`: an ordered list of items indexed from 0, increasing with the number of items such as: 0:"hello",1:1000,2:entity player ...

`table`: a list of items with indexes defined on object entry such as: "word":"hello", "kilo":1000", "pilot":entity player ...

`struct`: a series of attributes assigned to a structure and accessed through with structname.variablename

`var`: Var typically refers to variables that lack any stated type, this will cause issues with many functions unless you use the `untyped` identifier at the start of your file, or if you use `expect type(variable)` when passing the variable to that function
