Aller au contenu
tiradorus

Demande d'un skript de file d'attente

Messages recommandés

Bonjour ou bonsoir à tous!

Je poste ici un appel à l'aide car je n'ai pas réussi par mes propres moyens, après plusieurs ... jours? D'essais, de créer un skript de file d'attente. Voici le plan actuel:
J'essaie de créer un système de file d'attente afin que les joueurs puissent rejoindre ou non une arène en fonction du nombre de joueurs ayant aussi rejoint la file d'attente.

Exemple:

Serveur de type Pvp/semi-Rp

Les joueurs jouent normalement, dans un monde survie ou aventure, plusieurs mondes différents et font leur vie sur minecraft.
L'un d'entre eux décide de vouloir se faire une partie d'arène nommée 'Chanteciel'. Le nombre minimal de joueur requis est de 10.
Il entre alors la commande "/chanteciel" qui le place dans la file d'attente de l'arène voulue.
Il continue de jouer normalement (build, exp etc etc).

Le temps passe, et finalement, 9 autres joueurs ont eux aussi entrés la commande "/chanteciel", la file d'attente est donc complète.
Tout les joueurs ayant entrés la commande (lorsque la file est pleine) utilisent automatiquement une autre commande qui les envoie vers cette arène (/warp chanteciel) ! Il est important que ce soit le joueur qui entre la commande de warp, et non la console !
La file d'attente reste à 10 ou plus, durant environ 2 minutes, après quoi elle repasse à 0 pour préparer une autre équipe. (Si un joueur arrive juste après le lancement, qu'il puisse quand même rejoindre l'arène fraîchement lancée)

Afin de protéger le système, il faudrait aussi que la file d'attente perde un joueur si ce dernier était dans la file d'attente et déconnecte
Afin de protéger le système, il faudrait en plus faire en sorte que la commande soit double (/chanteciel 1ere fois = te met dans la file, 2eme fois = te retire de la file)

 

J'ai déjà commencé à coder un skript, mais malgrès toute mes tentatives rien n'y fait, la file ne se remplit pas, Voici mon skript actuel le plus élaboré:

Contenu masqué

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

Comme vous pourrez le constater, il n'y a pas la commande à 10 joueurs, tout simplement car je n'ai pas réussi à l'implanter
Le load du skript fonctionne et n’émet aucunes erreurs, cependant la commande ne renvoie aucuns messages aux joueurs :S 
Sur le dashboard serveur j'ai simplement cela:

19:19:32: NomJoueur issued server command: /chanteciel
19:19:32: /chanteciel
 

Voilà merci d'avoir lu, désolé c'est clairement pas une demande facile ^^'
Serveur en 1.8.8
Version de skript: Skript 2.2-dev27

Modifié par tiradorus

Partager ce message


Lien à poster
Partager sur d’autres sites

La variable {ChanteCiel::*} doit être vide, ducoup il rentre pas dans la boucle et n'exécute pas le code, de plus Tu n'es pas obligé de faire un loop, enlève le juste et tout devrais marcher 😄 (Oublie pas mettre aussi les tabulations)

 

Encore autre chose x), vu que pour s'avoir si la partie est déjà lancée tu vérifie si il y a dix joueurs dans la liste et que tu utilise le même pour s'avoir si la partie commence, la partie ne va jamais commencé et le message seras "&eL'arène est déjà en cours, vous allez être téléportés dans un début de partie!"

Contenu masqué

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

 

Modifié par Yghore

Partager ce message


Lien à poster
Partager sur d’autres sites

Je vois
Merci pour ta réponse, en revanche skript ne peut hélas pas déterminer quand la partie sera terminée ou pas, car tout se joue sur un serveur parallèle 😕 ... Oui j'ai un très large serveur Bungeecord, c'est pourquoi j'avais pensé à un skript qui fermerai la variable au bout de 2 minutes, après avoir été une fois à 10.

On aurait donc quelque chose comme celà: 

 

Contenu masqué

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


Avant de continuer, je ne suis pas certain du mode des variables, c'est nouveau pour moi ... tu m'as parlé d'une variable vide, mais je n'ai rien touché aux variables mis à part ce skript (mes autres skripts n'utilisent pas de variables pour fonctionner)
Et j'ai vérifié le fichier de variable, il est vide ahah!

Doit-on créer une variable en amont? Ou cette dernière se crée automatiquement à la suite du Skript plus haut?

Merci de vos réponses 😃

Partager ce message


Lien à poster
Partager sur d’autres sites

Le problème de la variable vide est réglé puisque que tu ne loop plus rien

Dans ton premier code quand un joueur exécutait le code, le skript ne s'exécutait pas car il ne rentrait pas dans la boucle (le loop) var la variable {ChanteCiel::*} était vide au début

Ce que tu peux faire alors, c'est de faire communiquer le serveur 1 avec le serveur 2 avec une BDD, et l'addons 

Contenu masqué

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

Le code:

Contenu masqué

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

Le code a mettre sur le serveur chanteciel

Contenu masqué

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

Pour générer la table

Contenu masqué

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

Sinon, il y aussi Skungee 

Contenu masqué

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

 

Ps: la version dev36c ne serais pas mieux ? (A vérifier)

Modifié par Yghore

Partager ce message


Lien à poster
Partager sur d’autres sites

Hmmmm je vois, j'avais un problème de 'End game', je ne voyais pas comment le serveur pouvait deviner grâce à un event si une partie se terminait ou pas ...
Je pense utiliser le 'On world unload' car techniquement, quand la partie se termine tout les joueurs sont expulsés du serveur, et donc, du monde dans lequel ils ont joué ... ce qui indiquerait une fin de partie pour le serveur ... pourquoi pas ... donc un skript simple de ce genre sur ChanteCiel:

Contenu masqué

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

En revanche, toujours pas de solutions pour faire utiliser la commande de /warp (important que ce soit le joueur) aux joueurs de la file d'attente? C'est même j'ai envie de dire, le principal soucis de tout ce topic ^^

Partager ce message


Lien à poster
Partager sur d’autres sites

Ah si je pense que cela viens du faite que tu rajoute dans la liste du texte (entre "") et pas un joueur enlève les "" et les pourcentages et tout devrais marcher

(Quand tu rajoute on enlève un joueur)

Modifié par Yghore

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 27/04/2019 à 00:00, Yghore a dit :

Ah si je pense que cela viens du faite que tu rajoute dans la liste du texte (entre "") et pas un joueur enlève les "" et les pourcentages et tout devrais marcher

(Quand tu rajoute on enlève un joueur)

Eeeeeehhh
Désolé j'ai beau relire encore et encore la phrase, j'en ai pas compris le sens xD

Et personne n'as de réponse à comment faire utiliser une commande aux joueurs de la file d'attente une fois celle-ci pleine? C'est vraiment important ^^

Partager ce message


Lien à poster
Partager sur d’autres sites

Contenu masqué

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

Voila,  n'oublie pas de vider la variable {ChanteCiel::*} avant ce faire un test 

Partager ce message


Lien à poster
Partager sur d’autres sites

Je vois, après quelques bidouilles j'ai réussi à n'avoir QUE 1 erreur dans le skript 😄

Enfin, après j'ai encore un soucis de database (j'en ai 4 mais je ne suis pas certain de comment tourner la config pour la faire fonctionner ;))

En revanche un soucis m'inquiète, c'est celui de la Line 19:

Voici le code actuel repréparé, et l'erreur dans le chat associé:

Contenu masqué

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

De ce que j'en lis sur l'erreur Line 19 associée, c'est que le skript ne veut pas ajouter un joueur à la variable! :S

Error.png

Partager ce message


Lien à poster
Partager sur d’autres sites
Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.

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