Aller au contenu
  • 0

Probleme avec une variable qui ne se place pas ou je veut


Question

Posté(e)

Bonjour/bonsoir je suis la pour vous demander de l'aide avec un de mes codes qui ne place pas la variable ou je le veut.

je m'explique la variable devrait se placer a l'endroit ou est le joueur quand il se tp mais il se place a l'endroit ou le joueur ces tp

sa me fais sa avec plusieur commande qui sont le /home, /warp, /spawn et les /tp et /tpa en tous genre

Skript : 2.2 dev 36 

spigot : 1.12

command /back:
	permission: {@vip1}
	permission message: {@vip2}
	trigger:
		teleport player to {back.%player%}

on teleport:
	if player has permission "{@vip1}":
		set {back.%player%} to location of player
on death:
	if player has permission "{@vip1}":
		set {back.%player%} to location of player

 

11 réponses à cette question

Messages recommandés

  • 0
Posté(e)

essaye d'ajouter des wait

command /back:
	permission: {@vip1}
	permission message: {@vip2}
	trigger:
		teleport player to {back.%player%}

on teleport:
	if player has permission "{@vip1}":
		wait 1 ticks
		set {back.%player%} to location of player
on death:
	if player has permission "{@vip1}":
		wait 1 tick
		set {back.%player%} to location of player

sinon je ne sais pas :c

  • 0
Posté(e)

Salut,

pour moi c'est en effet le délai qui est trop rapide.

command /back:
	permission: {@vip1}
	permission message: {@vip2}
	trigger:
		teleport player to {back.%player%}

on teleport:
	if player has permission "{@vip1}":
		wait 5 ticks
		set {back.%player%} to location of player
on death:
	if player has permission "{@vip1}":
		wait 5 ticks
		set {back.%player%} to location of player

Cordialement,

  • 0
Posté(e)

Non le probleme et tout l'inverse il se place a l'endroit ou tu tes tp alors quil devrait se placer a l'endroit ou tu etait quand tu a fait la commande /home ou autre

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

Non le probleme et tout l'inverse il se place a l'endroit ou tu tes tp alors quil devrait se placer a l'endroit ou tu etait quand tu a fait la commande /home ou autre

Ah oui je vois totalement ?

Malheureusement, il me semble difficile de le faire, je vois que https://www.spigotmc.org/resources/ultimate-essentials-skript.40326/ comporte un /back, mais cela semble assez compliqué et pas très optimisé.

 

function M1(value: text, r1: text, r2: text) :: text:
	set {_message} to yml value "%{_value}%" from file "plugins/essentials/language.yml" parsed as text
	replace all "[%{_r1}%]" with "%{_r2}%" in {_message}
	return {_message}
function NoPerm(perm: text, p: player) :: text:
	yml value "UsingSign" of file "plugins/essentials/userdata/%{_p}'s uuid%.yml" is true:
		return "yes"
		stop
	{_p} does not have permission "%{_perm}%":
		set {_list::*} to yml list "player-commands" of file "plugins/essentials/config.yml"
		loop {_list::*}:
			"essentials.%loop-value%" is "%{_perm}%"
			return "yes"
			stop
		set {_message} to yml value "NoPermission" of file "plugins/essentials/language.yml"
		replace all "[Permission]" with "%{_perm}%" in {_message}
		message coloured {_message} to {_p}
		return "no"
	{_p} has permission "%{_perm}%":
		return "yes"
function Cooldown(p: player) :: timespan:
	set {_cooldown} to yml value "teleport-cooldown" of file "plugins/essentials/config.yml"
	if {_cooldown} is not 0:
		{_p} does not have permission "essentials.teleport.cooldown.bypass":
			set {_message} to M1("TeleportingIn", "Time", "%{_cooldown}%")
			message coloured {_message} to {_p}
			set yml value "teleporting" of file "plugins/essentials/userdata/%{_p}'s uuid%.yml" to "true"
			set {_cooldown} to "%{_cooldown}% seconds" parsed as timespan
			return {_cooldown}
		else:
			set yml value "teleporting" of file "plugins/essentials/userdata/%{_p}'s uuid%.yml" to "true"
			set {_cooldown} to 0 seconds
			return {_cooldown}
	else:
		set yml value "teleporting" of file "plugins/essentials/userdata/%{_p}'s uuid%.yml" to "true"
		set {_cooldown} to 0 seconds
		return {_cooldown}
function Delay(p: player) :: timespan:
	set {_delay} to yml value "teleport-delay" of file "plugins/essentials/config.yml"
	if {_delay} is not 0:
		message "great" to console
		{_p} does not have permission "essentials.teleport.timer.bypass":
			set {_message} to M1("TeleportingInDontMove", "Time", "%{_delay}%")
			message coloured {_message} to {_p}
			set yml value "teleporting" of file "plugins/essentials/userdata/%{_p}'s uuid%.yml" to "true"
			set {_delay} to "%{_delay}% seconds" parsed as timespan
			return {_delay}
		else:
			set yml value "teleporting" of file "plugins/essentials/userdata/%{_p}'s uuid%.yml" to "true"
			set {_delay} to 0 seconds
			return {_delay}
	else:
		set {_delay} to 0 seconds
		return {_delay}

command /back:
	aliases: /return
	trigger:
		NoPerm("essentials.back", sender) is "no":
			stop
		wait Cooldown(player)
		wait Delay(player)
		yml value "teleporting" of file "plugins/Essentials/userdata/%player's uuid%.yml" is "true"
		set yml value "teleporting" of file "plugins/Essentials/userdata/%player's uuid%.yml" to "false"
		set {_value} to yml value "lastpoint" of file "plugins/Essentials/userdata/%player's uuid%.yml"
		set yml value "lastpoint" of file "plugins/Essentials/userdata/%player's uuid%.yml" to location of player
		teleport player to {_value}
		set {_message} to M1("Back", "", "")
		message coloured {_message}

Cordialement,

  • 0
Posté(e) (modifié)

 

Il y a 20 heures, Delling a dit :

Bonjour/bonsoir je suis la pour vous demander de l'aide avec un de mes codes qui ne place pas la variable ou je le veut.

je m'explique la variable devrait se placer a l'endroit ou est le joueur quand il se tp mais il se place a l'endroit ou le joueur ces tp

sa me fais sa avec plusieur commande qui sont le /home, /warp, /spawn et les /tp et /tpa en tous genre

Skript : 2.2 dev 36 

spigot : 1.12


command /back:
	permission: {@vip1}
	permission message: {@vip2}
	trigger:
		teleport player to {back.%player%}

on teleport:
	if player has permission "{@vip1}":
		set {back.%player%} to location of player
on death:
	if player has permission "{@vip1}":
		set {back.%player%} to location of player

 

Bonjour,

je t'explique le problème dans ton code, c'est que tu utilises un 'on teleport' qui est déclenché quand le joueur s'est déjà téléporté.

Pour faire plus simple le joueur est à un point A, puis éxécute une commande qui le téléporte au point B, et une fois qu'il est au point B, le 'on teleport' se déclenche, ce qui a pour conséquence que la variable se définie sur le point B et non le pont A .

Ce qu'il faut faire, c'est que sur tes commande de téléportation, il faut définir la variable BACK, je m'explique :

command /spawn:
	trigger:
		set {back.%player%} to player's location #On définis la variable sur tes commande avant de téléporté !
		teleport player to {spawn}
		message "&eVous avez été téléporté au spawn !"
on death:
	if victim has permission "{@vip1}": #Bien penser à mettre "VICTIM" au lieu de "PLAYER" quand c'est un event de mort ou dégat !
		set {back.%victim%} to victim's location
command /back:
	permission: {@vip1}
	permission message: {@vip2}
	trigger:
		teleport player to {back.%player%}

Et pour finir, pense bien dans un événement tel que "on damage" ou "on death" à remplacer "player" par "attacker" si tu désignes la personnes qui attaque ou "victim" si tu désignes la personnes victime de l'événement !

 

Cordialement

FyRoOxX

 

PS: Met un j'aime si je vous ai aidé !

Modifié par FyRoOxX
  • J'aime 1
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.