Aller au contenu

Question

Posté(e)

Bonjour tout le monde, alors j'ai un petit problème avec les armorstands, j'ai reussi a faire une commande pour les invoquer, jusque la tout vas bien, mais dès que je demande a l'entitée en question de se teleporter, rien ne se passe

Voici le code:

command /armorstand <text>:
	trigger:
		if arg 1 is set:
			if arg 1 is "creer":
				spawn an armor stand at player's location
				set {_as} to last spawned entity

command /tpas:
	trigger:
		teleport {_as} to {Lobby}

 

Je suis en 1.8.9 Spigot avec Script, et Umbaska

 

Merci ? !

10 réponses à cette question

Messages recommandés

  • 0
Posté(e)

aaaaaaaaah malheur ! Umbaska cause beaucoup de problème. Pour faire court c'est un addon foireux dont il ne faut surtout pas utiliser sous pas mal de bug dans le futur, je te recommande vivement de ne pas le posséder et encore moins l'utiliser.

  • J'aime 1
  • 0
Posté(e) (modifié)
il y a 21 minutes, AlexLew a dit :

aaaaaaaaah malheur ! Umbaska cause beaucoup de problème. Pour faire court c'est un addon foireux dont il ne faut surtout pas utiliser sous pas mal de bug dans le futur, je te recommande vivement de ne pas le posséder et encore moins l'utiliser.

Salut, déjà merci beaucoup pour ta réponse si rapide. Pour ma part umbaska ne me cause pas de soucis particuliers. Donc en fait j'ai résolu le problème il fallait juste que je fasse un loop avec le nom de l'entitée

 

Mais j'ai une autre question qui parle du meme code, est-ce que j'ai le droit de poser cette question dans le meme topic ? Au pire je modif le titre

Modifié par PABLO_21
  • 0
Posté(e)

Oui bien sûr pas de soucis, tu peux la poser dans ce topic ça ne gêne pas.

Par contre, certe tu n'auras peut être pas de soucis pour le moment avec umbaska, mais les ennuis commenceront dans le future, je peux te le garantir ?

  • 0
Posté(e) (modifié)

Donc en gros voila j'ai fait un système de famillier (un seul pour le moment) ça ressemble a ça le code:

command /armorstand <text>:
	trigger:
		if arg 1 is set:
			if arg 1 is "creer":
				spawn an armor stand at player's location
				set {_s} to last spawned entity
				set display name of last spawned entity to "&6Familier de %player%"
				add "{Invulnerable:1b,NoBasePlate:1b,NoGravity:1b,ShowArms:1b,Small:1b,Equipment:[{id:iron_sword,Count:1b},{id:leather_boots,Count:1b,tag:{display:{color:15204352}}},{id:leather_leggings,Count:1b,tag:{display:{color:16711684}}},{id:leather_chestplate,Count:1b,tag:{display:{color:16711680}}},{id:skull,Count:1b,Damage:3b,tag:{SkullOwner:Block2Redstone}}],Pose:{Body:[360f,0f,0f],LeftLeg:[303f,0f,0f],RightLeg:[296f,0f,0f],LeftArm:[69f,0f,0f],RightArm:[36f,0f,0f]}}" to nbt of {_s}

on any move:
	if event-world is "Lobby":
		set {_l.%player%} to location of player
		set {_l.%player%} to location of player's head
		remove 0.2 from y coord of {_l.%player%}
		add 0.5 to z coord of {_l.%player%}
		add 0.3 to x coord of {_l.%player%}
		set {_l.%player%} to location .4 left of {_l.%player%}
		
		
		loop all entities:
			if loop-entity is a Armor Stand:
				if loop-entity's name is "&6Familier de %player%":
					teleport loop-entity to {_l.%player%}
	stop

Donc tout vas bien hein pas d'erreur et tout.

Mais juste, a l'avenir je souhaite faire en sorte qu'il y ait plusieurs sortes de familliers et qu'ils puissent le renommer. Et c'est la ou il y a un "hic" c'est que je ne sais que utiliser l'identification par "nom" et non pas faire un système d'identification par ID

Donc le problème c'est que si j'ai encore ce code, est qu'ils rename leurs famillier, le code ne detecteras plus le "Familier de %player%" 

Je sais pas si c'est très clair ^^

Modifié par PABLO_21
  • 0
Posté(e)

Lorsque tu fais apparaître ton familier, tu le set dans une variable list avec l'id en question que tu souhaites , comme par exemple set {familliers::monid} to last spawned entity, enfin tu remplaces par quelque chose qui permet de reconnaître ton familier 

  • 0
Posté(e)

Ah mais nan je crois avoir trouvé plus simple, au lieu de mettre un id, je pourrais mettre le propriétaire ? Ce qui donnerais cela:

command /armorstand <text>:
	trigger:
		if arg 1 is set:
			if arg 1 is "creer":
				spawn an armor stand at player's location
				set {_s} to last spawned entity
				set display name of last spawned entity to "&6Familier de %player%"
				add "{Invulnerable:1b,NoBasePlate:1b,NoGravity:1b,ShowArms:1b,Small:1b,Equipment:[{id:iron_sword,Count:1b},{id:leather_boots,Count:1b,tag:{display:{color:15204352}}},{id:leather_leggings,Count:1b,tag:{display:{color:16711684}}},{id:leather_chestplate,Count:1b,tag:{display:{color:16711680}}},{id:skull,Count:1b,Damage:3b,tag:{SkullOwner:Block2Redstone}}],Pose:{Body:[360f,0f,0f],LeftLeg:[303f,0f,0f],RightLeg:[296f,0f,0f],LeftArm:[69f,0f,0f],RightArm:[36f,0f,0f]}}" to nbt of {_s}
				set {%event-entity%.proprietaire} to "%player%"

on any move:
	if event-world is "Lobby":
		set {_l.%player%} to location of player
		set {_l.%player%} to location of player's head
		remove 0.2 from y coord of {_l.%player%}
		add 0.5 to z coord of {_l.%player%}
		add 0.3 to x coord of {_l.%player%}
		set {_l.%player%} to location .4 left of {_l.%player%}
		
		
		loop all entities:
			if loop-entity is a Armor Stand:
				if {%event-entity%.prorpietaire} = "%player's name%":
					teleport loop-entity to {_l.%player%}
	stop

(je sait juste pas comment c'est l'expression qui dit "les entitées loopées (on va dire)" moi je met event-entity

 

(Juste le code au dessus je l'ai pas testé j'attend que tu me dise si il pourrais fonctionner)

  • 0
Posté(e)

Conseil : évite d'utiliser des points pour séparer tes valeurs dans les variables, utilise les deux points tel que 

{%event-entity%::prorpietaire}

A première vu ca ne change rien, mais ca change en fin de compte beaucoup. Voici un exemple concret:

Dans l'exemple suivant:

set {_mavariable.%player%} to 1

loop players:
    clear set {_mavariable.%loop-player%} to 1

Nous devons préciser tout les joueurs, et nous devons les loop. Tu t'imagines bien que si ton serveur a + 500 joueurs ca veut dire que ton script va devoir vérifier + 500 joueurs, c'est problématique. Maintenant prenant l'exemple des deux points:

set {_mavariable::%player%} to 1

clear {_mavariable::*}

Ici nous n'avons pas besoin de loop, économisant pas mal de ressource. Ce qui suit les deux points sont appelé "index", comme dans un livre. 

 

 

  • 0
Posté(e)
il y a 2 minutes, AlexLew a dit :

Conseil : évite d'utiliser des points pour séparer tes valeurs dans les variables, utilise les deux points tel que 


{%event-entity%::prorpietaire}

A première vu ca ne change rien, mais ca change en fin de compte beaucoup. Voici un exemple concret:

Dans l'exemple suivant:


set {_mavariable.%player%} to 1

loop players:
    clear set {_mavariable.%loop-player%} to 1

Nous devons préciser tout les joueurs, et nous devons les loop. Tu t'imagines bien que si ton serveur a + 500 joueurs ca veut dire que ton script va devoir vérifier + 500 joueurs, c'est problématique. Maintenant prenant l'exemple des deux points:


set {_mavariable::%player%} to 1

clear {_mavariable::*}

Ici nous n'avons pas besoin de loop, économisant pas mal de ressource. Ce qui suit les deux points sont appelé "index", comme dans un livre. 

 

 

D'accord, merci beaucoup ; mais donc si j'ai bien compris le skript correct serait celui ci:

command /armorstand <text>:
	trigger:
		if arg 1 is set:
			if arg 1 is "creer":
				spawn an armor stand at player's location
				set {_s} to last spawned entity
				set display name of last spawned entity to "&6Familier de %player%"
				add "{Invulnerable:1b,NoBasePlate:1b,NoGravity:1b,ShowArms:1b,Small:1b,Equipment:[{id:iron_sword,Count:1b},{id:leather_boots,Count:1b,tag:{display:{color:15204352}}},{id:leather_leggings,Count:1b,tag:{display:{color:16711684}}},{id:leather_chestplate,Count:1b,tag:{display:{color:16711680}}},{id:skull,Count:1b,Damage:3b,tag:{SkullOwner:Block2Redstone}}],Pose:{Body:[360f,0f,0f],LeftLeg:[303f,0f,0f],RightLeg:[296f,0f,0f],LeftArm:[69f,0f,0f],RightArm:[36f,0f,0f]}}" to nbt of {_s}

on any move:
	if event-world is "Lobby":
		set {_l.%player%} to location of player
		set {_l.%player%} to location of player's head
		remove 0.2 from y coord of {_l.%player%}
		add 0.5 to z coord of {_l.%player%}
		add 0.3 to x coord of {_l.%player%}
		set {_l.%player%} to location .4 left of {_l.%player%}
  		set {%event-entity%::proprietaire} to "%player%"
		
		
		loop all entities:
			if loop-entity is a Armor Stand:
				if {%event-entity%::proprietaire} = "%player%":
					teleport loop-entity to {_l.%player%}
	stop

 

  • 0
Posté(e)

Pour la variable du proprietaire, je t'avais pris un exemple ahah, il faut le faire pour toutes les variables, pas uniquement celle-ci, donc 

{_l::%player%}

Attention, j'ai pu remarquer dans ton script que tu avais la même variable mais qui change de valeur :

set {_l::%player%} to location of player
set {_l::%player%} to location of player's head

Ca pourrait te poser soucis ?

  • 0
Posté(e)

bon, j'ai tenté des trucs en suivant certaines de tes instructions ce qui m'as ammené a ça parceque plusieurs tentatives ne marchaient pas:

command /pet <text>:
	trigger:
		if arg 1 is set:
			if arg 1 is "1":
				spawn an armor stand at player's location
				set {_s} to last spawned entity
				set display name of last spawned entity to "&c&lHomme d'affaire"
				add "{Invulnerable:1b,NoBasePlate:1b,NoGravity:1b,Small:1b,Equipment:[{},{id:leather_boots,Count:1b,tag:{display:{color:0}}},{id:leather_leggings,Count:1b,tag:{display:{color:0}}},{id:leather_chestplate,Count:1b,tag:{display:{color:0}}},{id:skull,Count:1b,Damage:3b,tag:{SkullOwner:Whitechol}}],DisabledSlots:2039583,Pose:{LeftLeg:[333f,0f,0f],RightLeg:[27f,0f,0f]}}" to nbt of {_s}
				set {%event-entity%.%player%.proprietaire} to "%player%"
				set {%player%.petype} to "Affaire"
				
on any move:
	if event-world is "Lobby" or "Hub":
		set {_l::%player%} to location of player
		set {_l::%player%} to location of player's head
		remove -0.2 from y coord of {_l::%player%}
		add 0.5 to z coord of {_l::%player%}
		add 0.4 to x coord of {_l::%player%}
		set {_l::%player%} to location .4 left of {_l::%player%}
		
		
		loop all entities:
			if loop-entity is a Armor Stand:
				if {%event-entity%.%player%.proprietaire} = "%player%":
					teleport loop-entity to {_l::%player%}
	stop
			   
			   

Mais le résultat fait que qaund je prend un pet, très bien mais quand quelqu'un d'autre en prend, c'est celu qui bouge qui prend les deux...

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.