Aller au contenu
Olyno

Les loops : tutoriel complet

Messages recommandés

Bonjour,

dans ce tutoriel, je vais vous expliquer les loops de manières très poussés en skript. Ce tutoriel s'adresse à tout les développeurs de scripts, que ce soit débutant ou niveau très poussé. Ce tutoriel sera divisé en 3 parties pour que vous puissiez voir la/les parties à votre niveau.

 

Sommaire :

[spoiler=Niveau débutant]

I/ Niveau débutant :

Une loop peut être traduit par "boucle" en français. Il s'agit de répéter une action un certain nombre de fois, allant de 1 à un nombre infinis de fois. En skript, il n'existe pas de boucle "for" comme dans la plupart des langages mais uniquement 2 loops : "loop" et "while"

La boucle "while" va faire une boucle infinis, juqu'à ce qu'une condition la brise.

La boucle "loop" va cibler un nombre de fois définis et ne va se répéter que ce nombre de fois.

 

Une loop est donc une boucle qui va se répéter un certain nombre de fois. Voici donc un bref résumé de ce qu'il se passe dans une boucle:

 

[spoiler=Avec loop]

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

 

 

[spoiler=Avec while]

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

 

 

Ainsi, nous pouvons mettre une loop dans un code tel que:

 

[spoiler=Avec loop]

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

 

 

 

[spoiler=Avec while]

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

 

 

 

Ce sera très important pour la suite, vous en avez ma parole ;)

 

[spoiler=Tips]Le while peut etre une boucle inintéréssante à première vue, mais est très importante lorsque nous savons l'utiliser.

 

 

 

[spoiler=Niveau intermédiaire]

II/ Niveau intermédiaire :

 

Pour le niveau intermédiaire, il y a quelques astuces que vous devez connaitre. Vous devez dans un premier temps savoir que chaque loop renvoit une valeur, et que cette valeur augmente à chaque tour. Par exemple, si vous faites:

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

Vous pourrez remarquer qu'il va vous dire "1", "2", "3", "4" et "5".

 

[spoiler=Pourquoi ?]Car chaque boucle avec "loop" démarre de 1 pour finir à son point culminant, comme dans l'exemple où le point culminant est "5"

 

 

Sachez aussi que les variables listes peuvent être bouclés, tel que :

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

 

Vous remarquerez ici qu'il va vous broadcast dans l'ordre "je renvoi une phrase!" en revenant toujours à la ligne.

 

[spoiler=Pourquoi ?]Car il va reprendre le même système que la boucle avec "loop" précédente. Chaque boucle commence par la valeur 1, et chaque variable liste commence par l'index 1. Lorsque vous ajouter une valeurs, celle-ci y sera ajouté à la suite, tel une musique ajoutée à une file d'attente. Si votre valeur est la 5ème valeur ajoutée, elle sera donc en 5ème position.

 

 

[spoiler=Tips]"loop-value" ne fonctionne pas pour les boucles "while"

 

 

Une chose importante est à prévoir. Si vous utilisez une boucle dans une boucle, il ne faudra pas utiliser "loop-value" mais "loop-value-1" pour cibler une valeur de la boucle 1 par exemple ou "loop-value-2" pour la seconde. Tel que:

 

[spoiler=Avec loop]

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

 

 

 

[spoiler=Tips]Vous pouvez bouclé tout ce qui est multiple, tel que l'inventaire d'un joueur, le nombre de blocs autour d'une position...

Cela inclut aussi les expressions tel que all players, intergers from 1 to 5...

 

Une autre fonctionnalité est le "exit loop", qui équivaut à un "stop loop" qui va arreter la boucle en cours.

Exemple:

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

 

[spoiler=Tips]Les "while" peuvent contenir des conditions tel que:

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

 

 

 

 

 

[spoiler=Niveau poussé]

II/ Niveau poussé :

 

Pour le niveau poussé, nous allons parler avec un vocabulaire que j'ai inventé mais qui reste cohérent. Désormais, considérer les loop en tant que "block".

Vous pouvez optimiser votre code avec les loops, vous évitant de créer 1000 et 1 fonction. Voici un exemple de code que vous pouvez optimiser:

 

Avant:

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

Après:

 

[spoiler=Avec loop]

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

 

 

 

[spoiler=Avec while]

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

 

 

 

Ca supprime un grand nombre de ligne n'est-ce pas ?

 

 

 

Merci d'avoir lu ce tutoriel. Pensez à jeter un oeil sur les exemples ci-dessous si vous voulez avoir des exemples concret d'utilisation des boucles ;)

 

[spoiler=Exemples]

[spoiler=Compte à rebour]

[spoiler=Exemples]

[spoiler=Avec loop]

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

 

 

 

[spoiler=Avec while]

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

 

Ici, tant que la variable sera supérieur à 0, cette partie se répétera. Pour éviter un nombre de fois infinis de répétition, nous enlevons 1 à chaque fois de notre variable {_a}.

 

 

 

[spoiler=Templates]

[spoiler=Avec loop]

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

 

 

 

[spoiler=Avec while]

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

 

 

 

 

 

 

 

  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites

au lieu de faire ton while en deux lignes

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

(= tant que a +grand que 5)

tu peux faire

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

(= tant que "a" n'est pas égal a 5)

ou

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

(= tant que "a" est plus petit ou égal à 5)

 

sinon très bon tuto, même si je pense que le niveau intermédiaire pourrait convenir a un débutant et que le poussé pourrait convenir a un intermédiaire ^^

Partager ce message


Lien à poster
Partager sur d’autres sites
au lieu de faire ton while en deux lignes

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

(= tant que a +grand que 5)

tu peux faire

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

(= tant que "a" n'est pas égal a 5)

ou

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.

(= tant que "a" est plus petit ou égal à 5)

 

sinon très bon tuto, même si je pense que le niveau intermédiaire pourrait convenir a un débutant et que le poussé pourrait convenir a un intermédiaire ^^

 

J'ai utilisé sous forme de variable pour que ce soit simple à comprendre et à décomposer, mais oui sinon tu peux aussi faire de cette manière ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

Rien sur les :

- loop integer between ?

- loop-index ?

- loop all players ?

- loop all players where [player input] ?

- While avec d'autres conditions ? (variable, position, environnement)

 

Explique que l'on peut mettre n'importe quoi dans des loops;

- loop size of {Membres::*} times:

- loop blocks from the block below the player to the block 10 east of the block below the player:

- loop blocks in radius 5 around the player:

- loop all players where [player input has permission "test"]:

- loop blocks within {1} to {2}:

 

 

Pareil pour les whiles:

- while player is alive:

- while block below player is dirt:

- while "%{Membres::*}%" contains "Soufreur78":

- while player's health >= 5:

- while player's fly mode is true:

- while number of all players < 5:

- while name of current inventory of player is "Test":

- while player has 5 diamonds in her inventory:

- While "%region at player%" is "test":

- while file "plugins/test.bat" exists:

- while player has potion slowness:

- while player is within {variable} to {variable2}:

 

 

Si tu souhaites faire un tuto complet il faut le préciser

  • J'aime 2

Partager ce message


Lien à poster
Partager sur d’autres sites
Rien sur les :

- loop integer between ?

- loop-index ?

- loop all players ?

- loop all players where [player input] ?

- While avec d'autres conditions ? (variable, position, environnement)

 

Explique que l'on peut mettre n'importe quoi dans des loops;

- loop size of {Membres::*} times:

- loop blocks from the block below the player to the block 10 east of the block below the player:

- loop blocks in radius 5 around the player:

- loop all players where [player input has permission "test"]:

- loop blocks within {1} to {2}:

 

 

Pareil pour les whiles:

- while player is alive:

- while block below player is dirt:

- while "%{Membres::*}%" contains "Soufreur78":

- while player's health >= 5:

- while player's fly mode is true:

- while number of all players < 5:

- while name of current inventory of player is "Test":

- while player has 5 diamonds in her inventory:

- While "%region at player%" is "test":

- while file "plugins/test.bat" exists:

- while player has potion slowness:

- while player is within {variable} to {variable2}:

 

 

Si tu souhaites faire un tuto complet il faut le préciser

 

1520461149-2.png

et

1520461150-1.png

 

Disponible depuis un petit moment dans la partie intermédiaire.

En ce qui concerne les whiles, si on dit qu'ils peuvent contenir des conditions, je pense qu'il ne faut pas être bête pour utiliser les conditions disponible que nous offre les addons ou encore skript lui même.

En ce qui concerne "loop all players" par exemple, "all players" reste une expression. Etant donné que j'avais précisé "tout ce qui est multiple", ca me paraissait logique d'inclure les expressions de ce style, je l'ai quand même repréciser.

 

Le tutoriel est sur les loops, et non les expressions et l'utilisation des expressions, c'est donc normal que je n'ai pas inclut ça dans le tutoriel.

 

Merci tout de même pour ta/tes remarque(s) ;)

  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites
Répondu : (modifié)

Bonjour, désolé de up le tuto.

Je suis un débutant complet en skript et du coup j'y connais rien en addons etc. Mon problème est que j'ai essayé plusieurs loop et j'ai toujours le même erreur dans la console qui ressemble à ca

#!#! Current node: loop 5 times: (Scoreboard.sk, line 5)

J'ai essayé "while player is online" | "loop all players" et c'est la même erreur.

Alors du coup j'ai essayé la première partie  du tuto (débutant) et c'est  la même chose 😕

 

edit:

les addons que j'utilise : SkBee SkVault Skript-holo Skript-placeholders Skellet Skript-GUI

version du serveur paper1.17.1

hébergeur : minehut.gg

 

edit: edit: 

Alors voila j'ai pensé que ca venais peut être des addons donc j'ai removed 1 par 1 les addons et on dirais bien que c'est Skellet le responsable et qu'il cassais les boucles.

Modifié par MiiTsY
Plus d'infos

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.