Aller au contenu

Classement


Contenu populaire

Affichage du contenu avec la meilleure réputation le 11/05/21 dans toutes les zones

  1. 1 point
    Bonjour à tous, skripteur de france. Dans ce tutoriel je vais vous apprendre à utiliser l'expression WHILE, connue mais très peu utilisée. Problématique: While est-il dangereux ? I - Sommaire a) Erreurs à ne pas commettre b) Utilisation classique et exemple c) Conclusion En espérant retrouver plus souvent cette expression sur le forum. A) Tutoriel utilisation WHILE a) Erreurs à ne pas commettre Premièrement si vous vous rendez compte que vous avez fais un boucle infini (qui ne s'arrête jamais), il faut arrêter le serveur puis le redémarrer. Il est préférable de laisser un délai entre chaque boucle afin qu'elle ne se mélange pas (on se sait jamais) et pour éviter que le serveur ne s'arrête en cas de boucle infini. Si votre WHILE se présente sous la forme 'While {une_variable_parmit_tant_d'autres} is set:', il faudrat TOUJOURS une commande ou autre qui viendrat supprimer l'élément de la liste ou la variable en question. Avant de tester la boucle sur votre serveur relisez vous 2 voir 3 fois pour voir les erreurs potentielles dans le but d'éviter la boucle infini sans délai. b) Utilisation classique et exemple WHILE est une expression et doit donc suivre un évènement ou une commande, il est impossible de mettre à part cette expression. Visualisation: join: command /exemple: while ... trigger: while ... Il est possible d'éffectuer des sous-whiles se traduisant par "tant que x=1" et "tant que y=2". # ... while x=1: while y=2: ... Dans cette configuration si x est différent de 1 la seconde boucle ne s'exécutera pas. Exemple: Cliques par seconde (CPS) Il faudrat d'abord créer une variable pour chaque joueur. (on) leftclick: (if) {clicks.%player%} is not set: set {clicks.%player%} to 0 # Détecter qu'il sagit d'un nombre entier add 1 to {clicks.%player%} On souhaite que cette variable s'actualise toutes les secondes par conséquent l'utilisation de l'évènement appelé 'periodicals' est nécessaire. options: delai: 1 every {@delai} second: loop all players: set {clicks.%loop-player%} to 0 # remise à 0 du compteur Afin d'optimiser le code il faut que la variable indiquant les cliques d'un joueur se supprime automatiquement. (on) quit: clear {clicks.%player%} Ensuite si l'on souhaite afficher cette variable dans un gui on peut par exemple commencer par ouvrir un coffre. command /verif [<text>]: permission: taperm trigger: arg is set: set {_arg} to "%arg%" parsed as player open chest with 1 rows named "&cLa talent est présent" to player wait 3 ticks Et c'est là que l'on va mettre une variable au joueur qui a ouvert le coffre et le WHILE se basera sur cette variable, on fera en sorte de supprimer cette variable à la fermeture du coffre. set {verif.%player%} to {_arg} while {verif.%player%} is set: wait 3 ticks format slot 0 of player with {clicks.%{verif.%player%}%} of redstone block named "&cWhile is simple:" with lore "&7Do anything" to be unstealable Pour supprimer cette variable et donc arrêter la boucle il existe un évènement tel que 'inventory close' permettant ceci. (on) inventory close: inventory name of current inventory of player is "&cLa talent est présent": clear {verif.%player%} (on) quit: # Si le jeu du joueur crash {verif.%player%} is set: clear {verif.%player%} c) Conclusion Je vais essayé d'être bref et concis, donc, l'utilisation de l'expression WHILE peut être dangereuse dans le cas où elle est mal utilisée, il est donc nécessaire d'être rigoureux lorsque vous souhaitez introduire cette expression dans un de vos skripts. Son fonctionnement est compréhensible par tous mais elle est très rarement utilisé car elle fait 'peur', pour finir qui a dis
×
×
  • 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.