Aller au contenu
  • 0

is loop value autorisé des blocs au lieux de les interdites?


Question

Posté(e)

Version de Minecraft : 1.17.1
Version de Skript : 2.6 beta3

Addons utilisés: Addon1, Addon2, ...

Description du script :

j'ai trouvé un skript Hammer, que je suis en train de modifié pour mon serveur,

dans la ligne qui check si c'est de la bedrock ou de l'air, le skript ne le casse pas, je voudrait faire l'inverse, je cherche un moyens d'interdire au skript de cassé tous les blocs sauf certain que j'autoriserais (par ex autorisé que la stone et interdire tous les autres blocs d'etre cassés). je ne sait pas si je m'expirme bien ^^

le skript:

on mine:
	if lore of player's tool contains "&7H3x3":
		if player's gamemode = survival:
			cancel event
			set {_x1} and {_x2} to block's x loc
			set {_y1} and {_y2} to block's y loc
			set {_z1} and {_z2} to block's z loc
			if player's pitch is between -50 and 50:
				if player's horizontal facing is west or east:
					add 1 to {_y1} and {_z1}
					remove 1 from {_y2} and {_z2}
				else if player's horizontal facing is north or south:
					add 1 to {_x1} and {_y1}
					remove 1 from {_x2} and {_y2}
			else:
				add 1 to {_x1} and {_z1}
				remove 1 from {_x2} and {_z2}
			loop blocks within location at {_x1}, {_y1}, {_z1} in player's world and location at {_x2}, {_y2}, {_z2} in player's world:
				if loop-value != bedrock or air or obsidian or dirt or grass block or water or lava or oak wood or oak planks or spruce wood or spruce planks or jungle wood or birch wood or glass or gravel:
					if player can build at loop-value:
						break loop-value using player's tool
						damage player's tool by 1
						if player's tool's durability = player's tool's max durability:
							clear player's tool
							exit loop

merci a ceux qui sauront m'aidé!

8 réponses à cette question

Messages recommandés

  • 0
Posté(e) (modifié)

Salut,

Moi j'aurais fait un truc du genre on ajoute le bloc de stone dans une variable de liste et et on met la condition si la liste ne contient pas le block alors on annule le cassage

Donc pour ça ajoute le block en question dans la liste et mets la condition

 

On mine:
	add stone block to {allow.blocks::*}
	if {allow.blocks::*} does not contain event-block:
		cancel event

essaye de mettre ça en dessous de 

if player's gamemode = survival:

essaie ça et redis moi si jamais

j'espère que ça fonctionnera

 

LEZIKO

Modifié par LEZIKO
  • 0
Posté(e)

Salut, merci de ta réponse 🙂

donc le code donne sa:

on mine:
	if lore of player's tool contains "&7H3x3":
		if player's gamemode = survival:
			add stone block to {allow.blocks::*}
			if {allow.blocks::*} does not contain event-block:
				cancel event
				set {_x1} and {_x2} to block's x loc
				set {_y1} and {_y2} to block's y loc
				set {_z1} and {_z2} to block's z loc
				if player's pitch is between -50 and 50:
					if player's horizontal facing is west or east:
						add 1 to {_y1} and {_z1}
						remove 1 from {_y2} and {_z2}
					else if player's horizontal facing is north or south:
						add 1 to {_x1} and {_y1}
						remove 1 from {_x2} and {_y2}
				else:
					add 1 to {_x1} and {_z1}
					remove 1 from {_x2} and {_z2}
				loop blocks within location at {_x1}, {_y1}, {_z1} in player's world and location at {_x2}, {_y2}, {_z2} in player's world:
					if loop-value != bedrock or air:
						if player can build at loop-value:
							break loop-value using player's tool
							damage player's tool by 1
							if player's tool's durability = player's tool's max durability:
								clear player's tool
								exit loop

Et du coup bah quand je mine de la stone, sa annule le 3*3 x) et quand je casse un autre bloc là sa n'annule pas l'event et sa casse tout

  • 0
Posté(e)

Ah oui pardon je m'excuse x) j'avais pas précisé qu'il fallait le mettre sans les autres  dcp ça doit donner ça 

 

on mine:
	add stone block to {allow.blocks::*}
	if {allow.blocks::*} does not contain event-block:
		cancel event
	else if lore of player's tool contains "&7H3x3":
		if player's gamemode = survival:
				cancel event
				set {_x1} and {_x2} to block's x loc
				set {_y1} and {_y2} to block's y loc
				set {_z1} and {_z2} to block's z loc
				if player's pitch is between -50 and 50:
					if player's horizontal facing is west or east:
						add 1 to {_y1} and {_z1}
						remove 1 from {_y2} and {_z2}
					else if player's horizontal facing is north or south:
						add 1 to {_x1} and {_y1}
						remove 1 from {_x2} and {_y2}
				else:
					add 1 to {_x1} and {_z1}
					remove 1 from {_x2} and {_z2}
				loop blocks within location at {_x1}, {_y1}, {_z1} in player's world and location at {_x2}, {_y2}, {_z2} in player's world:
					if loop-value != bedrock or air:
						if player can build at loop-value:
							break loop-value using player's tool
							damage player's tool by 1
							if player's tool's durability = player's tool's max durability:
								clear player's tool
								exit loop

Tiens ça devrait fonctionner (faudra juste vérifier les tabulations)

LEZIKO

  • 0
Posté(e)

Après test, du coup sa fonctionne, mais pas vraiment comme je le souhaite,

là quand je mine de la stone sa casse la stone et tout type de bloc dans le rayon 3*3*1 au lieux de cassé que la stone.

par contre si je mine un autre bloc il n'est pas miné.

  • 0
Posté(e) (modifié)

Ah alors sinon tu peux faire autrement par exemple tu laisses le premier skript que t'as mis donc celui la 

on mine:
	if lore of player's tool contains "&7H3x3":
		if player's gamemode = survival:
			cancel event
			set {_x1} and {_x2} to block's x loc
			set {_y1} and {_y2} to block's y loc
			set {_z1} and {_z2} to block's z loc
			if player's pitch is between -50 and 50:
				if player's horizontal facing is west or east:
					add 1 to {_y1} and {_z1}
					remove 1 from {_y2} and {_z2}
				else if player's horizontal facing is north or south:
					add 1 to {_x1} and {_y1}
					remove 1 from {_x2} and {_y2}
			else:
				add 1 to {_x1} and {_z1}
				remove 1 from {_x2} and {_z2}
			loop blocks within location at {_x1}, {_y1}, {_z1} in player's world and location at {_x2}, {_y2}, {_z2} in player's world:
				if loop-value != bedrock or air or obsidian or dirt or grass block or water or lava or oak wood or oak planks or spruce wood or spruce planks or jungle wood or birch wood or glass or gravel:
					if player can build at loop-value:
						break loop-value using player's tool
						damage player's tool by 1
						if player's tool's durability = player's tool's max durability:
							clear player's tool
							exit loop

 

après tu mets un évènement quand le skript charge donc tu ajoutes les blocs autorisés

 

On load:
	add stone block to {allow.blocks::*}

Et après tu rajoutes un événement comme 

On mine of stone block:
	loop {allow.blocks::*}:
		if {allow.blocks::*} does not contain event-block
			cancel event

#ou alors dans ton skript de base tu le mets 

on mine:
	loop {allow.blocks::*}:
		if {allow.blocks::*} does not contain event-block
			cancel event
	else if lore of player's tool contains "&7H3x3":
		if player's gamemode = survival:
			cancel event
			set {_x1} and {_x2} to block's x loc
			set {_y1} and {_y2} to block's y loc
			set {_z1} and {_z2} to block's z loc
			if player's pitch is between -50 and 50:
				if player's horizontal facing is west or east:
					add 1 to {_y1} and {_z1}
					remove 1 from {_y2} and {_z2}
				else if player's horizontal facing is north or south:
					add 1 to {_x1} and {_y1}
					remove 1 from {_x2} and {_y2}
			else:
				add 1 to {_x1} and {_z1}
				remove 1 from {_x2} and {_z2}
			loop blocks within location at {_x1}, {_y1}, {_z1} in player's world and location at {_x2}, {_y2}, {_z2} in player's world:
				if loop-value != bedrock or air or obsidian or dirt or grass block or water or lava or oak wood or oak planks or spruce wood or spruce planks or jungle wood or birch wood or glass or gravel:
					if player can build at loop-value:
						break loop-value using player's tool
						damage player's tool by 1
						if player's tool's durability = player's tool's max durability:
							clear player's tool
							exit loop

Voila je te propose des solutions n'hésites surtout pas à me dire si ça ne fonctionne pas 🙂

LEZIKO

 

Modifié par LEZIKO
  • 0
Posté(e) (modifié)

Le skript me dit "event-block is not a types.barflag (skript.sk, line 19: if {allow.blocks::*} does not contain event-block')

 

merci de ton aide 🙂

 

edit: J'ai trouvé ^^ il suffis simplement de retiré le ! de la ligne 

if loop-value != bedrock or air:

du coup remplacer bedrock or air par les blocks qu'on veut minés ^^ si simple et pourtant xD

Modifié par naunaud84820
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.