Aller au contenu
  • 0

Panneau téléportation mini-jeux.


Question

Posté(e)

Salut je suis actuellement en train de développer un serveur mini-jeux 1.9 et j'ai donc besoin de panneaux de téléportation très opérationnels avec le nombre de joueurs en temps réels. Je me suis donc inspiré du skript SkyWars de besuper. Mais je ne sait pas pour quoi cela ne marche pas. Lors du reload aucune erreur n'est détecté. En fait le nombre de joueurs reste bloqué à "none" alors qu'il devrait augmenter et cela me met que la partie à déjà commencé alors qu'elle n'est pas pleine!

(pour les flemmard, le problème devrait venir de la partie commande! :p)

Voici le skript: (je précise c'est pour un mini-jeux laser games d'ou la commande /lg)

 

                    #===============================#
                   #        Skript LaserGames        #
                   #===============================#

options:        #Les différentes options du jeu:
   logo: &7[&4LaserGames&7]
   nommap: DarkRoom
   jmax: 12

                   #-------------------------------------------------#
                   #                    Panneaux                     #
                   #-------------------------------------------------#
on rightclick on a sign:
   if line 1 is "[LaserGames]":
       if line 2 is "{@nommap}":
           set line 1 to "{@logo}"
           set line 2 to "&6{@nommap}"
           set line 3 to "&f%{lg.joueurs}%/{@jmax}"
           if {lg.start} is true:
               set line 4 to "&cEn cours."
           if {lg.start} is false:
               set line 4 to "&cAttente."
on rightclick on a sign:
   if line 1 is "{@logo}":
       if line 2 is "&6{@nommap}":
           make player execute command "/lg join"
           set line 1 to "{@logo}"
           set line 2 to "&6{@nommap}"
           set line 3 to "&f%{lg.joueurs}%/{@jmax}"
           if {lg.start} is true:
               set line 4 to "&cEn cours."
           if {lg.start} is false:
               set line 4 to "&cAttente."

on first join:
   set {lg.%player%.start} to false
command /testlg:
   trigger:
       set {lg.%player%.start} to false


           #|-------------------------------------------------|#
           #|                   Commande                      |
           #|-------------------------------------------------|#

command /lg [<text>] [<text>] [<text>]:
   trigger:
       if arg 1 is not set:
           if player has permission "lg.help":
               send "&a================================================="
               send "&6Commande /lg join &f(Rejoinre.)"
               send "&a================================================="
           else:
               send "{@logo} &cVous n'avez pas la permission !"
       if arg 1 is "join":
           if player has permission "lg.join":
               if {lg.start} is false:
                   if {lg.%player%.start} is false:
                       set {lg.%player%.start} to true
                       add player to {lg.joueurs.list::*}
                       add 1 to {lg.joueurs}
                       clear player's inventory
                       teleport player to player
                       broadcast "{@logo} &a%player% a rejoint la partie &7(&f%{lg.joueurs}%/{@jmax}&7)" in "DarkRoom"
                       if {lg.joueurs} is equal to {@jmax}:
                           make console execute command "/say start"
                   else:
                       send "{@logo} &cVous avez déjà rejoint la partie !"
               else:
                   send "{@logo} &cLa partie est déjà en cours !"
           else:
               send "{@logo} &cVous n'avez pas la permission !"

 

Voila j’espère que vous pourrez m'aider!

Messages recommandés

  • 0
Posté(e)

Rajoute une commande debug :

command /debug:
  trigger :
     set {lg.joueurs} to 0
     clear {lg.joueurs.list::*}
     loop all players:
        set {lg.%loop-player%.start} to false

Fait la commande

Puis reessaie de rentrer dans la partie

  • 0
Posté(e)
Rajoute une commande debug :

command /debug:
  trigger :
     set {lg.joueurs} to 0
     clear {lg.joueurs.list::*}
     loop all players:
        set {lg.%loop-player%.start} to false

Fait la commande

Puis reessaie de rentrer dans la partie

 

Merci de ta réponse mais cela ne marche toujours pas, je ne comprends vraiment pas pourquoi. La seule chose qui as changé c'est que sur le panneaux au lieu de "none/12" il y a maintenant "0/12" Si jamais vous avez besoin demandez moi et je vous ouvre le serveur et le ftp pour que vous puissiez m'aider!

  • 0
Posté(e)

make player execute command "/lg join"
           wait 2 second
           set line 1 to "{@logo}"
           set line 2 to "&6{@nommap}"
           set line 3 to "&f%{lg.joueurs}%/{@jmax}"

Rajoute "wait 2 second" pour laisser aux variable le temps de se mettre a jour parce que la c'est quasi instante. Si 2 secondes fonctionne bien tu pourras baisser le délai (j'ai préféré dire 2 secondes pour etre sur que le probleme viens de la)

  • 0
Posté(e)
make player execute command "/lg join"
           wait 2 second
           set line 1 to "{@logo}"
           set line 2 to "&6{@nommap}"
           set line 3 to "&f%{lg.joueurs}%/{@jmax}"

Rajoute "wait 2 second" pour laisser aux variable le temps de se mettre a jour parce que la c'est quasi instante. Si 2 secondes fonctionne bien tu pourras baisser le délai (j'ai préféré dire 2 secondes pour etre sur que le probleme viens de la)

 

J'ai effectué tes modifications mais encore une fois le problème vient pas de là. Puisque lorsque je clique sur le panneau, cela me met que la partie est déjà en cours alors que j'ai bien utilisé ta commande qui est cencé reboot.

  • 0
Posté(e)

Ok c'est bon j'ai trouvé la solution. En fait dans ta commande /rebbot il fallat aussi mettre:

            set {lg.joueurs} to 0
           clear {lg.joueurs.list::*}
           loop all players:
               set {lg.%loop-player%.start} to false
               set {lg.start} to false

 

(le set {lg.start} to false à la fin)

 

Svp ne closez pas, j'aurais surement encore besoin d'aide. Si d'ici 4jours tout fonctionne nikel je le fermerais.

  • 0
Posté(e)

Re excusez moi mais maintenant je n'arrive pas a retirer ce score et l'acualiser sur le panneau. Lorsque que je fait la commande /lg leave ça me téléport au lieu souhaité et lorsque que je clique sur le panneau pour l'actualiser (car je n'ai pas trouvé d'autres moyens de le réactualiser) au lieu de me laisser le nombre à 1 (car en gros ça fait +1, -1, +1) bah ça me met le nombre a -1!

Donc j'aimerais qu'on m'aide à: corriger le "bug" avec le "leave" et m'aider à actualiser le panneau toutes les secondes!

        if arg 1 is "leave":
           if player has permission "lg.leave":
               if {lg.%player%.start} is true:
                   remove player from {lg.joueurs.list::*}
                   add -1 to {lg.joueurs}
                   set {lg.%player%.start} to false
                   teleport player to spawn
                   broadcast "{@logo} &6%player%&a à quitter la partie. &7(&f%{skywars.joueurs}%/{@jmax}&7)" in "test"
               if {lg.%player%.start} is false:
                   remove player from {lg.joueurs.list::*}
                   add -1 to {lg.joueurs}
                   set {lg.%player%.start} to false
                   teleport player to spawn
                   broadcast "{@logo} &6%player%&a à quitter la partie. &7(&f%{skywars.joueurs}%/{@jmax}&7)" in "test"
               else:
                   send "{@logo} &cVous devez être en jeux pour quitter."
           else:
               send "{@logo} &cVous n'avez pas la permission !"

 

Pour réactualiser je connaissait ça mais ça ne marche pas donc une correction ou un autre moyen?

every 2 seconds in "spawn": #Met à jour le panneau.
   loop players:
       loop all blocks in radius 30 of loop-player:
           if loop-block is sign:
               if line 1 of loop-block is "{@logo}":
                   set line 3 of loop-block to "%{nbre}%/20"

Merci d'avance pour votre aide!

  • 0
Posté(e)
Re excusez moi mais maintenant je n'arrive pas a retirer ce score et l'acualiser sur le panneau. Lorsque que je fait la commande /lg leave ça me téléport au lieu souhaité et lorsque que je clique sur le panneau pour l'actualiser (car je n'ai pas trouvé d'autres moyens de le réactualiser) au lieu de me laisser le nombre à 1 (car en gros ça fait +1, -1, +1) bah ça me met le nombre a -1!

Donc j'aimerais qu'on m'aide à: corriger le "bug" avec le "leave" et m'aider à actualiser le panneau toutes les secondes!

        if arg 1 is "leave":
           if player has permission "lg.leave":
               if {lg.%player%.start} is true:
                   remove player from {lg.joueurs.list::*}
                   add -1 to {lg.joueurs}
                   set {lg.%player%.start} to false
                   teleport player to spawn
                   broadcast "{@logo} &6%player%&a à quitter la partie. &7(&f%{skywars.joueurs}%/{@jmax}&7)" in "test"
               if {lg.%player%.start} is false:
                   remove player from {lg.joueurs.list::*}
                   add -1 to {lg.joueurs}
                   set {lg.%player%.start} to false
                   teleport player to spawn
                   broadcast "{@logo} &6%player%&a à quitter la partie. &7(&f%{skywars.joueurs}%/{@jmax}&7)" in "test"
               else:
                   send "{@logo} &cVous devez être en jeux pour quitter."
           else:
               send "{@logo} &cVous n'avez pas la permission !"

 

Pour réactualiser je connaissait ça mais ça ne marche pas donc une correction ou un autre moyen?

every 2 seconds in "spawn": #Met à jour le panneau.
   loop players:
       loop all blocks in radius 30 of loop-player:
           if loop-block is sign:
               if line 1 of loop-block is "{@logo}":
                   set line 3 of loop-block to "%{nbre}%/20"

Merci d'avance pour votre aide!

Tu pourrais pas faire un redémarrage ? (sous bungeecord) ça serait plus simple :p Après ce que tu pourrais faire, c'est qu'à la fin du jeu, il y a une commande qui execute le reload du skript

 

Bon vu ton niveau j'ai pas besoin d'écrire le code, tu es même plus fort que moi :D

Bon courage si tu n'as pas d'autre moyen... ( notion de totalité );)

  • 0
Posté(e)
Tu pourrais pas faire un redémarrage ? (sous bungeecord) ça serait plus simple :p Après ce que tu pourrais faire, c'est qu'à la fin du jeu, il y a une commande qui execute le reload du skript

 

Bon vu ton niveau j'ai pas besoin d'écrire le code, tu es même plus fort que moi :D

Bon courage si tu n'as pas d'autre moyen... ( notion de totalité );)

Merci pour ta réponse. En effet il faudra que j’insère un reload qui est déjà programmé si tu regarde dans les commandes (le debug)

Mais la mon problème est que je n'arrive pas a set en temps réel le nombre de joueurs sur le panneau. Celui ci est actualisé uniquement lorsque l'on clique dessus!

  • 0
Posté(e)
Merci pour ta réponse. En effet il faudra que j’insère un reload qui est déjà programmé si tu regarde dans les commandes (le debug)

Mais la mon problème est que je n'arrive pas a set en temps réel le nombre de joueurs sur le panneau. Celui ci est actualisé uniquement lorsque l'on clique dessus!

ah oki... ouai euh moi je sais pas perso j'ai bungeesign xD

  • 0
Posté(e)
Ok perso nous n'avons pas bungeecord nous!

ah, et serversign je ne sais pas si c'est possible pour vous ?

  • 0
Posté(e)

Je t'ai fait ça:

options:
   logo: &7[&9LaserGame&7]
   nomap: DarkRoom
   jmax: 12

aliases:
   leaveitem = 331

command /setsign:
   permission: lg.setsign
   trigger:
       if the targeted block is an sign:
           set {lasergame.sign} to location of targeted block
           set line 1 of block at {lasergame.sign} to "{@logo}"
           set line 2 of block at {lasergame.sign} to "&2{@nomap}"
           if {lg.joueurs} is not set:
               set {lg.joueurs} to 0
           set line 3 of block at {lasergame.sign} to "&6%{lg.joueurs}%&4/&6{@jmax}"
           if {lg.status} is not set:
               set {lg.status} to "&cAttente."
           set line 4 of block at {lasergame.sign} to "%{lg.status}%"
       else:
           message "{@logo} &cLe block que vous pointez doit être un paneau!"

on join:
   set {lg.joueur.status.%player%} to false

on rightclick on sign:
   if event-location is {lasergame.sign}:
       if {lg.joueur.status.%player%} is false:
           if {lg.status} is "&cAttente.":
               set {lg.joueur.lastlocation.%player%} to location of player
               add 1 to {lg.joueurs}
               add player to {lg.players::*}
               set line 3 of block at {lasergame.sign} to "&6%{lg.joueurs}%&4/&6{@jmax}"
               set {lg.joueur.status.%player%} to true
               loop items in player's inventory:
                   add loop-item to {lg.joueur.lastinventory.%player%::*}
               clear player's inventory
               give a leaveitem named "&cQuitter la partie" to slot 8 of player's inventory
               loop all players in {lg.players::*}:
                   message "{@logo} &e&o%player% &aa rejoint la partie &6%{lg.joueurs}%&4/&6{@jmax}" to loop-player
           else:
               message "{@logo} &cLa partie a déjà démarré, veillez attendre quelle se termine."
       else:
           message "{@logo} &cVous êtes déjà dans la partie!"

command /lg <text>:
   trigger:
       if arg 1 is "leave":
           if {lg.joueur.status.%player%} is true:
               remove 1 from {lg.joueurs}
               loop all players in {lg.players::*}:
                   message "{@logo} &e&o%player% &aa quitté la partie &6%{lg.joueurs}%&4/&6{@jmax}" to loop-player
               remove player from {lg.players::*}
               teleport player to {lg.joueur.lastlocation.%player%}
               clear {lg.joueur.lastlocation.%player%}
               clear player's inventory
               loop {lg.joueur.lastinventory.%player%::*}:
                   give player loop-value
               set {lg.joueur.status.%player%} to false
               set line 3 of block at {lasergame.sign} to "&6%{lg.joueurs}%&4/&6{@jmax}"
           else:
               message "{@logo} &cVous n'êtes pas dans la partie."

command /reset:
   trigger:
       clear {lg.players::*}
       clear {lg.joueurs}

on rightclick with leaveitem:
   make player execute command "/lg leave"

Pointe la pancarte voulue et fait /setsign

Dis moi si ça marche...

 

Un j'aime fait toujours plaisir...
  • J'aime 1
  • 0
Posté(e)
Je t'ai fait ça:

options:
   logo: &7[&9LaserGame&7]
   nomap: DarkRoom
   jmax: 12

aliases:
   leaveitem = 331

command /setsign:
   permission: lg.setsign
   trigger:
       if the targeted block is an sign:
           set {lasergame.sign} to location of targeted block
           set line 1 of block at {lasergame.sign} to "{@logo}"
           set line 2 of block at {lasergame.sign} to "&2{@nomap}"
           if {lg.joueurs} is not set:
               set {lg.joueurs} to 0
           set line 3 of block at {lasergame.sign} to "&6%{lg.joueurs}%&4/&6{@jmax}"
           if {lg.status} is not set:
               set {lg.status} to "&cAttente."
           set line 4 of block at {lasergame.sign} to "%{lg.status}%"
       else:
           message "{@logo} &cLe block que vous pointez doit être un paneau!"

on join:
   set {lg.joueur.status.%player%} to false

on rightclick on sign:
   if event-location is {lasergame.sign}:
       if {lg.joueur.status.%player%} is false:
           if {lg.status} is "&cAttente.":
               set {lg.joueur.lastlocation.%player%} to location of player
               add 1 to {lg.joueurs}
               add player to {lg.players::*}
               set line 3 of block at {lasergame.sign} to "&6%{lg.joueurs}%&4/&6{@jmax}"
               set {lg.joueur.status.%player%} to true
               loop items in player's inventory:
                   add loop-item to {lg.joueur.lastinventory.%player%::*}
               clear player's inventory
               give a leaveitem named "&cQuitter la partie" to slot 8 of player's inventory
               loop all players in {lg.players::*}:
                   message "{@logo} &e&o%player% &aa rejoint la partie &6%{lg.joueurs}%&4/&6{@jmax}" to loop-player
           else:
               message "{@logo} &cLa partie a déjà démarré, veillez attendre quelle se termine."
       else:
           message "{@logo} &cVous êtes déjà dans la partie!"

command /lg <text>:
   trigger:
       if arg 1 is "leave":
           if {lg.joueur.status.%player%} is true:
               remove 1 from {lg.joueurs}
               loop all players in {lg.players::*}:
                   message "{@logo} &e&o%player% &aa quitté la partie &6%{lg.joueurs}%&4/&6{@jmax}" to loop-player
               remove player from {lg.players::*}
               teleport player to {lg.joueur.lastlocation.%player%}
               clear {lg.joueur.lastlocation.%player%}
               clear player's inventory
               loop {lg.joueur.lastinventory.%player%::*}:
                   give player loop-value
               set {lg.joueur.status.%player%} to false
               set line 3 of block at {lasergame.sign} to "&6%{lg.joueurs}%&4/&6{@jmax}"
           else:
               message "{@logo} &cVous n'êtes pas dans la partie."

command /reset:
   trigger:
       clear {lg.players::*}
       clear {lg.joueurs}

on rightclick with leaveitem:
   make player execute command "/lg leave"

Pointe la pancarte voulue et fait /setsign

Dis moi si ça marche...

Houla! Merci de m'avoir entièrement refait le skript, je teste ça et je te dis si ça marche!

  • 0
Posté(e)
Houla! Merci de m'avoir entièrement refait le skript, je teste ça et je te dis si ça marche!

Merci!

PS: j'utilise les addons: Umabska, WildSkript et Skquery

  • J'aime 1
  • 0
Posté(e)
Ah finalement je l'avais, donc ça marche pas. Mais ça ma donné une idée.

??

Je comprend pas, moi ça marche...

Tu as tout fait, le /setsign en regardant le panneau?

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