Je cherche à faire un skript permettant d'ajouter la commande /home et celles associées à celle-ci (jamais fait, nonon:eek:).
MAIS, pour innover (je crois), je voudrais faire un affichage de la liste des homes de chaque joueur dans un GUI, avec pourquoi pas un item customisable pour chaque home, et évidemment quand on clique sur cet item, il téléporte le joueur au home désigné (j'espère que c'est claire :confused:).
J'ai déjà créé toute la partie commande, ajout, suppression, changement d'un home, et même l'affichage dans un GUI de tous les homes (pour l'instant uniquement avec des compas). Il n'y a que la partie téléportation quand on clique sur un item qui ne marche pas.
Quand je clique sur n'importe lequel des items, cela me téléporte au dernier home de la liste.
Voici le bout de code fautif (je pense):
set {x} to 0
loop {home.%player%.list::*}:
format slot {x} of player with 1 compass named loop-value to run [make player execute command "/home %loop-value%"]
set {x} to {x}+1
J'ai l'impression (voire même je suis sûr) qu'il change la commande de TOUS les items à chaque nouvelle information de {home.%player%.list::*}, et donc que quel que soit l'item cliqué, il téléporte au dernier de la liste, et je vois pourtant pas ce que j'ai fais de mal :(.
Voici le code complet, au cas où j'aurai fais une faute dedans (mais je pense pas car à part ça tout marche nikel) :
command /sethome <text> [<item>]:
description: Crée un nouveau home, avec possibilité de le représenter par un item dans un menu # Pour l'item dans le menu on repassera ^^'
usage: §6/sethome <nom du home> [item]
executable by: players
trigger:
if argument 2 is not set: # pas d'item précisé -> item par défaut : compass
if {home.%player%.%argument 1%.location} is set: # si un home existe déjà avec le même nom
set {home.%player%.%argument 1%.location} to location of player #...
set {home.%player%.%argument 1%.item} to compass #item par défaut.
message "§6Home %argument 1% ajouté en %player's location%"
stop trigger #STOP
set {home.%player%.%argument 1%.location} to location of player #...
add argument 1 to {home.%player%.list::*} # la raison du stop trigger juste au dessus : éviter d'avoir 2 fois le même nom dans la liste.
message "§6Home %argument 1% ajouté en %player's location%"
stop trigger #STOP
else: #argument 2 is set -> pareil que au dessus, à la place du compas on met l'item précisé
if {home.%player%.%argument 1%.location} is set:
set {home.%player%.%argument 1%.location} to location of player
set {home.%player%.%argument 1%.item} to argument 2
message "§6Home %argument 1% ajouté en %player's location%"
set {home.%player%.%argument 1%.location} to location of player
set {home.%player%.%argument 1%.item} to argument 2
add argument 1 to {home.%player%.list::*}
message "§6Home %argument 1% ajouté en %player's location%"
stop trigger
command /delhome <text>:
description: Supprime l'un de vos home
executable by: players
trigger:
if {home.%player%.%argument%.location} is not set:
message "§6Le home %argument% n'existe pas" # espèce de débile ^^
remove argument from {home.%player%.list::*} # au cas où (pas très utile ouioui)
stop trigger #STOP
delete {home.%player%.%argument%.location} #...
delete {home.%player%.%argument%.item} #...
remove argument from {home.%player%.list::*} #...
message "§6Home %argument% supprimé"
command /home [<text>]:
description: Vous téléporte à l'un de vos home
executable by: players
trigger:
if argument is not set: # càd juste "/home" -> donne une liste de tous les homes
open chest with 6 rows named "§6§lMenu des homes" to player # ouverture du GUI
wait 2 ticks #...
format slot 53 of player with 1 arrow named "§aPage suivante" to close # POUR L'INSTANT ne fais rien, mais c'est bon de prévoir ^^
format slot 45 of player with 1 arrow named "§cPage précédente" to close # pareil
set {x} to 0 # /!\ début du passage qui marche pas bien :'(
loop {home.%player%.list::*}: #on fait défiler toutes les infos de {home.%player%.list::*}
format slot {x} of player with 1 compass named loop-value to run [make player execute command "/home %loop-value%"] # un compass nommé avec le nom du home
#et qui est censé tp au-dit home
set {x} to {x}+1 # pour passer au slot suivant
message "Liste de vos homes : %{home.%player%.list::*}%" # devrai être supprimé quand le GUI marche(ra ?), pour l'instant montre juste tous les homes du joueur
stop trigger #STOP
if {home.%player%.%argument%.location} is set: # et qu'il existe donc
if player is riding a horse or a skeleton horse: # Pour tp un éventuel cheval ou cheval squelette avec le joueur
make player dismount his vehicle # car sinon on ne pas tp le cheval
wait 5 ticks # le temps que Minecraft prenne en compte que le joueur n'est plus sur le cheval
loop entities in radius 3 around the player: # je savais pas trop pour le radius du coup j'ai mis 3 (en dessous ça marche une fois sur 2)
if loop-entity is a skeleton horse or a horse: #...
teleport loop-entity to {home.%player%.%argument%.location} # on tp d'abord le cheval
Teleport player to {home.%player%.%argument%.location} # et ENFIN on tp le joueur
message "§6Téléporté à %argument%"
else:
message "§6Le home %argument% n'existe pas" # petit débile ^^
Voilà tout, j'espère que vous pourrez déboguer le bout de skript fautif, ou alors que vous aurez une autre idée pour parvenir à mon objectif :)
Merci d'avance ! :p:D
blueblasterz
EDIT : je précise même si c'est peut-être inutile que l'ADD-ON SkQuery est nécéssaire pour faire tourner ce skript
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.
Question
blueblasterz
Bonjour,
Je cherche à faire un skript permettant d'ajouter la commande /home et celles associées à celle-ci (jamais fait, nonon:eek:).
MAIS, pour innover (je crois), je voudrais faire un affichage de la liste des homes de chaque joueur dans un GUI, avec pourquoi pas un item customisable pour chaque home, et évidemment quand on clique sur cet item, il téléporte le joueur au home désigné (j'espère que c'est claire :confused:).
J'ai déjà créé toute la partie commande, ajout, suppression, changement d'un home, et même l'affichage dans un GUI de tous les homes (pour l'instant uniquement avec des compas). Il n'y a que la partie téléportation quand on clique sur un item qui ne marche pas.
Quand je clique sur n'importe lequel des items, cela me téléporte au dernier home de la liste.
Voici le bout de code fautif (je pense):
J'ai l'impression (voire même je suis sûr) qu'il change la commande de TOUS les items à chaque nouvelle information de {home.%player%.list::*}, et donc que quel que soit l'item cliqué, il téléporte au dernier de la liste, et je vois pourtant pas ce que j'ai fais de mal :(.
Voici le code complet, au cas où j'aurai fais une faute dedans (mais je pense pas car à part ça tout marche nikel) :
Voilà tout, j'espère que vous pourrez déboguer le bout de skript fautif, ou alors que vous aurez une autre idée pour parvenir à mon objectif :)
Merci d'avance ! :p:D
blueblasterz
EDIT : je précise même si c'est peut-être inutile que l'ADD-ON SkQuery est nécéssaire pour faire tourner ce skript
5 réponses à cette question
Messages recommandés