Aller au contenu
  • 0

Problème de détection d'un shoot d'une flèche


Question

Posté(e)

Version de Minecraft : 1.5.2
Version de Skript : 2.4.1

Addons utilisés: Skelette 1.9.2

Type du skript : Trainée de flèche par le tir d'un joueur

Description du script :

Bonjour,
Je cherche à réaliser un skript qui permet quand un joueur tire une flèche par le biais d'un arc que l'on voit une traînée de diamants
.

Actuellement, il fonctionne, mais avec tous projectile (boules de neige, flèches, œufs,...) sauf que je voudrais qu'il ne fonctionne qu'avec que des flèches.


J'aurais souhaité aussi empêcher la récupération des diamants qui produit par ce skript et non tous les diamants. Si vous avez une idée, je suis preneur.

 

Voici le programme qui fonctionne avec tous les projectiles :

on shoot: 		#Detecte que le joueur tire un projectile 
	loop 10 times: 		#Boucle 10 fois pour faire drop des diamant tout le long du trajet de la flèche
		if projectile is not on ground:   #Verifie que la flèche n'as pas attérie/planter dans un bloc
			drop a diamond  #Fait drop un diamant
			wait 1 ticks    #Attendre 1 tick entre chaque boucle

on pickup of diamond: #Empeche la récupération des diamants
	cancel event

Voici le programme qui pour ma logique devrait fonctionner juste pour les flèches :

on shoot: 		#Detecte que le joueur tire un projectile 
	if projectile is arrow: #Vérifie que le projectile est uniquement une flèche
		loop 10 times: 		#Boucle 10 fois pour faire drop des diamant tout le long du trajet de la flèche
			if projectile is not on ground:   #Verifie que la flèche n'as pas attérie/planter dans un bloc
				drop a diamond  #Fait drop un diamant
				wait 1 ticks    #Attendre 1 tick entre chaque boucle

on pickup of diamond: #Empeche la récupération des diamants
	cancel event

 

Je vous remercie par avance pour votre aide.

8 réponses à cette question

Messages recommandés

  • 0
Posté(e) (modifié)

voila

on shoot:
	if projectile is arrow:
		set {diamond.%shooter%} to true
		while {diamond.%shooter%} is true:
			wait 3 ticks
			add 1 to {_name.%shooter%}
			set {_drop.%shooter%} to diamond named "&c%{_name.%shooter%}%"
			drop {_drop.%shooter%} at projectile

on projectile hit:
	if {diamond.%shooter%} is true:
		delete projectile
		set {diamond.%shooter%} to false

on pickup of diamond:
	loop 500 times:
		add 1 to {_arg}
		if "%name of event-item%" is "&c%{_arg}%":
			cancel event

J'ai augmenté les ticks car sinon il y en avait beaucoup trop et pas besoin de faire une vérif pour savoir si la flèche est dur le sol ou non 

Modifié par zarco70
  • J'aime 1
  • 0
Posté(e) (modifié)

Merci de ta réponse Zarco70,
 

Pourrais-tu commenter ton code , étant nouveau en skript/programmation je ne comprend pas toutes les étapes et j'aimerais apprendre d'avantages 🙂 .

 

Et malheureusement sur mon serveur ( Local) il ne fonctionne pas .

Voici le rapport qui concerne le skript
[Skript] the name of event-item stack is already a text, so you should not put it in one (e.g. the name of event-item stack instead of "%the name of event-item stack%") (TraineeFlècheForum.sk, line 18: if "%name of event-item%" is "&c%{_arg}%":')

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

Teste comme sa j'ai mis "on pickup" au lieu de "on pickup of diamond" sinon j'aurais une autre solution mais il faut d'abord que tu me dises si c'est bon ou pas

on shoot: #Quand le joueur  tir
	if projectile is arrow: #Si le projectile tiré est une flèche
		set {diamond.%shooter%} to true #on met la variable {diamond.%shooter%} sur true
		while {diamond.%shooter%} is true: #on vérifi en boucle si la variable est sur true
			wait 3 ticks #on attend 3 ticks
			add 1 to {_name.%shooter%} # on ajoute 1 à une variable temporaire
			set {_drop.%shooter%} to diamond named "&c%{_name.%shooter%}%" #on nomme le diamant par la variable temporaire
			drop {_drop.%shooter%} at projectile #on drop un diamant avec le nom de la variable temporaire au projectile

on projectile hit: #Quand le projectile touche un block/joueur
	if {diamond.%shooter%} is true: #Si la variable est sur true
		delete projectile #on supprime le projectile
		set {diamond.%shooter%} to false #on met la variable sur false pour arrêter la boucle

on pickup: #Quand on récupère un item au sol
	if "%event-item%" is "diamond": #Si l'item est un diamant
		loop 500 times: #on fait tourner une boucle 500 fois
			add 1 to {_arg} #on ajoute 1 à une variable temporaire
			if "%name of event-item%" is "&c%{_arg}%": #Si le nom de l'item est la variable temporaire
				cancel event #on annule l'évènement

 

Modifié par zarco70
  • 0
Posté(e)

Encore merci de m'aider 🙂

Malheureusement il ne fonctionne toujours pas 

 

J'ai le même avertissement (jaune) dans ma console
08:48:35 WARN]: [Skript] the name of event-item stack is already a text, so you should not put it in one (e.g. the name of event-item stack instead of "%the name of event-item stack%") (TraineeFlècheForum.sk, line 19: if "%name of event-item%" is "&c%{_arg}%":#Si le nom de l'item est la variable temporaire')
 

 

Voici une vidéo que j'avais réaliser pour montrer le fonctionnement de mon tout premier code ( le premier de ce post )

  • 0
Posté(e)
on shoot:
	if projectile is arrow:
		set {diamond.%shooter%} to true
		while {diamond.%shooter%} is true:
			wait 3 ticks
			add 1 to {_name.%shooter%}
			set {_drop.%shooter%} to diamond named "&c%{_name.%shooter%}%"
			drop {_drop.%shooter%} at projectile

on projectile hit:
	if {diamond.%shooter%} is true:
		delete projectile
		set {diamond.%shooter%} to false

on pickup of diamond:
	loop 500 times:
		add 1 to {_arg}
		name of event-item is "&c%{_arg}%":
			cancel event

on donc voila j'ai trouvé une autre solution. Quand la flèche est tiré sa fais spawn des diamant qui ne se stack pas et qu'on peut par récupérer

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.