Aller au contenu
  • 0

Totem aléatoire (coffre)


Question

Posté(e)

Bonjour à tous,

 

J'ai créé un script sur la base de celui d'un utilisateur de ce site mais j'arrive pas à le finir, le skript est censé faire spawn un coffre à un endroit aléatoire et se supprimer si il est vidé. Le totem est censé se déclencher toutes les 2 heures et donc tourner en boucle infinie. (D'où mon système de flag)

 

J'ai qu'une seule erreur qui est :

 

{coffre} can only be set to one object not more (ligne 39)

 

command /totem:
   permission: totem.board
   permission message: &fCommande inconnue.
   trigger:
       if {coffre} is set:
           message "&8[&6Totem&8] &7Coordonées du totem&8 :"
           message "&8[&6Totem&8] &7X&8 : &e%{x}%&6, &7Y&8 : &e%{y}%&6, &7Z&8 : &e%{z}%&7."
       else:
           message "&8[&6Totem&8] &cAucun totem en cours"
every 1 seconds:
   add 1 to {flag}

On skript load:
   set {flag} to 0
   if {flag} is equal to 3600:
       broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e1&7 heure."
       if {flag} is equal to 5400:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e30&7 minutes."
       if {flag} is equal to 6300:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e15&7 minutes."
       if {flag} is equal to 6900:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e5&7 minutes."
       if {flag} is equal to 7140:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e1&7 minutes."
       if {flag} is equal to 7200:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e5&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e4&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e3&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e2&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e1&7 seconde."
           set {_x} to random number between -10000 and 10000
           set {_y} to random number between 100 and 150
           set {_z} to random number between -10000 and 10000
           set {coffre} to location at {x}, {y}, {z}
           set block at location {x}, {y}, {z} to chest
           loop all players:
               run loop-player command "/totem" as op
           broadcast "&8[&6Annonce&8] &7Un totem vient d'apparaître."

           loop all players:
               run loop-player command "/coffre_board" as op

           loop blocks in radius 1 around {coffre}:
               if loop-block is a chest:
                   add 1 diamond to {coffre}'s inventory


           loop 99999999 times:
               if {coffre} is set:
                   wait 5 ticks
                   loop blocks in radius 1 around {coffre}:
                       if loop-block is a chest:
                           if "%all items in inventory of loop-block%" is "<none>":
                               loop blocks in radius 1 around {coffre}:
                                   if loop-block-2 is a chest:
                                       clear loop-block-2's inventory
                                   loop all players in radius 5 around {coffre}'s location:
                                       wait 2 ticks
                                       add "&e%loop-player%&7" to {coffre.joueurs::*}
                                       set {_coffre.joueurs} to "%{coffre.joueurs::*}%"
                                       wait 1 tick
                                       replace all "and" with "&6et&e" in {_coffre.joueurs}
                                       if {_coffre.joueurs} is "<none>":
                                           broadcast "&8[&6Annonce&8] &cLe totem a été supprimé car il est vide."
                                       else:
                                           broadcast "&8[&6Annonce&8] &7Le totem a été trouvé par &e%{_coffre.joueurs}%&7."
                                       set block at {coffre} to air
                                   delete {x}
                                   delete {y}
                                   delete {z}
                                   wait 5 ticks
                                   delete {coffre}
                                   set {flag} to 0

               else:
                   exit loop

 

Merci pour votre éventuelle aide, je suis aussi ouvert a toute critique car c'est mon premier script, je ne sais même pas si il marchera en tant que tel ^^

21 réponses à cette question

Messages recommandés

  • 0
Posté(e)

Change

 loop 99999999 times:
               if {coffre} is set:

En

while {coffre} is set:

*

 

La méthode "while" va exécuter le code en dessous d'elle, tant que la condition est respectée (ici "{coffre} is set")

  • 0
Posté(e)

Merci de ton aide, la boucle semble plus logique et du coup ça fait apparaître un certains nombres d'autres erreurs que je comprend pas :/

 

Voici le code modifié :

 

command /totem:
   permission: totem.board
   permission message: &fCommande inconnue.
   trigger:
       if {coffre} is set:
           message "&8[&6Totem&8] &7Coordonées du totem&8 :"
           message "&8[&6Totem&8] &7X&8 : &e%{x}%&6, &7Y&8 : &e%{y}%&6, &7Z&8 : &e%{z}%&7."
       else:
           message "&8[&6Totem&8] &cAucun totem en cours"
every 1 seconds:
   add 1 to {flag}

On skript load:
   set {flag} to 0
   if {flag} is equal to 3600:
       broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e1&7 heure."
       if {flag} is equal to 5400:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e30&7 minutes."
       if {flag} is equal to 6300:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e15&7 minutes."
       if {flag} is equal to 6900:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e5&7 minutes."
       if {flag} is equal to 7140:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e1&7 minutes."
       if {flag} is equal to 7200:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e5&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e4&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e3&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e2&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e1&7 seconde."
           set {x} to random number between -10000 and 10000
           set {y} to random number between 100 and 150
           set {z} to random number between -10000 and 10000
           set {coffre} to location at {x}, {y}, {z} in lobby
           set block at location {x}, {y}, {z} in lobby to chest
           loop all players:
               run loop-player command "/totem"
           broadcast "&8[&6Annonce&8] &7Un totem vient d'apparaître."

           loop all players:
               run loop-player command "/totem"

           loop blocks in radius 1 around {coffre}:
               if loop-block is a chest:
                   add 1 diamond to {coffre}'s inventory


           while {coffre} is set:
               wait 5 ticks
               loop blocks in radius 1 around {coffre}:
                   if loop-block is a chest:
                       if "%all items in inventory of loop-block%" is "<none>":
                           loop blocks in radius 1 around {coffre}:
                               if loop-block-2 is a chest:
                                   clear loop-block-2's inventory
                               loop all players in radius 5 around {coffre}'s location:
                                   wait 2 ticks
                                   add "&e%loop-player%&7" to {coffre.joueurs::*}
                                   set {_coffre.joueurs} to "%{coffre.joueurs::*}%"
                                   wait 1 tick
                                   replace all "and" with "&6et&e" in {_coffre.joueurs}
                                   if {_coffre.joueurs} is "<none>":
                                       broadcast "&8[&6Annonce&8] &cLe totem a été supprimé car il est vide."
                                   else:
                                       broadcast "&8[&6Annonce&8] &7Le totem a été trouvé par &e%{_coffre.joueurs}%&7."
                                   set block at {coffre} to air
                               delete {x}
                               delete {y}
                               delete {z}
                               wait 5 ticks
                               delete {coffre}
                               set {flag} to 0

 

Voici les erreurs présentes :

 

9b0dfef2-e78e-44e9-9359-75d3cdb3bc4162DR4n2.png

  • 0
Posté(e)

Pour l'erreur sur "run loop-player command", remplace le par

make loop-player execute command "/laCommande"

 

Mais après, les autres erreurs je n'en ai aucune idée, désoler...

  • 0
Posté(e)

Merci impeccable :)

 

Manque plus que ces deux fichus erreurs sur ma méthode de faire spawn le chest :/

 

Attendons quelqu'un d'autre, merci de ton aide ;)

 

J'ai tenté une totale autre manière mais j'ai pleins d'erreur alors que je suis sûr que je suis tout près XD

 

 

  • 0
Posté(e)

Mise a jour de mon code, il me reste une seule erreur :

 

command /totem:
   permission: totem.board
   permission message: &fCommande inconnue.
   trigger:
       if {coffre} is set:
           message "&8[&6Totem&8] &7Coordonees du totem&8 :"
           message "&8[&6Totem&8] &7X&8 : &e%{x}%&6, &7Y&8 : &e%{y}%&6, &7Z&8 : &e%{z}%&7."
       else:
           set {minutes} to (120-({flag}/60))
           message "&8[&6Totem&8] &cAucun totem en cours (%{minutes}%m)"
every 1 seconds:
   add 1 to {flag}

On skript load:
   set {flag} to 0
   if {flag} is equal to 3600:
       broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e1&7 heure."
       if {flag} is equal to 5400:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e30&7 minutes."
       if {flag} is equal to 6300:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e15&7 minutes."
       if {flag} is equal to 6900:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e5&7 minutes."
       if {flag} is equal to 7140:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e1&7 minutes."
       if {flag} is equal to 7200:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e5&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e4&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e3&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e2&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e1&7 seconde."
           set {x} to random number between -10000 and 10000
           set {y} to random number between 100 and 150
           set {z} to random number between -10000 and 10000
           set {coffre} to location at {x}, {y}, {z} in lobby
           set block at {coffre} to chest

           broadcast "&8[&6Annonce&8] &7Un totem vient d'apparaitre."

           loop all players:
               make loop-player execute command "/totem"

           loop blocks in radius 1 around {coffre}:
               if loop-block is a chest:
                   add 1 diamond to {coffre}'s inventory


           while {coffre} is set:
               wait 5 ticks
               loop blocks in radius 1 around {coffre}:
                   if loop-block is a chest:
                       if "%all items in inventory of loop-block%" is "<none>":
                           loop blocks in radius 1 around {coffre}:
                               if loop-block-2 is a chest:
                                   clear loop-block-2's inventory
                               loop all players in radius 5 around {coffre}'s location:
                                   wait 2 ticks
                                   add "&e%loop-player%&7" to {coffre.joueurs::*}
                                   set {_coffre.joueurs} to "%{coffre.joueurs::*}%"
                                   wait 1 tick
                                   replace all "and" with "&6et&e" in {_coffre.joueurs}
                                   if {_coffre.joueurs} is "<none>":
                                       broadcast "&8[&6Annonce&8] &cLe totem a été supprimé car il est vide."
                                   else:
                                       broadcast "&8[&6Annonce&8] &7Le totem a été trouvé par &e%{_coffre.joueurs}%&7."
                                   set block at {coffre} to air
                               delete {x}
                               delete {y}
                               delete {z}
                               wait 5 ticks
                               delete {coffre}
                               set {flag} to 0

 

qYFDlcN.png

  • 0
Posté(e)
Je ne suis pas sur mais peut être ça :

set x-location of {_coffre} to {x}
set y-location of {_coffre} to {y}
set z-location of {_coffre} to {z}

 

Je ne vois pas trop comment intégrer ça

  • 0
Posté(e)

Alors ça a marché, je me suis rendu compte que y'avait pas de boucle générale (car j'entrai jamais dans les conditions)

 

La j'ai bien le flag qui se modifie toute les secondes (visible avec le /totem) mais je n'entre jamais dans les conditions :

 

"f {flag} is equal to 3600:"

 

Le flag passe bien a 3600 normally et rien n'apparait dans le chat, aucun broadcast :c

 

command /totem:
   permission: totem.board
   permission message: &fCommande inconnue.
   trigger:
       if {coffre} is set:
           message "&8[&6Totem&8] &7Coordonees du totem&8 :"
           message "&8[&6Totem&8] &7X&8 : &e%{x}%&6, &7Y&8 : &e%{y}%&6, &7Z&8 : &e%{z}%&7."
       else:
           set {minutes} to (120-({flag}/60))
           message "&8[&6Totem&8] &cAucun totem en cours (%{minutes}%m)"
every 1 seconds:
   add 1 to {flag}

On skript load:
   while {flag} is greater than 0:
       if {flag} is equal to 60:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e1&7 heure."
       if {flag} is equal to 120:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e1&7 heure."
       if {flag} is equal to 130:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e30&7 minutes."
       if {flag} is equal to 140:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e15&7 minutes."
       if {flag} is equal to 150:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e5&7 minutes."
       if {flag} is equal to 160:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e1&7 minutes."
       if {flag} is equal to 170:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e5&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e4&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e3&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e2&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e1&7 seconde."

           set {x} to random number between -10000 and 10000
           set {y} to random number between 100 and 150
           set {z} to random number between -10000 and 10000
           set x-location of {coffre} to {x}
           set y-location of {coffre} to {y}
           set z-location of {coffre} to {z}

           set block at {coffre} to chest

           broadcast "&8[&6Annonce&8] &7Un totem vient d'apparaitre."

           loop all players:
               make loop-player execute command "/totem"

           loop blocks in radius 1 around {coffre}:
               if loop-block is a chest:
                   add 1 diamond to {coffre}'s inventory

           while {coffre} is set:
               wait 5 ticks
               loop blocks in radius 1 around {coffre}:
                   if loop-block is a chest:
                       if "%all items in inventory of loop-block%" is "<none>":
                           loop blocks in radius 1 around {coffre}:
                               if loop-block-2 is a chest:
                                   clear loop-block-2's inventory
                                   loop all players in radius 5 around {coffre}'s location:
                                       wait 2 ticks
                                       add "&e%loop-player%&7" to {coffre.joueurs::*}
                                       set {_coffre.joueurs} to "%{coffre.joueurs::*}%"
                                       wait 1 tick
                                       replace all "and" with "&6et&e" in {_coffre.joueurs}
                                       if {_coffre.joueurs} is "<none>":
                                           broadcast "&8[&6Annonce&8] &cLe totem est delete car il est vide."
                                       else:
                                           broadcast "&8[&6Annonce&8] &7Le totem a été trouvé par &e%{_coffre.joueurs}%&7."
                           set block at {coffre} to air
                           delete {x}
                           delete {y}
                           delete {z}
                           wait 5 ticks
                           delete {coffre}
       set {flag} to 0

 

(les valeurs des boucles sont volontairement basse pour entrer facilement dans les conditions pour tester)

 

Je précise que j'ai uniquement le Skript.jar

  • 0
Posté(e)

Regarde bien tu as mis set {flag} to 0 à la fin de ton code donc ça remet tout le temps la variable à 0 x)

Pk tu met is "<none>" au lieu de isn't set ?

Le loop-block sert à détecter le coffre? Si oui pourquoi tu utilise pas

if all items in inventory of block at {chest} isn't set:

Au moins tu es pas obligé de utiliser loop all block in..

Ducoup tu dois mettre

if block at {chest} is a chest:

et

clear inventory of block at {chest}

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

Ca m'as pas mal aidé, mais dès que j'active le plugin il y a un bug chelou :o

 

On reste en logging in, sans pouvoir se connecter, je dois avoir fait une bêtise

 

command /totem:
   permission: totem.board
   permission message: &fCommande inconnue.
   trigger:
       if {coffre} is set:
           message "&8[&6Totem&8] &7Coordonees du totem&8 :"
           message "&8[&6Totem&8] &7X&8 : &e%{x}%&6, &7Y&8 : &e%{y}%&6, &7Z&8 : &e%{z}%&7."
       else:
           set {minutes} to (120-({flag}/60))
           message "&8[&6Totem&8] &cAucun totem en cours (%{minutes}%m)"
every 1 seconds:
   add 1 to {flag}

On skript load:
   while {flag} is greater than 0:
       if {flag} is equal to 60:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e1&7 heure."
       if {flag} is equal to 120:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e1&7 heure."
       if {flag} is equal to 130:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e30&7 minutes."
       if {flag} is equal to 140:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e15&7 minutes."
       if {flag} is equal to 150:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e5&7 minutes."
       if {flag} is equal to 160:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e1&7 minutes."
       if {flag} is equal to 170:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e5&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e4&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e3&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e2&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e1&7 seconde."

           set {x} to random number between -10000 and 10000
           set {y} to random number between 100 and 150
           set {z} to random number between -10000 and 10000
           set x-location of {coffre} to {x}
           set y-location of {coffre} to {y}
           set z-location of {coffre} to {z}

           set block at {coffre} to chest

           broadcast "&8[&6Annonce&8] &7Un totem vient d'apparaitre."

           loop all players:
               make loop-player execute command "/totem"

           loop blocks in radius 1 around {coffre}:
               if loop-block is a chest:
                   add 1 diamond to {coffre}'s inventory

           while {coffre} is set:
               wait 5 ticks
               if all items in inventory of block at {chest} isn't set:
                   if block at {chest} is a chest:
                       clear inventory of block at {chest}
                       loop all players in radius 5 around {coffre}'s location:
                           wait 2 ticks
                           add "&e%loop-player%&7" to {coffre.joueurs::*}
                           set {_coffre.joueurs} to "%{coffre.joueurs::*}%"
                           wait 1 tick
                           replace all "and" with "&6et&e" in {_coffre.joueurs}
                           if {_coffre.joueurs} is "<none>":
                               broadcast "&8[&6Annonce&8] &cLe totem est delete car il est vide."
                           else:
                               broadcast "&8[&6Annonce&8] &7Le totem a été trouvé par &e%{_coffre.joueurs}%&7."
                       set block at {coffre} to air
                       delete {x}
                       delete {y}
                       delete {z}
                       wait 5 ticks
                       delete {coffre}
                       set {flag} to 0

  • 0
Posté(e)

on skript load:
   while {flag} is greater than 0:
       wait 5 tick
       if {flag} is 60:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e1&7 heure."
       else if {flag} is 120:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e1&7 heure."
       else if {flag} is 130:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e30&7 minutes."
       else if {flag} is 140:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e15&7 minutes."
       else if {flag} is 150:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e5&7 minutes."
       else if {flag} is 160:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e1&7 minutes."
       else if {flag} is 170:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e5&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e4&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e3&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e2&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e1&7 seconde."
           set {_x} to random number between -10000 and 10000
           set {_y} to random number between 100 and 150
           set {_z} to random number between -10000 and 10000
           set x-location of {coffre} to {x}
           set y-location of {coffre} to {y}
           set z-location of {coffre} to {z}
           wait 1 second
           set block at {coffre} to chest
           broadcast "&8[&6Annonce&8] &7Un totem vient d'apparaitre."
           loop all players:
               make loop-player execute command "/totem"
           if block at {coffre} is a chest:
               add 1 diamond to {coffre}'s inventory
           while {coffre} is set:
               wait 5 ticks
               if block at {coffre} is a chest:
                   if all items in inventory of block at {coffre} isn't set:
                       loop all players in radius 5 around {coffre}'s location:
                           wait 2 ticks
                           add "&e%loop-player%&7" to {_coffre.joueurs::*}
                       set {_coffre.joueurs} to "%{_coffre.joueurs::*}%"
                       replace all "and" with "&6et&e" in {_coffre.joueurs}
                       if {_coffre.joueurs} isn't set:
                           broadcast "&8[&6Annonce&8] &cLe totem est delete car il est vide."
                       else:
                           broadcast "&8[&6Annonce&8] &7Le totem a été trouver par &e{_coffre.joueurs}%&7."
                       set block at {coffre} to air
                       clear {_coffre}
                       set {flag} to 0

J'ai modifier beaucoup de trucs et je l'ai optimiser dis moi si ça marche la ;)

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

Merci a toi, le code renvois une seule petite erreur :

 

Z11TXv9.png

J'ai modifié la ligne 63 pour :

 

broadcast "&8[&6Annonce&8] &7Le totem a été trouvé par &e %{_coffre.joueurs}% "

 

et même message :/

 

J'ai réussi à corriger l'erreur, tout se lag, le flag défile bien mais aucun broadcast / aucune action du plugin on dirait que ça entre pas dans les conditions elseif

 

EDIT = J'ai compris l'erreur, enfait la boucle while censée être infinie et assurer le loop du plugin ne fonctionne pas, on entre jamais dedans

  • 0
Posté(e)

Alors voilà,

 

J'ai réussi a activer cette boucle, maintenant le seul problème est que le coffre n'est pas set à la position aléatoire choisie,

du coup impossible d'utiliser le /totem (vu que {coffre} is not set)

 

Je bloque la dessus j vais me coucher la nuit porte conseil :p

 

command /totem:
   permission: totem.board
   permission message: &fCommande inconnue.
   trigger:
       if {coffre} is set:
           message "&8[&6Totem&8] &7Coordonees du totem&8 :"
           message "&8[&6Totem&8] &7X&8 : &e%{x}%&6, &7Y&8 : &e%{y}%&6, &7Z&8 : &e%{z}%&7."
       else:
           set {minutes} to (120-({flag}/60))
           message "&8[&6Totem&8] &cAucun totem en cours (%{flag}%s)"
every 1 seconds:
   add 1 to {flag}

on skript start:
   set {true} to 1
   while {true} = 1:
       wait 5 tick
       if {flag} is 60:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e2&7 heure."
           wait 1 seconds
       else if {flag} is 90:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e1&7 heure."
           wait 1 seconds
       else if {flag} is 100:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e30&7 minutes."
           wait 1 seconds
       else if {flag} is 140:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e15&7 minutes."
           wait 1 seconds
       else if {flag} is 150:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e5&7 minutes."
           wait 1 seconds
       else if {flag} is 160:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e1&7 minutes."
           wait 1 seconds
       else if {flag} is 170:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e5&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e4&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e3&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e2&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e1&7 seconde."
           set {_x} to random number between -10000 and 10000
           set {_y} to random number between 100 and 150
           set {_z} to random number between -10000 and 10000
           set x-location of {coffre} to {x}
           set y-location of {coffre} to {y}
           set z-location of {coffre} to {z}
           wait 1 seconds
           set block at {coffre} to chest
           broadcast "&8[&6Annonce&8] &7Un totem vient d'apparaitre (%{_x}%,%{_y}%,%{_z}%)."
           loop all players:
               make loop-player execute command "/totem"
           if block at {coffre} is a chest:
               add 1 diamond to {coffre}'s inventory
           while {coffre} is set:
               wait 5 ticks
               if block at {coffre} is a chest:
                   if all items in inventory of block at {coffre} isn't set:
                       loop all players in radius 5 around {coffre}'s location:
                           wait 2 ticks
                           add "&e%loop-player%&7" to {coffre.joueurs::*}
                       set {coffre.joueurs} to "%{coffre.joueurs::*}%"
                       replace all "and" with "&6et&e" in {coffre.joueurs}
                       if {coffre.joueurs} isn't set:
                           broadcast "&8[&6Annonce&8] &cLe totem est delete car il est vide."
                       else:
                           broadcast "&8[&6Annonce&8] &7Le totem a été trouver par &e%{_coffre.joueurs}%&7."
                       set block at {coffre} to air
                       clear {coffre}
                       clear {flag}
on skript stop:
  clear {flag}

 

xwL5mKJ.png

  • 0
Posté(e)

Désoler j'avais fais une petite erreur x:

command /totem:
   permission: totem.board
   permission message: &fCommande inconnue.
   trigger:
       if {coffre} is set:
           message "&8[&6Totem&8] &7Coordonees du totem&8 :"
           message "&8[&6Totem&8] &7X&8 : &e%{x}%&6, &7Y&8 : &e%{y}%&6, &7Z&8 : &e%{z}%&7."
       else:
           set {minutes} to (120-({flag}/60))
           message "&8[&6Totem&8] &cAucun totem en cours (%{flag}%s)"
every 1 seconds:
   add 1 to {flag}

on skript start:
   set {true} to 1
   while {true} = 1:
       wait 5 tick
       if {flag} is 60:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e2&7 heure."
           wait 1 seconds
       else if {flag} is 90:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e1&7 heure."
           wait 1 seconds
       else if {flag} is 100:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e30&7 minutes."
           wait 1 seconds
       else if {flag} is 140:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e15&7 minutes."
           wait 1 seconds
       else if {flag} is 150:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e5&7 minutes."
           wait 1 seconds
       else if {flag} is 160:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e1&7 minutes."
           wait 1 seconds
       else if {flag} is 170:
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e5&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e4&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e3&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e2&7 secondes."
           wait 1 seconds
           broadcast "&8[&6Annonce&8] &7Un totem va spawn dans &e1&7 seconde."
           set {_x} to random number between -10000 and 10000
           set {_y} to random number between 100 and 150
           set {_z} to random number between -10000 and 10000
           set x-location of {coffre} to {_x}
           set y-location of {coffre} to {_y}
           set z-location of {coffre} to {_z}
           wait 1 seconds
           set block at {coffre} to chest
           broadcast "&8[&6Annonce&8] &7Un totem vient d'apparaitre (%{_x}%,%{_y}%,%{_z}%)."
           loop all players:
               make loop-player execute command "/totem"
           if block at {coffre} is a chest:
               add 1 diamond to {coffre}'s inventory
           while {coffre} is set:
               wait 5 ticks
               if block at {coffre} is a chest:
                   if all items in inventory of block at {coffre} isn't set:
                       loop all players in radius 5 around {coffre}'s location:
                           wait 2 ticks
                           add "&e%loop-player%&7" to {coffre.joueurs::*}
                       set {coffre.joueurs} to "%{coffre.joueurs::*}%"
                       replace all "and" with "&6et&e" in {coffre.joueurs}
                       if {coffre.joueurs} isn't set:
                           broadcast "&8[&6Annonce&8] &cLe totem est delete car il est vide."
                       else:
                           broadcast "&8[&6Annonce&8] &7Le totem a été trouver par &e%{_coffre.joueurs}%&7."
                       set block at {coffre} to air
                       clear {coffre}
                       clear {flag}

on skript stop:
  clear {flag}

  • 0
Posté(e)

Je vais essayer de te refaire ton skript à ma manière... ;) Je ne garantis rien :p !

 

EDIT: Normalement ça marche ;

 

variables:
   {true} = 1
   {false} = 0
   {flag} = 0
   {assec} = 0
   {sec} = 5


options:
   prefix : &8[&6Annonce&8]
   message2h : &7Un totem va spawn dans &e2&7 heure.
   message1h : &7Un totem va spawn dans &e1&7 heure.
   message30min : &7Un totem va spawn dans &e30&7 minutes.
   message15min : &7Un totem va spawn dans &e15&7 minutes.
   message5min : &7Un totem va spawn dans &e5&7 minutes.
   message1min : &7Un totem va spawn dans &e1&7 minutes.
   messageSec : &7Un totem va spawn dans &e%{sec}%&7 secondes.

command /totem:
   permission: totem.board
   permission message: &fCommande inconnue.
   trigger:
       if {coffre} is set:
           message "&8[&6Totem&8] &7Coordonées du totem&8 :"
           message "&8[&6Totem&8] &7X&8 : &e%{x}%&6, &7Y&8 : &e%{y}%&6, &7Z&8 : &e%{z}%&7."
       else:
           message "&8[&6Totem&8] &cAucun totem en cours"

every 1 seconds:
   if {assec} is 1:
       remove 1 to {sec}
   else:
       add 1 to {flag}

on skript start:
   set {true} to 1
   while {true} = 1:
       wait 5 tick
       if {flag} is 60:
           broadcast "{@prefix} {@message2h}"
           wait 1 seconds
       else if {flag} is 90:
           broadcast "{@prefix} {@message1h}"
           wait 1 seconds
       else if {flag} is 100:
           broadcast "{@prefix} {@message30min}"
           wait 1 seconds
       else if {flag} is 140:
           broadcast "{@prefix} {@message15min}"
           wait 1 seconds
       else if {flag} is 150:
           broadcast "{@prefix} {@message5min}"
           wait 1 seconds
       else if {flag} is 160:
           broadcast "{@prefix} {@message1min}"
           wait 1 seconds
       else if {flag} is 170:
           set {assec} to 1
           if {sec} is 0:
               set {assec} to 1
               set {sec} to 5
               broadcast "{@prefix} {@messageSec}"
                   set {_x} to random number between -10000 and 10000
                   set {_y} to random number between 100 and 150
               set {_z} to random number between -10000 and 10000
                 set x-location of {coffre} to {_x}
                set y-location of {coffre} to {_y}
               set z-location of {coffre} to {_z}
                  wait 1 seconds
               set block at {coffre} to chest
               broadcast "&8[&6Annonce&8] &7Un totem vient d'apparaitre (%{_x}%,%{_y}%,%{_z}%)."
               loop all players:
                   make loop-player execute command "/totem"
               if block at {coffre} is a chest:
                   add 1 diamond to {coffre}'s inventory
               while {coffre} is set:
                   wait 5 ticks
                   if block at {coffre} is a chest:
                       if all items in inventory of block at {coffre} isn't set:
                           loop all players in radius 5 around {coffre}'s location:
                               wait 2 ticks
                               add "&e%loop-player%&7" to {coffre.joueurs::*}
                           set {coffre.joueurs} to "%{coffre.joueurs::*}%"
                           replace all "and" with "&6et&e" in {coffre.joueurs}
                           if {coffre.joueurs} isn't set:
                               broadcast "&8[&6Annonce&8] &cLe totem est delete car il est vide."
                           else:
                               broadcast "&8[&6Annonce&8] &7Le totem a été trouver par &e%{_coffre.joueurs}%&7."
                           set block at {coffre} to air
                           clear {coffre}
                           clear {flag}

on skript stop:
  clear {flag}

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

Cela ne fonctionne pas ça plante la boucle et fais une boucle infinie de création du coffre :/

 

Je suis repartie de la version d'avant ou le soucis était juste le spawn du coffre

  • 0
Posté(e)

J'ai code finalement la fonctionnalité en java, le location at est bugé avec script et rend possible l'établissement de location uniquement relativement à une entité. Donc imposible de faire spawn qqchose de cette manière pour moi, si vous avez des idée je suis preneur

  • 0
Posté(e)

Possible de faire un systeme de force start genre quand on fait /start totem ou autre commande

sa fait spawn le coffre car attentre 2H ses long

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