Aller au contenu

Classement

Contenu populaire

Affichage du contenu avec la meilleure réputation le 26/05/2016 dans toutes les zones

  1. 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: HashMap<String, Double> variable; 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: public class Exemple extends JavaPlugin implements Listener { static HashMap<String, Double> missions = new HashMap<String, Double>(); @Override public void onEnable() { //CODE } } 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: exemple.put(key, value); Et voici comment récupérer une valeur: exemple.get(key); Pour tester si le HashMap contient une clé: exemple.containsKey(key); Pour tester si le HashMap contient une valeur: exemple.containsValue(value); 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. public class Exemple extends JavaPlugin implements Listener { static HashMap<String, Integer> points = new HashMap<String, Integer>(); @Override public void onEnable() { } @EventHandler public void onJoin(PlayerJoinEvent e) { Integer pts = 1; //Normalement je charge de mon fichier de config mais là c'est un exemple points.put(e.getPlayer().getName(), pts); } } Maintenant imaginons qu'à sa déconnexion je sauvegarde ses points. J'utilise donc: public class Exemple extends JavaPlugin implements Listener { static HashMap<String, Integer> points = new HashMap<String, Integer>(); @Override public void onEnable() { } @EventHandler public void onLeave(PlayerQuitEvent e) { Player p = e.getPlayer(); //Je crée une variable pour raccourcir le code if(points.containsKey(p.getName())) { Integer pts = points.get(p.getName()); //Là j'utilise ma fonction pour sauvegarder les points } } } 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 ?
    5 points
  2. Franchement félicitations pour ce tutoriel ! cela aide énormément pour ceux qui souhaitent passer du SK au JAVA :)
    2 points
  3. Je sais pas pourquoi, skript-mc me dit que le message est trop long fac je t'envoi le fichier et il manque une partie que tu pourras faire ou quelqu'un d'autre pourra faire
    2 points
  4. Tiens la version corrigé, si jamais quelqu'un veut la compléter
    1 point
  5. Ba tu met sa avec un tab après ton if arg 1 is "add" if arg 2 is set: et c bon non ? ..
    1 point
  6. if {manoir1list::*} contain arg 2: message "%arg 2% est deja dans ta villa" else: add arg 2 to {manoir1list::*} message "%arg 2% ajouté a la villa"
    1 point
  7. Je vais regarder ça chez moi, je suis sur tablette pour le moment
    1 point
  8. Master felix t'a oublié le trigger dans ton code ( command /players: wait 2 ticks close player's inventory
    1 point
  9. helmet of player is neither a helmet nor air #Player is wearing a block, e.g. from another plugin Autrement dit les élytra ne sont pas encore reconnue par skript. Mais peut etre qu'en utilisant ceci ca marcherais... every 1 seconds: loop all players: if loop-player is not flying: broadcast "&4TEST0" set {_block} to the block below loop-player if {_block} is air: broadcast "&3TEST1" set {_2block} to the block below {_block} if {_2block} is not air: broadcast "&6TEST2" if player is wearing an ID ELYTRA: broadcast "&eTEST3" delete chestplate of the loop-player else: broadcast "&aTEST4" delete chestplate of the loop-player PS: pour moi il y a un problème deja psk quand tu marque si le bloc en dessous et de l'air alors enlever les elytra il va se scratcher quand il volera. Ducoup je me suis permis de modif vite fait tu regarde si ca te va. Aussi j'ai pas test vu que j'ai pas de serv en 1.9 mais la ca devrait eviter tout vos problème. Derniere chose les couleurs des messages indique le niveau de réussite du skript pti custom :D
    1 point
  10. La liste à la fin du tuto est juste trop belle :o
    1 point
×
×
  • 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.