Cours de Script LSL -Poly Dawng - les variables

Cours LSL Poly Dawg -Variables - 2015-09-16
 
[ VARIABLES ]
Le script est stocké en mémoire et les données qui peuvent être utilisées, manipulées, sont stockées dans des ‘variables’.
 
Une variable est une zone mémoire ayant un nom (on peut voir ça comme une boite à chaussures avec un nom dessus) et un type (la taille de la boite et ce que l’on peut mettre dedans, escarpins ou bottes).
 
Le nom de la variable va permettre de réaliser des opérations comme des additions (+), soustraction (-) pour les nombres par exemple.
 
Le type de la variable indique précisément ce qui peut être stocké dedans.
Les types en LSL (qui seront détaillés par la suite) sont :
- integer
- float
- string
- key
- rotation
- vector
- list
 
DECLARATION
 
Une variable doit être « déclarée » afin de pouvoir être utilisée. Cette déclaration comporte les informations nécessaires afin de définir ce qui sera stocké.
 
---------------------------------
 
integer a ;
 
---------------------------------
Ici, la variable ‘a’ est déclarée et elle contiendra un nombre entier ‘integer’.
 
Bonne Pratique : Le nom de la variable doit être clair est bien indiquer ce que l’on veut y stocker. Par exemple, pour le nom de la personne qui clique sur un objet ou peut définir :
 
---------------------------------
 
string nomDuCliqueur ;
 
---------------------------------
 
De cette manière il sera plus facile, lors de la relecture du script, de comprendre à quoi sert cette variable. Elle pourrait être nommée ‘v1’ et servir de la même manière mais ce serait moins évident…
 
TYPE
 
Les types de variable définissent ce que peut contenir la variable. Il existe des types ‘simples’ et un type ‘multiple’.
 
>> Type ‘integer’
 
Ce type contient un nombre entier compris entre -2 147 483 648 et +2 147 483 647.
Il est utilisé notamment pour faire des calculs, pour indiquer le canal de communication lorsque l’on utilise la fonction llSay pour envoyer un message.
 
>> Type ‘float’
 
Ce type contient un nombre décimal, à virgule, compris entre 1.401298464E-45 et 3.402823466E+38.
 
Il est utilisé pour les coordonnées des objets, les valeurs de rotation ou pour faire des calculs.
 
IMPORTANT : Si le nombre contient une partie décimale (partie après la virgule) la notation est avec un point ‘.’ Et non une virgule comme en français.
 
---------------------------------
 
float f;
f = 2.5 ;
 
---------------------------------
 
>> Type ‘string’
 
Ce type est une ‘chaine’ (string en anglais) de caractères : une phrase en résumé.
 
Il permet de stocker des noms, des informations textuelles ou des messages à envoyer.
 
>> Type ‘key’
 
Ce type est une clef. Sur SL, tous les avatars, les objets ont une clef unique qui les référence dans le monde.
 
Il est utilisé pour valider un avatar, envoyer des IM, ...
 
>> Type ‘vector’
 
Ce type contient 3 float.
 
Il est utilisé pour définir la position des objets ou pour définir des couleurs .
 
>> Type ‘rotation’
 
Ce type contient une rotation 3D.
 
Il est utilisé pour la rotation des avatars ou des objets dans le monde.
 
>> Type ‘list’
 
Ce type est le seul type ‘multiple’ de LSL.
 
Il permet de stocker plusieurs données et de les référencer par un nom et un indice dans cette collection.
 
Il est utile pour stocker la liste des personnes autorisées à faire une action, ou les cartes d’un jeu, ...
Contrairement aux autres types, simples, il est possible de stoker des données de types différents dans une même liste.
 
---------------------------------
 
list l = [ 10, <14,12,15>, "Bonjour" ];
 
---------------------------------
Ici la liste contiendra le nombre entier (integer) 10, le vecteur (vector) contenant 14,12 et 15 et la chaine de caractères (string) « Bonjour ».
 
Une liste peut être vide, ne contenir aucune valeur. On la définit de la manière suivante :
 
---------------------------------
 
List l = [];
 
---------------------------------
La liste contenant plusieurs valeurs, il est nécessaire, pour pouvoir les utiliser, d’indiquer celle que l’on désire. On va donc utiliser son ‘index’, sont rang dans la liste.
 
La première valeur est à l’indice ‘0’ et non ‘1’ comme nous aurions l’habitude de compter.
LSL propose alors des fonctions pour récupérer une valeur de la liste.
 
llList2String va permettre de récupérer une valeur de type string.
llList2Integer va permettre de récupérer une valeur de type integer.
 
Il en existe d’autres pour les autres types simples.
 
L’utilisation est simple :
---------------------------------
 
List l = [10, 20, 30];
integer a = llList2Integer(l, 0);
integer b = llList2Integer(l, 1);
integer c = llList2Integer(l, 2);
 
---------------------------------
Les trois variables a,b et c vont contenir les trois valeurs de la liste. Chacune est alimentée par la fonction llList2Integer avec pour chacune l’indice de la valeur que l’on veut récupérer.
 
La fonction ‘llList2CSV’ va permettre de transformer le contenu de la liste en chaine de caractères avec les valeurs séparées par des virgules, et de pouvoir, par exemple, l’afficher.
---------------------------------
 
List l = [10, 20, 30];
llSay(0, llList2CSV(l));
 
---------------------------------
 
La fonction ‘llListFindList’ va permettre de faire une recherche dans une liste.
Cela peut être utile pour vérifier qu’une personne est bien dans la liste des gens autorisés pour ouvrir une porte par exemple.
Cette fonction retourne l’index de la valeur dans la liste ou -1 si la valeur n’est pas dans la liste.
 
LIENS
Fonctions Listes :