Nashoba 254 Posté : 26 mai 2016 (modifié) Bonjour! Dans Skript, il y a quelques chose qui plutôt pratique, c'est de pouvoir attribuer une variable à un joueur, un uuid, un monde etc... Par exemple la variable {test.%player%} change à chaque joueur. Ou alors {test.%event-block%} change en fonction du bloc Et bien en Java c'est possible Dans ce tuto, je ne traiterai pas d'enregistrer ces variables dans des fichiers, ça je ferais peut-être plus tard dans un autre tuto. Ces variables s'appellent des HashMap. Un HashMap est constitué d'une clé (key) et d'une valeur (value). A chaque clé est associée une valeur. Une clé est une variable de n'importe quel type, mais c'est bien souvent un String. Si vous recherchez une variable dans le HashMap qui est identique à la clé, alors vous récupérerez la valeur associé. Les HashMaps permettent aussi d'enregistrer des variables temporairement, sans charger le fichier de sauvegarde à chaque fois car ça bouffe ÉNORMÉMENT de ressources de faire ça. Bon maintenant passons à la pratique! Pour retrouver l'utilité des variables de Skript, les HashMap doivent être déclaré juste après le "public class", avant toute fonction. Les HashMap contiennent deux type de variable, un pour la clé et un pour la valeur. Ces types de variables peuvent être différents ou les même, ce sera déterminé en fonction de ce que vous en ferez. Voila à quoi ressemble un HashMap: Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Le String est donc le type de clé et le double est le type de la valeur associée. Voilà maintenant comment déclarer cette variable: Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Vous pouvez changer le "static" en "public static" si vous voulez que cette variable puisse être lu par d'autres classe ou même enlever le "static" si vous n'utilisez pas de fonctions static. Maintenant on va apprendre à mettre et récupérer des infos de cette variable. Dans les exemples suivant, ma variable sera nommé "exemple". Si vous voulez mettre des joueurs ou d'autre choses en clé, je vous conseille de mettre un String, souvent avec le nom. Ça évite de charger des grosses variables comme les Player et les noms ne bougent pas. Voilà comment mettre une clé et une valeur: Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Et voici comment récupérer une valeur: Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Pour tester si le HashMap contient une clé: Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Pour tester si le HashMap contient une valeur: Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Pour finir un petit exemple. On enregistre ici une variable contenant un nombre de point d'un joueur. La clé est donc le nom du joueur et la valeur son nombre de points. Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Maintenant imaginons qu'à sa déconnexion je sauvegarde ses points. J'utilise donc: Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Voilà! Encore une fois j'espère avoir été assez clair et que ce tuto vous sera utile (un p'tit like ça fait toujours plaisir aussi :D) Et je vous invite à me demander sur quel thème voulez vous que mon prochain tuto soit Modifié 4 janvier 2019 par Nashoba 9 Partager ce message Lien à poster Partager sur d’autres sites
Aristidee 8 Répondu : 27 mai 2016 Difficile à comprendre, mais je relis :p Partager ce message Lien à poster Partager sur d’autres sites
Protoxy 43 Répondu : 1 juin 2016 Un peu compliqué oui Partager ce message Lien à poster Partager sur d’autres sites
Nashoba 254 Répondu : 2 juin 2016 C'est mal expliqué sur certains points? Partager ce message Lien à poster Partager sur d’autres sites
Protoxy 43 Répondu : 2 juin 2016 Tu n'expliques pas vraiment les codes c'est tout. 1 Partager ce message Lien à poster Partager sur d’autres sites
Inerska 107 Répondu : 11 décembre 2016 Mais comment ont récupere le nom du joueur dans son code ( par exemple dans un broadcast) Partager ce message Lien à poster Partager sur d’autres sites
Nashoba 254 Répondu : 11 décembre 2016 Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Partager ce message Lien à poster Partager sur d’autres sites
Inerska 107 Répondu : 11 décembre 2016 Et pour l'utiliser par exemple dans un broadcast ? Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Avec l'arg 1 Exemple skript: broadcast "annonce, %player%: %message% PS: Le message et le player en java je veut savoir Partager ce message Lien à poster Partager sur d’autres sites
Nashoba 254 Répondu : 11 décembre 2016 Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Le message c'est toi qui choisis. Si c'est dans un évent chat tu peux le récupérer avec Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. mais si c'est une commande tu peux le récupérer avec les arguments Partager ce message Lien à poster Partager sur d’autres sites
Skripting 605 Répondu : 11 décembre 2016 Et pour l'utiliser par exemple dans un broadcast ? Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Avec l'arg 1 Exemple skript: broadcast "annonce, %player%: %message% PS: Le message et le player en java je veut savoir CommandExecutor > CommandPrepocessEvent. C'est 100 fois mieux. Partager ce message Lien à poster Partager sur d’autres sites
Inerska 107 Répondu : 11 décembre 2016 Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Pour introduire le pseudo et l'arg ? Et j'ai un problème sur le p.sendMessage :/ je comprend pas Partager ce message Lien à poster Partager sur d’autres sites
Skripting 605 Répondu : 11 décembre 2016 Et j'ai un problème sur le p.sendMessage :/ je comprend pas Normal tu n'as pas défini ta variable p. Essaye : Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Si tu veux vraiment que ce soit un joueur, tu dois caster ta variable : Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Partager ce message Lien à poster Partager sur d’autres sites
Inerska 107 Répondu : 11 décembre 2016 Fix: Player p = (Player)sender; Export: jar creation failled JAR creation failed. See details for additional information. Class files on classpath not found or not accessible for: 'Broadcast/src/fr/pulpac/broadcast/CommandBroadcast.java' Partager ce message Lien à poster Partager sur d’autres sites
Skripting 605 Répondu : 11 décembre 2016 Envoie ton Main + ton plugin.yml. Partager ce message Lien à poster Partager sur d’autres sites
Inerska 107 Répondu : 11 décembre 2016 Mon plugin.yml: Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. et le main: J'en ai pas Partager ce message Lien à poster Partager sur d’autres sites
noftaly 497 Répondu : 13 décembre 2016 omfg xD c'est la que je suis content de faire du skript xD Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. CONTRE Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. ya quand meme une énorme différence xD 1 Partager ce message Lien à poster Partager sur d’autres sites
PastequeBuild 17 Répondu : 31 août 2017 Excellent tuto ! J'ai deux petites question: - Comment modifier le nombre de points d'un joueur ? Par exemple, rajouter 1 au nombre de points qu'il a déjà ? - Lorsque tu transfère ta valeur hashmap sur une variable pour l'enregistrer, cette variable ne risque t-elle pas de changer dès qu'une autre valeur hashmap sera transférée sur celle-ci ? Merci professeur ! :p Partager ce message Lien à poster Partager sur d’autres sites
angelus76 222 Répondu : 1 septembre 2017 Merci pour les infos ;) Moi qui ais fait un add-on pour skript sans connaitre le JAVA, sa m'aurais bien aider de comprendre les tableau de cette maniere plutot que de fouiller les doc pour essayer de comprendre ce qu'il falais faire ^^ Partager ce message Lien à poster Partager sur d’autres sites
Nashoba 254 Répondu : 1 septembre 2017 Excellent tuto ! J'ai deux petites question: - Comment modifier le nombre de points d'un joueur ? Par exemple, rajouter 1 au nombre de points qu'il a déjà ? - Lorsque tu transfère ta valeur hashmap sur une variable pour l'enregistrer, cette variable ne risque t-elle pas de changer dès qu'une autre valeur hashmap sera transférée sur celle-ci ? Merci professeur ! :p Pour modifier le nombre de points, tu dois d'abord récupérer la variable du HashMap, ensuite tu la modifie et enfin tu la remet dans le HashMap: Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Pour la 2ème question je ne suis pas sûr d'avoir bien compris ^^ Partager ce message Lien à poster Partager sur d’autres sites
PastequeBuild 17 Répondu : 2 septembre 2017 Merci ! Pour la 2ème question: Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. La variable pts change à chaque fois qu'on sauvegarde les points d'un joueur, et c'est une variable unique (ce n'est pas une liste). Après avoir sauvegardé les points d'un joueur A, ce dernier ne risque t-il pas d'avoir les points du dernier joueur (joueur B) à qui on a sauvegardé les points juste après ? La variable pts ne peut contenir qu'une seule valeur et elle est utilisée à chaque sauvegarde... Partager ce message Lien à poster Partager sur d’autres sites
Nashoba 254 Répondu : 2 septembre 2017 Non c'est une variable locale. Elle est déclarée dans la fonction et sera effacée à la fin de la fonction. Et imaginons que l’événement se passe en même temps il n'y aura pas de conflit de variable. Cette variable est l'équivalent de {_variable} en skript. Partager ce message Lien à poster Partager sur d’autres sites
PastequeBuild 17 Répondu : 2 septembre 2017 D'accord, mais alors comment récupérer ses points de la dernière fois lorsqu'on se connecte si c'est une variable temporelle ? Comment ces points sont stockés ? Et si on la définit lorsqu'un joueur se connecte... Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. ...juste avant de la mettre dans une hashmap... Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. ...le nombre de points du joueur sera remplacé par 1, non ? Merci pour tes réponses ! :D (je suis embêtant, hein ^^) Partager ce message Lien à poster Partager sur d’autres sites
Nashoba 254 Répondu : 2 septembre 2017 Pour les stocker il faut utiliser un fichier, par exemple un .yml. Pour le Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. c'était juste pour dire que c'est à cet endroit qu'il faut charger les points, sinon bien sûr ce sera 1 ^^. Partager ce message Lien à poster Partager sur d’autres sites
PastequeBuild 17 Répondu : 2 septembre 2017 D'accord ! Merci beaucoup pour ton aide :D Partager ce message Lien à poster Partager sur d’autres sites
Inerska 107 Répondu : 4 octobre 2017 Le tuto est bien avec une bonne intention surement, mais c'est assez compliqué à comprendre /: Partager ce message Lien à poster Partager sur d’autres sites