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
Tous les articles de la catégorie NonIALes tramways sont, du point de vue de l'IA, similaires, comme pour tout autre joueur, aux véhicules routiers. En construisant quelque chose dans AIRoad, vous spécifiez si vous voulez construire des objets de route, ou des objets de tramway, via AIRoad.SetCurrentRoadType. Par exemple, pour basculer vers la construction de tramway:
AIRoad.SetCurrentRoadType(AIRoad.ROADTYPE_TRAM);
et inversement, revenir aux véhicules routiers:
AIRoad.SetCurrentRoadType(AIRoad.ROADTYPE_ROAD);
Maintenant, si vous faites:
AIRoad.BuildRoad(33412, 33413);
Sur ces cases, une voie de tramway sera construite. Comme vous pouvez le comprendre, il est imprtant de garder trace du mode dans lequel vous êtes; sinon, vous pourriez avoir des surprises. ;)
Comme attendu, AIEngine
et AIVehicle
ont une fonction: GetRoadType
, qui renvoie soit AIRoad.ROADTYPE_INVALID
si l'objet n'est pas un objet de route, ou sinon si c'est un tramway ou une route. Il est donc facile de trouver et de choisir la locomotive ou le véhicule que vous voulez.
AIRoad
peut aussi vérifier si une case est soit une case de route, soit une case de tramway. C'est la même chose pour AIStation
. Utilisez HasRoadType
pour vérifier si la case/station est une case/station pour véhicule routier ou pour tramway.
ATTENTION
Vous devez faire attention si vous voulez faire une IA qui supporte les tramways. Comme vous pouvez le voir, il suffit d'une simple bascule pour passer des routes aux tramways, et en termes de jeu, il n'y a pas tellement de différence entre les véhicules routiers et les tramways, à part le fait que les tramways sont jolis! Le problème avec les tramways est que vous avez besoin d'un grf séparé pour les faire fonctionner. Tout le monde n'a pas ce grf; il est donc possible que quand vous essayez:
AIRoad.IsRoadTypeAvailable(AIRoad.ROADTYPE_TRAM);
sur votre ordinateur, vous obteniez: true, et sur un autre: false. Donc, ne faites jamais dépendre votre IA des tramways, et assurez-vous de vérifier si les tramways sont disponibles avant de les utiliser. Bien entendu, il est parfaitement acceptable de se replier sur les routes si les tramways ne sont pas disponibles. Cela ne change rien dans les faits.