• 28 Mars 2024, 11:30:27


Auteur Sujet: [TUTO] Les Tables  (Lu 6881 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne ApocKalipsS

  • *
  • Gangster
  • **** | Une experience GTA IV hors du commun !
  • Messages: 1141
    • Voir le profil
[TUTO] Les Tables
« le: 21 Avril 2011, 10:17:14 »
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 :

local maTable = {};
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 :

local variable = true;
if(variable)
{
     local seconde_variable = false;
     if(!seconde_variable)
          log("Tout marche bien ici !");
}
if(!seconde_variable)
     log("Ce message ne va pas être affiché car seconde_variable n'est pas défini pour cette structure.");

Vous pouvez utiliser ceci pour que la variable soit globale.
maTable <- {};

Votre variable maTable peut maintenant contenir plusieurs colonnes :

maTable[0] <- 1;
maTable[0] = 2;

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.

local maTable = {};
maTable[0] <- "Ceci est la colonne 0";
maTable[1] <- "ceci est la colonne 1";
log(maTable[0]+" et "+maTable[1]); Affiche: "Ceci est la colonne 0 et ceci est la colonne 1";
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.

local maTable = {};
maTable[maTable.len()] <- 1
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].
maTable[maTable.len()] <- 1
maTable[maTable.len()] <- 1  
foreach(id, values in maTable)
     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.

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

function onScriptInit()
{
maTable <- {};

string <- "Je suis un texte découpé par lettres !";
foreach(i, idx in string)//Boucle répétée pour chaque lettres de string
     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é.

//maTable[0] va donc être "J", [1] va être "e", etc.
local new_string = "";
foreach(i, var in maTable) { // boucle pour toutes colonnes du tableau : i = numéro de colonne, var = variable de la colonne.
     if(var == "e" || var == "é")
          new_string += "a";
     else
          new_string += var;
}
log("Nouveau texte: "+new_string) // affiche "Ja suis un taxta dacoupa par lattras !"
return 0;
}

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.

local maTable = {};
maTable[0] <- {};
maTable[0].variable <- "Salut !";
maTable[0].variable = "Je change ma variable avec = car elle est déjà définie.";

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.

local infoJoueur = {};
function onPlayerConnect(playerid)
{
infoJoueur[playerid] <- {};
infoJoueur[playerid].nom <- getPlayerName(playerid);
infoJoueur[playerid].level <- 0;
infoJoueur[playerid].admin <- 0;
infoJoueur[playerid].login <- 0;
sendPlayerMessage(playerid, "Bienvenue à Liberty City, "+infoJoueur[playerid].nom+" !");
return 1;
}

function onPlayerLogin(playerid) // fonction appellée quand le joueur se connectera grâce à votre système de login
{
infoJoueur[playerid].login = 1;
infoJoueur[playerid].level = 10;
return sendPlayerMessage(playerid, "Vous êtes loggué !");
}
function onPlayerDisconnect(playerid) // fonction appellée quand il se déconnecte
{
log("Le joueur "+infoJoueur[playerid].nom+" s'est déconnecté.");
return delete infoJoueur[playerid];
}
envoiMessageLevel("Salut !", 10);
function envoiMessageLevel(message, level) // on envoi le message 'message' aux joueurs de level 'level'.
{
     foreach(i, var in infoJoueur) // boucle qui va lister tous les joueurs
     {
          if(infoJoueur[i].level == level)
               sendPlayerMessage(i, message);
     }
}

Si vous avez des questions, des problèmes ou autre, dîtes le moi  ;)

« Modifié: 21 Avril 2011, 12:04:30 par ApocKalipsS »

Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Re : [TUTO] Les Tables
« Réponse #1 le: 21 Avril 2011, 19:54:23 »
Très bon tuto, thanks :)

Hors ligne Solis

  • *
  • Nouveau
  • Messages: 5
    • Voir le profil
Re : [TUTO] Les Tables
« Réponse #2 le: 06 Septembre 2011, 10:05:22 »
Rien compris

Hors ligne ApocKalipsS

  • *
  • Gangster
  • **** | Une experience GTA IV hors du commun !
  • Messages: 1141
    • Voir le profil
Re : [TUTO] Les Tables
« Réponse #3 le: 07 Septembre 2011, 16:31:14 »
Je pense qu'avant de dire "Rien compris" à chaque topics déstinés à un public qui s'y connait un minimum en Squirrel, tu pourrais pas exemple chercher quelques tutos pour débuter ou poser une question sur le forum.

Hors ligne Armans

  • *
  • Tueur en série
  • Messages: 173
    • Voir le profil
Re : [TUTO] Les Tables
« Réponse #4 le: 06 Novembre 2011, 03:19:45 »
Simple est efficace merci encore a toi  :cheers



Fait un GM a partir de rien

Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Re : [TUTO] Les Tables
« Réponse #5 le: 07 Novembre 2011, 17:17:30 »
Ok Darreugne, mais tu crois vraiment qu'un débutant va comprendre quelque chose à tout ça ?
C'est sûr qu'il faudrait un gros tuto, mais en passant par un autre langage (C, Pawn) on peut largement être capable d'apprendre tout seul en Squirrel si on le veut vraiment.

++

Hors ligne Heisenberg

  • *
  • Tueur
  • Messages: 50
    • Voir le profil
Re : [TUTO] Les Tables
« Réponse #6 le: 22 Novembre 2011, 08:24:36 »
Super boulot!

Hors ligne Armans

  • *
  • Tueur en série
  • Messages: 173
    • Voir le profil
Re : Re : [TUTO] Les Tables
« Réponse #7 le: 30 Novembre 2011, 21:34:04 »
Ok Darreugne, mais tu crois vraiment qu'un débutant va comprendre quelque chose à tout ça ?
C'est sûr qu'il faudrait un gros tuto, mais en passant par un autre langage (C, Pawn) on peut largement être capable d'apprendre tout seul en Squirrel si on le veut vraiment.

++

Si moi j'ai appris le Squirrel tout le monde peut le faire en plus on dit le Wiki est pas prècis je l'ai compris maintenant je peut crée un GM a partir de rien!Mais en tout cas ton TUTO explique largement mieux comment utiliser les table ;)



Fait un GM a partir de rien