Les variables
Les variables sont des éléments indispensables dans tout langage de programmation, et en GLScript vous n'y échapperez pas. Ce n'est pas une complication supplémentaire mais elles existent au contraire pour nous simplifier la vie. Sans elles, vous n'iriez pas bien loinCe chapitre est un peu long, mais il ne faut pas le prendre à la légère, car vous allez y apprendre des choses vraiment importantes
Qu'est-ce qu'une variable ?
Déjà dans le mot, vous devez vous dire que c'est quelque chose qui change tout le temps. En effet, le propre d'une variable c'est de pouvoir changer.Mais qu'est-ce que c'est concrètement ?
Une variable, c'est une petite information stockée en mémoire temporairement, soit le temps de la vie d'un événement, soit le temps de l'exécution de LFSLapper.
C'est à vous de créer des variables. Vous en créez quand ça vous arrange. Ce qu'il faut retenir, c'est qu'une variable est toujours constituée de 2 choses :
- Son nom : pour pouvoir la reconnaître, vous devez donner un nom à votre variable. Par exemple "age".
- Sa valeur : c'est l'information qu'elle contient, qui peut changer. Par exemple "17 ans".
Ici, je vous ai donné l'exemple d'une variable appelée "age" qui a pour valeur "17 ans". On peut modifier quand on veut la valeur de cette variable, faire des opérations dessus etc etc... Et quand on en a besoin, on l'appelle (par son nom ), et elle nous renvoie la valeur qu'elle contient.
Par exemple vous pouvez demander à un moment :
- La variable "age", que contiens-tu ?
- 17 ans.
Vous allez voir que les variables, même si elles peuvent
vous sembler encore un peu floues, seront vraiment
indispensables pour vos scripts. Par exemple, vous
pourrez stocker temporairement le nom du pilote. Dans une
variable "RacerName", vous stockez son pseudo, par
exemple "Gai-Luron". Dès que vous en avez besoin vous
pouvez l'utiliser, par exemple pour afficher un message
de bienvenue personnalisé : "Hello Gai-Luron ! Welcome on
my server !".
On va maintenant voir comment il faut faire pour utiliser
des variables en GLScript
Affecter une valeur à une variable
On va dans un premier temps affecter une valeur à une variable, et ensuite on affichera ce qu'elle contient. Vous allez mieux comprendre l'intérêt d'utiliser des variables. Nous utiliserons la sous routine MyTest pour effectuer nos tests. Allez dans le fichier de configuration LFSLapper.lpr et repérez cette partie de code:
Sub MyTest()
privMsg( GetCurrentPlayerVar("NickName") . " ^7is testing...");
EndSub
Pour tester ce petit bout de code de LFSLapper tapez dans la fenêtre de chat : !test
Vous devriez avoir comme ligne apparaissant dans la fenêtre de chat:

Ici, on va tout simplement créer une variable, et lui
donner la valeur qu'on veut
Par exemple, si on tapait ceci :
Code : GLScript
Sub MyTest()
privMsg( GetCurrentPlayerVar("NickName") . " ^7is testing...");
$racerName = "MyUserName";
EndSub
Vous remarquerez que chaque instruction GLScript se termine par le caractère ';' . Il est essentiel, ne l'oubliez pas. Ce morceau de code va créer une variable :
- dont le nom serait raceName
- dont la valeur serait MyUserName
on ne peut pas mettre d'espaces pour un nom de variable. A la place, utilisez un underscore _ . Evitez aussi les accents, les cédilles et tout autre symbole pour le nom. GLScript ne les apprécie pas trop... En revanche pour la valeur vous pouvez mettre ce que vous voulez
1Il y a plusieurs nouveaux éléments. D'abord, le symbole Dollar ($) : il précède toujours le nom d'une variable. C'est comme un signe de reconnaissance si vous préférez : ça permet de dire à GLScript "J'utilise une variable". Vous reconnaîtrez toujours qu'il y a une variable par la présence du symbole Dollar ($). Ensuite, il y a le signe Egal (=) : celui-là c'est logique, c'est pour dire que $ racerName est égal à... A la suite, il y a la valeur de la variable, entre guillemets puisqu'il s'agit de texte. Enfin, il y a l'inoubliable symbole point-virgule (;), qui permet de terminer l'instruction. Sauvegardez le fichier.
Pour dire à LFSLapper de recharge le fichier de configuration modifié, tapez !reload dans la fenêtre de chat
1Tapez !test. Concrètement, qu'est-ce que le code va
afficher?
Rien du tout à part le message qu'affichait déjà la sous
routine. Eh oui, tant que vous n'utilisez pas une fonction
d'affichage "privMsg" pour un message privé dans le chat,
rien ne s'affiche. Là, le serveur a juste créé la variable
temporairement en mémoire et il n'a rien fait d'autre. Pour
afficher quelque chose complétez le code, puis tapez
!reload dans la fenêtre de chat pour recharger la nouvelle
configuration, ensuite à nouveau !test:
Sub MyTest()
privMsg(GetCurrentPlayerVar("NickName") . " ^7is testing...");
$racerName = "MyUserName";
privMsg( $racerName );
EndSub
Vous devriez avoir comme ligne apparaissant dans la fenêtre de chat:

Maintenant, une variable n'est pas obligée de contenir du texte. On peut aussi y mettre des nombres!
Retenez qu'on peut mettre 2 sortes de "données" différentes dans une variable : texte ou nombres.
Voici comment on les utilise :
- Le texte : c'est ce que je viens de vous le montrer. Pour mettre du texte dans une variable, on le place entre guillemets comme ceci :
$racerName = "MyUserName";
- Les nombres : la seule différence avec le texte, c'est qu'on ne met pas de guillemets. Regardez :
$age = 45;
Ainsi, GLScript comprend qu'il s'agit d'un nombre et non pas d'un texte.
Si vous voulez stocker juste un nombre il ne faut pas mettre de guillemets.
On peut mettre 2 types d'éléments dans une variable :
texte et nombres.
Pour le texte, on le met entre guillemets.
Pour les nombres, on ne met pas de
guillemets.
A vous de faire vos propres essais pour vérifier que ça
marche ! Changez la valeur de la variable et ça affichera
quelque chose de différent ! Une expérience tout bête en
somme, mais que vous devez faire pour bien comprendre
comment les variables fonctionnent.
Avec l'instruction privMsg ou GlobalMsg, vous pouvez donc
afficher le contenu d'une variable. Mais vous n'êtes pas
obligés d'afficher uniquement la valeur de la variable
!
Voilà un autre exemple qui peut être très utile :
Sub MyTest()
privMsg(GetCurrentPlayerVar("NickName") . " ^7is testing..."); $racerName = "MyUserName";
privMsg( "Hello " . $racerName );
EndSub
Vous voyez, dans l'instruction privMsg on a écrit le
texte qu'on voulait suivi d'un point '.' Et de la variable.
Le point permet de coller (concaténer) un texte à un autre
qu'il soit contenu dans une variable ou non.
Le résultat dans l'écran de chat sera:

Faites vos essais, en écrivant le texte que vous voulez, en
affichant au milieu la valeur de 1, 2, 3 variables... Cette
technique (pas bien compliquée) sera très souvent
réutilisée dans les chapitres qui suivent.
Sub MyTest()
privMsg(GetCurrentPlayerVar("NickName") . " ^7is testing...");
$racerName = "MyUserName";
$age = 46;
privMsg( "Hello " . $racerName . " You are " . $age . " years old" );
EndSub
Le résultat est :

$age est une variable numérique, mais comme vous la concaténez avec du texte, GLScript convertit automatiquement cette valeur en chaîne de caractère. Simple non!
5