[Codage] Apprendre le Lua sur Gmod [Partie 5]

Arcade

Membre qui ne compte plus ses heures
Membre
22 Janvier 2011
204
0
51
Bonjour,

Titre : Les Tables
Difficulté : Moyenne
Temps d'étude estimé : 1 mois ( Quand vous maitriserez bien le LUA )
Commentaire : Nous y voilà donc ! J'ai donc crée ce tutoriel pour vous apprendre à programmer en Lua sur Garry's Mod. L'objectif sera donc de vous faire parvenir à créer de simples scripts à utiliser sur Garry's Mod. Le Lua est souvent utilisé par certains jeux comme World of Warcraft, Far Cry, Sim City 4 et j'en passe..

Tutoriel :



[large]Tableau[/large]

Techniquement les tableau ressemble à ceci :

Code:
MonTableau={}
Les { et }servent exclusivement pour les tableau dans le lua et sont appelés les accolades

Vous allez voir les tableaux sont très utile, il faut s'en servir !
Un exemple d'utilisation :

Code:
monTableau={} 
monTableau[1]="1er entré" 
monTableau[2]="Second entré" 
monTableau[3]=3
Permettais moi de vous expliquez :
Les tableaux sont un peu rangée comme des casiers. Chaque casier est un nombre à ce sujet, appelé index. L'indice est toujours mis en [et] (on les appelle des crochets)
Quand vous voyez
monTableau[1]="1er entré", cela signifie que la casiers n°1 est remplit avec "1er entré"

Vous avez compris ?
Alors continuons

J'ai appelé sa un casier mais le terme exacte en anglais et slot(Comme vous le connaisiez sur des serveur, il y a 12 slot...)
Il m'arrive d'appeler sa table: on l'utilise mais à ne pas confondre avec une table à mangé

Maintenant à quoi peu être utile un tableau ?
De une il garde vos donné bien stocké et vous allez voir par la suite la magie des tableaux

L'affichage d'un tableau :
Prennons un exemple :
Code:
JoueurCo={}
JoueurCo[1]=26
JoueurCo[2]=5
JoueurCo[3]=78
Maintenant pour le lire dans un print par exemple :
Code:
print(JouerCo[1])
La console indiquera 26
Vous faites pareil, pour JouerCo[2], JouerCo[3]...

C'est assez facile enfaite, il suffit de taper le nom de la table et entre crochet le slot que je veut affiché et le tour et joué !

Les entré des tableau peut être aléatoire
Exemple :
Code:
monTableau={}
monTableau[275]="Cool"
monTableau[3956]="onche"
monTableau[900]=900
Dans se cas,l'ordre des positions ne change rien.

Si vous rappelez à la même valeur une slot du tableau alors le dernier sera affiché
Donc :

Code:
monTableau={}
monTableau[1]=500
monTableau[1]=69
print(monTableau[1])
Vous remarquez que le slot on la même index
La console indiquera 69 car c'est le dernier dans le script à être inscrit !
Donc, si vous mettez le print juste après monTableau[1]=500
La console indiquera 500 et juste après le slot du tableau changera de valeur par 69

Vous pouvez aussi appeler l'index de vos tables par du texte
Exemple :

Code:
LesJoueur={}
LesJoueur["Arcade"]="GarryCITY"
LesJoueur["GarryCITY"]="GarryCITY"
Et oui vos index ne sont plus des chiffres, d'après se que j'ai attendu le lua prendrais plus de temps avec un tableau à texte qu'un tableau à chiffre
Maintenant pour un print, il suffit de faire :

Code:
print(LesJoueur["Arcade"])
La console indiquera GarryCITY, c'est comme si s'était un chiffre sauf que c'est une chaine de caractère.

Maintenant avec des fonctions, comme vous l'avez appris auparavant !
Je vais vous montrez un exemple puis je vais vous expliquez :

Code:
Pseudo={} 
Pseudo[1]="Joe" 
Pseudo[2]="Bernard" 
Pseudo[3]="Chris" 
Pseudo[4]="Tintin"

function Ecrit(Index) 
print("Salut, qu'es-que tu fait la "..Pseudo[Index].." ?n") 
end 

Ecrit(1) 
Ecrit(3)  
Ecrit(4)
Donc j'utilise une table pour répertorier les noms une fois les noms classé,
je fabrique ma fonction qui me permet de leur demander quelque choses !
La fonction attend l'index, Plus bas j'envoie les valeur que la fonction attend
puis dans la fonction un print du tableau avec la valeur que, j'ai envoyé !

Le résultat :
Code:
Salut, qu'es-que tu fait la Joe ?

Salut, qu'es-que tu fait la Chris ?

Salut, qu'es-que tu fait la Tintin ?
Voila merci d'avoir suivie tout m'es tutoriel.

Source : Boardlink.fr
 

ShOoT

Tester c'est douter
Membre du personnel
Administrateur
Modérateur
Equipe développement
11 Octobre 2009
1 569
450
245
Annonce les sources ;) Merci.
 

Swap

Membre
Membre
18 Décembre 2016
9
0
21
France
Pseudo RP
Glenn Yamura
Okay j'ai, j'ai juste un problème, quand je met ce script j'ai un stack overflow, sinon bah jusque là j'ai termine le tuto, j'ai plus qu'à aller en chercher d'autres x)

sinon voila le script que j'ai fait et qui surcharge mes tables:
Ping={}
Ping[1]= 30
Ping[2]= 45
Ping[3]= 73
Ping[4]= 999
function Chocolat(Index)

print ("Tu à un ping de: "..Chocolat (Index).."")
end


Chocolat(1)
Chocolat(2)
Chocolat(3)
Chocolat(4)
 

mignoti

daiveulopeur scripte feau-d'heure
Membre
10 Janvier 2011
307
38
103
Pseudo RP
Renardo Serasa
Ping={}
Ping[1]= 30
Ping[2]= 45
Ping[3]= 73
Ping[4]= 999
function Chocolat(index)

print ("Tu à un ping de: ".. Ping[index] .."")
end


Chocolat(1)
Chocolat(2)
Chocolat(3)
Chocolat(4)

Pas testé mais ca m'a sauté aux yeux que c'était ca.
 
Dernière édition:

Swap

Membre
Membre
18 Décembre 2016
9
0
21
France
Pseudo RP
Glenn Yamura
J'ai cette erreur dans là dans la console quand je rentre le script.

[ERROR] lua/test.lua:8: attempt to call global 'Ping' (a table value)
1. Chocolat - lua/test.lua:8
2. unknown - lua/test.lua:12
 

Sensei

Membre qui ne compte plus ses heures
Membre
14 Avril 2015
136
45
88
Pseudo RP
Horace Tabor
Essai plutôt ceci @Swap

Code:
Ping = { 30, 45, 73, 999 } -- Tu peux tout déclaré en 1 fois, ici Ping[1] = 30, Ping[2] = 45 etc...

-- Rôle : Retourne un élement du tableau Ping selon l'index donné
/*
Arguments :
index : nombre (number)
*/
function Chocolat( index )
print( "Tu as un ping de " .. Ping[index] ) -- Accès au tableau Ping par nomDuTableau[ index ]
end

 Chocolat( 1 ) -- Retourne 30
 Chocolat( 2 ) -- Retourne 45
 Chocolat( 3 ) -- Retourne 73
 Chocolat( 4 ) -- Retourne 999
 

mignoti

daiveulopeur scripte feau-d'heure
Membre
10 Janvier 2011
307
38
103
Pseudo RP
Renardo Serasa
Enfaite, l'exemple de base viens de maurits.tv, l'ancien wiki du glua.
(source: https://maurits.tv/data/garrysmod/wiki/wiki.garrysmod.com/index2584.html )
Code:
names={}
names[1]="Jeff"
names[2]="Josh"
names[3]="Ryan"

function sayName(index)
   Msg("I said "..names[index].."\n")
end

sayName(1)
sayName(2)
sayName(3)

En esperant que ca t'aidera, tu peut changer les noms pour remettre "ping" etc ce qui rends

Code:
Ping={}
Ping[1]=1
Ping[2]=2
Ping[3]=3
 
function Chocolat(index)
    Msg("Tu à un ping de: ".. Ping[index] .."\n")
end
 
Chocolat(1)
Chocolat(2)
Chocolat(3)
 

Swap

Membre
Membre
18 Décembre 2016
9
0
21
France
Pseudo RP
Glenn Yamura
à cool c'est plus rapide de déclarer en une fois, c'est bon le petit bout de script fonctionne !