Aller au contenu

Classement


Contenu populaire

Affichage du contenu avec la meilleure réputation le 12/22/19 dans toutes les zones

  1. 1 point
    @xd_Rekt Parfait que ce soit résolu, mais la prochaine fois détaille un peu plus, car le /whois on ne connais pas forcément. PS: Pense à chercher chaque composantes et pas juste mettre sur google "Whois skript", tu sais ce qu'il y a dedans, donc fais plutôt "Send IP skript mc", ect... Jusqu'à arriver à ton code final, car ce code est très lite ^^
  2. 1 point
    Salut, je tiens à te dire même après résolution de ton post, que je ne t'aiderais plus, t'en fais quoi des gens qui ont peut-être le même problème que toi ? Bref, c'est égoïste.
  3. 1 point
    Sommaire: Base de l'addon Créer un effet Créer une condition Créer une expression Créer un évent Créer un type --------------------------- Créer un effet On va commencer par le plus facile. Je rappelle, un effet permet d’exécuter du code sans renvoyer d'informations en échange. Tout d'abord on va choisir l'effet à créer et on va créer une classe où on veut. Par exemple je crée un package « fr.nashoba24.wolvsk.effets » et je crée une classe nommée EffSendMessageToPlayer car je veux envoyer un message à un joueur grâce à cette fonction. Ensuite je vais coller dans cette nouvelle classe le code suivant, puis je l'éditerai : package votre.package; import ch.njol.skript.lang.Effect; import ch.njol.skript.lang.Expression; import ch.njol.skript.lang.SkriptParser.ParseResult; import ch.njol.util.Kleenean; import javax.annotation.Nullable; import org.bukkit.event.Event; public class VotreClass extends Effect { @SuppressWarnings("unchecked") @Override public boolean init(Expression<?>[] expr, int matchedPattern, Kleenean paramKleenean, ParseResult paramParseResult) { return true; } @Override public String toString(@Nullable Event e, boolean b) { return null; } @Override protected void execute(Event e) { } } La fonction init() permet d'enregistrer les éventuelles variables et de retourner vrai si tout est bon (que les variables sont bonnes par exemple) La fonction toString() retourne le nom de l'effet, qui sera éventuellement utilisé dans des messages d'erreur par exemple. Pour finir, la fonction execute() est appelée quand l'effet est exécuté. Il contiendra donc votre code pour réaliser un effet en Skript. Voyons d'abord la fonction init(). L'argument expr[] retourne les variables dont vous aurez éventuellement besoin dans votre fonction execute(). matchedPattern renvoie le numéro du pattern correspondant (on verra plus tard qu'on peut avoir plusieurs patterns pour un(e) même effet/évent/condition). Pour les 2 autres je ne vais pas vous cacher que je n'en ai jamais eu besoin donc je ne sais pas à quoi ça sert ? Maintenant on va voir comment enregistrer une variable. Tout d'abord, après public class VotreClass extends Effect { on va rajouter une voir plusieurs lignes avec les variables dont vous aurez besoin. Vous devez la déclarer comme ceci : private Expression<TypeDeVotreObjet> nomDeLaVariable; Ensuite dans init(), on va changer la valeur de la variable. Pour ceci on ajoute autant de lignes que nécessaire avec nomDeLaVariable = (Expression<TypeDeVotreObjet>) expr[numéro]; La numéro correspond au numéro de l'objet envoyé par Skript. Pour le trouver, il vous suffit de compter le numéro de l'objet dans le pattern. Par exemple avec send %string% to %player% Là, l'objet %string% aura pour numéro 0 et player aura pour numéro 1. Voyons voir maintenant à quoi ressemble ma class si j'enregistre les variables pour envoyer un message. J'aurais besoin de variable : le message et le joueur. Le pattern que j'utilise est « send %string% to %player% » package votre.package; import ch.njol.skript.lang.Effect; import ch.njol.skript.lang.Expression; import ch.njol.skript.lang.SkriptParser.ParseResult; import ch.njol.util.Kleenean; import javax.annotation.Nullable; import org.bukkit.entity.Player; import org.bukkit.event.Event; public class EffSendMessageToPlayer extends Effect { private Expression<String> message; private Expression<Player> player; @SuppressWarnings("unchecked") @Override public boolean init(Expression<?>[] expr, int matchedPattern, Kleenean paramKleenean, ParseResult paramParseResult) { message = (Expression<String>) expr[0]; player = (Expression<Player>) expr[1]; return true; } @Override public String toString(@Nullable Event e, boolean b) { return null; } @Override protected void execute(Event e) { } } Maintenant attaquons nous à la fonction toString(). C'est relativement simple, il faut retourner un String avec le nom de la fonction qui sera éventuellement utilisé par exemple dans des message d'erreurs. Ici je vais retourner « send message to player ». J'obtiens donc : @Override public String toString(@Nullable Event e, boolean b) { return "send message to player"; } Pour finir il faut remplir la fonction execute(). Vous pouvez mettre ici n'importe quel code, qui fera au final ce que la fonction demande. Ici je dois faire en sorte d'envoyer le message au joueur. Vous aurez sûrement besoin de variable, je vais donc vous montrer comment récupérer une variable. Il faut tout simplement faire ceci : nomDeLaVariable.getSingle(e) Au final ma class ressemble à ça : package votre.package; import ch.njol.skript.lang.Effect; import ch.njol.skript.lang.Expression; import ch.njol.skript.lang.SkriptParser.ParseResult; import ch.njol.util.Kleenean; import javax.annotation.Nullable; import org.bukkit.entity.Player; import org.bukkit.event.Event; public class EffSendMessageToPlayer extends Effect { private Expression<String> message; private Expression<Player> player; @SuppressWarnings("unchecked") @Override public boolean init(Expression<?>[] expr, int matchedPattern, Kleenean paramKleenean, ParseResult paramParseResult) { message = (Expression<String>) expr[0]; player = (Expression<Player>) expr[1]; return true; } @Override public String toString(@Nullable Event e, boolean b) { return "send message to player"; } @Override protected void execute(Event e) { player.getSingle(e).sendMessage(message.getSingle(e)); } } Bien, il reste une seule chose à faire : enregistrer l'effet dans Skript. Pour ceci, il faut placer la ligne suivante dans une fonction appelée au démarrage du serveur (par exemple onEnable(), dans la classe principale). Skript.registerEffect(VotreClass.class, pattern); A la place de VotreClass, vous mettez le nom de la classe contenant l'effet et à la place de pattern vous mettez votre pattern sous forme de String. Si vous voulez en mettre plusieurs, vous pouvez mettre une virgule et mettre d'autres patterns après. Pour mon exemple ça me donne ça : Skript.registerEffect(EffSendMessageToPlayer.class, "(send|message) %string% to %player%");
  4. 1 point
    Si t'es sur bukkit passe sur Spigot, skript et bukkit ne sont pas très cool ensemble
×
×
  • 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.