Ajout de fonctions à la console

Programmation / Développement

 Ce tutoriel vous apprendra à créer une nouvelle commande au sein de la console de commande d'OpenTTD. Vous devez connaître un minimum le langage de programmation C afin de pouvoir suivre et comprendre ce tutoriel.

Le but ici est de savoir comment fonctionne la console de commande d'OpenTTD.


 La console du jeu est accessible via la touche ² du clavier (en haut à gauche au dessus de tab et juste dessous la touche ESC, juste à gauche de la touche 1). Voici un exemple de commande :

 

rcon <passsword> "setting max_company 10"

 

Cette commande par exemple, permet de définir au niveau du serveur, un maximum de 10 compagnies présentes sur le jeu. Elle se compose de la commande rcon qui permet d'envoyer une commande au serveur, elle dispose ensuite de deux paramètres, le premier qui est le mot de passe configuré au sein du serveur et la seconde mise entre guillemets (appelés aussi des double quotes en informatique) ici indique que nous modifions la configuration concernant le nombre de compagnies maximum que l'on place à 10.

 

Aujourd'hui, nous allons donc voir comment créer une nouvelle commande mais qui ne possède pas de paramètres et qui ne fait pas grand chose d'intéressant, mais cela permet d'apprendre déjà où cela se trouve et comment en créer une.

 

Qu'allons nous voir ?

Nous allons voir comment créer une commande sans paramètre, voir un exemple de couleurs possible et enfin ajouter la commande au sein de la console.

 

Pour pouvoir afficher un texte au sein de la console, il faut utiliser une fonction particulière de l'API du jeu, il s'agit de la fonction :

IConsolePrintF

Cette fonction demande une couleur, comment formater le texte (voir la documentation de la fonction printf du C) et enfin le texte concerné. Attention toutefois, car la même fonction sans le F final, ne fait pas un retour à la ligne automatique (équivalent du \r en C).

 

Les couleurs que l'on peut utiliser

Nous pouvons utiliser les couleurs suivantes :

  1. CC_DEFAULT qui est la couleur par défaut du texte de la console
  2. CC_WARNING qui est la couleur des messages d'avertissement
  3. CC_ERROR la couleur est actuellement rouge, cela représente les messages d'erreurs
  4. CC_WHITE c'est du blanc tout simplement

Chaque couleur est utilisée suivant ce que l'on souhaite exprimer et le rouge n'est pas spécifique aux messages d'erreurs.

 

Ajout de notre commande à la console

Pour ajouter ou modifier une commande de la console, il faut que nous modifions le fichier console_cmds.cpp du répertoire src des sources du jeu. Le fichier semble organisé de façon assez bizarre, en partit par la présence de DEF_CONSOLE_CMD, mais pas de soucis c'est un simple define. Nous devons maintenant créer un Alias, c'est à dire que nous allons faire appel à une fonction qui va faire le lien entre le nom tapé dans la console du jeu et le nom de la fonction à appeler.

Cherchons :

IConsoleCmdRegister("ls", ConListFiles);

 

Ici, nous voyons deux choses : premier paramètre qui est le nom à taper dans la console (ici c'est ls) et en second paramètre, il s'agit du nom de la fonction à appeler (à savoir ConListFiles). Juste dessous, reprenons le même principe, mais en mettant en premier paramètre test et ConTest pour le second paramètre. Voici le résultat :

IConsoleCmdRegister("test", ConTest);

 

Une fois que nous avons déclaré notre Alias, il faut créer la fonction en elle même. Pour cela nous allons rechercher :

DEF_CONSOLE_CMD(ConListFiles)

Sous cette fonction, nous allons ajouter la même chose mais avec ConTest au lieu de ConListFiles. Maintenant au sein de cette fonction, nous affichons notre texte avec la fonction IConsolePrintF et on renvoi un boléan à true. Exemple :

DEF_CONSOLE_CMD(ConTest)
{
      IConsolePrintF(CC_DEFAULT, "%s", "This is a command test");
      return true;
}

Il ne vous reste plus qu'à procéder à la compilation et au lancement du jeu. Dans une partie, ouvrez la console et tapez la commande test, vous y verrez alors le résultat.

 

J'espère que vous aurez eu autant de plaisir à lire ce tutoriel que j'en ai eu à l'écrire. Vous trouverez prochainement d'autres tutoriels sur la programmation OpenTTD.

Option des articles

Rétrolien

Rétrolien pour cet élément: http://www.openttd.fr/trackback.php?id=2011121217410113

No trackback comments for this entry.

1 Commentaires

Le site n'est pas responsable du contenu des commentaires. Ceux-ci sont de la responsabilité de leurs auteurs. Néanmoins, si un commentaire vous parait choquant, merci de le signaler
Rédigé par: Amaury le lundi 19 décembre 2011 @ 20:18 Ajout de fonctions à la console
Peut on imaginer créer par exemple des "templates" pour des trains donnés ?
Exemple, pour un train de "pré-nourriture", je met toujours Une double loco (ou une simple en fonction des disponibilités) puis sur un train de 7 tiles de long, 3.5 de mais et 3.5 de blé etc ... cela varie en fonction de l'environnement.
Il est assez fastidieux de toujours retaper, même si j'utilise beaucoup le bouton copie avec ordres partagés.
Je voudrais savoir s'il est possible de créer une commande console qui pourrait lorsque je selectionne un dépôt, me faire gagner du temps ?
(finalement cela doit coller au mode copy-past je pense) mais il ne permet pas de gagner du temps en ligne.)
[ # ]

Serveur Principal

[OpenTTD France] Serveur principal

Version 1.4.4
Carte : 512 x 512
Départ : 1 janvier 1950
Actuel : 1 janvier 1950
Nb Sociétés : 0
Joueurs : 0
Spectateurs : 0
www.openttd.fr:3979

Sujets

Espace Membres





Pas encore de compte? Enregistrez vous Ici
Perdu votre mot de passe ?

Articles moins récents

jeudi 08-déc.


mercredi 07-déc.


mardi 06-déc.


lundi 05-déc.


dimanche 04-déc.