Salut,
Comme certaine personnes voulaient savoir comment utiliser les tables, voilà un petit tuto. :)
Tableaux à 2 dimensions
En Squirrel, vous pourrez définir un tableau à deux dimensions en utilisant ceci :

Le "local" permet de définir ce tableau seulement pour la partie et les sous parties qu'il constitue.
Petit exemple pour être plus clair :
<br />{<br /> local seconde_variable = false;<br /> if(!seconde_variable)<br /> log("Tout marche bien ici !");<br />}<br />if(!seconde_variable)<br /> log("Ce message ne va pas être affiché car seconde_variable n'est pas défini pour cette structure.");)
maTable <- {};
Votre variable maTable peut maintenant contenir plusieurs colonnes :

On utilise à la première ligne "<-" pour définir la colonne 0.
Une fois qu'elle est définie, on peut utiliser = pour modifier la variable.
Ainsi, vous pouvez déterminer plusieurs éléments sur une seule variable.
; Affiche: "Ceci est la colonne 0 et ceci est la colonne 1";<br />)
Vous pouvez ensuite poffiner et améliorer vos scripts avec quelques astuces/trucs :
.len(); va donner le nombre de colonne dans votre tableau, c'est donc pratique pour avoir des colonnes croissantes sans spécifier 0, 1, 2... dans les boucles par exemple.
] <- 1 <br />maTable[maTable.len()] <- maTable[maTable.len()-1] // maTable.len() est égale à 1, si on retire 1 à maTable.len(), on a la donnée de maTable[0].<br />maTable[maTable.len()] <- 1 <br />maTable[maTable.len()] <- 1 <br />foreach(id, values in maTable)<br /> log("maTable["+id+"] est définie ("+values+")"); // Ceci va vous afficher "maTable[0] est définie (1), maTable[1] est définie(1), etc." jusqu'à 3.<br />)
Voilà; vous savez maintenant faire des tableaux à deux dimensions, voici un petit exemple facile pour remplacer une lettre par une autre dans un texte (ici e par a) (fonction pas utile du tout, mais j'avais pas d'idées).
<br />{<br />maTable <- {};<br /><br />string <- "Je suis un texte découpé par lettres !";<br />foreach(i, idx in string)//Boucle répétée pour chaque lettres de string<br /> maTable[i] <- idx.tochar()// i va être la position de chaque lettres de string, de 0 à ... la position du "!" à la fin. .tochar() permet de remplacer idx qui est le numéro héxadécimal de la lettre par la lettre auquel le numéro est attribué.<br /><br />//maTable[0] va donc être "J", [1] va être "e", etc.<br />local new_string = "";<br />foreach(i, var in maTable) { // boucle pour toutes colonnes du tableau : i = numéro de colonne, var = variable de la colonne.<br /> if(var == "e" || var == "é")<br /> new_string += "a";<br /> else<br /> new_string += var;<br />}<br />log("Nouveau texte: "+new_string) // affiche "Ja suis un taxta dacoupa par lattras !"<br />return 0;<br />})
Tableaux à 3 dimensions
Passons maintenant aux tableaux à 3 dimensions.
Vous faîtes comme un tableau à deux dimensions, mais cette fois ci on défini une colonne comme table.

Vous pouvez, une fois la colonne attribuée comme table, spécifier un nom à votre sous-colonne. Vous devez mettre un point entre le crochet et votre variable.
Ainsi, vous pouvez (en gros) spécifier des variables aux variables d'une variable. Pas mal, non ?
Je vais vous montrer un petit exemple d'utilisation pour gérer les comptes des joueurs.
<br />{<br />infoJoueur[playerid] <- {};<br />infoJoueur[playerid].nom <- getPlayerName(playerid);<br />infoJoueur[playerid].level <- 0;<br />infoJoueur[playerid].admin <- 0;<br />infoJoueur[playerid].login <- 0;<br />sendPlayerMessage(playerid, "Bienvenue à Liberty City, "+infoJoueur[playerid].nom+" !");<br />return 1;<br />}<br /><br />function onPlayerLogin(playerid) // fonction appellée quand le joueur se connectera grâce à votre système de login<br />{<br />infoJoueur[playerid].login = 1;<br />infoJoueur[playerid].level = 10;<br />return sendPlayerMessage(playerid, "Vous êtes loggué !");<br />}<br />function onPlayerDisconnect(playerid) // fonction appellée quand il se déconnecte<br />{<br />log("Le joueur "+infoJoueur[playerid].nom+" s'est déconnecté.");<br />return delete infoJoueur[playerid];<br />}<br />envoiMessageLevel("Salut !", 10);<br />function envoiMessageLevel(message, level) // on envoi le message 'message' aux joueurs de level 'level'.<br />{<br /> foreach(i, var in infoJoueur) // boucle qui va lister tous les joueurs<br /> {<br /> if(infoJoueur[i].level == level)<br /> sendPlayerMessage(i, message);<br /> }<br />})
Si vous avez des questions, des problèmes ou autre, dîtes le moi ;)