Ajout de fonctions à la console


?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.


Effectué par: Muxy

OpenTTD Watch Company Patch
Luukland's Servers
Novapolis's Servers
  • Currently 0.00/5
Rating: 0.00/5 (0 votes cast)
Be the first to comment