Message populaire Mastersfelix Posté(e) le 26 juin 2016 Message populaire Posté(e) le 26 juin 2016 Ce tutoriel est assez vieux, je vous réfère à un tutoriel un peu plus récent : https://skript-mc.fr/forum/threads/pourquoi-utilise-tuske-au-lieu-de-skquery-pour-les-gui.15437/ Alors salut tout le monde. J'ai vu sur le forum qu'il existait déjà de nombreux tutoriels sur les GUI, mais je trouve qu'il manque plusieurs informations et que les informations sont plutôt dispersées alors dans ce tutoriel je mettrai tout ce que la communauté a créé et je vais rajouter une petite chose que vous allez surement apprécier ;) La base: Bon alors je vais vous commencer par vous expliquer ce qu'est un gui et comment nous pouvons les utiliser. Premièrement, un gui est un coffre irréel que nous ouvrons à un joueur et nous y ajoutons des items à l'intérieur pour y créer un menu ou n'importe quoi d'autres que vous pouvez penser. Pour nous servir de ces GUI, nous avons besoin de l'addon SKQuery que nous utilisons de cette manière command /gui: trigger: open chest with 5 rows named "hello" to player wait 2 ticks format slot 1 of player with 1 dirt named "Bonjour, mon nom est terre" with lore "&6Je vis|| || ||&9ICI" to be unstealable Bon, décortiquons ce code, dans notre 3e ligne, nous ouvrons un coffre au joueur. Nous devons spécifier le nombre de lignes (Pour un maximum de 6, chaque ligne a 9 cases). Par la suite, nous donnons le nom du gui (Ce nom sera écrit en haut du coffre. Nous pouvons utiliser les codes couleurs) et nous finissons en spécifiant celui qui verra ce coffre Par la suite, nous mettons un délai de 2 ticks, car sans ce délai, les joueurs pourront prendre les items qui se trouvent dans ce coffre à l'aide d'un certain bug. Pour terminer, nous plaçons un item dans le slot 1 (Qui est la 2e case en l’occurrence, car dans l'informatique, nous commençons toujours par le 0 donc le 0 = 1ère case) nous disons dans le coffre de quel joueur et l'item qui sera mis dans cette case. Nous donnons un nom à cet item (Encore une fois les codes de couleurs sont acceptés) et nous lui donnons un lore (Description sous le nom (codes de couleurs acceptés) les || sont utilisés pour passer des lignes). La partie de code où il est écrit "to be unstealable" sert à nous dire ce que fait l'item dans ce coffre Il existe différentes fonctions pour les items - To be unstealable -> Le joueur ne pourra pas prendre l'item - To close -> Fermera le coffre - To close then run "commande" -> Exécutera la commande qui sera mise entre parenthèses (La console) et fermera le gui - To run "commande" -> Exécutera la commande qui sera mise entre parenthèses (La console) Les lambdas Dans un gui, parfois, nous ne voulons pas que ce soit la console qui exécute la commande, mais plutôt le joueur et c'est là que les lambdas viennent en jeu Pour déclarer un lamdas, rien de plus simple, au lieu de faire to close then run "command", nous allons faire to close then run . Exemple[/color][/color] [color=#ff0000][color=#000000][code][/color][/color][/color][/color] [color=#ff0000][color=#000000][color=#ff0000][color=#000000]format slot 0 of player with 1 dirt named "send message hello to owner" to close then run [make player execute command "msg Jean hello"] Ouvrir un GUI dans un GUI Dans un Gui, nous avons aussi parfois envie de faire qu'un item dans le Gui apporte à une autre page. Pour ce faire, nous avons un petit code à mettre dans le second Gui pour que la transition fonctionne. Je vais vous montrer directement un exemple, car une image vaut 1000 mots command /test: trigger: open chest with 2 rows named "joe" to player wait 2 ticks format slot 1 of player with 1 dirt named "coffre" to close then run [make player execute command "g2"] # Le to close then run est très important ! command /g2: trigger: close player's inventory # On doit fermer l'inventaire du joueur wait 2 ticks open chest with 3 rows named "yo" to player # Et le réouvrir par la suite wait 2 ticks format slot 12 of player with 1 sand named "sand" to be unstealable L'utilisation avancé des GUIs: Il existe une autre option pour faire des GUI qui est utilisé moins souvent, mais qui a certains avantages (permet de différencier le clique droit, le clic gauche et le clic du milieu) command /test: trigger: open chest with 1 rows named "Coffre" to player set slot 1 of current inventory of player to a dirt named " allo " with lore " " on inventory click: if inventory name of player's current inventory is "Coffre": if name of clicked item contains " allo ": if "%click type%" contains "LEFT": send message "hello" cancel event Dans ce code, nous ouvrons un coffre au joueur comme dans la première méthode, mais plutôt que de format une case, nous en faisons que de placer un item dans une case sans utiliser la méthode format. De cette façon, le joueur pourra prendre l'item. Par la suite, à l'aide de l'event on inventory click, nous détectons le type de clic (RIGHT, LEFT, MIDDLE) et nous exécutons le code voulu. Cette méthode nous permet de déterminer le type de clic qui a été utilisé pour chaque item et nous donne encore plus d'options pour réaliser nos idées <3 Bien optimiser son code. Parfois, nous avons à remplir un coffre d'un certain objet et en programmation il existe de nombreux moyens d'optimiser son code. Lorsque nous avons à remplir notre coffre d'un certain item, nous n'avons qu'à utiliser ce code command /test: trigger: open chest with 3 rows named "Un coffre" to player wait 2 ticks set {_s} to 0 loop 27 times: format slot {_s} of player with 1 green glass pane named " " to be unstealable add 1 to {_s} Dans ce code, nous mettons une variable à 0 et nous plaçons un bloc à cette case, par la suite nous ajoutons 1 à cette variable et nous plaçons un bloc à cette nouvelle case et ainsi de suite 27 fois. Pour déterminer le nombre de fois nécessaire, vous n'avez qu'à faire nombre de ligne * 9 et vous obtiendrez votre nombre (Dans notre cas 3*9 = 27) Une autre technique pour placer des blocs répétitifs à plusieurs endroits sans avoir à refaire le même code 15x command /test: trigger: open chest with 3 rows named "Coffre" to player wait 2 ticks set {_slots::*} to 2, 3, 4, 5, 20 and 26 loop {_slots::*}: format slot loop-value with 1 red glass pane named " " to be unstealable Dans ce code, nous mettons les slots que nous voulons placer notre bloc dans une liste et par la suite nous regardons les valeurs de cette liste et plaçons un bloc à chacune de ces valeurs. Ces 2 méthodes sont très utiles pour optimiser vos codes ;) Les GUIs animés Nous pouvons aussi créer en skript des GUI qui sont animés. La méthode est un peu plus complexe, mais elle est quand même assez simple et très peu connu (Je crois que presque personne ne la connaît) Je vais commencer par vous montrer le code et vous expliquer ensuite. command /test: trigger: open chest with 3 rows named "coffre" to player wait 2 ticks while "%inventory name of player's current inventory%" is "coffre": format slot 1 of player with dirt named "%{_s}%" to be unstealable add 1 to {_s} wait 2 ticks Dans ce code, nous ouvrons un coffre au joueur et nous partons une boucle while qui regarde à tous les 2 ticks si le nom de l'inventaire du joueur est le nom de l'inventaire que nous lui avons ouvert. Si c'est le cas, nous formatons les slots sinon nous arrêtons le code. À la fin de notre code, le wait 2 ticks représente le temps entre chaque actualisation du GUI. Plus le temps est haut, moins le serveur va lagguer et plus le temps est bas plus l'animation va sembler fluide. Bon, je crois que j'ai pas mal fait le tour des GUI et je ne crois pas que je n'ai rien d'autre à dire. Si vous avez été capable de lire tout ceci, je vous félicite, vous êtes maintenant un maître incontesté des GUI et vous savez absolument tout PS: Si j'ai oublié quelque chose, n'hésitez pas à me le dire dans les commentaires <3 6
> NoaGamingFR Posté(e) le 26 juin 2016 Posté(e) le 26 juin 2016 AU TOP! Par contre le while (pas pour les gui pour tout) je n'ai jamais COMPRIS ! XD TUTO =D 1
Skripting Posté(e) le 26 juin 2016 Posté(e) le 26 juin 2016 Super ! Moi qui galérer avec les GUIs, je comprends mieux ! Merci ! P.S : Pour le "To close then run "commande". La commande est exécutée par la console ou le joueur ? Si c'est par la console, y a-t-il moyen de faire en sorte que cette commande soit exécutée par le joueur ? P.S 2 : Pour le "To close then run "commande". Peut-on faire exécuter 2 commandes en même temps ? Si oui, comment ? Merci ! 1
Mastersfelix Posté(e) le 26 juin 2016 Auteur Posté(e) le 26 juin 2016 AU TOP! Par contre le while (pas pour les gui pour tout) je n'ai jamais COMPRIS ! XD TUTO =D Une boucle while peut se traduire par tant et aussi longtemps que... et donc en l'occurence ici, tant et aussi longtemps que le nom du coffre est "tatata", exécute le code toute les 2 ticks et lorsque la condition arrête d'être vrai, elle sort de la boucle et @PsYZiiK , j'ai oublié de parler des lambdas, ils peuvent être utilisé pour lancer un bout de code plutôt qu'une commande to close then run [make player execute command "/spawn"]->[set {_tp} to true] Dans le code du haut, le joueur exécutera /spawn et la variable {_tp} sera set à true
> NoaGamingFR Posté(e) le 26 juin 2016 Posté(e) le 26 juin 2016 Merci mais le while fait bug je pense tout les 2 tick ? 1
McGuard83 Posté(e) le 26 juin 2016 Posté(e) le 26 juin 2016 Super tutoriel alors la vraiment chapeau, un des meilleures ! Juste un truck, il me semble que 1 ticks suffit, enfin moi j'ai toujours fait 1 ticks ^^ Sinon vraiment trés trés bon tutoriel ! Je te remercie 1
Mastersfelix Posté(e) le 27 juin 2016 Auteur Posté(e) le 27 juin 2016 Merci mais le while fait bug je pense tout les 2 tick ? Hmm.. C'est possible, mais il me semble que le 2 ticks fonctionnait.. Je peux me tromper aussi, je ne suis pas parfait Super tutoriel alors la vraiment chapeau, un des meilleures ! Juste un truck, il me semble que 1 ticks suffit, enfin moi j'ai toujours fait 1 ticks ^^ Sinon vraiment trés trés bon tutoriel ! Je te remercie À ma connaissance, 1 tick n'est pas suffisant, mais bon je suis vieux et j'ai toujours mis 2 ticks peut-être qu'entre temps sa a changé je ne sais pas. Vous pouvez l'essayer, mais je ne promets pas que cela va fonctionner
CkrillZz Posté(e) le 27 juin 2016 Posté(e) le 27 juin 2016 Bonjour, j'ai une question : En gros j'ai tenté de faire un GUI qui ouvre d'autres GUI dans le cas d'un Menu avec des sous-parties, mais quand j'ouvre un deuxieme gui et que je clique sur un item qui normalement enclenche une commande, il n'y a aucuns résultats, mais si j'ouvre directement le GUI, la commande s'exécute bien. Si j'ai mal expliqué dis le moi, et merci d'avance en espérant que tu connaisses la solution.
McGuard83 Posté(e) le 27 juin 2016 Posté(e) le 27 juin 2016 Ce que je te conseil, c'est que au lieu d'executer une commande dirrecetement dans le format tu fait: command /test: trigger: open chest with 1 rows named "TON MENU" to player wait 1 ticks format slot 3 of player with enchanted book named "COMMANDE SPAWN" with lore "&7ICI LITEM OU TU VA EXECUTER LA COMMANDE" to close unformat slot 3 of player # TU UNFORMAT LITEM EN GROS IL POURRAS LE VOLER on inventory click: name of clicked item is "COMMANDE SPAWN": #NOM DE LITEM cancel event # POUR PAS LE VOLER make player command "/spawn" as op # COMMANDE # ET EN PLUS TU PEUX CARREMENT EXECUTER DU CODE 2
CkrillZz Posté(e) le 28 juin 2016 Posté(e) le 28 juin 2016 Ce que je te conseil, c'est que au lieu d'executer une commande dirrecetement dans le format tu fait: command /test: trigger: open chest with 1 rows named "TON MENU" to player wait 1 ticks format slot 3 of player with enchanted book named "COMMANDE SPAWN" with lore "&7ICI LITEM OU TU VA EXECUTER LA COMMANDE" to close unformat slot 3 of player # TU UNFORMAT LITEM EN GROS IL POURRAS LE VOLER on inventory click: name of clicked item is "COMMANDE SPAWN": #NOM DE LITEM cancel event # POUR PAS LE VOLER make player command "/spawn" as op # COMMANDE # ET EN PLUS TU PEUX CARREMENT EXECUTER DU CODE Merci de l'aide ;)
Armadia Posté(e) le 28 juin 2016 Posté(e) le 28 juin 2016 Alors salut tout le monde. J'ai vu sur le forum qu'il existait déjà de nombreux tutoriels sur les GUI, mais je trouve qu'il manque plusieurs informations et que les informations sont plutôt dispersées alors dans ce tutoriel je mettrai tout ce que la communauté a créé et je vais rajouter une petite chose que vous allez surement apprécier ;) La base: Bon alors je vais vous commencer par vous expliquer ce qu'est un gui et comment nous pouvons les utiliser. Premièrement, un gui est un coffre irréel que nous ouvrons à un joueur et nous y ajoutons des items à l'intérieur pour y créer un menu ou n'importe quoi d'autres que vous pouvez penser. Pour nous servir de ces GUI, nous avons besoin de l'addon SKQuery que nous utilisons de cette manière command /gui: trigger: open chest with 5 rows named "hello" to player wait 2 ticks format slot 1 of player with 1 dirt named "Bonjour, mon nom est terre" with lore "&6Je vis|| || ||&9ICI" to be unstealable Bon, décortiquons ce code, dans notre 3e ligne, nous ouvrons un coffre au joueur. Nous devons spécifier le nombre de lignes (Pour un maximum de 6, chaque ligne a 9 cases). Par la suite, nous donnons le nom du gui (Ce nom sera écrit en haut du coffre. Nous pouvons utiliser les codes couleurs) et nous finissons en spécifiant celui qui verra ce coffre Par la suite, nous mettons un délai de 2 ticks, car sans ce délai, les joueurs pourront prendre les items qui se trouvent dans ce coffre à l'aide d'un certain bug. Pour terminer, nous plaçons un item dans le slot 1 (Qui est la 2e case en l’occurrence, car dans l'informatique, nous commençons toujours par le 0 donc le 0 = 1ère case) nous disons dans le coffre de quel joueur et l'item qui sera mis dans cette case. Nous donnons un nom à cet item (Encore une fois les codes de couleurs sont acceptés) et nous lui donnons un lore (Description sous le nom (codes de couleurs acceptés) les || sont utilisés pour passer des lignes). La partie de code où il est écrit "to be unstealable" sert à nous dire ce que fait l'item dans ce coffre Il existe différentes fonctions pour les items - To be unstealable -> Le joueur ne pourra pas prendre l'item - To close -> Fermera le coffre - To close then run "commande" -> Exécutera la commande qui sera mise entre parenthèses (La console) et fermera le gui - To run "commande" -> Exécutera la commande qui sera mise entre parenthèses (La console) Les lambdas En développement L'utilisation avancé des GUIs: Il existe une autre option pour faire des GUI qui est utilisé moins souvent, mais qui a certains avantages (permet de différencier le clique droit, le clic gauche et le clic du milieu) command /test: trigger: open chest with 1 rows named "Coffre" to player set slot 1 of current inventory of player to a dirt named " allo " with lore " " on inventory click: if inventory name of player's current inventory is "Coffre": if name of clicked item contains " allo ": if "%click type%" contains "LEFT": send message "hello" cancel event Dans ce code, nous ouvrons un coffre au joueur comme dans la première méthode, mais plutôt que de format une case, nous en faisons que de placer un item dans une case sans utiliser la méthode format. De cette façon, le joueur pourra prendre l'item. Par la suite, à l'aide de l'event on inventory click, nous détectons le type de clic (RIGHT, LEFT, MIDDLE) et nous exécutons le code voulu. Cette méthode nous permet de déterminer le type de clic qui a été utilisé pour chaque item et nous donne encore plus d'options pour réaliser nos idées <3 Bien optimiser son code. Parfois, nous avons à remplir un coffre d'un certain objet et en programmation il existe de nombreux moyens d'optimiser son code. Lorsque nous avons à remplir notre coffre d'un certain item, nous n'avons qu'à utiliser ce code command /test: trigger: open chest with 3 rows named "Un coffre" to player wait 2 ticks set {_s} to 0 loop 27 times: format slot {_s} of player with 1 green glass pane named " " to be unstealable add 1 to {_s} Dans ce code, nous mettons une variable à 0 et nous plaçons un bloc à cette case, par la suite nous ajoutons 1 à cette variable et nous plaçons un bloc à cette nouvelle case et ainsi de suite 27 fois. Pour déterminer le nombre de fois nécessaire, vous n'avez qu'à faire nombre de ligne * 9 et vous obtiendrez votre nombre (Dans notre cas 3*9 = 27) Une autre technique pour placer des blocs répétitifs à plusieurs endroits sans avoir à refaire le même code 15x command /test: trigger: open chest with 3 rows named "Coffre" to player wait 2 ticks set {_slots::*} to 2, 3, 4, 5, 20 and 26 loop {_slots::*}: format slot loop-value with 1 red glass pane named " " to be unstealable Dans ce code, nous mettons les slots que nous voulons placer notre bloc dans une liste et par la suite nous regardons les valeurs de cette liste et plaçons un bloc à chacune de ces valeurs. Ces 2 méthodes sont très utiles pour optimiser vos codes ;) Les GUIs animés Nous pouvons aussi créer en skript des GUI qui sont animés. La méthode est un peu plus complexe, mais elle est quand même assez simple et très peu connu (Je crois que presque personne ne la connaît) Je vais commencer par vous montrer le code et vous expliquer ensuite. command /test: trigger: open chest with 3 rows named "coffre" to player wait 2 ticks while "%inventory name of player's current inventory%" is "coffre": format slot 1 of player with dirt named "%{_s}%" to be unstealable add 1 to {_s} wait 2 ticks Dans ce code, nous ouvrons un coffre au joueur et nous partons une boucle while qui regarde à tous les 2 ticks si le nom de l'inventaire du joueur est le nom de l'inventaire que nous lui avons ouvert. Si c'est le cas, nous formatons les slots sinon nous arrêtons le code. À la fin de notre code, le wait 2 ticks représente le temps entre chaque actualisation du GUI. Plus le temps est haut, moins le serveur va lagguer et plus le temps est bas plus l'animation va sembler fluide. Bon, je crois que j'ai pas mal fait le tour des GUI et je ne crois pas que je n'ai rien d'autre à dire. Si vous avez été capable de lire tout ceci, je vous félicite, vous êtes maintenant un maître incontesté des GUI et vous savez absolument tout PS: Si j'ai oublié quelque chose, n'hésitez pas à me le dire dans les commentaires <3 Il y a moyen de mettre dans le gui des armures en cuir colorées ?
> NoaGamingFR Posté(e) le 29 juin 2016 Posté(e) le 29 juin 2016 Va plutôt en mp pour discut. ce seras plus simple :p
EvanMartiin Posté(e) le 29 juin 2016 Posté(e) le 29 juin 2016 Ce que je te conseil, c'est que au lieu d'executer une commande dirrecetement dans le format tu fait: command /test: trigger: open chest with 1 rows named "TON MENU" to player wait 1 ticks format slot 3 of player with enchanted book named "COMMANDE SPAWN" with lore "&7ICI LITEM OU TU VA EXECUTER LA COMMANDE" to close unformat slot 3 of player # TU UNFORMAT LITEM EN GROS IL POURRAS LE VOLER on inventory click: name of clicked item is "COMMANDE SPAWN": #NOM DE LITEM cancel event # POUR PAS LE VOLER make player command "/spawn" as op # COMMANDE # ET EN PLUS TU PEUX CARREMENT EXECUTER DU CODE Perso moi ça marche pas '-' Erreur: 'inventory' is not a slot
Mastersfelix Posté(e) le 29 juin 2016 Auteur Posté(e) le 29 juin 2016 Bonjour, j'ai une question : En gros j'ai tenté de faire un GUI qui ouvre d'autres GUI dans le cas d'un Menu avec des sous-parties, mais quand j'ouvre un deuxieme gui et que je clique sur un item qui normalement enclenche une commande, il n'y a aucuns résultats, mais si j'ouvre directement le GUI, la commande s'exécute bien. Si j'ai mal expliqué dis le moi, et merci d'avance en espérant que tu connaisses la solution. Je dois faire la section c'est qu'il faut ajouter certaines lignes sinon le GUI ne s'ouvrira pas. Je vais faire la petite section qu'il me manque dans mon tutoriel bientôt. EDIT: À non, j'ai juste oublié cette partie *.* Il y a moyen de mettre dans le gui des armures en cuir colorées ? Personnellement, je ne sais pas s'il existe des moyens plus simples, mais j'enregistre mon armure dans une variable et je format le slot avec cette variable Perso moi ça marche pas '-' Erreur: 'inventory' is not a slot Tu as besoin de SkQuery pour utiliser les GUIs
EvanMartiin Posté(e) le 29 juin 2016 Posté(e) le 29 juin 2016 Je dois faire la section c'est qu'il faut ajouter certaines lignes sinon le GUI ne s'ouvrira pas. Je vais faire la petite section qu'il me manque dans mon tutoriel bientôt. EDIT: À non, j'ai juste oublié cette partie *.* Personnellement, je ne sais pas s'il existe des moyens plus simples, mais j'enregistre mon armure dans une variable et je format le slot avec cette variable Tu as besoin de SkQuery pour utiliser les GUIs Oui oui j'ai SKQuery :) Va voir ici mon erreur
Armadia Posté(e) le 30 juin 2016 Posté(e) le 30 juin 2016 Je dois faire la section c'est qu'il faut ajouter certaines lignes sinon le GUI ne s'ouvrira pas. Je vais faire la petite section qu'il me manque dans mon tutoriel bientôt. EDIT: À non, j'ai juste oublié cette partie *.* Personnellement, je ne sais pas s'il existe des moyens plus simples, mais j'enregistre mon armure dans une variable et je format le slot avec cette variable Tu as besoin de SkQuery pour utiliser les GUIs Merci beaucoup de ta réponse :D 1
Goetheus Posté(e) le 14 juillet 2016 Posté(e) le 14 juillet 2016 Salutations à tous ! J'ai un petit soucis concernant cette ligne : if name of clicked item contains " allo ": Je me permet alors de répondre à la suite de ce très bon tutoriel car j'ai une erreur que personne ne semble avoir (et ça pourra peut être en aider certains) : [skript] can't understand this condition: 'name of clicked item contains " allo "' Le "if name of clicked item contains" n'est tout simplement pas reconnu :/ J'ai bien SkQuery (j'ai du coup testé plusieurs versions, et toujours pareil).
Mentosh Posté(e) le 14 juillet 2016 Posté(e) le 14 juillet 2016 Il me semble qu'il te faut d'autre addons essaye avec skrayfall ou bien wildskript sa prend peu de temps et peu marcher ;) Edit : ton item rename peut avoir des espaces comme tu as mis ? :o c'est peut etre pour cela
Goetheus Posté(e) le 14 juillet 2016 Posté(e) le 14 juillet 2016 Salutations @Mentosh ! Merci d'être venu à mon secours ah ah :D En réalité j'ai déjà Wildskript, SkQuery, SkRayfall, TuSKe et SharpSk. Concernant les espaces, c'était pour l'exemple en référence au tutoriel, j'ai remplacé cette valeur par le nom de mon item ;)
Snowach Posté(e) le 14 juillet 2016 Posté(e) le 14 juillet 2016 Remplace le par "if player is holding a [NOM] named " allo ":" est ça devrait fonctionner sinon... C'est bizarre ^^
Messages recommandés