Dernière erreur
Framework NonIA

Page principale NonIA

Développement

Jalons de développement
Suggestion de changements de l'API

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
Page principale
Erreurs courantes
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
Tous les articles de la catégorie NonIA

OpenTTD est un jeu en temps réel; donc aucun programme ne peut prédire si une certaine action planifiée échouera ou non, jusqu'à ce qu'elle soit exécutée. En laissant l'IA construire des ponts, des véhicules, rediriger des avions, il y a des chances que ces commandes échouent pour une raison ou une autre. Les avions peuvent s'écraser, il peut y avoir besoin de plus d'argent, et d'autres concurrents peuvent interférer avec ces plans. Dorénavant, NonIA peut indiquer quand une commande a été exécutée avec succès; cependant, si une commande a échoué, il ne peut pas indiquer pourquoi. Cette page est un manuel à la fois pour les auteurs d'IA, car il fournit des directives de codage, et pour les développeurs qui veulent aider à améliorer cette fonctionnalité et corriger les erreurs.

Code

Chaque code d'erreur dans OpenTTD a son propre ID (StringID) et est utilsié pour traduire l'erreur dans uns des diverses langues pour avertir l'utilisateur via un message sur l'IHM. Afin de traduire ces erreurs, nous devons traduire ces StringIDs en messages d'erreur et les exposer via l'API NonIA. Le dernier message d'erreur peut être obtenu en appelant AIError.GetLastError(), et els messgaes d'erreur vérifiés par:

if (!AIAirport.BuildAirport(...)) {
  switch(AIError.GetLastError()) {
    case AIError.ERR_NOT_ENOUGH_CASH: // Obtenir un peu plus d'argent
      ...
      break;
    case AIError.ERR_LOCAL_AUTHORITY_REFUSES: // Corrompre!
      ...
      break;
    case AIError.ERR_LAND_SLOPED_WRONG: // Aménager le terrain
      ...
      break;
    ...
    default:
      AILog.Warning("Exception non gérée: " + AIError.GetLastErrorString());
      break;
  }
}

En interne, les messages d'erreur correspondent à la fois à des constantes énumérées (comme AIError.ERR_NOT_ENOUGH_CASH) et à une représentation sous forme de chaîne. Celle-ci peut être obtenue en appelant AIError.GetLastErrorString et correspondra au nom de la constante énumérée; notez qu'elle n'est prévue que pour une utilisation dans un but de débogage! La documentation de l'API liste toutes les erreurs qui peuvent survenir, par méthode, lors de leur invocation. Il y a cependant quelques exceptions; les erreurs suivantes ne seront pas listées, car elles s'appliquent à (presque) toutes les méthodes:

La signification des autres messages d'erreur peut être trouvée dans l'API.