Polymeth 223 Posté : 29 octobre 2016 Un titre que l'on ne comprends pas ? C'est normal, vous êtes bien sur Skript School, la série de tutoriel afin d'apprendre à programmer Skript de A à Z. Je vous recommande, voire vous demande si vous n'avez aucune connaissances en skript d'aller voir les précédents Skript School (voir plus bas). Je précise juste que, Skript School est adapté et fait pour les débutants. Pour le moment, si vous êtes bons en skript vous n'apprendez sûrement rien. Néanmoins, les prochains tutoriels passeront la barre au dessus niveau difficulté. LES LISTES ET LES BOUCLES Les bases Premièrement, voyons les listes. Dans Skript School #3 nous avons pu découvrir les variables qui permettent de stocker une valeur. Désormais nous allons nous étendre un peu plus sur le sujet et allons stocker plusieurs valeurs dans une de ces variables, qui sera une liste. Une liste se déclare de la même manière qu'une variable, mais avec ::* derrière. Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. ok cool mais là elle est vide ta liste Comme ton cerveau Bien sûr, je plaisante. Effectivement elle est vide, mais ça, c'est si vous le déclarez dans les Variables tout en haut. Maintenant, dans une commande ou un évènement, nous allons ajouter quelque chose - une valeur - à notre magnifique liste (qui peut être créer directement dans l'effect que nous allons voir) Pour se faire, il suffit d'écrire ceci dans votre évènement ou votre commande. Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Pour ceux qui ont encore du mal, on va faire une décomposition très simple. "add [une valeur] to [liste]" ce qui, traduit littéralement, signifie "ajouter [une valeur] à [liste]" et maintenant vous devriez comprendre. Panique panique, peut-on mettre autre chose qu'une simple string (text) ? Evidemment. Dans notre liste, on peut ajouter plus qu'un string. On peut ajouter une variable simple, un chiffre, le nom d'un joueur, son uuid... tout. Voici quelques exemples Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Donc on peut mélanger pleins de types de variables dans une liste ? Absolument, on peut mélanger un chiffre, un string, tout. De cette manière, on peut retirer quelque chose d'une liste et la vider. Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. L'affichage Il y a plusieurs moyens d'afficher une liste. Élément par élément, ou tout d'un coup. Reprenons la liste {list::*} (le précédent exemple) pou cela. Le plus simple, un affichage qui marche comme toutes les variables. Par exemple : Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Si vous avez fait cela correctement, vous obtiendrez quelque chose de la sorte (pas les mêmes valeurs si vous n'avez pas repris la liste de l'exemple, évidemment) Et la deuxième méthode consiste à afficher éléments par éléments. Pour cela nous allons utiliser une boucle, "loop". Je vais écrire le code puis expliquer. Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. C'est très simple. Première ligne, on indique que l'on va faire une boucle pour la liste {list::*}. En quelque sorte, on dit à Skript : "Pour chaque élément de {list::*}:" Ensuite on utilise send pour tester en utilisant loop-value. Loop-value correspond à la valeur - l'élément - de la boucle. Résumons simplement : "Pour chaque élément de {list::*}: envoyer message "élément"" Récupérer un élément précis Pour cela, nous allons utiliser un index. L'index, c'est l'équivalent de loop-value, en chiffre et dans l'ordre d'ajout. Si s'ajoute "mdr", puis "lol", pour ensuite ajouter "rofl"à ma liste {uneliste;;*}, mdr aura l'index 1, lol l'index 2 et ainsi de suite. Si je veux récupérer et afficher, par exemple, "lol", il me suffira de faire : Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. D'ailleus, on peut également loop l'index avec %loop-index% Ainsi, on peut également modifier un élément précis. Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Voilà, c'est tout pour ce (long) tutoriel, mais désormais les listes et vous ne font qu'un ! Si vous avez quelconque question, n'hésitez pas à me la poser, ou à venir me voir sur le Discord de Skript-MC, j'y suis très souvent. Skript School #1 - Skript School #2 - Skript School #3 - Skript School #4 3 Partager ce message Lien à poster Partager sur d’autres sites
Polymeth 223 Répondu : 29 octobre 2016 Un bon tutoriel, pour ceux qui apprennent les bases. Cependant dans le titre tu parle de "loop" et la tu parle que de la façon de loop une liste, comptes tu faire un autre tuto sur les autres "types" de loop ? Oui bien sûr, là j'en parle de manière brève, mais je ferai quelque chose de plus complet après :) Partager ce message Lien à poster Partager sur d’autres sites
LavaPower 149 Répondu : 29 octobre 2016 Bon tuto :) 1 Partager ce message Lien à poster Partager sur d’autres sites
Polymeth 223 Répondu : 29 octobre 2016 Bon tuto :) Merci merci :) Partager ce message Lien à poster Partager sur d’autres sites
MeDrioX 11 Répondu : 29 octobre 2016 Salut, C'est possible de faire que par exemple si il y a 3joueurs dans la liste si un joueur arrive 1er dans la liste 'comme une file d'attente' il soit tp dans une salle ? Partager ce message Lien à poster Partager sur d’autres sites
Synatiks 4 Répondu : 31 octobre 2016 Si on ajoute trois joueurs à une liste, le troisième seras "indexé" ( Je pense pas que ça existe mais bon.. ) dans la liste en numéro 3 {list::3} Si on retire par la suite les deux autre joueurs, il seras toujours "indexé" en numéro 3 ou alors passera t-il au numéro 1 ? J'espère que tu auras compris ma demande ^^ Partager ce message Lien à poster Partager sur d’autres sites
LavaPower 149 Répondu : 31 octobre 2016 Il me semble qu'il restera "indexé" au numéro 3 mais à confirmer :/ Partager ce message Lien à poster Partager sur d’autres sites
Polymeth 223 Répondu : 31 octobre 2016 Si on ajoute trois joueurs à une liste, le troisième seras "indexé" ( Je pense pas que ça existe mais bon.. ) dans la liste en numéro 3 {list::3} Si on retire par la suite les deux autre joueurs, il seras toujours "indexé" en numéro 3 ou alors passera t-il au numéro 1 ? J'espère que tu auras compris ma demande ^^ Si tu as une liste 1. Polymeth 2. Synatiks 3. LavaPower et que je retire Polymeth par exemple, l'index ne changera pas, c'est-à-dire: 2. Synatiks 3. LavaPower Partager ce message Lien à poster Partager sur d’autres sites
LavaPower 149 Répondu : 31 octobre 2016 Une question : Mais si on ajoute Snowach Ca fera : 1- Snowach 2- Synatiks 3- LavaPower ou : 2- Synatiks 3- LavaPower 4- Snowach ? Partager ce message Lien à poster Partager sur d’autres sites
Polymeth 223 Répondu : 31 octobre 2016 Une question : Mais si on ajoute Snowach Ca fera : 1- Snowach 2- Synatiks 3- LavaPower ou : 2- Synatiks 3- LavaPower 4- Snowach ? La deuxième, les index c'est toujours dans l'ordre d'ajout :) Partager ce message Lien à poster Partager sur d’autres sites
Oromis 6 Répondu : 3 novembre 2016 Salut ! Merci pour ce tuto sympatique ! :) J'ai tout de même une question, il y a t-il un moyen de tester le contenu d'une liste comme demander si la liste {red::*} contient le terme "rouge" ou faut-il forcément passer par une boucle ? Partager ce message Lien à poster Partager sur d’autres sites
GauvainWizard 190 Répondu : 3 novembre 2016 Salut ! Merci pour ce tuto sympatique ! :) J'ai tout de même une question, il y a t-il un moyen de tester le contenu d'une liste comme demander si la liste {red::*} contient le terme "rouge" ou faut-il forcément passer par une boucle ? Tu peux faire comme ça : Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. 1 Partager ce message Lien à poster Partager sur d’autres sites
Oromis 6 Répondu : 3 novembre 2016 Je me doutais bien qu'il y avait un autre moyen que la boucle ^^ Je te remercie !!!!! :) 1 Partager ce message Lien à poster Partager sur d’autres sites
Skripting 605 Répondu : 3 novembre 2016 La technique de @GauvainWizard marche bien, mais n'est pas au point. Car imaginons; si dans ta liste tu as : - Blanc - Vert - Bleu - Rouge - Bleu foncé Et que tu testes si la couleur bleu est présente dans la liste avec la technique de @GauvainWizard : Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Cela va bien marcher, mais ça va aussi détecter la couleur "Bleu foncé". Avant, cela, je fais un petit rappel sur la déclaration d'un liste. Une liste, c'est comme une variable, elle peut contenir du texte comme des joueurs, des nombres, des items. Une liste aura son type lors de sa déclaration : Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Après cette déclaration, ta liste aura comme type des items. Contrairement à une variable, une liste ne peut être parsée, elle gardera son type pour toujours jusqu'à sa suppression. Le seul moyen de parser une liste, et d'en refaire une : Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Pour savoir si une liste contient quelque chose, on fait ceci : Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Mais ne pas faire ceci ! : Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Parce que là, vous récupérer tout le contenu de votre liste sous forme de texte, et vous tester si celle-ci contient un texte elle même ! Donc la bonne chose à faire est (cas de @Oromis): Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. MAIS ! Oui, il y a un "mais" ! Depuis la version 2.2 Fixes de Skript, il n'est plus possible de vérifier si une liste (qui contient seulement des textes) contient un texte. Donc le dernier code donné ne fonctionnera pas. Il existe donc une petite solution, qui est de vérifier si une liste ne contient PAS un texte, puis de mettre un "<else>" par la suite : Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Donc au final, si tu voudrais tester le contenu d'un texte dans une liste, tu devras faire ceci^^ ! 3 Partager ce message Lien à poster Partager sur d’autres sites
GauvainWizard 190 Répondu : 3 novembre 2016 Ouep m'enfin si t'en ras réduit à ça, autant direct passé par une boucle, mais ça, c'est mon avis. Mais autant faire ça sans else: Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Partager ce message Lien à poster Partager sur d’autres sites
Oromis 6 Répondu : 3 novembre 2016 @PsYZiiK Ah bâ... Merci énormément, tu réponds en même temps en partie au problème que j'ai posé dans la partie support ^^" Merci beaucoup !!! :p 1 Partager ce message Lien à poster Partager sur d’autres sites
Benjazt23 10 Répondu : 11 novembre 2016 Bonsoir. Pour détecter le nombre d'éléments dans une liste, comment se fait-ce ? Style Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Et là il me dit qu'in y a eu 2 éléments dans la liste. (Chez moi, il me dit qu'il y en a 1 et 1 et non 2). Merci d'avance. Partager ce message Lien à poster Partager sur d’autres sites
ggdu490 14 Répondu : 11 novembre 2016 Bonsoir Benjazt23. C'est normal, tu lui dis d'ajouter "1" a la liste. Si c'est pour un compteur pas besoin de liste. La liste perso je m'en sers pour les coordonnées, joueurs ect. Partager ce message Lien à poster Partager sur d’autres sites
Benjazt23 10 Répondu : 11 novembre 2016 Du coup, comment faire pour un nombre de commande exécutée ? Partager ce message Lien à poster Partager sur d’autres sites
ggdu490 14 Répondu : 11 novembre 2016 Tout simplement en utilisant pas la liste ce qui te donne: add 1 to {liste} Partager ce message Lien à poster Partager sur d’autres sites
ggdu490 14 Répondu : 12 novembre 2016 En utilisant les variables classique: {tavariable} et non {tavariable::*} Partager ce message Lien à poster Partager sur d’autres sites
TobiBiotex 6 Répondu : 20 novembre 2016 J'ai une question, je voudrais savoir combien de métier à un joueur, au lieu d'avoir 3 variables et devoir regarder dans chaque une d'elle si un métier est dedans, je voudrais bien un système plus optimisable. Par expemple je rejoins le metier Bucheron, Mineur et je voudrais être chasseur, mais seul les "VIP" ont le droit à 3 métiers, je voudrais donc savoir combien de métier il y a dans ma listes: {jobs.%UUID of player::*} Partager ce message Lien à poster Partager sur d’autres sites
XTReMxLogik 8 Répondu : 3 août 2017 Bonjour, Oui, ce tutoriel date :D -_- Mais je suis sur un skript... J'ai besoin d'ajouter <player> to {liste::*} Et apres téléporté cette liste donc, teleport {liste::*} to {point.de.tp} Et pour enlever ces joueurs delete <player> to {liste::*} Conclusion: Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Je sais pas si j'ai été claire dans ma demande, en tous cas je l'espere (avoir une réponse aussi j'espere :D) Merci d'avoir lu, et/ou y répondre ! Partager ce message Lien à poster Partager sur d’autres sites
LavaPower 149 Répondu : 3 août 2017 Essaie ça : Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Partager ce message Lien à poster Partager sur d’autres sites
XTReMxLogik 8 Répondu : 3 août 2017 Essaie ça : Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. C'est pas vraiment ce que je demande... Ce code est un exemple, a adapter, mais j'aimerais supprimer le {varible.%player% sans etre ce joueur, ni precisé le joueur ! Partager ce message Lien à poster Partager sur d’autres sites