Aller au contenu
  • 0

Problème avec un Skript de countdown (KIT)


Question

Posté(e)

VERSION SERVEUR : 1.8.8 spigot

 

Bonjour ou bonsoir,

Je suis entrain de coder mon serveur et j'ai un problème avec mon skript qui permet d'avoir un kit avec un sort, quand on cliques sur l'item du kit on active le sors pendant 5 secondes et ensuite une action bar s'affiche avec un countdown de 55s.

 

Le code :

L'effet quand on clic droit sur l'item avec countdown

#EFFET CLIC DROIT

on rightclick:

# KIT GOLEM
   if name of tool of player is "&cGolem &7&l>>Clic droit<<":
       if "%region at player%" contains "ffa":
           if {cd.%player%} is not set:
               set {cd.%player%} to true
               run player command "//hsphere 4 2" as op
               wait 5 seconds
               run player command "//undo" as op
               set {pouvoirs.%player%.lastused} to now
               wait 1 tick
               set {_time} to 55
               while difference between {pouvoirs.%player%.lastused} and now is less than 55 seconds:
                   if "%region at player%" contains "ffa":
                       set action bar of player to "&6Golem : &e&o%{_time}%&e seconde(s) !"
                       wait 1 second
                       remove 1 from {_time}
                       {_time} <= 0:
                           clear {cd.%player%}
                   else:
                       wait 1 tick
                       remove 55 from {_time}


       else:
           message "&cVous ne pouvez pas faire ça ici."

 

Le reset des variables à la mort :

on death of player:
    clear {cd.%player%}

 

Le problème :

 

Si on active le sort que l'on attend le début du countdown, l'action bar s'active bien mais si l' on meurt pendant le countdown au respawn le joueur crash avec cette erreur

 

Internal Exception: io.netty.handler.timeout.ReadTimeoutException

 

 

Il n y a aucune erreur sur la console. A part le faite que le serveur ne répond pas au commande jusqu'a la perte de connexion du joueur.

 

J'ai également cette erreur qui fait lag le serveur mais sans disconnect les joueurs

[21:21:58 WARN]: Atthreius moved wrongly!

 

 

Voila merci d'avoir pris le temps de lire mon post, en espérant trouver une solution ..

4 réponses à cette question

Messages recommandés

  • 0
Posté(e)

Je n'ai pas test mais essaye ceci :

[....]
while difference between {pouvoirs.%player%.lastused} and now is less than 55 seconds:
    if {cd.%player%} is true:
         [suite du code]
    else: 
         delete {pouvoirs.%player%.lastused}
         stop # ou exit loop

  • 0
Posté(e)

Je n'ai pas testé le code, mais normalement il doit marcher. Je t'ai enlevé une variable qui ne sert à rien et j'ai ré-agencé ton Skript.

Dis moi si tu comprends pas quelque chose, ou si il y a une erreur !

#EFFET CLIC DROIT
on rightclick:
# KIT GOLEM
   if name of tool of player is "&cGolem &7&l>>Clic droit<<":
       if "%region at player%" doesn't contain "ffa":
           message "&cVous ne pouvez pas faire ça ici."
           stop
       if {pouvoirs.%player%.lastused} is not set:
           #
           run player command "//hsphere 4 2" as op
           set {pouvoirs.%player%.lastused} to now
           wait 5 seconds
           run player command "//undo" as op
           # ATTENTION ! Si le joueur se déco pendant ce moment :
           # Le undo ne va pas se faire
           set {_time} to 55
           loop 55 times:
               if "%region at player%" contains "ffa":
                   set action bar of player to "&6Golem : &e&o%{_time}%&e seconde(s) !"
               else:
                   clear {pouvoirs.%player%.lastused}
                   stop
               add -1 to {_time}
               wait 1 second
           clear {pouvoirs.%player%.lastused}
       stop

PS : J'ai enlevé le While qui est beaucoup trop lourd pour rien : Le skript doit à chaque seconde vérifier si la condition est vérifiée avant de relancer la boucle : Un loop revient au même en plus léger !

  • 0
Posté(e)
Je n'ai pas testé le code, mais normalement il doit marcher. Je t'ai enlevé une variable qui ne sert à rien et j'ai ré-agencé ton Skript.

Dis moi si tu comprends pas quelque chose, ou si il y a une erreur !

#EFFET CLIC DROIT
on rightclick:
# KIT GOLEM
   if name of tool of player is "&cGolem &7&l>>Clic droit<<":
       if "%region at player%" doesn't contain "ffa":
           message "&cVous ne pouvez pas faire ça ici."
           stop
       if {pouvoirs.%player%.lastused} is not set:
           #
           run player command "//hsphere 4 2" as op
           set {pouvoirs.%player%.lastused} to now
           wait 5 seconds
           run player command "//undo" as op
           # ATTENTION ! Si le joueur se déco pendant ce moment :
           # Le undo ne va pas se faire
           set {_time} to 55
           loop 55 times:
               if "%region at player%" contains "ffa":
                   set action bar of player to "&6Golem : &e&o%{_time}%&e seconde(s) !"
               else:
                   clear {pouvoirs.%player%.lastused}
                   stop
               add -1 to {_time}
               wait 1 second
           clear {pouvoirs.%player%.lastused}
       stop

PS : J'ai enlevé le While qui est beaucoup trop lourd pour rien : Le skript doit à chaque seconde vérifier si la condition est vérifiée avant de relancer la boucle : Un loop revient au même en plus léger !

 

Il fonctionne correctement un grand merci à toi !

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