Rozwój
Programowanie SI
- Dokumentacja API
- Wprowadzenie
- plik info.nut
- plik main.nut
- Podstawy
- Poszukiwacz drogi
- Użycie pathfinder`a kolei
- Zapis / Odczyt danych
- Dobrze wiedzieć
- Squirrel
- Listy
- Poradnik na błędy OTTD
- Trams
- Biblioteki SI
- Forum
- Forum FAQ
- Zachowanie SI
- Użycie krótkich nazw
SIy
Wszystko kategorii NoAIPliki te są w pełni funkcjonalną, ale bezużyteczną sztuczną inteligencją, która ma stanowić bazę dla nowych sztucznej inteligencji.
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"); }