Aller au contenu
  • 0

Échec de condition


Question

Posté(e)

Hey tout le monde ! C'est encore moi ^^"

Alors, j'essaye de créer des équipes par une commande custom que je stocke dans deux listes : une contenant le nom de l'équipe, l'autre sa couleur.

J'ai donc une commande avec pour syntaxe : /team <add|remove> <name> <color> où le premier argument est seulement "add" pour le moment.

J'ai une troisième liste où l'enregistre les 16 couleurs possibles dans Minecraft.

Voici mon code :

command /team <text> <text> <text>:
   trigger:
       if "%arg 1%" is "add":
           if "%{teamName::*}%" does not contain "%arg 2%":
               broadcast "aaaa" #Test de déboguage
               clear {color::*}
               add "dark_red" to {color::*}
               add "red" to {color::*}
               add "gold" to {color::*}
               add "yellow" to {color::*}
               add "dark_green" to {color::*}
               add "green" to {color::*}
               add "aqua" to {color::*}
               add "dark_aqua" to {color::*}
               add "dark_blue" to {color::*}
               add "blue" to {color::*}
               add "light_purple" to {color::*}
               add "dark_purple" to {color::*}
               add "white" to {color::*}
               add "gray" to {color::*}
               add "dark_gray" to {color::*}
               add "black" to {color::*}
               if "%{color::*}%" contain "%arg 3%":
                   broadcast "aaa"
                   execute console command "/scoreboard teams add %arg 2%"
                   execute console command "/scoreboard teams option %arg 2% color %arg 3%"
                   add "%arg 2%" to {teamName::*}
                   add "%arg 3%" to {teamColor::*}
                   broadcast "&2Équipe %arg 2% en %arg 3% ajoutée !"
               else:
                   broadcast "aaa"
                   broadcast "&4Le %arg 3% n'est pas une couleur !"
           else:
               broadcast "&4L'équipe %arg 2% existe déjà !"

Le problème est que, lorsque j'entre une commande de ce genre sur mon serveur :

/team add Ab blac

Où je fais volontairement une faute pour tester le skript, bâ... Le message "Équipe Ab en blac ajoutée !" s'affiche alors que la couleur n'est pas valide...

Si quelqu'un pourrait me dire d'où vient le problème, car j'ai beau cherché et je ne vois pas ^^"

 

Merci d'avance !!! :)

 

P.S. : Si quelqu'un sait comment compacté, si possible, le gros bloc où je met les couleurs dans une liste, ou sait faire autrement pour tester la validité d'une couleur, j'accepte volontier, je reste encore débutant dans le domaine du Skript... Merci ! ^^"

22 réponses à cette question

Messages recommandés

  • 0
Posté(e)

Oui, PsyYZiiK y a partiellement répondu ici, j'ai donc un nouveau code :

command /team <text> <text> <text>:
   trigger:
       if "%arg 1%" is "add":
           if {teamName::*} does not contain "%arg 2%":
               broadcast "aaaa"
               clear {color::*}
               add "dark_red" to {color::*}
               add "red" to {color::*}
               add "gold" to {color::*}
               add "yellow" to {color::*}
               add "dark_green" to {color::*}
               add "green" to {color::*}
               add "aqua" to {color::*}
               add "dark_aqua" to {color::*}
               add "dark_blue" to {color::*}
               add "blue" to {color::*}
               add "light_purple" to {color::*}
               add "dark_purple" to {color::*}
               add "white" to {color::*}
               add "gray" to {color::*}
               add "dark_gray" to {color::*}
               add "black" to {color::*}
               if {color::*} does not contain "%arg 3%":
                   broadcast "aaa"
                   broadcast "&4Le %arg 3% n'est pas une couleur !"
               else:
                   broadcast "aaa"
                   execute console command "/scoreboard teams add %arg 2%"
                   execute console command "/scoreboard teams option %arg 2% color %arg 3%"
                   add "%arg 2%" to {teamName::*}
                   add "%arg 3%" to {teamColor::*}
                   broadcast "&2Équipe %arg 2% en %arg 3% ajoutée !"
           else:
               broadcast "&4L'équipe %arg 2% existe déjà !"

Mais maintenant, c'est la première condition qui ne fonctionne pas :(

Même si la team n'existe pas, j'aurai tout de même le message d'erreur :/

  • 0
Posté(e)

Oui, j'y ai pensé mais bon... Je préfère tout de même voir si il y a une solution avant d'envisager celle-là ! :)

En tout cas, merci tout de même ^^

  • 0
Posté(e)

Voila pour toi :

command /team <text> <text> <text>:
   trigger:
       if "%arg 1%" is "add":
           if {teamName::*} does not contain "%arg 2%":
               broadcast "aaaa"
               clear {color::*}
               add "dark_red" and "red" and "gold" and "yellow" and "dark_green" and "green" and "aqua" and "dark_aqua" and "dark_blue" and "blue" and "light_purple" and "dark_purple" and "white" and "gray" and "dark_gray" and "black" to {color::*}
               loop {color::*}:
                   if loop-value is "%arg 3%":
                       execute console command "/scoreboard teams add %arg 2%"
                       execute console command "/scoreboard teams option %arg 2% color %arg 3%"
                       add "%arg 2%" to {teamName::*}
                       add "%arg 3%" to {teamColor::*}
                       broadcast "&2Équipe %arg 2% en %arg 3% ajoutée !"
                       stop
               broadcast "&4Le %arg 3% n'est pas une couleur valide !"
           else:
               broadcast "&4L'équipe %arg 2% existe déjà !"

  • J'aime 1
  • 0
Posté(e)

Merci de ta réponse !! :)

Malheureusement, la première condition détectant l'existance de la team ne fonctionne pas... Elle détecte une équipe alors qu'il y en a pas :/

Pourtant, j'ai une commande qui m'affiche la liste et cette dernière est vide :<none>

Je vous redonne mon code :

command /team <text> <text> <text>:
   trigger:
       if "%arg 1%" is "add":
           if {teamName::*} does not contain "%arg 2%":
               broadcast "aaaa"
               clear {color::*}
               add "dark_red" and "red" and "gold" and "yellow" and "dark_green" and "green" and "aqua" and "dark_aqua" and "dark_blue" and "blue" and "light_purple" and "dark_purple" and "white" and "gray" and "dark_gray" and "black" to {color::*}
               loop {color::*}:
                   if loop-value is "%arg 3%":
                       execute console command "/scoreboard teams add %arg 2%"
                       execute console command "/scoreboard teams option %arg 2% color %arg 3%"
                       add "%arg 2%" to {teamName::*}
                       add "%arg 3%" to {teamColor::*}
                       broadcast "&2Équipe %arg 2% en %arg 3% ajoutée !"
                       stop
               broadcast "&4Le %arg 3% n'est pas une couleur valide !"
           else:
               broadcast "&4L'équipe %arg 2% existe déjà !"
       if "%arg 1%" is "clear":
       clear {teamName::*}
       clear {teamColor::*}

Étrangement, ma commande /team clear, pour reset mes listes, fonctionne bien alors que je n'ai des tabs mais des espaces et qu'il n'y a pas une tabulation de plus au code exécuté si condition valide...

 

Merci de votre aide ! :)

  • 0
Posté(e)
Étrangement, ma commande /team clear, pour reset mes listes, fonctionne bien alors que je n'ai des tabs mais des espaces et qu'il n'y a pas une tabulation de plus au code exécuté si condition valide...

 

T'as des espaces sur le forum ou dans ton code dans ton fichier ? Parce que ça devrait faire des erreurs huh.

 

Edit : Ah non.

 

Mais du coup, si t'as pas indenté, ça s'exécute quelque soit la valeur 1 normalement.

  • 0
Posté(e)
T'as des espaces sur le forum ou dans ton code dans ton fichier ? Parce que ça devrait faire des erreurs huh.

 

Edit : Ah non.

 

Mais du coup, si t'as pas indenté, ça s'exécute quelque soit la valeur 1 normalement.

Indenté, c'est la tabulation pour placer les lignes ?

  • 0
Posté(e)
Lorsque je met le nombre de tabulation adéquat il me met : "indentation error : expected 8 spaces, but found 2 tabs" :/

 

Normalement, tu dois mettre 3 tabs avant les instructions qui dépendent de ta condition et avoir au moins une instruction qui en dépend.

  • 0
Posté(e)

"indentation error: expected 16 spaces, but found 2 tabs (test.sk, line 43: if "%arg 1%" is "clear":')

Cette lignes-là pour chacune des lignes de mon morceau de code ci-dessus, avec pour les deux autres 3 tabs au lieu de une :/

  • 0
Posté(e)

Ah effectivement, les lignes du dessus contenaient des espaces ! :)

Merci beaucoup, j'aurai pensé que le rapport d'erreur aurait déclaré les lignes du dessus ^^"

Bref, merci à toi ! :)

  • 0
Posté(e)

J'ai réussi à faire ce que je voulais en passant entièrement par des boucles !!!!

Merci à tous de votre aide !! :)

 

Pour ceux que ça intéresse, voici le code finale :

command /team <text> <text> <text>:
   trigger:
       if "%arg 1%" is "add":
           if size of {teamName::*} is 0:
               clear {color::*}
               add "dark_red" and "red" and "gold" and "yellow" and "dark_green" and "green" and "aqua" and "dark_aqua" and "dark_blue" and "blue" and "light_purple" and "dark_purple" and "white" and "gray" and "dark_gray" and "black" to {color::*}
               loop {color::*}:
                   if loop-value is "%a%":
                       execute console command "/scoreboard teams add %arg 2%"
                       execute console command "/scoreboard teams option %arg 2% color %arg 3%"
                       add "%arg 2%" to {teamName::*}
                       add "%arg 3%" to {teamColor::*}
                       broadcast "&2Équipe %arg 2% en %arg 3% ajoutée !"
               broadcast "&4Le %arg 3% n'est pas une couleur valide !"               
               stop
           loop {teamName::*}:
               if loop-value-1 is "%arg 2%":
                   broadcast "&4L'équipe %arg 2% existe déjà !"
                   stop
               clear {color::*}
               add "dark_red" and "red" and "gold" and "yellow" and "dark_green" and "green" and "aqua" and "dark_aqua" and "dark_blue" and "blue" and "light_purple" and "dark_purple" and "white" and "gray" and "dark_gray" and "black" to {color::*}
               loop {color::*}:
                   if loop-value is "%a%":
                       execute console command "/scoreboard teams add %arg 2%"
                       execute console command "/scoreboard teams option %arg 2% color %arg 3%"
                       add "%arg 2%" to {teamName::*}
                       add "%arg 3%" to {teamColor::*}
                       broadcast "&2Équipe %arg 2% en %arg 3% ajoutée !"
               broadcast "&4Le %arg 3% n'est pas une couleur valide !"               
       if "%arg 1%" is "clear":
           clear {teamName::*}
           clear {teamColor::*}

 

J'ai tout de même une dernière question ^^"

J'aimerai mettre le passage répétitif dans une fonction de cette manière :

command /team <text> <text> <text>:
   trigger:
       if "%arg 1%" is "add":
           if size of {teamName::*} is 0:
               colorT("%arg 3%")
               stop
           loop {teamName::*}:
               if loop-value-1 is "%arg 2%":
                   broadcast "&4L'équipe %arg 2% existe déjà !"
                   stop
               colorT("%arg 3%")
       if "%arg 1%" is "clear":
           clear {teamName::*}
           clear {teamColor::*}

function colorT(a: text)
   clear {color::*}
   add "dark_red" and "red" and "gold" and "yellow" and "dark_green" and "green" and "aqua" and "dark_aqua" and "dark_blue" and "blue" and "light_purple" and "dark_purple" and "white" and "gray" and "dark_gray" and "black" to {color::*}
   loop {color::*}:
       if loop-value is "%a%":
           execute console command "/scoreboard teams add %arg 2%"
           execute console command "/scoreboard teams option %arg 2% color %arg 3%"
           add "%arg 2%" to {teamName::*}
           add "%arg 3%" to {teamColor::*}
           broadcast "&2Équipe %arg 2% en %arg 3% ajoutée !"
   broadcast "&4Le %arg 3% n'est pas une couleur valide !"               

Or 13 erreurs : "Invalid line - all code has to be put into triggers (test.sk, line 48: function colorT(a: text)')"

Toute les autres étant des indentations error dans cette fonction... Il attend 0 tab pour la première ligne de code par exemple...

 

Bref, merci de votre aide !!! :)

×
×
  • 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.