Aller au contenu
  • 0

Détecter un joueur dans une zone précis...


Question

Posté(e)

Bonsoir, dans le cadre de mon script mini-jeu, je cherche à détecter un joueur dans un rayon précis. En gros, j'aimerais que dès qu'un joueur passe dans un cercle de rayon 11, posé à la vertical (comme les anneaux du quidditch), le script détecte le joueur. Je comptais utliser un loop-player et un loop-location mais je sais pas comment m'y prendre.

 

En attente d'une réponse, je vous souhaite une bonne journée. Voici le début de mon code du mini-jeu (pas fini) :

#-------------------------
#Version: 1.0
#Description : Ce script permet de jouer au mini-jeu "Elytrecircle". Le but est d'arriver le premier à passer les 12 anneaux.
#-------------------------


options:
   prefix: &e&l[&6&lElytreCircle&e&l] &r
   slot: 3
   joueurs_pour_commencer: 3 

On load:
   set {game.start} to false
   set {partie.terminer} to false
   set {jeu.joueur} to 0
   execute console command "/elytrec test"

Command /elytrec <text>:
   trigger:
       if arg 1 is "test":
           set {slot} to {@slot}
       if arg 1  is "join":
           if player has permission "elytrecjoin.sk":
               if {jeu.joueur} is < 3:
                   execute console command "/mvtp %player% event2"
                   execute console command "/tp %player% 2009 132 561"
                   execute console command "/manuaddp %player% joinelytre.sk"
                   set {quit.%player%} to false
                   add 1 to {jeu.joueur}
                   broadcast "{@prefix} Nombre de joueurs : %{jeu.joueur}/{slot}%"
               else:
                   broadcast "{@prefix} &eLe nombre de joueur est atteint : 3/3."
                   wait 3 seconds
                   set {game.start} to true
                   execute console command "/elytrec start"
       if arg 1 is "start":
           if {game.start} is true:
               broadcast "{@prefix} Merci de ne pas deconnecter du jeu"
               if player has permission "joinelytre.sk":
                   send %player% title "&4Chargement..." for 3 seconds
                   send %player% title "&43" for 1 seconds
                   send %player% title "&42" for 1 seconds
                   send %player% title "&41" for 1 seconds
                   send %player% title "&4COMMENCEZ !" for 2 seconds
               loop all player:
                   [C'est que je bloque]
       if arg 1 is "leave":
           if {quit.%player%} is false:
               set {quit.%player%} to true
               remove 1 from {jeu.joueur}
               execute console command "/back %player%" 
               execute console command "/manudelp %player% joinelytre.sk "
               set {quit.%player%} to false
               broadcast "{@prefix}Nombre de joueurs : %{jeu.joueur}/{slot}%"


On any move:
   if {jeu.joueur} <3:
       player has permission "joinelytre.sk":
           cancel event

5 réponses à cette question

Messages recommandés

  • 0
Posté(e)

J'ai mis ce que vous avez dit mais il m'indique une erreur :

can't understand this condition: 'all players in radius 6 around {_pos1}' (elytre.sk, line 111: all players in radius 6 around {_pos1}:'

 

Avec {_pos1} la location du centre du cercle :

set {_pos1} to location of player

 

Edit : j'ai rajouté "loop" devant, il ne m'indique plus d'erreur...

  • 0
Posté(e)

J'ai test mon mini-jeu il marche sauf qu'il ne detecte pas les personnes qui passent dans les anneaux alors que j'ai mis

loop all players in radius 6 of {pos8.arene}:

.

 

Voici le code en plus complet :

 

options:
   plane: 0.6
   msg: &cPatience !
   cooldown: 2 seconds
   perm: elytrapush.sk
   prefix: &e&l[&6&lElytreCircle&e&l]
   slot: 3
   joueurs_pour_commencer: 3

#on right click:
#    player is wearing elytra
#    if player's tool is iron_hoe:
#        if player has permission "{@perm}":
#            set {_waited} to difference between {elytrapush.%player%.lastused} and now
#            if {_waited} is less than {@cooldown}:
#                set {_waited} to difference between {_waited} and {@cooldown}
#                send "{@msg}"
#            else:
#                set {elytrapush.%player%.lastused} to now
#                set {_elytradura.%player%} to 432
#                set {_vieelytra.%player%} to durability of chestplate of player
#                wait 1 tick
#                remove {_vieelytra.%player%} from {_elytradura.%player%}
#                if {_elytradura.%player%} <= 1:
#                    send "&4Répare ton elytra."
#                    set elytra fly state of player to false
#                    stop
#                else:
#                    if elytra fly state of player is true:
#                        push player in direction of player at speed {@plane}
#        else:
#            send "&4Tu n'as pas la permission d'utiliser la propulsion."


Command /elytrec <text>:
   trigger:
       if arg 1 is "stop":
           player is op:
               set {game.start} to false
               set {jeu.joueur} to 0
               set {max.circle} to 12
               set {quit.%player%} to false
       if arg 1 is not set:
           send "{@prefix} &cVeuillez préciser un argument parmi la liste suivante : pos1, pos2, pos3, pos4, pos5, pos6, pos7, pos8, pos9, pos10, pos11, pos12, start, join, leave, stop, leavefin" to player
       if arg 1 is "test":
           set {slot} to {@slot}
       if arg 1 is "pos1":
           player is op:
               set {pos1.arene} to location of player
               send "{@prefix} &eVous avez set le 1er cercle" to player
       if arg 1 is "pos2":
           player is op:
               set {pos2.arene} to location of player
               send "{@prefix} &eVous avez set le 2eme cercle" to player
       if arg 1 is "pos3":
           player is op:
               set {pos3.arene} to location of player
               send "{@prefix} &eVous avez set le 3eme cercle" to player
       if arg 1 is "pos4":
           player is op:
               set {pos4.arene} to location of player
               send "{@prefix} &eVous avez set le 4eme cercle" to player
       if arg 1 is "pos5":
           player is op:
               set {pos5.arene} to location of player
               send "{@prefix} &eVous avez set le 5eme cercle" to player
       if arg 1 is "pos6":
           player is op:
               set {pos6.arene} to location of player
               send "{@prefix} &eVous avez set le 6eme cercle" to player
       if arg 1 is "pos7":
           player is op:
               set {pos7.arene} to location of player
               send "{@prefix} &eVous avez set le 7eme cercle" to player
       if arg 1 is "pos8":
           player is op:
               set {pos8.arene} to location of player
               send "{@prefix} &eVous avez set le 8eme cercle" to player
       if arg 1 is "pos9":
           player is op:
               set {pos9.arene} to location of player
               send "{@prefix} &eVous avez set le 9eme cercle" to player
       if arg 1 is "pos10":
           player is op:
               set {pos10.arene} to location of player
               send "{@prefix} &eVous avez set le 10eme cercle" to player
       if arg 1 is "pos11":
           player is op:
               set {pos11.arene} to location of player
               send "{@prefix} &eVous avez set le 11eme cercle" to player
       if arg 1 is "pos12":
           player is op:
               set {pos12.arene} to location of player
               send "{@prefix} &eVous avez set le 12eme cercle" to player
       if arg 1  is "join":
           if player has permission "elytrecjoin.sk":
               if {jeu.joueur} is less than 3:
                   execute console command "/mvtp %player% event2"
                   execute console command "/mvconfirm"
                   execute console command "/tp %player% 2009 132 561"
                   execute console command "/manuaddp %player% joinelytre.sk nomoveelytre.sk elytra.speedup elytra.auto elytra.const-flight elytra.shift-activation elytra.runup"
                   set {quit.%player%} to false
                   add 1 to {jeu.joueur}
                   broadcast "{@prefix} Nombre de joueurs : %{jeu.joueur}%/{@slot}"
               if {jeu.joueur} is 3:
                   broadcast "{@prefix} &eLe nombre de joueur pour cette partie est atteint : 1/1."
                   wait 1 seconds
                   broadcast "{@prefix} &aLe jeu va bientôt commencer..."
                   wait 3 seconds
                   set {game.start} to true
                   execute console command "/elytrec start"
       if arg 1 is "start":
           if {game.start} is true:
               broadcast "{@prefix} Merci de ne pas deconnecter du jeu"
               wait 2 seconds
               if player has permission "joinelytre.sk":
                   send "{@prefix} &7Chargement du jeu..." to player
                   wait 3 seconds
                   send "{@prefix} &7Début du jeu dans &43 &7secondes" to player
                   wait 1 seconds
                   send "{@prefix} &7Début du jeu dans &42 &7secondes" to player
                   wait 1 seconds
                   send "{@prefix} &7Début du jeu dans &41 &7secondes" to player
                   wait 1 seconds
                   send "{@prefix} &4COMMENCEZ !" to player
                   execute console command "/manudelp %player% nomoveelytre.sk"
                   loop all players in radius 6 of {pos1.arene}:
                       add 1 to {circle.%player%}
                       send "{@prefix} Vous avez traverse %{circle.%player%}%/{max.circle}"
                   loop all players in radius 6 of {pos2.arene}:
                       add 1 to {circle.%player%}
                       send "{@prefix} Vous avez traverse %{circle.%player%}%/{max.circle}"
                   loop all players in radius 6 of {pos3.arene}:
                       add 1 to {circle.%player%}
                       send "{@prefix} Vous avez traverse %{circle.%player%}%/{max.circle}"
                   loop all players in radius 6 of {pos4.arene}:
                       add 1 to {circle.%player%}
                       send "{@prefix} Vous avez traverse %{circle.%player%}%/{max.circle}"
                   loop all players in radius 6 of {pos5.arene}:
                       add 1 to {circle.%player%}
                       send "{@prefix} Vous avez traverse %{circle.%player%}%/{max.circle}"
                   loop all players in radius 6 of {pos6.arene}:
                       add 1 to {circle.%player%}
                       send "{@prefix} Vous avez traverse %{circle.%player%}%/{max.circle}"
                   loop all players in radius 6 of {pos7.arene}:
                       add 1 to {circle.%player%}
                       send "{@prefix} Vous avez traverse %{circle.%player%}/{max.circle}%"
                   loop all players in radius 6 of {pos8.arene}:
                       add 1 to {circle.%player%}
                       send "{@prefix} Vous avez traverse %{circle.%player%}%/{max.circle}"
                   loop all players in radius 6 of {pos9.arene}:
                       add 1 to {circle.%player%}
                       send "{@prefix} Vous avez traverse %{circle.%player%}%/{max.circle}"
                   loop all players in radius 6 of {pos10.arene}:
                       add 1 to {circle.%player%}
                       send "{@prefix} Vous avez traverse %{circle.%player%}/{max.circle}%"
                   loop all players in radius 6 of {pos11.arene}:
                       add 1 to {circle.%player%}
                       send "{@prefix} Vous avez traverse %{circle.%player%}%/{max.circle}"
                   loop all players in radius 6 of {pos12.arene}:
                       add 1 to {circle.%player%}
                       send "{@prefix} Vous avez traverse %{circle.%player%}%/{max.circle}"
               if {circle.%player%} is 12:
                   broadcast "{@prefix} &6%player% à réussi le 1er à traverser les 12 anneaux, bravo à lui !"
                   broadcast "{@prefix} &eMerci de faire /leavefin pour quitter le jeu"
                   set {game.start} to false
           if arg 1 is equal to "leavefin":
               execute player command "/spawn"
               execute console command "/manudelp %player% joinelytre.sk nomoveelytre.sk elytra.speedup elytra.auto elytra.const-flight elytra.shift-activation elytra.runup"
               set {circle.%player%} to 0
           if arg 1 is "leave":
               if {quit.%player%} is false:
                   execute player command "/spawn"
                   execute console command "/manudelp %player% nomoveelytre.sk joinelytre.sk elytra.speedup elytra.auto elytra.const-flight elytra.shift-activation elytra.runup"
                   remove 1 from {jeu.joueur}
                   broadcast "{@prefix} Nombre de joueurs : %{jeu.joueur}/{slot}%"
                   set {quit.%player%} to false
               if {jeu.joueur} is 0:
                   set {game.start} to false
                   set {max.circle} to 12

On any move:
   player has permission "nomoveelytre.sk":
       cancel event

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