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");
}



