1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.

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

Arcade23 Janvier 2011

  1. Arcade

    Arcade Membre actif Membre

    Messages:
    204
    J'aime reçus:
    0
    Points:
    31
    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 :

    [​IMG]

    [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
     
    • Utile Utile x 1
    #1
  2. ShOoT

    ShOoT L'admin qui fait tout en live, sans demander à g2 Membre du personnel Fondateur Modérateur DarkRP SuperAdmin Equipe développement

    Messages:
    1 483
    J'aime reçus:
    439
    Points:
    145
    Annonce les sources ;) Merci.
     
    #2
  3. Swap

    Swap Membre Membre

    Messages:
    9
    J'aime reçus:
    0
    Points:
    11
    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)
     
    #3
  4. mignoti

    mignoti daiveulopeur scripte feau-d'heure Membre

    Messages:
    305
    J'aime reçus:
    34
    Points:
    88
    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: 18 Décembre 2016
    #4
  5. Swap

    Swap Membre Membre

    Messages:
    9
    J'aime reçus:
    0
    Points:
    11
    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
     
    #5
  6. Sensei

    Sensei Le dev Membre du personnel Membre Equipe développement

    Messages:
    136
    J'aime reçus:
    44
    Points:
    83
    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
     
    #6
  7. mignoti

    mignoti daiveulopeur scripte feau-d'heure Membre

    Messages:
    305
    J'aime reçus:
    34
    Points:
    88
    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)
    
     
    #7
  8. Swap

    Swap Membre Membre

    Messages:
    9
    J'aime reçus:
    0
    Points:
    11
    Pseudo RP:
    Glenn Yamura
    à cool c'est plus rapide de déclarer en une fois, c'est bon le petit bout de script fonctionne !
     
    #8
Chargement...

Partager cette page