Aller au contenu
HyperKut

Problème (duplication de messages loop-player)

Messages recommandés

Bonjour,

j'ai établi un long Skript où il y a démarrage d'une partie.

Les messages sont envoyés aux joueurs connectés, et cela fonctionne très bien les messages sont reçus en même temps par tous les joueurs.

Cependant, lorsque le Skript recommence en boucle plus de deux fois, les joueurs reçoivent encore les messages mais ceux-ci sont dupliqués x2, puis x4 et cela fait bug tout le serveur.

Je voudrai que le Skript reparte du début (c'est déjà fait), MAIS que les joueurs reçoivent les message x1 et pas dupliqué je ne sais pas combien de fois.

J'ai tout essayé, et je n'arrive pas à corriger ce problème.

NB : Le Skript ne contient aucune erreur de code et il se charge correctement.

 

Merci d'avance.

 

Code :

 

Contenu masqué

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

 

Vidéo du problème :

 

Contenu masqué

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

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai parcouru ton code, à première vue rien d'étonnant ou de problématique, mais j'ai pu manquer quelque chose.

Penses-tu bien à supprimer/réinitialiser toutes tes variables à la fin d'une partie ? Si les messages doublent à chaque parties relancées, le problème vient peut-être de là.

Un peu plus de détail sur les messages : ils sont simplement répétés ? est-ce qu'ils sont tous bien à leurs place (ils apparaissent au bon moment, mais en double/quadruple,... Ou alors ils apparaissent de manière aléatoire, au mauvais moment.. ) ? Est-ce que cela arrive avec tout les messages, ou seulement ceux de début/milieu/fin de partie ? Est-ce que les autres instructions sont elles aussi répétées (les playsounds, etc..) ?

Une autre question, comment fait-tu pour régler le problème et relancer une partie normale ? Est-ce qu'il suffit de recharger le skript (avec /sk reload jeu.sk) ? Ou alors il faut carrément relancer le serveur ? À moins que tu n'ai jamais réussi à le régler ? :o

 

Je vois pas trop d'où peut venir l'erreur actuellement, peut-être qu'avec tes réponses on avancera :)

PS: désolé si ça fait un peu interrogatoire, mais je préfère poser un max de question d'un coup, et dans le tas de réponse il y en a toujours des qui sont utiles ;)

Partager ce message


Lien à poster
Partager sur d’autres sites
J'ai parcouru ton code, à première vue rien d'étonnant ou de problématique, mais j'ai pu manquer quelque chose.

Penses-tu bien à supprimer/réinitialiser toutes tes variables à la fin d'une partie ? Si les messages doublent à chaque parties relancées, le problème vient peut-être de là.

Un peu plus de détail sur les messages : ils sont simplement répétés ? est-ce qu'ils sont tous bien à leurs place (ils apparaissent au bon moment, mais en double/quadruple,... Ou alors ils apparaissent de manière aléatoire, au mauvais moment.. ) ? Est-ce que cela arrive avec tout les messages, ou seulement ceux de début/milieu/fin de partie ? Est-ce que les autres instructions sont elles aussi répétées (les playsounds, etc..) ?

Une autre question, comment fait-tu pour régler le problème et relancer une partie normale ? Est-ce qu'il suffit de recharger le skript (avec /sk reload jeu.sk) ? Ou alors il faut carrément relancer le serveur ? À moins que tu n'ai jamais réussi à le régler ? :eek:

 

Je vois pas trop d'où peut venir l'erreur actuellement, peut-être qu'avec tes réponses on avancera :)

PS: désolé si ça fait un peu interrogatoire, mais je préfère poser un max de question d'un coup, et dans le tas de réponse il y en a toujours des qui sont utiles ;)

 

Bonjour, merci de ta réponse et merci de t'être penché sur mon code.

En ce qui concerne les variables, le problème ne vient pas de là je pense car oui elles sont clear en fin de partie mais le bug des messages survient en cours de partie et pas lors de l'arrêt de celle-ci. Le problème des messages arrive à partir du moment où il y a plus d'un joueur connecté. Quand je test le code en étant tout seul sur le serveur il n'y a aucun bug, les messages apparaissent correctement et ne sont pas dupliqués. Cependant, lorsqu'un deuxième joueur (ou plus) est connecté, les messages s'envoient en dupliqués x2, puis x4 etc et de plus en plus. En ce qui concerne l'ordre des messages, ils sont envoyés dans le bon ordre, et dans le bon temps, mais ils sont dupliqués, cela arrive avec tous les messages. Il n'y a que les messages qui sont répétés, pas de playsound ni rien d'autre. Pour arrêter la partie où elle s'arrête seule grâce à la détection de la réussite de l'objectif, où il faut reload le skript, mais je ferai un système avec une variable pour l'arrêter avec une commande.

Je ne sais pas d'où cela peut venir, mais si quelqu'un sait, ça m'arrangerai vraiment.

Merci

 

Voici une vidéo explicative pour mieux comprendre mon problème :

Contenu masqué

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

Partager ce message


Lien à poster
Partager sur d’autres sites

D'accord. Merci pour la vidéo c'est bien plus clair. Mais vu tes réponses j'ai du mal à voir d'où peut venir l'erreur.

Ça ne résolverait pas l'erreur, mais peut être qu'au lieu de passer par un "loop all-players", tu pourrais faire simplement un "broadcast", et pour la commande /playsound, remplacer le "%{_p}%" par "@a" pour viser tout les joueurs en même temps. Tout ceci sans passer par la fonction temprestant() mais bien directement dans le "every 30 seconds". Encore une fois on ne ferai que contourner l'erreur, et ça ne fonctionnerai que pour le temps restant et le manque de joueur. Mais c'est toujours ça, car sinon je ne vois absolument pas où quelque chose est mal fait.

Partager ce message


Lien à poster
Partager sur d’autres sites
D'accord. Merci pour la vidéo c'est bien plus clair. Mais vu tes réponses j'ai du mal à voir d'où peut venir l'erreur.

Ça ne résolverait pas l'erreur, mais peut être qu'au lieu de passer par un "loop all-players", tu pourrais faire simplement un "broadcast", et pour la commande /playsound, remplacer le "%{_p}%" par "@a" pour viser tout les joueurs en même temps. Tout ceci sans passer par la fonction temprestant() mais bien directement dans le "every 30 seconds". Encore une fois on ne ferai que contourner l'erreur, et ça ne fonctionnerai que pour le temps restant et le manque de joueur. Mais c'est toujours ça, car sinon je ne vois absolument pas où quelque chose est mal fait.

 

Oui mais malheureusement mon skript ne serait pas entièrement utilisable...

C'est un mystère, je ne sais vraiment pas comment faire pour résoudre ce problème. Il faudrait que quelqu'un teste le code et qu'il me dise si ça lui fait pareil, mais là j'ai tout essayé et je ne vois pas..

Partager ce message


Lien à poster
Partager sur d’autres sites

Dis moi ce qu'il te dis dans le chat (normalement ton pseudo)

Contenu masqué

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

Partager ce message


Lien à poster
Partager sur d’autres sites
Dis moi ce qu'il te dis dans le chat (normalement ton pseudo)

Contenu masqué

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

 

Effectivement le broadcast me donne mon pseudo.

Par contre, quand il y a deux joueurs connectés, cela me donne les noms des deux joueurs connectés (sur un seul et même joueur).

 

Et ce qui est très etonnant, regarde la disposition des messages, celle-ci est extrêmement bizarre car elle est différente sur 2 joueurs, pourtant le code est le même pour les deux, j'ai simplement rajouté le broadcast que tu m'as donné.

 

Screen :

Contenu masqué

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

Partager ce message


Lien à poster
Partager sur d’autres sites
Effectivement le broadcast me donne mon pseudo.

Par contre, quand il y a deux joueurs connectés, cela me donne les noms des deux joueurs connectés (sur un seul et même joueur).

 

Et ce qui est très etonnant, regarde la disposition des messages, celle-ci est extrêmement bizarre car elle est différente sur 2 joueurs, pourtant le code est le même pour les deux, j'ai simplement rajouté le broadcast que tu m'as donné.

 

Screen :

Contenu masqué

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

C'est normal ça vu que les joueurs ne recoivent pas les messages en même temps

Sinon est ce qu'il envois 2 fois ton pseudo ?

Partager ce message


Lien à poster
Partager sur d’autres sites
Non il envoie le pseudo qu'une seule fois.

Il envois le pseudo qu'une seule fois mais il envois le message 2 fois ? Si oui c'est vraiment bizarre :/

Partager ce message


Lien à poster
Partager sur d’autres sites
Il envois le pseudo qu'une seule fois mais il envois le message 2 fois ? Si oui c'est vraiment bizarre :/

 

Bah le message qu'il envoit c'est les noms de tous les joueurs, regarde le screen que j'ai envoyé

Partager ce message


Lien à poster
Partager sur d’autres sites

Essaye ce code :

[spoiler=Skript]

Contenu masqué

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

 

 

EDIT: j'ai tout supprimé le message sans faire exprès :'(

Partager ce message


Lien à poster
Partager sur d’autres sites
Essaye ce code:

[spoiler=Skript]

Contenu masqué

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

 

 

Je l'ai optimisé etc et je pense que le problème vient du fait que tu exécute la commande /start dans un loop all players donc si il y a 2 joueurs la commande est exécuté 2 fois donc le problème vient de là.

 

Merci beaucoup, je testerai dans l'après-midi et je te dirai ce qu'il en est.

ÉDIT : Oui, j'utilise Sublime Text que je trouve bien plus performant, et j'ai le thème et le langage Skript installé ;)

 

EDIT 2 : J'ai effectivement 2 erreurs qui ne m'ont pas l'air très graves, les voici :

Screen :

Contenu masqué

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

 

EDIT 3 : Mis à part l'erreur, tout à l'air de fonctionner correctement, les messages ne sont plus dupliqués.

Partager ce message


Lien à poster
Partager sur d’autres sites
Tu as quel version de SkQuery ?

 

J'ai la version 3.0 de SkQuery.

 

Il me semble que c'est à cause du "wait ..." dans une loop cela cause pas mal de problème :/

 

Peut-être, je n'en sais rien...

Partager ce message


Lien à poster
Partager sur d’autres sites
Il me semble que c'est à cause du "wait ..." dans une loop cela cause pas mal de problème :/

Ah oui effectivement je pensais avoir enlever tout les wait dans les loop mais il y en a encore un

J'ai éditer mon message

Sinon pour les 2 erreurs c'est vraiment bizarre.. tu as quel version de Spigot ?

Partager ce message


Lien à poster
Partager sur d’autres sites
Ah oui effectivement je pensais avoir enlever tout les wait dans les loop mais il y en a encore un

J'ai éditer mon message

Sinon pour les 2 erreurs c'est vraiment bizarre.. tu as quel version de Spigot ?

 

Super, merci.

Par contre je comprend pas pourquoi la condition n'est pas comprise, SkQuery et Skript sont à jour pourtant. J'ai la dernière version de Skript.

Je ne suis pas sur Spigot, mais sous KCauldron 1647.201

Partager ce message


Lien à poster
Partager sur d’autres sites
Super, merci.

Par contre je comprend pas pourquoi la condition n'est pas comprise, SkQuery et Skript sont à jour pourtant. J'ai la dernière version de Skript.

Je ne suis pas sur Spigot, mais sous KCauldron 1647.201

La dernière version de Skript donc la dev27f ?

Si tu as pris Skript sur Bukkit, il est plus mis à jour depuis longtemps donc je te conseille la dev25 de Bensku

Contenu masqué

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

Partager ce message


Lien à poster
Partager sur d’autres sites
La dernière version de Skript donc la dev27f ?

Si tu as pris Skript sur Bukkit, il est plus mis à jour depuis longtemps donc je te conseille la dev25 de Bensku

Contenu masqué

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

 

Je suis en 1.7.10, et la version Skript que tu m'as donné n'est pas reconnue/compatible avec mon serveur.

Partager ce message


Lien à poster
Partager sur d’autres sites
Je suis en 1.7.10, et la version Skript que tu m'as donné n'est pas reconnue/compatible avec mon serveur.

Ah :/ fais /ver Skript , il te dit qu'elle version ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Est ce que tu as la même erreur avec ce code (pour test) :

Contenu masqué

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

Partager ce message


Lien à poster
Partager sur d’autres sites
Est ce que tu as la même erreur avec ce code (pour test) :

Contenu masqué

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

 

Oui j'ai exactement la même erreur..

EDIT : J'ai légèrement modifié ton code pour faire en sorte de ne plus avoir d'erreur, et ma modification s'est montrée concluante.

A présent, je ne distingue plus de bug de messages, et le Skript se déroule exactement comme je l'avais souhaité. Merci beaucoup !

 

Code modifié :

Contenu masqué

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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