AIController Class Reference

The Controller, the class each AI should extend. More...


Public Member Functions

 AIController (CompanyID company)
 Initializer of the AIController.
void Start ()
 This function is called to start your script.
SquirrelTable Save ()
 Save the state of the script.
void Load (int version, SquirrelTable data)
 Load saved data just before calling Start.

Static Public Member Functions

static uint GetTick ()
 Find at which tick your script currently is.
static int GetOpsTillSuspend ()
 Get the number of operations the script may still execute this tick.
static int GetSetting (const char *name)
 Get the value of one of your settings you set via info.nut.
static uint GetVersion ()
 Get the OpenTTD version of this executable.
static void SetCommandDelay (int ticks)
 Change the minimum amount of time the script should be put in suspend mode when you execute a command.
static void Sleep (int ticks)
 Sleep for X ticks.
static void Break (const char *message)
 Break execution of the script when script developer tools are active.
static void Print (bool error_msg, const char *message)
 When Squirrel triggers a print, this function is called.
static HSQOBJECT Import (const char *library, const char *class_name, int version)
 Import a library.


Detailed Description

The Controller, the class each AI should extend.

It creates the AI, makes sure the logic kicks in correctly, and that GetTick() has a valid value.

When starting a new game, or when loading a game, OpenTTD tries to match a script that matches to the specified version as close as possible. It tries (from first to last, stopping as soon as the attempt succeeds)

After determining the script to use, starting it is done as follows

See also http://wiki.openttd.org/AI:Save/Load for more details.


Constructor & Destructor Documentation

AIController::AIController ( CompanyID  company  ) 

Initializer of the AIController.

Parameters:
company The company this AI is normally serving.


Member Function Documentation

void AIController::Start (  ) 

This function is called to start your script.

Your script starts here. If you return from this function, your script dies, so make sure that doesn't happen.

Note:
Cannot be called from within your script.

SquirrelTable AIController::Save (  ) 

Save the state of the script.

By implementing this function, you can store some data inside the savegame. The function should return a table with the information you want to store. You can only store:

  • integers,
  • strings,
  • arrays (max. 25 levels deep),
  • tables (max. 25 levels deep),
  • booleans, and
  • nulls.

In particular, instances of classes can't be saved including AIList. Such a list should be converted to an array or table on save and converted back on load.

The function is called as soon as the user saves the game, independently of other activities of the script. The script is not notified of the call. To avoid race-conditions between Save and the other script code, change variables directly after a Sleep, it is very unlikely, to get interrupted at that point in the execution. See also http://wiki.openttd.org/AI:Save/Load for more details.

Note:
No other information is saved than the table returned by Save. For example all pending events are lost as soon as the game is loaded.
Returns:
Data of the script that should be stored in the save game.

void AIController::Load ( int  version,
SquirrelTable  data 
)

Load saved data just before calling Start.

The function is only called when there is data to load.

Parameters:
version Version number of the script that created the data.
data Data that was saved (return value of Save).

static uint AIController::GetTick (  )  [static]

Find at which tick your script currently is.

Returns:
returns the current tick.

static int AIController::GetOpsTillSuspend (  )  [static]

Get the number of operations the script may still execute this tick.

Returns:
The amount of operations left to execute.
Note:
This number can go negative when certain uninteruptable operations are executed. The amount of operations that you go over the limit will be deducted from the next tick you would be allowed to run.

static int AIController::GetSetting ( const char *  name  )  [static]

Get the value of one of your settings you set via info.nut.

Parameters:
name The name of the setting.
Returns:
the value for the setting, or -1 if the setting is not known.

static uint AIController::GetVersion (  )  [static]

Get the OpenTTD version of this executable.

The version is formatted with the bits having the following meaning: 28-31 major version 24-27 minor version 20-23 build 19 1 if it is a release, 0 if it is not. 0-18 revision number; 0 when the revision is unknown.

Returns:
The version in newgrf format.

static void AIController::SetCommandDelay ( int  ticks  )  [static]

Change the minimum amount of time the script should be put in suspend mode when you execute a command.

Normally in SP this is 1, and in MP it is what ever delay the server has been programmed to delay commands (normally between 1 and 5). To give a more 'real' effect to your script, you can control that number here.

Parameters:
ticks The minimum amount of ticks to wait.
Precondition:
Ticks should be positive. Too big values will influence performance of the script.
Note:
If the number is lower than the MP setting, the MP setting wins.

static void AIController::Sleep ( int  ticks  )  [static]

Sleep for X ticks.

The code continues after this line when the X script ticks are passed. Mind that an script tick is different from in-game ticks and differ per script speed.

Parameters:
ticks the ticks to wait
Precondition:
ticks > 0.
Postcondition:
the value of GetTick() will be changed exactly 'ticks' in value after calling this.

static void AIController::Break ( const char *  message  )  [static]

Break execution of the script when script developer tools are active.

For other users, nothing will happen when you call this function. To resume the script, you have to click on the continue button in the AI debug window. It is not recommended to leave calls to this function in scripts that you publish or upload to bananas.

Parameters:
message to print in the AI debug window when the break occurs.
Note:
gui.ai_developer_tools setting must be enabled or the break is ignored.

static void AIController::Print ( bool  error_msg,
const char *  message 
) [static]

When Squirrel triggers a print, this function is called.

Squirrel calls this when 'print' is used, or when the script made an error.

Parameters:
error_msg If true, it is a Squirrel error message.
message The message Squirrel logged.
Note:
Use AILog.Info/Warning/Error instead of 'print'.

static HSQOBJECT AIController::Import ( const char *  library,
const char *  class_name,
int  version 
) [static]

Import a library.

Parameters:
library The name of the library to import. The name should be composed as AIInfo::GetCategory() + "." + AIInfo::CreateInstance().
class_name Under which name you want it to be available (or "" if you just want the returning object).
version Which version you want specifically.
Returns:
The loaded library object. If class_name is set, it is also available (under the scope of the import) under that name.
Note:
This command can be called from the global space, and does not need an instance.


Generated on Thu Jun 30 21:53:52 2016 for OpenTTD NoAI API by  doxygen 1.5.6