Aller au contenu
  • 0

casser un block en étant hors d'un chunk d'un joueur


Question

Posté(e)

Version de Minecraft : 1.16.2
Version de Skript : 2.5.1

Addons utilisés: SkyRayFall + Skelett + SkQery

Type du skript : Claim

Description du script :

Bonjour j'ai repris un code de claim et je n'arrive pas à interdire le fait de pouvoir casser des blocs en n'étant pas du claim à l'extérieur.

Je m'explique plus clairement : Le joueur claim une zone = 1 chunk
Un second joueur ne peut pas casser s'il est dans le chunk du joueur. En revanche s'il est dehors du chunk il peut casser des blocs alors que c'est censé être protégé.

 

Le code :

 

on break:
	loop all players:
		if {CL.%chunk at player%} is set:
			if "%{CL.%chunk at player%}%" is "%player%":
				stop
			else:
			cancel event
				

 

 

	name of clicked item is "&aProtection disponible !":
		set {cl.%chunk at player%} to player
		set {cl.%chunk at player%.pos} to location of player
		add chunk at player to {cl.lists.%player%::*}
		
		remove {@prix} from {argent::%uuid of player%}
		
		
		send title "" with subtitle "&aVous achetez ce chunk pour &e{@prix} NightCoins." for 3 seconds
		send ""
		send "&aFélictation !"
		send "&eVous avez protégé ce chunk et il vous appartient à présent !"
		send "&ePour plus d'options utilisez le menu principal !"
		send ""
		
		close player's inventory

 

2 réponses à cette question

Messages recommandés

  • 0
Posté(e)
Le 07/06/2021 à 23:23, Mr_Kofte a dit :

Version de Minecraft : 1.16.2
Version de Skript : 2.5.1

Addons utilisés: SkyRayFall + Skelett + SkQery

Type du skript : Claim

Description du script :

Bonjour j'ai repris un code de claim et je n'arrive pas à interdire le fait de pouvoir casser des blocs en n'étant pas du claim à l'extérieur.

Je m'explique plus clairement : Le joueur claim une zone = 1 chunk
Un second joueur ne peut pas casser s'il est dans le chunk du joueur. En revanche s'il est dehors du chunk il peut casser des blocs alors que c'est censé être protégé.

 

Le code :

 


on break:
	loop all players:
		if {CL.%chunk at player%} is set:
			if "%{CL.%chunk at player%}%" is "%player%":
				stop
			else:
			cancel event
				

 

 


	name of clicked item is "&aProtection disponible !":
		set {cl.%chunk at player%} to player
		set {cl.%chunk at player%.pos} to location of player
		add chunk at player to {cl.lists.%player%::*}
		
		remove {@prix} from {argent::%uuid of player%}
		
		
		send title "" with subtitle "&aVous achetez ce chunk pour &e{@prix} NightCoins." for 3 seconds
		send ""
		send "&aFélictation !"
		send "&eVous avez protégé ce chunk et il vous appartient à présent !"
		send "&ePour plus d'options utilisez le menu principal !"
		send ""
		
		close player's inventory

 

Salut,

Je pense que tu t'y prends mal. Skript est un "langage" interprété, il suffit de lire ce que tu as écrit pour s'apercevoir de quelques erreurs.
Pour commencer, je ne vois pas l'intérêt d'avoir fait une boucle sur tous les joueurs alors que tu ne te sers pas du résultat de cette boucle... De plus, cela ne fonctionne pas car tu récupères le chunk où se situe le joueur et non le chunk où le bloc se situe : c'est pour cela qu'en dehors du chunk claim, le joueur peut toujours cassé un bloc.

Voici ce que je te propose :

#
# commands
#

command /claim:
    trigger:
        # on vérifie si le chunk où si situe le joueur appartient à quelq'un
        if {claimed_chunks::*} contains chunk at player:
            # on vérifie si le propriétaire du chunk n'est pas le même que le joueur
            if {claimed_chunks::%chunk at player%::owner} is not player:
                send "&cCe chunk a déjà été revendiqué par %{claimed_chunks::%chunk at player%::owner}% !" to player
            else:
                send "&cCe chunk vous appartient déjà !" to player
        # le chunk n'appartient à personne, donc on lui donne le chunk
        else:
            send "&aVous venez de revendiquer ce chunk votre propriété :)" to player
            add chunk at player to {claimed_chunks::*}
            set {claimed_chunks::%chunk at player%::owner} to player

command /unclaim:
    trigger:
        if {claimed_chunks::%chunk at player%::owner} is player:
            remove chunk at player from {claimed_chunks::*}
            delete {claimed_chunks::%chunk at player%::owner}
            send "&7Ce chunk ne vous appartient désormais plus." to player
        else:
            send "&cCe chunk ne vous appartient pas !" to player

#
# events
#

on place:
    # on vérifie si le bloc placé fait partie d'un chunk revendiqué
    if {claimed_chunks::*} contains chunk at event-block:
        # on vérifie que le joueur qui essaye de casser le bloc n'est pas propriétaire du chunk
        if {claimed_chunks::%chunk at event-block%::owner} is not player:
            cancel event
            send "&cVous ne pouvez pas placer des blocs dans ce chunk. Propriété de %{claimed_chunks::%chunk at event-block%::owner}% !" to player

on break:
    if {claimed_chunks::*} contains chunk at event-block:
        if {claimed_chunks::%chunk at event-block%::owner} is not player:
            cancel event
            send "&cVous ne pouvez pas casser des blocs dans ce chunk. Propriété de %{claimed_chunks::%chunk at event-block%::owner}% !" to player

Je t'ai inclus quelques explications directement en commentaire dans le code.. Si toutefois, il y a une chose que tu ne comprends pas, fais-le moi savoir je t'expliquerai au mieux.

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.