Développement
Programmation de l'IA
- Documentation API
- Introduction
- Fichier info.nut
- Fichier main.nut
- Principes de base
- Détermination de chemin routier
- Détermination de chemin ferroviaire
- Sauver / Charger des données
- Choses à savoir
- Squirrel
- Listes
- Traiter les erreurs OTTD
- Tramways
- Bibliothèques de l'IA
- Forum
- FAQ du forum
- Comportement de l'IA
IAs
- TestAI
- WrightAI
- Convoy
- Voir le forum
- Voir BaNaNaS
Ces fichiers forment une IA fonctionnant parfaitement mais ne faisant rien, servant de base pour de nouvelles IAs.
Info.nut
class TestAI extends AIInfo { function GetAuthor() { return "Nom de l'auteur"; } function GetName() { return "TestAI"; } function GetDescription() { return "IA de test"; } function GetVersion() { return 1; } function GetDate() { return "29/07/2009"; } 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 démarré."); SetCompanyName(); //fixe un type de voie légal. local types = AIRailTypeList(); AIRail.SetCurrentRailType(types.Begin()); //Continue à tourner. Si Start() se termine, l'IA meurt. while (true) { this.Sleep(100); AILog.Warning("TODO: Ajouter des fonctionnalités à l'IA."); } } function TestAI::Stop() { } function TestAI::Save() { local table = {}; //TODO: Ajoutez vos données à sauvegarder dans la table. return table; } function TestAI::Load(version, data) { AILog.Info(" chargé"); //TODO: Ajoutez vos routines de chargement. } function TestAI::SetCompanyName() { if(!AICompany.SetName("Test de l'IA")) { local i = 2; while(!AICompany.SetName("Teste l'IA #" + i)) { i = i + 1; if(i > 255) break; } } AICompany.SetPresidentName("P. Résident"); }