Development
AI Programming
- API Documentation
- Introduction
- info.nut file
- main.nut file
- Basics
- Using the road pathfinder
- Using the rail pathfinder
- Saving / Loading data
- Things you need to know
- Squirrel
- Lists
- Coping with OTTD errors
- Trams
- AI Libraries
- Forum
- Forum FAQ
- AI Behavior
- ShortNames in use
AIs
All articles in NoAI categoryThese files are a fully functioning but do-nothing AI to start as a base for new AIs.
info.nut
class TestAI extends AIInfo { function GetAuthor() { return "Author Name"; } function GetName() { return "TestAI"; } function GetDescription() { return "Testing AI"; } function GetVersion() { return 1; } function GetDate() { return "2009-07-29"; } function CreateInstance() { return "TestAI"; } function GetShortName() { return "TEST"; } function GetSettings() { AddSetting({name = "bool_setting", description = "a bool setting, default off", easy_value = 0, medium_value = 0, hard_value = 0, custom_value = 0, flags = AICONFIG_BOOLEAN}); AddSetting({name = "bool2_setting", description = "a bool setting, default on", easy_value = 1, medium_value = 1, hard_value = 1, custom_value = 1, flags = AICONFIG_BOOLEAN}); AddSetting({name = "int_setting", description = "an int setting", easy_value = 30, medium_value = 20, hard_value = 10, custom_value = 20, flags = 0, min_value = 1, max_value = 100}); } } RegisterAI(TestAI());
main.nut
class TestAI extends AIController { constructor() { } } function TestAI::Start() { AILog.Info("TestAI Started."); SetCompanyName(); //set a legal railtype. local types = AIRailTypeList(); AIRail.SetCurrentRailType(types.Begin()); //Keep running. If Start() exits, the AI dies. while (true) { this.Sleep(100); AILog.Warning("TODO: Add functionality to the AI."); } } function TestAI::Save() { local table = {}; //TODO: Add your save data to the table. return table; } function TestAI::Load(version, data) { AILog.Info(" Loaded"); //TODO: Add your loading routines. } function TestAI::SetCompanyName() { if(!AICompany.SetName("Testing AI")) { local i = 2; while(!AICompany.SetName("Testing AI #" + i)) { i = i + 1; if(i > 255) break; } } AICompany.SetPresidentName("P. Resident"); }