Phmo Posté(e) le 31 janvier 2016 Posté(e) le 31 janvier 2016 Bonjour ! je suis nouveau sur le forum et novice en skript Je bidouille déjà un peu Je voulais savoir si il etait possible de détecter un bloc spécial dans une région Du genre : if region "Nomdelaregion" contains "blockenquestion" (tab) faire telle action.... Voila j'espère avoir posé une question pertinente et l'avoir mise au bon endroit
0 Mastersfelix Posté(e) le 1 février 2016 Posté(e) le 1 février 2016 Non, il n'est pas possible de détecter si un bloc est dans une certaine région, sauf qu'il y a moyen de bidouiller quelque chose pour le faire fonctionner
0 Spartan9802 Posté(e) le 2 février 2016 Posté(e) le 2 février 2016 Bonsoir, Oui c'est possible il suffit de récupérer la location du bloc: if "%region at %location%%" is "Nom de la region": <code>
0 Mastersfelix Posté(e) le 3 février 2016 Posté(e) le 3 février 2016 Non, sa question est de savoir s'il est possible de savoir si une région contient un certain bloc (ex, s'il y a un block d'émeraude dans la région "spanw"). Si je ne me trompe pas, en tout cas si je me trompe corrige moi Phmo
0 JDM Posté(e) le 3 février 2016 Posté(e) le 3 février 2016 En utilisant PirateSK : set {_rg} to wg region at player's location #' set {_p1} to point 1 of wg region {_rg} in "world" set {_p2} to point 2 of wg region {_rg} in "world" set {_x1} to x-location of {_p1} set {_x2} to x-location of {_p2} set {_x} to {_x2} - {_x1} set {_y1} to y-location of {_p1} set {_y2} to y-location of {_p2} set {_y} to {_y2} - {_y1} set {_z1} to z-location of {_p1} set {_z2} to z-location of {_p2} set {_z} to {_z2} - {_z1} loop {_x} times: loop {_y} times: loop {_z} times: set {_loc} to location ({_x}+loop-number-1, {_y}+loop-number-2, {_z}+loop-number-3) in "world" if {_listeblocs::%type of block at {_loc}%} is not set: set {_listeblocs::%type of block at {_loc}%} to 0 add 1 to {_listeblocs::%type of block at {_loc}%} En théorie, ça te retourne une liste de tous les blocs dans la région, dans ce format : {_listeblocs::cobblestone} = 24 {_listeblocs::normal wood plank} = 132 etc ... (donc ça veut dire qu'il y a 24 cobblestone, 132 planches dans la région)
0 Phmo Posté(e) le 3 février 2016 Auteur Posté(e) le 3 février 2016 Whaow whaow whaow ! =) Déjà merci pour les réponses rapides comme ça, je suis super étonné de trouver de l'aide aussi rapidement ! En gros ce que je cherche à faire c'est : Si la région contient une laine blanche : faire telle commande Si la région contient une laine rouge : faire telle commande Si la région contient une laine bleue : faire telle commande Et bien sur ça peut changer au cours du temps (en fait j'utilise pvparena et le goal domination qui change la couleur d'un check point en wool) Donc si je te suis bien JDM, ça devrait faire à la suite (pour une laine blanche par ex) : if {_listeblocs::white_wool} = 1 consolecommand "ma commande que j'aimerais mettre" par contre comment faire pour le faire changer d'état si la laine passe au rouge par exemple ?
0 Mastersfelix Posté(e) le 3 février 2016 Posté(e) le 3 février 2016 Sa dépends, si ta région est trop grosse le serveur risque de crash, sinon tu peux loop tout les blocs dans ta région et voir si le bloc est une laine blanche / rouge / bleue Loop blocks in region "region": if loop-block is white wool: si le code du haut ne marche pas, celui de JDM devrait marcher 1
0 Phmo Posté(e) le 3 février 2016 Auteur Posté(e) le 3 février 2016 Merci les gars pour ces réponses rapides. Je finis de réviser mon DS de maths, j'installe pirateSK et je teste ça ! 1
0 Phmo Posté(e) le 3 février 2016 Auteur Posté(e) le 3 février 2016 Je teste ça en serveur local et ça me met : "Can't understand this event: "loop block in region "test":" bon apparemment ça ne marche pas EDIT : en fait si ça marche ! j'avais juste oublié le "every ..." Bon par contre ça va spammer les commandes xD Est ce qu'il y a pas un moyen d'executer la commande seulement si l'état a changé depuis la dernière fois ? peut être en comparant 2 variables ?
0 Phmo Posté(e) le 3 février 2016 Auteur Posté(e) le 3 février 2016 Bon j'ai finalement trouvé une réponse à mon problème : j'update quand un joueur sort de la région du drapeau à prendre Dernière question : après un : loop players in region "region" if pas de joueur dans la region Quelle est cette condition ?
0 JDM Posté(e) le 3 février 2016 Posté(e) le 3 février 2016 if loop-player is not in region "REGION": ? 1
0 Phmo Posté(e) le 3 février 2016 Auteur Posté(e) le 3 février 2016 Merci ! par contre : loop players in region "maregion": Can't understand this loop C'est quoi du coup le bon loop ? Je le cherche mais je trouve pas de loop players pour des régions
0 JDM Posté(e) le 3 février 2016 Posté(e) le 3 février 2016 loop all players: loop-player is in region "REGION" #TON CODE ICI
0 Phmo Posté(e) le 3 février 2016 Auteur Posté(e) le 3 février 2016 En fait je voudrais : en cas de region quit, controler la région "..." si et seulement si il ne reste aucun joueur dans cette région, faire telle action J'ai essayé ça : marche pas, ça le fait même si il reste d'autres joueurs on region exit: "%region%" contains "maregion": loop all players: if loop-player is not in region "maregion": mon action...
0 JDM Posté(e) le 3 février 2016 Posté(e) le 3 février 2016 ah, dans ce cas fais : on region exit: "%region%" contains "maregion": set {_desgensalinterieurdemaregion} to false loop all players: if loop-player is in region "maregion": set {_desgensalinterieurdemaregion} to true if {_desgensalinterieurdemaregion} is false: #TON ACTION
0 Phmo Posté(e) le 3 février 2016 Auteur Posté(e) le 3 février 2016 Je comprends pas... ton code devrais marcher mais pourtant il effectue quand même l'action, alors qu'il reste des gens dans la région...
0 isharo Posté(e) le 3 février 2016 Posté(e) le 3 février 2016 Je comprends pas... ton code devrais marcher mais pourtant il effectue quand même l'action, alors qu'il reste des gens dans la région... Ca vient de toi, moi ça fonctionne.
0 Phmo Posté(e) le 3 février 2016 Auteur Posté(e) le 3 février 2016 on region exit: "%region%" contains "test": set {_desgensalinterieurdemaregion} to false loop all players: if loop-player is in region "test": set {_desgensalinterieurdemaregion} to true if {_desgensalinterieurdemaregion} is false: broadcast "test !" Place deux joueurs dans test Si yen a un qui sort, ça va quand même effectuer l'action, même si l'autre est encore dedans Pourquoi pourquoi.... c'est à ne rien y comprendre....
0 Phmo Posté(e) le 5 février 2016 Auteur Posté(e) le 5 février 2016 Bon j'ai trouvé une solution pour réinitialiser mon arène et ses holos : loop block : wool à chaque fois qu'un joueur join, du coup si c'est un début de partie, les holos seront bien tous blancs, de la couleur des laines. Je passe donc ce sujet en résolu en résumant ma question de départ : Pour détecter un bloc dans une région il faut PirateSK et l'instruction est : loop blocks in region "..." if loop-block is....
Question
Phmo
Bonjour ! je suis nouveau sur le forum et novice en skript
Je bidouille déjà un peu
Je voulais savoir si il etait possible de détecter un bloc spécial dans une région
Du genre :
if region "Nomdelaregion" contains "blockenquestion"
(tab) faire telle action....
Voila j'espère avoir posé une question pertinente et l'avoir mise au bon endroit
18 réponses à cette question
Messages recommandés