Aller au contenu
  • 0

Détection de bloc dans une région WG


Question

Posté(e)

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

  • 0
Posté(e)

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
Posté(e)

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
Posté(e)

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
Posté(e)

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

  • J'aime 1
  • 0
Posté(e)

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
Posté(e)

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
Posté(e)

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
Posté(e)

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
Posté(e)

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
Posté(e)

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
Posté(e)
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
Posté(e)

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
Posté(e)

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

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