Aller au contenu

Classement


Contenu populaire

Affichage du contenu avec la meilleure réputation depuis le 09/30/19 dans Messages

  1. 13 points
    Bienvenue dans mes premiers tutoriaux sur Apprendre le Skript ! Dans ce premier épisode,nous allons déjà apprendre à installer Skript,et un peu commencer le code. Tout d'abord,il vous faut un logiciel de traitement de texte.C'est assez con mais il vous en faut un bon.Même le bloc-note suffit,ou vous pouvez opter pour SublimeText,Notepad... il faut juste que vous soyez à l'aise.Pour Notepad++,cliquez ici pour voir un tutoriel qui vous permettra de tous voir en couleur etc pour vous faciliter la vie. Ensuite,il vous faut un serveur,spigot de préférence mais bukkit marche aussi,peu importe la version.Ensuite,vous devez télécharger Skript,je vous conseille la 2.2 fixe qui est vraiment pas mal. ICI Une fois téléchargé,mettez Skript dans votre fichier plugins sur votre serveur,tout marche à présent. Optionnel: Vous aurez forcément besoin d'addons,donc jvous conseille de les téléchargez maintenant: pack Une fois fait,prenez les .jar de votre version,et pareil,dans le dossier plugins ! I) Commençons par le commencement ! > Bon,c'est bien long de faire tout ça,mais on a envie de coder nous ! Oui oui,attendez,déjà,allez dans le fichier "Skript" qu'à générer le .jar.Allez dans "scripts" Vous verrez un tas de merde Skript avec un petit tiret avant chaque nom >Cool mais à quoi ça sert ? les tirets servent à désactiver le skript :) > On a qu'à le supprimer lol Ben non,si on le développe et qu'il a des erreurs et qu'on stoppe le développement un moment,ça évide qu'à chaque /reload y'as ses erreurs :) Donc,pour commencer,créer un fichier .txt que vous renommez "votrenom.sk" (Le .sk est très important pour que skript reconnaisse le fichier !) Ouvrez le avec l'éditeur de texte de votre choix,pour commencer un code,ce sera toujours pareil ! Skript se compose de plusieurs choses: > Evenements > Variables > Commandes custom > Effect > Conditions > Fonctions > Breeeeeeeeeeef Pour commencer un code,il y a deux grandes "manières" de commencer un code. Détecter un évènement (Qu'on va faire dans ce tuto) Créer une commande custom ( Pas maintenant <: ) II) Les évènements Pour commencer,on va apprendre à éxecuter un effet.Qu'est-ce qu'un effet ? C'est quelque chose qui se passe après une certaine action ou commande.Par exemple,l'effet de kill quelqu'un,vous comprenez ? Au cas ou,je fais un exemple ;x on damage: #Alors la on dit "Quand un joueur reçoit des dégats" kill the victim #On tue la personne qui s’est pris les dégats (Pour un système de mort subite par exemple) Donc,pour commencer,on met l'évènement au bord (Clique >ici< pour la liste des évènements sans addons) on break: A noter qu'il y a toujours un ":" à la fin de chaque évènement ! Il signifie que vous devez retourner à la ligne et faire une tabulation après (Pour tabulation,faire "TAB",ou 4 espaces,mais dans un code,faite soit l'un soit l'autre !).Vous pouvez préciser la plupart des évènements ! on break of stone: Ici,on précise que les effects ne se font que si le block cassé est de la stone ! Ensuite,après la tabulation,on fait un effect.Les effects n'ont jamais (Sauf cas rares comme loop all players ou autres) mais alors jamais de ":",donc les effets s'alignent comme ça: on break: # Quand un block se casse cancel event # Permet d'arrêter l'évènement,et de réinisialiser.Par exemple,la le block va se remettre,si un outil a été utilisé,sa durabilité sera comme avant,bref wait 1 second # Demande à skript d'attendre une seconde après avoir cancel l'event kill the player # Tue le joueur qui l'a cassé message "&aTu as cassé un block,tu as été tué par Mère Nature !" Voila,vous pouvez maintenant,quand un évènement se produit,produire des effets ! Liste des effets: ici Vous pouvez voir que touts les effets sont alignés,effets les plus utiles: broadcast "Message" > Permet de mettre un message à tout les joueurs message "Message"> Permet de faire un message privé au joueur qui a éxecuté l'évènement kill the player/victim/attacker > Tue le joueur,pour victim et attacker,c'est seulement dans les évènements de pvp ! (On damage,on death...) wait "Nombre" "ticks/seconds/minutes..." Permet d'ordonner à Skript d'attendre clear the player's inventory > Permet de clear l'inventaire du joueur cancel event > Le fameux ! Permet d'annuler l'évènement ! J'ai dit dans les grandes lignes,après on peut rajouter énormément de choses dans ces effects la. C'est la fin de ce tutoriel,prochain tutoriel assez court mais je vous dirais comment créer une commande ;) N'hésitez pas à me dire ce qui va pas pour que j'édit tout ça ! > J'ai rien compris mec Alors poste ta demande dans les commentaires de ce topic ! :D Apprendre le skript #2 : ici
  2. 10 points
    Salut à toi et bienvenue sur ce tutoriel ! Dans ce post je vais te faire découvrir ou t'apprendre les listes. Premièrement, une liste est un "tableau", ou vous renseignez une id et une valeur (donnée). Je vous montrerai : I. Représentation codée d'une liste II. Comment add une donnée à votre tableau III. Comment delete une donnée de votre tableau IV. Comment lister votre tableau V. Conditions de listes VI. Comment générer une entrée aléatoire de votre tableau VIII. Comment supprimer votre tableau IX. Conclusion I. Représentation codée d'une liste. Pour utiliser une liste dans votre code, une liste se présente comme cela: {liste::*} -> Comme une variable, a laquelle on ajoute "::" après la premiere "partie" de variable, qui ici est "liste". Si l'on met une étoile ("*"), toutes vos entrées (chaque ligne du tableau, pour reprendre la représentation) sont concernées. Si l'on met {liste::uneentrée}, alors c'est votre entrée "uneentrée" qui sera concernée. II. Ajout de donnée à un tableau. Premièrement, nous allons ajouter une entrée à notre tableau. Pas besoin d'un effet pour créer ce tableau, il existe a partir du moment ou vous ajoutez une entrée. Exemple : j'ajoute une entrée de type texte à mon tableau (liste): Cela donne ( en ligne d'effet ) : add "Hello" to {mots::*} Donc ici, on créer une nouvelle ligne avec comme valeur "Hello". III. Retirer une donnée d'un tableau Ensuite, nous allons retirer une entrée à notre tableau. Pour retirer cette entrée, nous allons faire: Cela donne (en ligne d'effet ) remove "Hello" from {mots::*} Comme cela, on retire la ligne qui porte la valeur "Hello" dans la liste "mots". IV. Lister notre tableau Ici, en reprenant toujours en encore notre même liste "mots", nous voulons lister, simplement ce tableau. Comment allez vous me dire ? Je vais vous montrer 2 types d'affichage de listes. La première, la plus simple, comme mon ami @imSizk vous l'a sûrrement expliquée, est, l'affichage comme une variable : send "%{mots::*}% Une méthode plus poussée, que j'utilise utilise la notion de loop. Je ne l'ai pas encore expliquée mais ne cherchez pas, lisez juste ce que je vous dit ;) Donc, pour listez correctement notre tableau, on va utiliser le loop. Cela se déroule sous cette forme : loop {mots::*}: send "%loop-index% -> %loop-value%" De cette manière, on va nous dire "numéro de la ligne -> valeur de la ligne" V. Génération aléatoire d'une ligne de la liste Pour générer quelque chose d'aléatoire, il vous suffit d'avoir cet effet : set {_donneealéatoire} to a random element of {mots::*} Ici on met la variable temporaire "donnealéatoire" sur un élément aléatoire de la liste "mots". VI. Conditions de liste Pour les conditions de liste, certains mon posés la question : "C'est bien les listes, mais comment je fais pour savoir si une donnée est déjà mise dans la liste ?". Donc je vais vous répondre ici ! : Pour voir si une donnée est déjà rentrée, une donnée ajoutée à la liste est "mise" dans la liste, donc elle "existe" dans la liste. Pour ce faire voici une condition : if {mots::Hello} is set: send "Hello" Chose très bête hein ^^ Mais vous pouvez remplacer le "Hello" dans la condition par un "%arg-1%" s'il s'agit d'une commande. VII. Supprimer une liste Après tout ça et en chapitre "final" du tutoriel, je vous propose de voir un effet qui vous permettre de remettre à zéro une liste. Voici l'effet concerné : clear {mots::*} L'effet "clear" vous permet de nettoyer votre liste. Et, comme je vous l'ai dit précédemment, une liste sans ligne est une liste nule, donc inexistante, donc elle est supprimée ! VIII. Conclusion Les listes sont, pour moi une des choses les plus importantes dans Skript, vous pouvez ajouter des informations, les récupérer les supprimer, etc... (Je vous invite à voir l'algorithme conçu à l'ajout automatique de données dans une liste en cliquant ici) Merci à vous d'avoir suivi ce tutoriel, n'hésitez pas à mettre un like pour m'encourager à vous faire des tutos complets ! :) Cordialement, Hugo / Azen.
  3. 9 points
    — Pourquoi skript-gui ? Cet add-on est un fork, une copie améliorée de TuSKe (Pikachu Patch 3) spécialement dédié pour la création de vos GUI. ↪ Celui-ci est désormais le seul et unique add-on que je recommande ; l'auteur de TuSKe ne le mettant plus à jour et donc de nombreux bugs restent non résolu. — Téléchargement L'auteur de skript-gui (APickledWalrus) a décidé de le mettre à disposition sur GitHub. ↪ Vous pouvez télécharger la dernière version stable à cette adresse, et glissez-le dans vos plugins. — Création de votre premier GUI ↪ Pour commencer, nous allons visiter la documentation de skript-gui (en anglais) et y trouver la syntaxe pour créer un nouveau GUI : create [a] [new] gui [[with id] %-string%] with %inventory% [(and|with) (moveable|stealable) items] [(and|with) shape %-strings%] ↪ Construisons ensemble notre inventaire virtuel ("%inventory%" dans la syntaxe) avec les syntaxes d'exemple : virtual %inventorytype% [(named|with (name|title)) %string%] with size %number% virtual %inventorytype% [(named|with (name|title)) %string%] with %number% row[s] Cette syntaxe vous demande de préciser un "inventorytype". Rendez-vous sur la documentation de Skript pour récupérer tous les types d'inventaire existants ; nous allons choisir un "chest inventory" (coffre), avec comme nom "Tartiflette" et avec 6 de taille. Voici à quoi devrait ressembler cette syntaxe : virtual chest inventory named "Tartiflette" with 6 rows ↪ Parfait. Nous avons créé notre %inventory%. Intégrons-là désormais à notre syntaxe de départ (nous reviendrons sur les autres possibilités après) : create a new gui with virtual chest inventory named "Tartiflette" with 6 rows — Ouvrir un GUI ↪ Jetons un œil à cet effet : (open|show) [[skript[-]]gui] %guiinventory% (to|for) %players% Vous me direz, comment afficher le GUI que j'ai créé juste en haut ? Utilisez l'expression "[the] last[ly] [created] gui". Voici un exemple de son utilisation : command tartiflette: trigger: create a new gui with virtual chest inventory named "Tartiflette" with 6 rows open last created gui to player — Modifier son contenu ↪ Bien. Vous avez désormais un GUI fonctionnel, mais vous ne savez pas comment ajouter du contenu. Nous y voilà ! Si vous avez l'habitude des GUI avec TuSKe, les syntaxes que je vais vous présenter vous seront familières : (make|format) [the] next gui [slot] (with|to) %itemtype% (make|format) gui [slot[s]] %strings/numbers% (with|to) %itemtype% ↪ Pour cela, nous allons essayer de définir le premier emplacement avec la tête du joueur. En se basant sur cette syntaxe, nous devrions avoir : make gui slot 0 with player's head ↪ Intégrons désormais ceci à la création de notre GUI. Nous allons modifier légèrement la syntaxe de création de GUI de manière à ce qu'elle prenne en compte des modifications : command tartiflette: trigger: create a new gui with virtual chest inventory named "Tartiflette" with 6 rows: # <-- ajout de deux points make gui slot 0 with head of player # ne pas oublier l'indentation ! open last created gui to player — Shapes ↪ Les shapes sont une fonctionnalité très intéressante propre à skript-gui. Vous pouvez par exemple l'utiliser pour remplir facilement certaines parties de votre GUI. Voici un exemple : command tartiflette: trigger: create a new gui with virtual chest inventory named "Tartiflette" with 3 rows with shape "sssssssss", "s-------s" and "sssssssss": make gui slot "s" with dirt named "Ceci fait le tour du GUI !" make gui slot "-" with head of player open last created gui to player Cette syntaxe fonctionne comme un schéma. La première ligne de votre GUI est représentée avec la première ligne du shape, la deuxième pour la deuxième ligne du shape etc. Vous pouvez remarquer que la lettre "s" fait donc le tour du GUI en laissant un espace vide au milieu ("-"). Pour remplir toutes les cases "s", j'ai simplement utilisé la syntaxe classique, en utilisant donc la lettre "s". De même pour la tête du joueur, j'ai simplement utilisé "-". Voici les principales fonctionnalités de skript-gui, je n'ai pas présenté tout dans ce tutoriel. N'hésitez pas à poser vos questions en commentaire.
  4. 8 points
    Bonjour à vous tous ! Quoi de neuf cette fois ci après une longue période sans mise à jour et de renouveau ? Et bien on vous a pondu du lourd ! je vous détaille tout ce qu'on a fait I - Nouveau Thème: Après une multitude de demande pour avoir un dark thème et bien le voici. On a trouvé un thème qui nous plaisent bien on l'a adapté pour garder les couleurs de Skript-MC. On y a passé une bonne soirée à le configurer et on espère qui vous plaira ! Il se peut que le thème soit quelques problèmes d'affichage, si tel est le cas alors n'hésitez pas à nous le dire sur le discord (Vengelis ou Uneo) et on adaptera en conséquence. De plus, ce thème va nous permettre de faire encore plus de chose que le précédent mais vous verrez cela en temps voulu ! II - Mise à jour du forum: Nous avons fait une update de version. Cela nous a donc permis de régler de nombreux problèmes présents anciennement. III - Update Ressources: Cette mise à jour sur les ressources elle consiste à quoi ? Eh bien il y a maintenant une partie support et une amélioration de la visualisation des reviews. Voici quelques images: Le principe est presque le même que sur GitHub et on l'a intégré au forum. Il y a encore quelques bugs de couleur par endroits mais ça sera vite corrigé. N'hésitez pas à vous en servir pour vos nouvelles ressources. Vous allez maintenant pouvoir aider les créateurs de contenu ou gérer vos bugs directement sur la plateforme sans passer par discord ou autres. IV - Continuité de traduction J'avais un peu de temps alors j'en ai profité pour continuer à traduire le forum. Toute la partie ressource est normalement traduite avec le nouveau module. V - Système de report Je suis actuellement en train de chercher un nouveau module pour améliorer le système de report du forum. On ne va pas se le cacher c'est relativement rudimentaire. Voilà pour la nouvelle maj du forum. Il y a plein d'autres trucs qui devraient être mis en place dans les jours à venir. N'hésitez pas à envoyer des retours Cordialement, l'équipe de Skript-MC.
  5. 7 points
    Bonjour, Je vous présente mon premier tutoriel pour les débutants. Je ferais plusieurs tutoriels pour but d'enseigner les bases aux nouveaux qui entrent dans le monde de Skript. Nous allons donc commençer. I/C'est quoi une variable ?: Une variable, comme son nom l'indique c'est quelque chose de modifiable, qui varie. Vous pouvez ajouter un certain nombre de choses dans une variable, en retirer, l'afficher ect... Les variables peuvent aussi s'appliquer pour le joueur, ou pour autre chose (vous comprendrez plus bas). II/Comment stocker dans une variable ?: Une variable a pour but d'être un stockage de plusieurs choses ou d'être appliqué à quelque chose. Nous allons d'abord étudier ce premier point: stocker dans une variable. Nous allons étudier plusieurs exemples: on join: add 1 to {players.count} Grâce à ce code, quand un joueur rejoindra le serveur, cela ajoutera 1 "point" dans "{players.count}". Il est aussi possible de supprimer dans une variable, grâce à cela: on quit: remove 1 from {players.count} Quand un joueur quitte le serveur, cela supprime 1 "point" de "{players.count}". Il existe aussi la possibilité de supprimer la variable, c'est à dire qu'elle sera remise à zéro: command /clear: trigger: delete {players.count} send "&eLa variable {players.count} a été supprimée" III/Appliquer une variable à un joueur ou autre: Il est aussi possible d'appliquer une variable à un joueur, la variable sera unique au joueur. Si vous écrivez une variable comme "{skript.test}", la variable s'appliquera pour tout le monde. Mais si vous faites "'{skript.%player%.test}", la variable s'appliquera SEULEMENT au joueur. Voici deux exemples: command /join: trigger: set {join.%player%.serveur} to true send "&eVous êtes bien connecté !" Là, quand vous allez exécuter cette commande, la variable "{join.%player%.serveur}" sera en true (activée) pour vous. Vous pouvez aussi désactiver une variable, comme l'exemple ci-dessous: command /quit: trigger: set {join.%player%.serveur} to false Là, en exécutant cette commande, la variable "{join.%player%.serveur}" sera en false (désactivée) pour vous. III/Afficher une variable: Une variable peux aussi être affichée en message. Il suffit juste de mettre votre variable entre "%" pour pouvoir la "lire". Voici un exemple: command /check: trigger: send "&eJoueurs: &a%{join.%player%.serveur}%" Là, quand vous allez faire la commande /check, le message vous dira le nombre qui est stocké dans la variable, par exemple, cela vous affichera en jeu: Joueurs: 5 Le tutoriel est terminé. Je sais qu'il y a encore plus à dire, mais comme précisé dans le titre, c'est un tutoriel pour les débutants. J'en ferais d'autres pour ceux qui débutent :). N'hésitez pas à me poser une question si vous ne comprenez pas. Cordialement, Voserv
  6. 7 points
    Hey les skripteurs Tutoriel pour installer le langage Skript 2.0 sur Notepad++ qui intègre des variations de couleur pour vous aider dans votre code. 1) Rendez-vous sur ce lien : [Contenu masqué] 2) Cliquez sur Télécharger qui se trouve à votre droite. 3) Cliquez sur " Téléchargement direct. " 4) Après l'avoir télécharger mettez le fichier dans votre bureau. 5) Lancer Notepad++ et rendez vous dans : Langage>Définissez votre langage... 6) Cliquez sur "Importer" et prenez votre fichier Skript 2.0 7) Relancez Notepad++. 8) Repartez dans Langage>Skript2.0 ( qui se trouve tout en bas. ) Voilà , votre langage Skript est désormais installer ! Si vous avez un problème, n'hésitez pas à me le faire part dans les commentaires. A bientôt.
  7. 7 points
    Bien le bonjour, Aujourd’hui je vous propose un petit tuto pour utiliser la coloration syntaxique Skript sur sublime text. Rapide topo sur sublime text : Sublime est un IDE qui pour moi fait partis des meilleurs, autant pour sa légèreté, son confort d'utilisation et son extensibilité. Il gère nativement une cinquantaine de langages, et il existe des plug-ins pour tout et n’importe quoi.Petite note Sublime texte est payant à la winrar (un pitit message tous les 50 enregistrements). Essayez-le vous ne serez pas déçus. Vous êtes prêts ? On est partis. Déjà, si ce n'est pas déjà fait installez l'ide : [Contenu masqué] Une fois lancé vous suivez les étapes indiquées pour installer package control: [Contenu masqué] Le plus dur est fait vous pourrez désormais à l'aide de package control accéder a toute un libraire de plug-in pour a peut près tout. Je laisse l'installation de package control qui donne accès à des centaines de plugins utiles [spoiler=Installation d'un plugin] Pour installer un plug-in : Préférences -> Pakage Control et sélectionnez a l'aide des flèches du clavier et d'entrer "Package control : install package" Patientez quelques secondes un autre fenêtre s'ouvre tapez alors Skript (ou le nom du plug-in que vous voulez) appuyez sur entrer pour valider l'installation et c'est fait vous n'avez plus qu'a ouvrir un .sk Update : Le package n’étant plus disponible sur package control voici comment remédier au problème : Téléchargez le fichier ci-joint Télécharger Sur sublime text dans le menu Préférences -> browse packages Un fois dans le dossier remontez s'en d'un et glissez le zip tel quel dans le dossier Installed packages Redémarrez Sublime text Je vous invite à explorer plus en détail les secrets de cet IDE qui est bourré de fonctionnalités, si vous êtes perdu n'hésitez pas à me demander ou à utiliser google :p
  8. 5 points
    Bonjour/bonsoir ! Dans les dernières versions de Skript se trouve une nouvelle fonctionnalité assez utile, permettant d'utiliser le format JSON dans des messages de manière à mon goût très simple et plus pratique qu'avec json.sk. ➤ Qu'est ce qu'un message contentant du 'json' ? Comment en faire via Skript ? Le json est un format permettant de stocker des données, et n'est pas utilisé que par Minecraft. Dans Minecraft, il permet entre autres d'envoyer des messages en couleur, contenant des commandes cliquables, des infobulles, et autres choses que l'on verra par la suite. Pour l'utiliser directement dans minecraft, il faut se servir de la commande "/tellraw", une commande à la syntaxe très restrictive et compliquée à utiliser. C'est le mode de fonctionnement de l'API json.sk. L'inconvénient est qu'avec ceci, il est difficile (impossible ?) d'envoyer plusieurs formats différents sur la même ligne, par exemple 2 commandes cliquables sur 2 portions de textes différentes de la même ligne. De plus cela envoie dans la console le log de la commande tellraw. Il existe aussi une syntaxe contenue dans SkQuery permettant d'envoyer des messages json, pouvant contenir plusieurs formats, mais cette syntaxe reste assez restrictive elle aussi, et nécessite l'addon. ➤ La nouvelle méthode Depuis longtemps il existe dans skript des bouts de codes intégrable directement dans l'effet "message/send", permettant de faire la mise en forme : message "<red><bold>Message en rouge et en gras<reset> en blanc <green> en vert" Ils sont très peu utilisés, car il est bien plus simple de se servir de "&4 , &l , &2 , &r , ...". Mais c'est avec des balises de ce type que l'on va intégrer des commandes/tooltip à nos messages. Voici les 4 balises disponibles : <url:url>texte cliquable, ouvre la fenêtre 'Êtes vous sûr de vouloir ouvrir..'<reset> <command:/commande>texte cliquable, exécute la commande<reset> <suggest command:commande>texte cliquable, écrit la commande dans la barre de tchat<reset> <tooltip:texte de la tooltip>Quand on passe la souris sur le texte, affiche la tooltip<reset> Et voici quelques exemples d'utilisations et le résultat en jeu: [spoiler=Exemples] #1 message "<command:/say J'ai cliqué><tooltip:§4Allez, clique%nl%§2§lSteuplé%nl%&1 :)>Passe ta souris....<reset>" #2 message "<url:[Contenu masqué] ici pour ouvrir%nl%le magnifique forum>Ouvrir le forum skript-mc.fr<reset>" #3 message "<tooltip:Clique pour faire /say Bonsoir><command:/say bonsoir>clic ?<reset>%nl%<tooltip:Clique pour préparer la commande /say><suggest command:/say >ou bien ici ?<reset>" [spoiler=Résultats](Après avoir cliqué sur le message) #1 [ATTACH=full]7864[/ATTACH] J'ai sauté quelques lignes pour ne pas cacher le texte, mais normalement il n'y a pas de saut de ligne. On remarque que dans les tooltips, le code couleur doit être mit avec le symbole § et non &, si vous écrivez le texte directement. Néanmoins si le texte de la tooltip est stocké dans une variable, alors le caractère & fonctionnera. Exemple : set {_tooltip} to "&1Bonsoir" message "<tooltip:%{_tooltip}%>Bonjour<reset>" affichera bien Bonsoir en bleu dans la tooltip. #2 [ATTACH=full]7867[/ATTACH] et au clic : [ATTACH=full]7868[/ATTACH] [spoiler=Résultats] #3 [ATTACH=full]7866[/ATTACH] Juste pour montrer qu'il est possible de faire plusieurs commandes dans le même message, sur plusieurs parties de textes différentes. C'est bien sûr aussi possible avec les url. ➤ Remarques ● Certaines combinaisons de formatage ne sont pas possibles, si elles sont mises sur la même portion de texte: - commande + commande suggérée - commande + url - commande suggérée + url ● Ils n'est pas possible d'associer plus d'un format du même type à la même portion de texte. Par exemple, les codes suivants ne fonctionneront que partiellement : message "<command:/say premier message><command:/say 2eme message>clic<reset> -> n'exécute que la 2eme commande message "<tooltip:premiere><tooltip:deuxième><tooltip:troisième>texte<reset>" -> n'affiche que la 3ème tooltip etc.. ● Les caractères < et > écrits dans l'un des formatages le fera boguer. Je n'ai personnellement pas trouvé d'autre moyen que de les remplacer par un caractère unicode comme ➤ ou ▶ ● Les commandes cliquables et les commandes suggérées ne peuvent pas faire plus de 100 caractères, sinon seuls les 100 premiers caractères seront exécutés. ● Placer le symbole § dans une commande cliquable fera kick le client, avec l'erreur "illegal characters in chat". Si vous placez un § dans une commande suggérée, la couleur sera bien appliquée dans le tchat, mais le joueur sera kick s'il exécute la commande, avec la même erreur. ● Les urls doivent commencer par "http(s)://", sinon le texte ne sera pas cliquable ● Ces formats ne sont pas utilisables avec l'effet broadcast Je rappelle qu'il faut avoir une version assez récente de skript, prenez les dernières releases de Bensku pour être sûr, et parce que c'est bien d'être à jour ;) Pour info, cette fonctionnalité a été ajoutée dans la dev26. Voilà, en espérant que ça vous sera utile :)
  9. 5 points
    j'aimerais tellement qu'il y ais un bouton DisLike rien que pour cliquer dessus quand quelqu'un le mendie !
  10. 5 points
    Bonjour, En réponse à votre demande, je vous présente Beautiful Tab List, un petit script permettant d'afficher un message personnalisé dans la liste des joueurs (TAB). Configuration: Tous les messages sont éditables, il suffit de modifier la catégorie "options". Commandes et Permissions: /beautifultablist refresh ou /btl refresh Permet de rafraichir la liste de tous les joueurs. permission: skript.beautifultablist Droits: Vous êtes autorisés à utiliser et modifier ce script comme bon vous semble, mais s'il vous plait, ne le republiez pas, donnez plutôt le lien vers ce sujet. De plus, je vous demanderai de bien vouloir me laisser le crédit de la création de ce script. [spoiler=Beautiful Tab List] # SKRIPT - BeautifulTabList # # # # Description: Permet d''afficher un message personnalisé # # dans la liste des joueurs (TAB). # # Auteur: The__V # # Dependances: Skript, WildSkript, SkRayFall # options: tabHeader: "&5Bienvenue sur %server name% %loop-player%" tabFooter: "&7&oEn ligne: &d%amount of players%&7/&5%max players%" refreshLog: "[beautifulTabList] Raffraichissement des tabLists terminé avec succès." refreshNotif: "&7[&b&lBeautifulTabList&r&7] &bRaffraichissement des tabLists terminé avec succès." On Skript Start: execute console command "/beautifultablist refresh" On Join: execute console command "/beautifultablist refresh" On Quit: execute console command "/beautifultablist refresh" command /beautifultablist refresh: aliases: btl description: Permet de rafraichir les tabLists de tous les joueurs. Requis en cas modification des messages. permission: skript.beautifultablist executable by: console and players trigger: loop all players: set tab header to {@tabHeader} and footer to {@tabFooter} for loop-player wait 1 tick log {@refreshLog} if command sender is not console: message {@refreshNotif} to the command sender
  11. 4 points
    Skript-db : L'addon qui va vous faire aimer le SQL ! Bonjour, je présente aujourd'hui mon premier tuto sur le Forum, j'espère qu'il servira au plus grand nombre d'entre vous ! Avant de lire ce tuto, il est nécessaire d'avoir de légères bases en SQL, si vous n'en avez pas, pas de panique je tout de même vais aborder les principes de base. Difficultés : ✪✪✪✫✫ Temps d'apprentissage : 30mn si vous connaissez le SQL ~ 2h sinon. Le SQL: Bon, vue que tout le monde ne sait pas forcément ce qu'est le SQL et pour pouvoir toucher un maximum de monde à travers ce tuto je vais en parler un peu ! Le SQL, c'est un langage de programmation, spécialement créé pour l'exploitation de bases de données, c'est pour cette raison qu'on associe toujours "SQL" à "Data Base". En gros, le SQL est le langage qui va vous permettre de gérer votre base de données. Par ailleurs, le SQL permet d'utiliser vos Bases dans plusieurs langages de programmation (PHP, C++, Java, skript !). L'addon Skript-db permet donc d'utiliser le SQL sur skript dans toutes ses mesures. La Base de données: Pour le tuto que je vais aborder, nous allons uniquement traiter de bases de données de type "MySQL", je vous recommande vivement, si vous débutez, d'utiliser une base MySQL avec un accès PYPMyAdmin, qui vous permet d'avoir un panel graphique sur votre base de donnée et une assistance pour la rédaction de vos requêtes SQL (Très pratique pour la suite). Pour expliquer rapidement, la base de données va stocker vos "informations" dans des "tables" organisées en colonnes et classés en plusieurs lignes. Résumé: Vous avez compris, le SQL vous permet d'exploiter des bases de données dans plusieurs programmes de langages différents, par exemple, vous pouvez grâce au SQL, partager des informations entre plusieurs serveur minecraft, ou entre un serveur minecraft et un site web. Skript-db: Voilà enfin le chapitre intéressant ! L'addon est ULTRA basique, mais ULTRA complet. Il permet au contraire des autres addons, d'exécuter n'importe quelle requête de SQL, en seulement 1 ET UNIQUEMENT 1 effect (en vrai il y en a 2 mais ils fonctionnement de la même manière l'un est juste plus complet donc disons 1 seul effect). Donc, comme je l'ai dit il y a 2 effects pour effectuer des requêtes (query) SQL et 2 expressions, l'une pour se connecter une base de donnée et une autre expression pour récupérer vos erreurs SQL. Concrètement nous allons donc utiliser "seulement" l'expression pour se connecter, et l'effect pour les effectuer des requêtes. Ce connecter à votre BDD: Alors déjà, j'aime beaucoup cet addon, car contrairement aux autres addons qui "gèrent" le SQL, il permet de se connecter à plusieurs bases différentes dans le même skript, et surtout de pouvoir les utiliser dans d'autres skript sans les rappeler. C'est magique, non OPTIMISÉ !! Donc sans plus attendre on ce connecte: on load: set {sql} to the database "mysql://%host%:%port%/%database-name%?user=%username%&password=%password%&useSSL=false" # "useSSL", si votre base de donnée est protégée par un certificat SSL, en localhost ignoré le ! {sql}, ça va être la valeur avec laquelle vous aller pouvoir effectuer vos requêtes, ce qui veut dire que si vous voulez plusieurs bases, il suffit d'utiliser des vars différentes ({sql.1} puis {sql.2} ... etc ...). Voilà, rien de compliqué c'est bon vous êtes connecté, une fois cette expression utilisée plus besoin de l'utiliser (Je vous conseil de la mettre dans un "on load")! Effectuer une requête SQL: Et bien, c'est tout l'intérêt de l'addon, alors comme je l'ai dit, il y a 2 effects différents mais qui permettent de faire légèrement la même chose. La différence c'est que l'un permet d'exécuter une requête 'unsafe' stockée dans une variable, et l'autre d'exécuter un texte brut (comprenez sans variables). Vous l'aurez compris, l'effect 'unsafe' permet donc d'exécuter des variable, ce qui est plutôt utile comparé à l'autre. Je ne vais donc montrer que l'effect 'unsafe' dans ce tuto. # Requête sans retour : execute unsafe {_requete} in {sql} # Requête avec retour : execute unsafe {_requete} in {sql} and store the result in {_output::*} Bon voilà, un bon aperçue de l'effect, alors comment l'utiliser ? - Premièrement il faut savoir si vous allez avoir besoin du paramètre de retour ou non, c'est simple, il y a 2 types de requêtes SQL, celles où vous modifiez la BDD, et celles où vous lisez la BDD, dans le cas où vous écrivez, pas besoin de retour, dans l'autre cas il vous faut un retour, évidement. - Ensuite, il vous faut définir la requête {_requete}, c'est simplement une variable text. [spoiler=Application et Exemples] # Petit exercice: un log de chat, pour cela il faut : # Une table avec 2 colonnes : "joueur" et "messsage", avec en bonus "date". # Si vous souhaitez réaliser ce tuto avec moi, je vous passe une ligne SQL. # Vous pouvez la rentrer dans votre console SQL pour générer la table : CREATE TABLE IF NOT EXISTS `chat` ( `joueur` varchar(32) CHARACTER SET utf8 DEFAULT NULL, `message` varchar(64) CHARACTER SET utf8 DEFAULT NULL, `date` varchar(20) CHARACTER SET utf8 NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Table du tuto skript-db par tutur1004'; # Voilà, à présent passons au skript ! # Le but: dès qu'un joueur écrira un message il sera enregistré dans votre base SQL. # À noter que "insert" permet d'ajouter une nouvelle entrée dans votre base, `chat` est le nom de la base. on chat: set {_requete} to "INSERT INTO `chat` (`joueur`, `message`, `date`) VALUES ('%player%', '%message%', '%now%')" execute unsafe {_requete} in {sql} # Maintenant, on va essayer de récupérer avec une commande les x derniers messages d'un joueur (Connecté). # Nous allons utiliser la fonction SQL "SELECT" qui permet de lire une ligne (ou plusieurs) dans une table. command /find-msg <player> <int>: trigger: set {_requete} to "SELECT * from `chat` WHERE `joueur` = '%arg-1%' ORDER BY `message` DESC LIMIT %arg-2%" execute unsafe {_requete} in {sql} and store the result in {_output::*} # {_output::*} contiens maintenant les messages du joueur- # - ainsi que plusieurs fois son pseudo et les différentes dates des différents messages. loop {_output::message::*}: send "Le %{_output::date::%loop-index%}% %arg-1% à dit:" send "%loop-value%" L'exemple vous paraît compliqué ? - Si vous n'avez pas compris le 'insert into', je vous conseille d'apprendre le SQL. - Si vous n'avez pas compris le {_output::*}, je vais vous l'expliquer. Le {_output::*} généré par la requête est classé en fonction des colonnes de votre base. Si on reprend l'exemple, il y a (`joueur`, `message`, `date`) dans notre base. J'ai écrit pour récupérer les messages "loop {_output::message::*}". La variable ce répartie donc en 3 parties. 1) "_output", ça, tout le monde le sait, c'est le nom de la variable. 2) "message", ici, c'est le nom de la colonne qu'on souhaite lire. 3) "*", ici vont défiler les variable que la requête à "SELECT". Un 2ème exemple? Aller: J'ai ensuite utilisé send .. %{_output::date::%loop-index%}% .. -> {_output::date::%loop-index%} 2) "date" le nom de la colonne qu'on souhaite lire, pour pouvoir afficher la date. 3) "%loop-index%", si on suit l'exemple, on a loop les index des messages, Donc nous allons avoir les dates qui correspondent, puisqu'ils ont le même index de variable. Voilà, j'espère avoir suffisamment détaillé le fonctionnement de l'addon, il est assez simple à comprendre et utilisé, vous pourrez le trouver sur le git-hub de btk5h ou sur mon post avec la liste des addons (Maj. en janvier 2018 !) Tutur1004 !
  12. 4 points
    Bonjour, aujourd'hui je vais vous montrer comment mettre le nombre de personnes connectées sur un serveur dans une variable, cela marche pour les serveurs BungeeCord et tout les autres. Le codes est simple: Command /infox: trigger: set {_g} to text from "[Contenu masqué]" send "&7Nombre de joueurs connéctés sur &eEpiCube&7: %{_g}%" Voici un exemple en mettant l'IP d'Epicube:
  13. 4 points
    Bonjour à tous ! Aujourd'hui, je vais vous aider à préparer votre lobby pour l'arrivé de vos joueurs. Difficulté » ●●●●● Prérequis Vous aurez seulement besoin de skript. -[●]- Skript -[●]- Vous l'avez ? Alors c'est partis ! Code Tout d'abord nous allons créer deux options pour ne pas devoir retaper 150 000x la même chose options: prefix: &8[&rNom de votre serveur&8] # Ceci est le préfixe affiché devant chacuns des messages qui seront envoyé à vos joueurs. Vous pouvez utiliser le nom de votre serveur ou autre chose. permission: lobby.use # Ceci est la permission que vous devrez vous assigner pour avoir accès à toutes les commandes restreintes. Ensuite nous allons créer deux commandes, celle qui nous permettra de placer l'endroit où les joueurs apparaîtront dés leurs connexion et celle qui permettra à vos joueurs de retourner au lobby facilement. command /setlobby: trigger: if player has permission "{@permission}": # La permission. set {lobby} to location of player # Une variable qui nous sera utile plus tard send "{@prefix} &7Le lobby à été positionné en &6%location% &7!" to player # Un petit message. stop # Arrêt de la commande. else: # Si le joueur n'a pas la permission "lobby.use". send "{@prefix} &7Vos permissions sont insufisantes !" to player # On lui envoie un message. stop # On empêche la commande de s'executer. command /lobby: aliases: /hub trigger: teleport player to {lobby} # On téléporte le joueur au lobby clear player's inventory # On clear l'inventaire du joueur. set player's gamemode to adventure # On met le joueur en aventure pour qu'il ne puisse pas casser ni poser de blocks. set slot 0 of player to compass named "&bJeux" # Ceci est un exemple. set slot 1 of player to raw clownfish named "&dAmis" # Ceci est un exemple. set slot 2 of player to gold ingot named "&6Boutique" # Ceci est un exemple. stop # La commande s'arrête. Maintenant, nous allons configurer le message de join/quit et les objets du lobby (boutique, jeux, ...) on join: set join message to "" # On set le message de join à ... rien du tout. wait 1 second # On attend 1 secondes pour que le broadcast puisse s'effectuer sans problème. broadcast "&8[&a+&8] &f%joueur%" in world "Lobby" # On envois un message sur tout le lobby annonçant la connexion du joueur. teleport player to {lobby} # On le téléporte au lobby. clear player's inventory # On clear l'inventaire du joueur. set player's gamemode to adventure # On met le joueur en aventure pour qu'il ne puisse pas casser ni poser de blocks. set slot 0 of player to compass named "&bJeux" # Ceci est un exemple. set slot 1 of player to raw clownfish named "&dAmis" # Ceci est un exemple. set slot 2 of player to gold ingot named "&6Boutique" # Ceci est un exemple. stop on quit: set quit message to "" # On set le message de quit à ... rien du tout. wait 1 second # On attend 1 secondes pour que le broadcast puisse s'effectuer sans problème. broadcast "&8[&c-&8] &f%joueur%" in world "Lobby" # On envois un message sur tout le lobby annonçant la déconnexion du joueur. stop Maintenant, nous allons empêcher les joueurs de prendre des dégâts, de poser et casser des blocks, de récupérer et de jeter des objets et d’inter-changer la postions des objets étant dans leurs inventaire mais aussi désactiver la pluie et le fait d'avoir faim. on inventory click: # Empêcher de bouger les objets dans l'inventaire if player is in world "Lobby": cancel event on hunger meter change: # Empêcher d'avoir faim if player is in world "Lobby": cancel event on weather change: # Empêcher la pluie,... cancel event on place: # Empêcher de poser des blocks if player is in world "Lobby": cancel event on break: # Empêcher de casser des blocks if player is in world "Lobby": cancel event on pickup: # empêcher de récuperer des objets if player is in world "Lobby": cancel event on drop: # empêcher de jeter des objets if player is in world "Lobby": cancel event on damage: # empêcher de prendre des dégats if victim is in world "Lobby": cancel event Maintenant, je vais vous montrer comment bloquer certaines commandes à vos joueurs, vous n'aurez cas prendre celle que vous voulez bloquer. on command "/plugins": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vous n'avez pas l'autorisation de voir ceci !" to player stop on command "/plugin": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vous n'avez pas l'autorisation de voir ceci !" to player stop on command "/pl": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vous n'avez pas l'autorisation de voir ceci !" to player stop on command "/bukkit:plugins": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vous n'avez pas l'autorisation de voir ceci !" to player stop on command "/bukkit:plugin": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vous n'avez pas l'autorisation de voir ceci !" to player stop on command "/bukkit:pl": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vous n'avez pas l'autorisation de voir ceci !" to player stop on command "/tps": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vous n'avez pas l'autorisation de voir ceci !" to player stop on command "/skript": if player doesn't have permission "{@permission}": cancel event send "&fCette commande n'existe pas." to player stop on command "/sk": if player doesn't have permission "{@permission}": cancel event send "&fCette commande n'existe pas." to player stop on command "/mv": # Ajoutez cette commande dans votre code uniquement si vous utilisez Multiverse-Core ! if player doesn't have permission "{@permission}": cancel event send "&fCette commande n'existe pas." to player stop on command "/list": cancel event send "{@prefix} &7Il y a actuellement &3%amount of players% joueurs &7connectés sur le serveur !" to player stop on command "/skin": # Ajoutez cette commande dans votre code uniquement si vous utiliser Skin-Restorer ! ( Mettez la si vous ne voulez pas que vos joueurs changent leurs skins. ) if player doesn't have permission "{@permission}": cancel event send "&fCommande inconnue." to player stop on command "/restart": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vos permissions sont insufisantes !" to player stop on command "/spigot:restart": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vos permissions sont insufisantes !" to player stop on command "/bukkit:restart": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vos permissions sont insufisantes !" to player stop on command "/stop": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vos permissions sont insufisantes !" to player stop on command "/spigot:stop": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vos permissions sont insufisantes !" to player stop on command "/bukkit:stop": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vos permissions sont insufisantes !" to player stop on command "/reload": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vos permissions sont insufisantes !" to player stop on command "/spigot:reload": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vos permissions sont insufisantes !" to player stop on command "/bukkit:reload": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vos permissions sont insufisantes !" to player stop on command "/rl": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vos permissions sont insufisantes !" to player stop on command "/bukkit:rl": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vos permissions sont insufisantes !" to player stop on command "/spigot:rl": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vos permissions sont insufisantes !" to player stop Voilà, votre lobby est protéger et prêt à accueillir vos joueurs. J'espère que ce tutoriel vous à plu, si c'est le cas, n'hésitez pas à mettre un like et à laisser un petit commentaire. Bonne journée ! Il y aura bientôt de future mise à jours concernant ce tutoriel, une fois qu'il sera fini, je vous donnerais un lien pour télécharger le skript pour vous éviter de tout retaper ^^
  14. 4 points
    Car tu pense que c'est une bonne mentalité de ne pas répondre par-ce qu'il ne respecte pas spécialement la règle ? Pour ce genre de demandes, surtout qu'il n'y à rien de plus simple, et que c'est pareil pour toutes les versions, c'est plutôt débile de ne pas répondre.
  15. 4 points
    Tien ! C'est un petit code simpatoche :D #Bon jeu , et n'oublie pas de like mon com' :D on join: teleport player to {Hub} command /sethub: trigger: if player have permission "admin": set {Hub} to player's location message "&aTu as bien placé le hub ! :D"
  16. 3 points
    Suite à une forte augmentation de l'intérêt porté à MongoDB au sein de la communauté FR de Skript j'ai décidé de faire ce petit tuto pour vous expliquez étape par étape comment setup votre serveur MongoDB. Avant de commencer : - Ce tuto n'est disponible que pour les plateformes Debian 10/11 - Il ne traiterais que l'installation de l'édition communautaire - Ce tuto est inspiré de l'article disponible à cette adresse : ici - Pour allez plus loin ça se passe ici : Documentation MongoDB - Les fonctions avancées de permission ne sont pas abordé - Ce tuto sera mis à jour si des maj importantes sont publiées par l'équipe de MongoDB - Cette installation supporte les panel type Ptero ou Puffer. Pour toute demande je suis disponible sur discord : Hecate#0667 C'est quoi MongoDB ? MongoDB est une base de données NoSQL populaire qui utilise un modèle de données orienté documents. Cela signifie que les données sont stockées sous forme de documents JSON au lieu de lignes et de colonnes comme dans une base de données relationnelle. MongoDB est souvent utilisé pour construire des applications Web et mobiles de haute performance et est particulièrement bien adapté aux données non structurées ou à structure variable. Il est facile à utiliser et à déployer, ce qui en fait un choix populaire pour de nombreux développeurs. C'est parti Installer le cluster sur la machine Avant de commencer installons les outils nécessaires à l'installation de MongoDB sudo apt install wget curl gnupg software-properties-common apt-transport-https ca-certificates lsb-release Importons la clé GPG nécessaire curl -fsSL [Contenu masqué] gpg --dearmor -o /etc/apt/trusted.gpg.d/mongodb-6.gpg On ajoute les repos de mongo à notre source.list Debian 11 echo "deb [Contenu masqué] bullseye/mongodb-org/6.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list Debian 10 echo "deb [Contenu masqué] buster/mongodb-org/6.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list Plus qu'a effectuer une petite mise à jour de la liste des packages sudo apt update Installons MongoDB sudo apt install mongodb-org Activez MongoDB systemctl start mongod Félicitation vous venez de setup un serveur MongoDB sur votre VPS Installer un service est une chose, le configurer en est une autre. Il est maintenant l'heure de configurer MongoDB Créer un utilisateur root On se connecte à la base via l'utilitaire mongosh (L'interface classique de linux risque de changer ne paniquez pas) mongosh 127.0.0.1:27017 On se place dans la base admin use admin On créé un utilisateur root db.createUser({ user: "AdminCharismatique" , pwd: "monsuperpassword", roles: ["root"]}) (Configurer les paramètres user et pwd. Pour les mot de passe n'utilisez pas de caractères spéciaux sur une base local , la raison vous sera expliquez plus tard) Génial nous avons créé un utilisateur root, il est l'heure de se connecté à notre base distante Visualiser sa base avec Mongo DB Compass Pour cela nous allons utiliser le logiciel MongoDB Compass facilement trouvable en ligne A votre première ouvertures cette interface vous sera proposé. Déroulez les options avancées et éditez le connection string. Parfait, éditons le string de connexion mongodb://utilisateur:[email protected]:27017/ (Remplacez simplement les informations par les votres. Malheureusement MongoDB Compass ne supporte pas les caractères spéciaux) Le Tunnel SSH, votre allié contre le VPN Rentrons dans une partie un peut plus technique, par défaut MongoDB écoute sur le port 27017 et accepte uniquement les requêtes provenant de l'adresse de loopback (127.0.0.1). Cette configuration est en soit la plus sécuriser qu'il vous est possible de faire avec un simple VPS. Nous allons donc créer un tunnel SSH entre votre PC et votre VPS pour vous permettre d'atteindre votre base de donnée sans ouvrir de port supplémentaire, pas de panique c'est extrêmement simple Dans la section avancé, rendez vous dans la catégorie PROXY/SSH puis dans SSH with Password : Vous pouvez saisir les informations de connexion SSH fournie par votre hébergeur N'oubliez pas de sauvegarder votre configuration Et voilà ! Votre Client MongoDB Compass peut maintenant atteindre votre base de donnée sans avoir besoin d'ouvrir un port Pterodactyl Pour les personnes utilisant Pterodactyl il vous sera impossible en l'état de joindre votre base MongoDB via MongoSK sans configurer la bind adress. Cela vient du fait que Pterodactyl conteneurise vos serveur, il ne partage donc pas la même adresse de loop back. Pour rendre MongoDB compatible avec Pterodactyl éditez la config de MongoDB nano /etc/mongodb.conf Il ne vous reste plus qu'a éditez le champ : bindIp et remplacé 127.0.0.1 par 172.18.0.1 N'oubliez pas de modifier dans votre string de connexion par l'adresse précédemment modifier ! GNU nano 5.4 /etc/mongod.conf # mongod.conf # for documentation of all options, see: # [Contenu masqué] # Where and how to store data. storage: dbPath: /var/lib/mongodb journal: enabled: true # engine: # wiredTiger: # where to write logging data. systemLog: destination: file logAppend: true path: /var/log/mongodb/mongod.log # network interfaces net: port: 27017 bindIp: 172.18.0.1 # how the process runs processManagement: timeZoneInfo: /usr/share/zoneinfo #security: #operationProfiling: #replication: #sharding: ## Enterprise-Only Options: #auditLog: #snmp:
  17. 3 points
    Skript-Yaml en 5 minutes: Il est important de noter que ce tutoriel n'entrera pas dans du complexe, et restera sur du basique. Pour aller dans le complexe, je vous invite à aller voir les syntaxes de l'addon et demander de l'aide sur le forum ou discord à ce propos. Skript-yaml est un addon comme son nom l'indique conçu pour gérer des fichier en .yaml (ou .yml). Il fonctionne avec un système de cache. Qu'est-ce que le "cache" ? Imaginer vous devez faire des allez-retours d'une pièce à une autre pour transférer des cartons. Vous laisserez la porte ouverte de manière à ne pas avoir à la rouvrir à chaque fois. Le cache c'est pareil. Vous allez ouvrir 1 fois la porte, faire le transfert de carton puis la refermer (facultatif). Charger le fichier: Bien, si vous avez saisi le système de cache vous êtes bien parti. Ici la porte sera l'effet: load yaml "plugins/Mon fichier yaml.yml" as "test" Ici as "X" est le choix de l'identifiant de votre fichier où X est le nom de l'identifiant. Rien ne sert de charger 50 fois le même fichier. C'est comme vouloir ouvrir 50 fois une porte déjà ouverte. C'est pourquoi il faut placer cet effet au bon endroit: - Si vous comptez créer un fichier non modifiable manuellement (donc qu'on ne puisse pas écrire des valeurs dans le fichier et les appliquer juste après) je vous recommande de mettre cet effet dans un événement on skript load. - Si vous comptez créer un fichier modifiable manuellement par la suite, alors ce serait plus l’événement on load - Si c'est un fichier pour un joueur, ou utilisateur, alors utilisez cet effet au moment où l’interaction avec l'utilisateur se fait (comme une commande, un événement pouvant cibler un joueur etc....) . Si le fichier yaml n'existe pas, skript-yaml va le créer, cela inclut les dossiers. L'effet "unload" ne servira que si vous chargez trop de fichier. Sauvegarder vos donnés avant de l'utiliser (voir plus bas). Mettre des valeurs: Pour mettre des valeurs dans le fichier yaml en question vous avez le choix entre les list et value. Les list sont plusieurs valeurs, donc vous pouvez modifier les listes à partir de add et remove. Les value ce n'est qu'une seule valeur, donc modifiable uniquement avec set. La syntaxe: yaml (list|value) "root node.node.value" from "votre fichier yaml ou identifiant" Il s'agit d'une expression. Il est important de noter que skript-yaml fait attention aux types, c'est à dire que faire: set yaml value "test" from "config" to "true" n'est en aucun cas la bonne méthode. Dans cet exemple, la bonne méthode serait: set yaml value "test" from "config" to true Ce sera exactement pareil avec les number, locations, item etc.... Exemple: on script load: load yaml "plugins/skript-yaml/teleport.yml" as "plugins/skript-yaml/teleport.yml" command /savetp: trigger: set yaml value "%player%.location" from "plugins/skript-yaml/teleport.yml" to location of player save yaml "plugins/skript-yaml/teleport.yml" command /tp: trigger: teleport player to yaml value "%player%.location" from "plugins/skript-yaml/teleport.yml" Je ne vois pas les valeurs s'afficher dans mon fichier, normal ? Oui, les valeurs sont modifiés dans le cache. Ce qui signifie que les changements seront disponible jusqu'à ce que le cache soit effacé par l'application en question (ici ce sera votre serveur). Pour sauvegarder vos donnés, il s'agit de: save yaml "votre fichier yaml ou identifiant" Utilisez cet effet uniquement lorsque vous avez fait tout les changements. Sinon ce serait comme fermer la porte après avoir fait passer chaque carton, ça n'aurait pas de sens. Exemple: save yaml "config" Comment puis-je ajouter des commentaires à mon fichier ? Une expression existe pour ça. Il s'agit de: comments of yaml node "root node.node.valeur" from "votre fichier yaml ou son identifiant" Les commentaires ne peuvent être appliqués uniquement aux "root node" comme dans la syntaxe au-dessus. Ils peuvent néanmoins être appliqués tout en haut de votre fichier grâce à: comments at the top of "votre fichier yaml ou son identifiant" Exemples: set the comments of yaml node "test" from "config" to "Première ligne" and "Seconde ligne" delete the comments of yaml node "test" from "config" set {_en haut::*} to "Première ligne" and "Seconde ligne" set the comments at the top of "config" to {_en haut::*} delete the comments at the top of "config" set the header of "config" to "Première ligne" and "Seconde ligne" delete the header of "config" set the header of "config" to {_en haut::*} ======================================= Ressources ======================================= Lien de l'addon: [Contenu masqué] Voici un tutoriel pour compléter le mien: Si l'affichage ne fonctionne pas, voici le lien brute: [Contenu masqué]
  18. 3 points
    J'écris ce message pour vous dire que le projet est toujours vivant, et qu'il va bientôt aboutir.
  19. 3 points
    ❑ Pourquoi créer sa propre coloration syntaxique ? Créer sa propre coloration syntaxique rend votre code plus lisible. Cela facilite donc sa compréhension (Pour vous et pour les autres). Cela permet de différencier différentes parties de votre code (Textes, chiffres, conditions...), et pour finir, c'est je pense bien plus jolie qu'un code seulement en blanc. ❑ Sommaire Introduction Préparation Paramétrage thème/syntaxe Thème: Créer une règle Syntaxe: Basique Syntaxe: Complexe Fin ❑ 1 - Introduction C'est mon premier tutoriel donc soyez indulgents si des explications manquent. Conseillez-moi en répondant a ce sujet ! Quelques pré-requis pour suivre ce tutoriel: Sublime Text 3 (Sans blagues) - (Télécharger) Une connaissance de base des syntaxes de JSON Une connaissance de base des syntaxes du YML/YAML Une connaissance des Regex Liens pratiques: Générateur de couleurs (Accéder) Test de Regex (Accéder) De quoi sera constitué notre coloration syntaxique ? Un Thème, constitué de règles qui appliqueront des propriétés (Couleurs du texte, de l'arrière plan) à des identifiants (Voir ci-dessous) Une Syntaxe, permet l'envoie d'identifiant pour coloré le texte (Utilise des Regexs) En JSON, quelque soit son type, la valeur d'une propriété devra être mit en chaîne de caractère (Exemple: "valeur", "5", "#eeeeee"...). ❑ 2 - Préparation Pour commencer, nous allons créer nos fichiers nécessaires. Sur Windows [%appdata%.\Sublime Text 3\Packages] (Si vous utilisez un répertoire personnalisé, accéder à ce répertoire) Sur MacOS [~/Library/Application Support/Sublime Text 3/Packages] Sur Linux [~/.config/sublime-text-3/Packages] Créez-y un dossier nommé [User] et accédez-y. Vous choisirez un nom pour votre thème (Remplacez tout les [<nom>] dans ce tutoriel par le votre) Créez-y un fichier nommé [<nom>.sublime-color-scheme] (Le thème) Créez-y un fichier nommé [<nom>.sublime-syntax] (La syntaxe) Ouvrez ces deux fichiers ❑ 3 - Paramétrage thème/syntaxe Commençons par le thème ! (<nom>.sublime-color-scheme). Utilisation de: JSON // Ceci est un commentaire, retirez les commentaires avant de commencer { "name": "<nom>", // Donnons lui un nom "globals": { "parametre_1": "valeur_1", // Voici le format à respecter "parametre_2": "valeur_2", // Vous trouverez la liste des propriétés plus bas dans le tutoriel :) "background": "#14151F", // Exemple d'utilisation (Hexadecimal) "foreground": "white", // Exemple d'utilisation (Nom de la couleur) "selection": "rgb(187, 188, 199)" // Exemple d'utilisation (RGB) }, } Liste des propriétés (Page Officiel) Liste des propriétés traduites : (Incomplet) La configuration du thème est maintenant terminé ! Configurons la syntaxe ! (<nom>.sublime-syntax). Utilisation de: YAML # Ceci est un commentaire, retirez-les avant de faire le tuto # Laissez tout ce qui est ici (Sauf les commentaires), c'est important ! %YAML 1.2 --- name: Skript # Mettez le nom du language de programmation (Donc Skript) file_extensions: - sk # Listez les extensions scope: default.text # Identifiant par défault du code La configuration du thème est maintenant terminé ! Pour activer le thème, il vous suffit d'aller dans [Preferences > Color Sheme... > <nom>] Pour utiliser la syntaxe, il vous suffit d'ouvrir un fichier avec une des extensions indiquées dans file_extensions ❑ 4 - Thème: Créer une règle Créons maintenant notre première règle de notre thème (<nom>.sublime-color-scheme) { "name": "<nom>", "globals": { // Configuration }, "rules": // C'est ici que c'est important [ { "name": "THE_NAME_I_WANT", // Mettez le nom de votre choix "scope": "id", // Mettez un identifiant UNIQUE (exemple: skript.number, skript.green...) // Propriétés (Liste en dessous) }, { // Exemple 1 "name": "True", "scope": "boolean.true", "foreground": "#3EE709", "font_style": "bold" }, { // Exemple 2 "name": "Effects", "scope": "skript.effects", "foreground": "darkblue" } ] } Liste des propriétés traduites: (Incomplet) foreground - Couleur - Couleur du texte background - Couleur - Couleur de l'arrière plan foreground_adjust - ??? A rechercher ??? selection_foreground - ??? A rechercher ??? font_style - Style - bold et/ou italic (Si vous souhaitez mettre les deux, indiquez "bold italic") ❑ 5 - Syntaxe: Basique Pour créer une syntaxe, suivez le modèle ci-dessous: %YAML 1.2 --- name: Skript file_extensions: - sk scope: default.text contexts: main: - match: "REGEX" # Regex scope: "IDENTIFIANT" # Identifiant (Relié à celui du thème) - match: "REGEX_2" # Regex scope: "IDENTIFIANT_2" # Identifiant (Relié à celui du thème) # Exemples - match: "true" scope: "boolean.true" - match: "([0-9]*)" scope: "skript.numbers" ❑ 6 - Syntaxe: Complexe Vous vous posez peut-être la question de comment faire pour faire des sortes de "balises de texte". Voici la réponse: %YAML 1.2 --- name: Skript file_extensions: - sk scope: default.text contexts: main: - match: "\"" push: # Cela s'apparente à une boucle infini (Ou presque) - meta_scope: "text" # Identifiant - match: "\"" # Si le caractère est " pop: true # Sortir de la boucle - match: "test" # Attention: Ce qui est en dehors de la boucle ne pourra pas être "match" si celle si est toujours active. Vous pouvez donc les mettre dans cette boucle scope: "id.test" # Si un résultat est "test" utiliser l'identifiant "id.test" sur "test" Plus d'informations sur les syntaxes sur le site officiel. ❑ 7 - Conclusion Vous pouvez trouver l'exemple que j'ai réalisé: (En développement) Si vous avez des suggestions pour améliorer ce tutoriel, faites m'en part ! N'hésitez pas à partagez vos créations ! Citations: [Contenu masqué], [Contenu masqué], [Contenu masqué]. Si vous avez besoin d'aide suite à ce tutoriel, créer un nouveau sujet et mentionner ce tutoriel.
  20. 3 points
    J'ai déjà posté ça sur discord, mais je le poste ici aussi, sait-on jamais ! PS: Désolé je suis vraiment pas bon en formatting Fragment de code assez long qui permet de forcer un joueur à dormir et le reveiller utile pour des animations de réanimation par exemple, ou pour faire semblant qu'un joueur dort. • Fait en 1.15.2, également testé en 1.14.4 sous spigot (en 1.14, le snippet ne pourra pas empecher le joueur de bouger comme s'il était vraiment dans un lit, il apparaitra juste allongé) • Nécessite ThatPacketAddon, ProtocolLib et skript-mirror 2.0 Merci à King pour l'aide, Runa pour l'idée et Rush²Fer pour m'avoir appris (pour le script DisguiseMe) à utiliser les packets avec skript-mirror et ProtocolLib, ThatPacketAddon ne possédant pas tous les fields nécessaire. Le code à copier est dispo sur ce lien pastebin: [Contenu masqué] Quelques infos importantes: ∟ Ce snippet ne fonctionnera pas en dessous de la 1.14 (c'est pas la peine d'essayer), mettez à jour vos serveurs ∟ Si un joueur est forcé à dormir, il ne peut pas sortir seul de l'animation en cliquant sur "Leave Bed" (il est softlock). La seule façon de lui redonner la possibilité de bouger est de le wake up (ou de le kick) ∟ Je recommande d'utiliser des listes de joueur identiques pour forcer un joueur à dormir et le reveiller, pour éviter que certains puissent le voir allongé sans raison et d'autres non (le "all players" n'est pas toujours le même si un joueur déco par exemple) Utilisation: Infos sur les syntaxes: • (make|force) [the] %players% [to] sleep at %location% for %players% [to not be stuck in bed %-boolean%] : Forcer un/plusieurs joueurs à dormir à une certaine position pour d'autres joueurs (en pouvant éviter qu'il soit bloqué dans le lit) Si vous mettez "to not be stuck in bed true" dans la syntaxe (facultatif) le joueur sera libre de ses mouvements mais apparaitra comme allongé (uniquement en 1.15, car en 1.14 le joueur est *toujours* libre de ses mouvements) • wake [the][up] %players% [up] for %players% : Forcer un joueur à se lever (fonctionne après l'avoir forcé à dormir) Vous pouvez faire se lever certains joueurs pour d'autres, ils seront enlevés de la liste voyant les joueurs allongés Exemples d'utilisation avec des vidéos: • Forcer un joueur à dormir à l'endroit où il est, sans qu'il puisse bouger, pour tout les joueurs command /forcesleep <player>: trigger: force arg-1 to sleep at arg-1's location for all players send "&3%arg-1% &ddort désormais" • Forcer un joueur à se lever pour tout les joueurs command /wakeup <player>: trigger: wake up arg-1 for all players send "&3%arg-1% &ca été reveillé !" • Forcer un joueur à dormir pour les autres joueurs, mais en lui laissant la possibilité de se déplacer command /sleepmove <player>: trigger: force arg-1 to sleep at arg-1's location for all players to not be stuck in bed true send "&3%arg-1% &ddort désormais, mais peut se déplacer en étant allongé
  21. 3 points
    la variable {norole} doit être une variable liste non ? Comme ceci -> {norole::*}
  22. 3 points
    Bonjour / Bonsoir aujourd'hui je cherchait dans les dossiers infinie { presque me juger pas x) } du Web et je suis tomber sur une petite merveille :) Je suis tomber sur un convertisseur de script en java ! Voici le lien : [Contenu masqué] Merci de me mettre un like sa m'aiderais :)
  23. 3 points
    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 ?
  24. 3 points
    Bonjour, Dans ce tutoriel, nous allons étudier les Loops. Celles-ci permettent par exemple de viser une variable ou un groupe de choses (de joueurs pas exemples). Nous allons voir ça de plus près. I/Loop avec un groupe: A)Les joueurs Grâce aux loop, vous pouvez sélectionner un groupe entier, par exemple tout les joueurs, exemple: command /sendall: trigger: loop all players: send "Tu a reçu ce message" to loop-player Là, ma commande prend en compte tout les joueurs présents sur le serveur et leur montre le message. Tout les joueurs présents reçoivent donc ce message. Il est aussi possible de faire une sélection, par exemple, sélectionner tout les joueurs, et trier ceux qui ont les permissions, exemple: command /checkperm: trigger: loop all players: if loop-player has permission "skript.test": send "Tu a la permission" to loop-player stop else: send "Tu ne possède pas la permission :(" to loop-player Là, ma commande sélectionne tout les joueurs du serveur et fait un tri, entre ceux qui ont la permission "skript.test" et ceux qui n'ont pas la permission. Avec ce tri, la commande montrera le message "Tu a la permission" aux joueurs ayant la permission, et montrera le message "Tu ne possède pas la permission :(" aux autres. B)Entitées Il est possible de sélectionner les entités par exemple, pour comme les joueurs, faire un tri ou autre, exemple: command /checkmob: trigger: loop all entities in world "test": if loop-entity is a creeper: add 1 to {creeper.variable} Là, la commande sélectionne tout les mobs dans le monde "test", ensuite il fait un tri entre ceux qui sont des creepers et ceux qui ne sont pas des creepers. Après avoir sélectionne tout les mobs, il ajoute 1 dans la variable {creeper.variable} pour chaque creeper. C)Les inventaires Il y a encore beaucoup de possibilités que je ne pourrais pas vous lister, mais, il est aussi possible de sélectionner les items dans les inventaires des joueurs, comme ici: command /checkmob: trigger: loop all players: loop all items in loop-player's inventory: if loop item is diamond: add 1 to {diamond.variable} Tout d'abord, vous devez sélectionner tout les joueurs à l'aide de "loop all players". Après avoir sélectionné tout les joueurs, grâce à "loop all items in loop-player's inventory", vous sélectionnez tout les diamants dans les inventaires, avec "if loop item is diamond", et si oui, cela ajoute 1 dans la variable {diamond.variable}. Il existe encore beaucoup de possibilités, mais nous allons nous arrêter là pour l'instant. II/Loop les listes: A)C'est quoi une liste ?: Une liste, ça marche comme une variable, sauf que seules les listes peuvent marchent avec les Loops. Et les listes peuvent stocker des entités, des joueurs, et bien d'autres choses par rapport aux variables. Une liste s'écrit comme ça: {liste.test::*}, par rapport à une variable qui s'écrit comme cela: {liste.test}. B)Ca sert à quoi ?: Grâce à cela, vous pouvez stocker des entités, des joueurs (pratique pour les groupes) et même des coordonées, des endroits précis. Nous allons voir de plus près l'utilité des loops. C)Utiliser des loops: Imaginons, vous voulez garder la position d'un bloc, à l'aide de ce skript: command /addpos: trigger: add location of targeted block to {blocs.liste::*} send "&eVous avez ajouté la position du bloc dans la liste" Là, en utilisant la commande /addpos, vous ajoutez la position du bloc que vous regardez dans la liste {blocs.liste::*}. Ajouter une position par exemple est une chose possible que avec les listes. Ensuite, nous allons faire un skript pour remplacer TOUT les blocks ajoutés dans la liste en bloc de diamant: command /replall: trigger: loop {blocs.liste::*}: set {_loc} to loop-value set block at {_loc} to diamond block Avec cette commande, vous sélectionnez tout les blocks enregistrés dans la variable {blocs.liste::*}. Ensuite, vous placez {_loc} à l'endroit de chaque bloc enregistré (loop-value correspond aux blocs enregistrés). Et ensuite le bloc qui est à {_loc} est transformé en bloc de diamant. Vous allez me dire qu'il est possible de faire la même chose sans les listes, mais l'avantage des listes, c'est que vous pouvez sélectionner tout les blocs enregistrés d'un coup ! Voilà, mon troisième tutoriel est terminé, j'espère qu'il vous aura aidé et n'hésitez pas à me poser des questions, surtout que la partie ci-dessus est assez compliqué à comprendre.
  25. 3 points
    Salut ! J'ai un Skript qu'à déja été réalisé par gwladys_lgl dans la catégorie ressource Le skript et juste ici --> GradeSK
  26. 3 points
    1. Le fonctionnement 1. Introduction Dans ce sujet, nous allons aborder les premières choses qu'il faut savoir avant de commencer à développer avec Skript accompagné de quelques conseils. 2. Prérequis Premièrement, Skript est un plugin qui s'exécutera sur votre serveur Minecraft. Pour cela, il faut avoir un serveur ; nous vous conseillons fortement de choisir PaperSpigot (basé sur Spigot), offrant beaucoup plus de possibilités par la suite ; il est de même plus performant et stable que son frère Spigot. Les principales fonctionnalités de Skript sont disponibles dans les versions récentes, qui ne sont pas compatibles avec toutes les versions Minecraft. C'est pourquoi nous vous conseillons de même d'opter pour une version de Minecraft récente comme la 1.15.2 afin de bénéficier des nouvelles mises à jour de Skript. Dans les prochains sujets, nous choisirons PaperSpigot 1.15.2 avec une version de Skript stable (2.4.1), il est probable que certaines fonctionnalités ne fonctionnent pas si votre serveur est basé sur une version ancienne. Par la suite, vous devrez télécharger un éditeur de texte supportant la coloration syntaxique de Skript. Même si l'éditeur de texte de votre système d'exploitation peut être utilisé, nous vous conseillons de préférer un éditeur de texte comme Visual Studio Code, Sublime Text ou bien NotePad++, à vous de choisir selon vos préférences. Les colorations syntaxiques sont à télécharger en tant que plugin - add-on. Parfait ! Vous êtes enfin prêt à poursuivre ce tutoriel si vous avez un serveur Minecraft et un bon éditeur de texte ! Une seule compétence est recommandée pour utiliser Skript : la maîtrise de l'anglais. Vous n'êtes pas un pro en anglais ? Pas de soucis, vous pourrez quand même apprendre (en même temps que l'anglais !). En effet, les syntaxes de Skript sont en anglais ! Liens utiles : Téléchargement de la dernière version stable de Skript - Téléchargement de Paper 3. Mais dis-moi Jamy, comment ça marche au final ? Tu l'as dis Fred ! C'est en réalité assez simple : lorsque vous aurez téléchargé la dernière version de Skript et que vous l'aurez installé dans le dossier de vos plugins, Skript va créer un dossier appelé Skript contenant la configuration ainsi qu'un dossier appelé scripts. Ce dernier va vous servir à y déposer vos programmes que vous allez apprendre à créer au prochain sujet. Lors du chargement de Skript, celui-ci va lire vos programmes, les interpréter afin de les exécuter en jeu. Pour créer vos programmes, vous aurez besoin de la documentation de Skript afin de découvrir les effets, événements, conditions, expressions ... de Skript (nous y reviendrons au prochain sujet). Notez qu'afin de simplifier la compréhension, le terme programme a été utilisé. En réalité, nous les appellerons désormais les scripts. Ils doivent être enregistrés dans le dossier scripts sous forme d'un fichier texte au format .sk. Lien utile : Documentation de Skript J'espère que ce premier sujet vous servira, même s'il est très basique pour le moment. Nous commencerons à aborder le vif du sujet dès le prochain sujet. N'hésitez surtout pas à faire part de vos idées ou de ce que vous souhaiteriez voir au prochain dans les commentaires. Les commentaires peuvent aussi servir si vous ne comprenez pas quelque chose. Merci d'avoir lu !
  27. 3 points
    Bonjour Je vous partage ce petit bout de code qui permet d'obtenir la traduction d'un texte en indiquant la langue de départ et celle d'arrivé. function translate(t: text, from: text, to: text) :: text: set {_edited} to "x9K7M5v49QBLJb4 %uncolored {_t}% x9K7M5v49QBLJb4" replace all " " with "%%20" in {_edited} set {_text} to "[Contenu masqué]}%" replace "§" with "&" in {_text} set {_url} to text from "%{_text}%" set {_split1::*} to {_url} split by " x9K7M5v49QBLJb4" set {_split2::*} to {_split1::1} split by "x9K7M5v49QBLJb4 " set {_final} to convert unicode "%{_split2::2}%" to text return "%{_final}%" A vous de trouver à quoi ça peut bien servir J'ai fais par exemple un petit système de traduction du chat en fonction de la langue des différents joueurs connecté. on chat: loop all players: if country code of player is not country code of loop-player: cancel event message "&a%player%: &7 %translate(message, country code of player, country code of loop-player, player)%" to the loop-player else: message "&a%player%: &7 %message%" to the loop-player "country code of player" vient de l'addon WolvSK. Sinon, vous pouvez toujours passer par une variable pour définir la langue du joueur. La langue doit être indiqué dans le format ISO 639-1. Je vous mets un petit lien avec la liste des codes pour différentes langues. [Contenu masqué]
  28. 3 points
    Salut a tous. Suite a une demande en message privée de @Silass_ qui avais un problème pour faire fonctionner les fonctions, je me suis rendue compte qu'il y avait très peut d'explication sur ce sujet, ou alors des exemples qui ne sont pas fonctionnel. j’étais tomber une fois ( rassurer vous je me suis pas fait mal :D ) sur un bon court tutoriel en anglais mais je ne le retrouve pas, je vais donc essayer de partager avec tous le monde ce que j'en avais compris. Tous d'abord ce que je vais utiliser c'est Skript 2.2 minimum et l'Addon SkQuery ( et oui c'est dans le titre ^^ ). La base d'une fonction: function Nom(t:text)::text: return {_t} ont as d'abord " function " qui commence par dire a Skript /!\ ceci sera une fonction. Nom => c'est le nom de votre fonction, vous pouvez lui donner n'importe quel nom mais éviter les espaces et les accents. text => seras le type de retour de la fonction, cela peut être "player,number,text..." en gros les types que skript peut retournée. return => c'est ce que la fonction va retournée ( ici sa renvoie {_t} car le type de la fonction est "text"). Voici quelque exemples et leur explication. Imaginons une fonction qui permet d'envoyer un message a un joueur pour une commande de give. command /giveme <item>: trigger: if player has permission "sk.grade.vip": if player has permission "sk.kit": if player has permission "sk.give.%{arg-1}%": message "Give Autorisé" else: message "Give refusé" else: message "Give refusé" else: message "Give refusé" ce Skript est volontairement absurde mais c'est pour l'exemple qui va venir ;) que constatons nous du skript ci-dessus ? 1 - ont vérifie plusieurs permission 2 - un message identique reviens "Give refusé" si je veux modifié le texte "Give refusé" il faut que je le modifie trois fois dans ce code et encore ici le Skript et très court, si il était plus long, ont risquerais d'en oublier un, de plus si je fait le même message pour différent kit, et bien il faudrait le modifié a d'autres endroit encore, donc comment faire pour rendre la modification du message "Give refusé" plus simple ? et bien avec une fonction ont peut je reprend le skript ci-dessus et j'ajoute une fonction. function MsgGive(p: player, t: text): if {_t} is "yes": send "Give Autorisé" to {_p} else: send "Give refusé" to {_p} command /giveme <item>: trigger: if player has permission "sk.grade.vip": if player has permission "sk.kit": if player has permission "sk.give.%{arg-1}%": MsgGive(player,"yes") else: MsgGive(player,"no") else: MsgGive(player,"no") else: MsgGive(player,"no") voila si je veux modifier "Give refusé" je peut le faire dans la fonction et ce serras modifié partout dans mon code. bon ok c'est bien beau je vous ais balancer un bout de code mais l'avons nous compris ? au cas ou je vais le détailler ^^ function MsgGive(p: player, t: text): <= vous constaterais la disparition du type de retour, en effet il est possible de faire une fonction qui ne renvoie rien mais qui ce contente d’exécuter ce quelle as dedans. ont a déjà vue plus haut que MsgGive était le nom de la fonction p => est un nom de variable qui aura pour valeur un joueur de type "player" p peut être de n'importe quel nom, c'est a dire qu'ont peut faire aussi ceci function MsgGive(joueur: player, t: text): maintenant le nom de la variable est joueur et aura pour valeur un joueur "player" player étant le type que skript va interpréter t = > et bien comme pour p, mais cette fois ont auras une valeur de type "text" encore une fois, t peut avoir un autre nom comme "msg, texte, ... libreAvotreImagination" p et t étant des noms de variable, nous allons les réutiliser dans la fonction comme une variable temporaire. vous savez les variables {_variable} avec le _ ' tiret du 8 comme certain aime le dire :D ' ce qui donne {_p} et {_t}, qui aurons les valeur que vous aurais mie dans l'appelle de la fonction: MsgGive(player,"no") player étant le joueur qui a taper la commande, "no" étant une valeur texte. --------------------------------------------------------------------------------------------------------------------------- _______ Suite plus tard avec plus d'exemple sur type de retour de la fonction_____________ je finirais plus tard le reste du tutoriel, mais vous avez normalement de quoi commencer a comprendre ;) mais aussi, cela vous permet de me dire quelle sont les parties qui sont difficile a comprend afin que je puisse l'améliorer et rendre plus claire ce que j'ai écrit mais aussi ce qui va suivre ;) bien évidement, j'autorise le Staff a corriger mon écrit qui doit forcément contenir des fautes ( si vous pouviez juste me MP quelle était les fautes histoire de pouvoir m'améliorer en orthographe ;) )
  29. 3 points
    Bonjour, bonsoir, aujourd’hui, le staff de Skript-MC se décide à ré-écrire de manière propre et structurée les règles du forum. Règlement du forum Skript-MC Ces règles sont à respecter et à appliquer à partir du moment où vous vous inscrivez sur le forum. Les posts et topics Restez calme et respectueux envers l’équipe du staff et les utilisateurs. Le partage de contenu à caractère illégal, menaçant, discriminatoire (xénophobe, racisme, etc.), pornographique, vulgaire ou harcelant est fortement interdit. Ecrivez dans un français correct, vous avez le temps avant de poster un message. L’abus de langage SMS peut être réprimé. Les pratiques comme le flood, le spam, ou l’envoi de messages sans utilité sont interdites. Les messages trop courts (smileys par exemple) seront effacés. Veuillez respecter les règles de la section dans laquelle vous postez. Évitez le hors-sujet au possible. Les ups (action de faire remonter un topic dans une catégorie en postant un message dans celui-ci) sont autorisés à intervalle de 24 heures. Les titres doivent coller au plus possible au topic. Les titres “aguicheurs” ou mensongers ne sont pas tolérés et seront supprimés. Il est fortement interdit de poster un message qui a pour but de nuire au forum ou à une personne, un utilisateur. La promotion de logiciels de triche (cheats) est interdite. Le forum est un forum francophone. Les posts doivent donc être en français et non pas dans une langue étrangère. Les sections “Aide” et “Demandes de skript” Les topics avec des titres comme “aidez moi!!!”, “probleme svp aide” sont prohibés et seront fermés voire supprimés. Veuillez effectuer des recherches avant de poster, sur le forum ou sur Google. Votre souci a très sûrement déjà été résolu autre part. Détaillez au plus possible vos demandes d’aides et ne vous contentez pas seulement de 5 lignes. Précisez la version de votre plugin Skript et la version de votre serveur. Ne créez pas des tonnes de posts pour le même souci. Si personne ne répond, faites preuve de patience et faites un “up” toutes les 24 heures, sans en abuser. N’attendez pas que l’on vous donne un code tout prêt uniquement car vous n’avez pas compris. Demandez des explications si nécessaire. Les personnes s'étant inscrites dans les dernières 24h et qui ne respectent pas les règlements de catégorie se verront bannies définitivement. Les demande d'aide et de skript doivent figurer de la demande jusqu'à la finalisation de la demande sur le forum. Les réponses du type "viens mp discord pour t'aider" ne sont plus tolérées car les demandes d'aide sur le forum ne sont jamais finalisées ni répondues. La section “Ressources” Faites une présentation soignée, et non pas bâclée. Évitez les couleurs trop vives comme le jaune. Il est très important d’inscrire dans votre présentation : les dépendances du skript (skQuery, WildSkript, etc.), les versions de Minecraft compatibles, les versions de Skript compatibles, des screenshots / captures d’écran de votre création, la liste des commandes détaillées. Ne spammez pas les membres du staff pour que votre ressource soit acceptée rapidement. Les ressources sont vérifiées assez rapidement et dans les plus brefs délais. Ne partagez pas une ressource qui ne vous appartient pas sans l'avis du créateur original. Une lourde sanction sera appliquée à ceux qui copient / collent des skripts qui ne sont pas d’eux. La documentation Nous avons développé une documentation pour que nous puissions vous partager un maximum de connaissance via le site de Skript-MC. Nous exigeons donc qu'un maximum de liens où les syntaxes sont disponibles sur le site de Skript-MC soient utilisés dans vos topics. Pour les Membres Actifs, nous vous demandons de nous aider à compléter la documentation. Il ne sera pas toléré de votre part, le partage d'une autre documentation, si les syntaxes qui sont demandées par un membre, existe déjà sur la documentation de Skript-MC (A savoir qu'on a fait ça par votre demande (la refonte de la doc) alors complétez là avec nous). Les publicités Les personnes s’inscrivant uniquement pour faire de la publicité, même dans une catégorie où cela est toléré seront bannies. Les liens rémunérés (adf.ly, etc.) ne sont pas tolérés sur le forum et seront supprimés. Votre profil Les signatures ne doivent pas être trop grandes ou trop présentes. Veillez à avoir une image de profil qui n’est pas trop “choquante”. Les informations que vous entrez lors de votre inscription restent et resteront confidentielles et protégées. Faites la demande auprès d’un membre du staff si vous voulez les faires retirer de votre profil. Les doubles comptes sont interdits. Si un membre banni se réinscrit sous un autre pseudo, il sera supprimé sans préavis, et le compte précédent sera banni définitivement (si la sanction était temporaire). De même, si vous êtes en situation de double compte, tous les comptes possédés hormis le plus ancien seront supprimés. Autre Ce forum est modéré à priori, les ressources ou certains messages que vous postez dans le forum ne seront pas mis en ligne directement mais lu préalablement par les modérateurs de Skript-Mc. Ceux-ci sont seuls habilités à décider de l’opportunité de publier votre ressource ou votre message. La publication d’un message ou d'une ressource posté ne vous exonère en rien de votre responsabilité concernant son contenu. Les modérateurs du forum se réservent le droit de supprimer les messages à tout moment. Ce forum est modéré à posteriori, les messages que vous postez sont directement publiés sans aucun contrôle préalable. Il est de votre responsabilité de veiller à ce que vos contributions ne portent pas préjudice à autrui et soient conforment à la réglementation du forum en vigueur. Les modérateurs se réservent le droit de retirer toute contribution qu’ils estiment déplacée, inappropriée, contraire aux règlements de catégories, à ce règlement ou susceptible de porter préjudice directement ou non à des tiers ou à un groupe de personnes. Les messages qui ne sont pas en relation avec les thèmes de discussion ou avec l’objet du forum peuvent être supprimés sans préavis par les modérateurs. Les modérateurs du forum se réservent le droit d’exclure du forum, de façon temporaire ou définitive, toute personne dont les contributions sont en contradiction avec les règles mentionnées. N’hésitez pas à contacter le staff en cas de problème avec le forum ou avec un utilisateur en question. Un Discord officiel est disponible à cette adresse. Respecter les règles de celui-ci comme le respect de ce dernier. N’hésitez pas à signaler un message ou une ressource que vous pensez “hors-règles”. Nous la réprimanderons voire la supprimerons dans les plus brefs délais. La liste des sanctions est disponible à cette adresse. En tant que modérateur de ce forum, nous nous réservons le droit de supprimer tout message qui nous semble inapproprié, sans justification. De même, le fait de participer à ce forum implique l'acceptation de ces règles, ainsi que des conditions générales d'utilisations de Skript-Mc. Si vous avez une question sur le fonctionnement du forum, une proposition d'amélioration ou autre chose, n'hésitez pas à laisser un message à l'équipe de Skript-Mc. Nous nous ferons un plaisir de les lire. Cordialement, l'équipe de modération et d'administration de Skript-Mc.
  30. 3 points
    Version de minecraft et skript: 1.12 / 2.2-dev37c Description du script: Je souhaite avoir: Quand on fait /setwarp [<nom du warp>] Pour ajouter un warp Quand on fait /delwarp [<nom du warp>] Pour retire un warp Quand on fait /warp: Pour avoir un menu avec tout les warps disponibles je souhaite avoir 2 PAGES PAS PLUS ! Permission: Pour le /setwarp : /delwarp : /warp >>> warp.adm
  31. 3 points
    Bonjour ! Je fait ce petit tutoriel car beaucoup de gens posent la question sans vraiment chercher. Et j'en ai marre de toujours répéter la même chose. ^^ Donc voilà. Pour changer les messages par défaut de MineCraft par exemple le message "Unknown command. Type "/help" for help." [spoiler=Unknown command.] Vous devez tout simplement allez dans votre ftp et double cliquer sur spigot.yml [spoiler=Spigot.yml][Contenu masqué] Ensuite vous allez a la ligne 52 [spoiler=Ligne 52][Contenu masqué] Et changez le message en celui que vous voulez. [spoiler=Ligne 52 modifié][Contenu masqué] Faite un /reload ou redémarrez votre serveur [spoiler=Reload][Contenu masqué] Ensuite écrivez une commande aléatoire. Par exemple /abc et faite entrez. [spoiler=Unknown command changé][Contenu masqué] Et voilà ! Votre message de commande inconnue est changé ! Merci a vous d'avoir pris le temps de lire ce petit tuto ! *Bisous !*
  32. 3 points
    On Hunger meter Change: cancel event En principe ça devrait marcher. Je n'ai pas test ^^"
  33. 3 points
    Bonjour j'ai codé votre demande, mais je ne sais pas comment faire pour que quand il est l'item en main donc j'ai fait en sort que le joueur fasse un clique droit ou gauche. Cordialement, Le code: ################################################### Plugin créer par la chaine D'utile & Inutile Chaine: [Contenu masqué] Plugin servant a donner un effect de potion avec l'item en main ################################################### on join: clear inventory of player give player a blaze rod named "&9SpeedII" on respawn: clear inventory of player give player a blaze rod named "&9SpeedII" on leftclick with a blaze rod: cancel event apply speed 2 to the player on rightclick with a blaze rod: cancel event apply speed 2 to the player
  34. 2 points
    Bonjour aujourd’hui je vais vous montrez comment faire un menu virtuel très simplement avec des panneaux ou des enclumes. Tout d'abord vous aurez besoin de Skacket et de WolvSk, je sais que skacket peut faire des menus avec des enclumes, mais il sont bug donc je vous conseillerais d'utiliser WolvSk qui est beaucoup plus simple. On va créer un petit code ici: command /test: trigger: open sign to player with lines "Nom", "", "^^^^", "^^^^^^": # sa va ouvrire un sign virtuelle avec les lignes : "", "", "", "": set {_variable1} to 2rd element out of lines #la sa set le résultat de la ligne demander dans une variable. send {_variable1} to player #puis sa envois la variable -------------------------------------------------------------------------------------------------------------------------------------------------- command /meloka: trigger: open an anvil gui named "testm3loka" to player with default text "ecrit ici" #en cros la on ouvre une enclume virtuelle avec son nom. on close anvil gui named "testm3loka": #la sa détecte quand tu ferme une enclume virtuelle. set {testmelo} to event-text #sa va set le text dans une variable. send {testmelo} to player #sa lui send la variable (le text) Si vous avez besoin d'aide (M3loka#3634)
  35. 2 points
    Hey, souvent on voit des demandes d'aide qui consistent en un "ça marche pas, voici mon code". @PsYZiiK avait proposé un formulaire, mais chaque cas étant ce qu'il est, il est difficile d'en avoir un qui couvre vraiment tous ces cas. Aujourd'hui, je vous propose donc de trouver les problèmes de vos plugins pour vous en débarrasser vous-même et ainsi désengorger la section Aide et vous permettre de dire précisément où se situe votre problème aux gens qui vous aident. 1. Les messages d'erreur de Skript Ce qui est génial avec ces messages qui s'affichent quand on recharge un plugin Skript, c'est qu'ils sont (souvent) courts et simples à comprendre. Ils se présentent comme ceci : Explication de l'erreur (Plugin.sk, line X: 'Instruction mise en cause') La ligne C'est le plus important en fait et y'a plein de gens qui passent à côté en lisant leur message d'erreur. Et le principe est tout simple, évident même : c'est la ligne où Skript a trouvé une erreur en chargeant le plugin. Alors pas la peine de désespérer en cherchant d'où peut venir le problème quand vous avez un message d'erreur, c'est écrit exactement où vous devez regarder. Instruction mise en cause C'est juste un copier/coller de la ligne d'où vient le problème. Pour le coup, c'est une partie un peu inutile. Si vous avez le numéro de la ligne -ce qui est toujours le cas-, cette partie du message risque de vous servir rarement. Par contre, si la ligne en question est très longue, cette partie risque de prendre beaucoup de place et rendre le message un peu plus difficile à lire. Le plugin.sk C'est juste au cas où vous rechargez plusieurs plugins en même temps et que du coup, vous ne savez pas si l'erreur vient du premier, du deuxième ou du douzième. L'explication de l'erreur Ici, c'est ce qui va vous permettre, après avoir localisé le problème, de savoir ce qu'il est. Je vais développer un peu chacun d'eux plus loin. indentation error: expected X tabs, but found Y tabs Ce message est un peu particulier, parce qu'en général, il est présent plusieurs fois pour une seule erreur, mais il est très fréquent quand on débute. Il apparaît quand Skript trouve une incohérence dans les tabulations (tabs). Le cas le plus répandu, c'est quand on oublie de mettre deux points ":" à la fin d'une condition ou d'un événement. Dans ce cas, Skript considère la ligne de l'oubli comme une condition sans if ou un effet, deux cas où les lignes suivantes doivent être au même niveau que l'instruction en cause. Du coup, le fait que toutes les lignes suivantes soient décalées d'une tabulation fait que Skript les voit comme mal placées et signale une erreur pour chacune d'elles alors que la ligne où se situe le vrai problème n'est pas signalée par ce message. En revanche, la bonne ligne est souvent signalée par le message d'erreur suivant. Can't understand this condition/effect : Instruction Cette explication, c'est celle qui apparaît quand Skript ne reconnaît pas la syntaxe que vous avez utilisée dans une instruction sans deux points ":" à la fin. Le problème : - comme je disais au dessus, peut venir du fait qu'il manque les deux points ":", puisque Skript lit très différemment les instructions avec et sans. - mais le plus souvent, le problème est que la syntaxe n'est pas reconnue parce qu'elle est ajoutée par un add-on que vous n'avez pas installé ou qui n'est pas à la bonne version (ou de Skript qui n'est pas à la bonne version). Si vous ne savez pas de quel add-on vient une instruction, cherchez-la sur internet. - une autre cause récurrente. c'est que vous vous êtes juste trompé en écrivant l'instruction et que Skript ne comprend pas si c'est juste à peu près la bonne instruction. Dans ce cas, vérifiez la syntaxe là aussi en cherchant l'instruction sur internet. Le mot syntaxe comprend aussi les types d'arguments que vous utilisez. Si vous tentez de mettre potato là où Skript attendait un nombre, vous aurez le même message. Vous pouvez trouver la grande majorité des instructions et les add-ons dont elles dépendent sur SkUnity, ainsi que leur syntaxe, simplement en tapant le début dans le moteur de recherche en haut à droite. Empty configuration section! You might want to indent one or more of the subsequent lines to make them belong to this section or remove the colon at the end of the line if you don't want this line to start a section. Bon je sais, c'est long comme message, mais c'est très simple. Si vous avez une instruction qui finit par deux points ":", mais que la ligne en dessous n'a pas une tabulation en plus, le message apparaît pour dire qu'il faut soit retirer les deux points ":" soit ajouter la tabulation qui manque pour les instructions qui dépendent de celle qui pose problème. En général, on est tête en l'air et il fallait ajouter la tabulation. Beaucoup d'autres messages d'erreurs Il existe beaucoup d'autres erreurs, mais elles sont pour la plupart très simples à comprendre et ne nécessitent pas spécialement d'être développées. Si vous ne comprenez pas, un traducteur en ligne devrait faire l'affaire. Et si vous ne trouvez pas votre bonheur, vous avez toujours la possibilité de chercher votre erreur sur internet au cas où quelqu'un aurait eu le même problème et si vous êtes désespérés, vous pouvez poster un topic dans les demandes d'aide, où vous devrez donner l'erreur qui vous bloque, la partie du code liée, voire le code entier si vous n'êtes pas sûr d'avoir tous les éléments dans une partie réduite et dire ce que vous essayez de faire, puis tout ce que vous avez tenté pour résoudre le problème. 2. Les messages d'erreur Java Hors des messages d'erreur de Skript, on croise parfois d'autres messages qui proviennent des add-on ou de Skript directement. Les messages dans le tchat qui commencent par "An error occured while..." signalent qu'il y a un message d'erreur de ce type à lire dans la console, même si pas toujours. La difficulté de ces messages, c'est qu'ils sont longs et moins explicites. Dans cette partie, on va prendre un exemple très courant : [spoiler=An internal error occurred while checking for the latest version of Skript] [16:11:49] [skript update thread/INFO]: [0;37;22m[[0;33;22mSkript[0;37;22m][m [0;31;22mAn internal error occurred while checking for the latest version of Skript. Please refer to the server log for details.[m [16:11:49] [skript update thread/ERROR]: #!#! [16:11:49] [skript update thread/ERROR]: #!#! [skript] Severe Error: [16:11:49] [skript update thread/ERROR]: #!#! Unexpected error while checking for a new version of Skript [16:11:49] [skript update thread/ERROR]: #!#! [16:11:49] [skript update thread/ERROR]: #!#! If you're developing an add-on for Skript this likely means that you have done something wrong. [16:11:49] [skript update thread/ERROR]: #!#! If you're a server admin however please go to [Contenu masqué] [16:11:49] [skript update thread/ERROR]: #!#! and check whether this error has already been reported. [16:11:49] [skript update thread/ERROR]: #!#! If not please reply with meaningful content, copy & paste this whole error into a pastebin ([Contenu masqué]), [16:11:49] [skript update thread/ERROR]: #!#! and describe what you did before it happened and/or what you think caused the error. [16:11:49] [skript update thread/ERROR]: #!#! If you think that it's a trigger that's causing the error please post the trigger as well. [16:11:49] [skript update thread/ERROR]: #!#! By following this guide fixing the error should be easy and done fast. IF YOU DON'T FOLLOW IT, WE'LL HUNT YOU DOWN. [16:11:49] [skript update thread/ERROR]: #!#! [16:11:49] [skript update thread/ERROR]: #!#! Stack trace: [16:11:49] [skript update thread/ERROR]: #!#! javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,1] Message: Fin prématurée du fichier. [16:11:49] [skript update thread/ERROR]: #!#! at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(Unknown Source) [16:11:49] [skript update thread/ERROR]: #!#! at com.sun.xml.internal.stream.XMLEventReaderImpl.nextEvent(Unknown Source) [16:11:49] [skript update thread/ERROR]: #!#! at ch.njol.skript.Updater.getChangelogs(Updater.java:286) [16:11:49] [skript update thread/ERROR]: #!#! at ch.njol.skript.Updater$2.run(Updater.java:210) [16:11:49] [skript update thread/ERROR]: #!#! at java.lang.Thread.run(Unknown Source) [16:11:49] [skript update thread/ERROR]: #!#! [16:11:49] [skript update thread/ERROR]: #!#! Version Information: [16:11:49] [skript update thread/ERROR]: #!#! Skript: 2.2-Fixes-V9b [16:11:49] [skript update thread/ERROR]: #!#! Bukkit: 1.10-R0.1-SNAPSHOT [16:11:49] [skript update thread/ERROR]: #!#! Minecraft: 1.10 [16:11:49] [skript update thread/ERROR]: #!#! Java: 1.8.0_101 (Java HotSpot(TM) Client VM 25.101-b13) [16:11:49] [skript update thread/ERROR]: #!#! OS: Windows 10 x86 10.0 [16:11:49] [skript update thread/ERROR]: #!#! [16:11:49] [skript update thread/ERROR]: #!#! Running CraftBukkit: false [16:11:49] [skript update thread/ERROR]: #!#! [16:11:49] [skript update thread/ERROR]: #!#! Current node: set {_Ligne} to line 2 of lore of player's tool (Entraînement au tir.sk, line 36) [16:11:49] [skript update thread/ERROR]: #!#! Current item: null [16:11:49] [skript update thread/ERROR]: #!#! [16:11:49] [skript update thread/ERROR]: #!#! Thread: Skript update thread [16:11:49] [skript update thread/ERROR]: #!#! [16:11:49] [skript update thread/ERROR]: #!#! End of Error. [16:11:49] [skript update thread/ERROR]: #!#! A noter que la plupart des informations sont présentes dans le début de l'erreur. On a donc ça (étalé sur deux lignes) : [skript] Severe Error: Unexpected error while checking for a new version of Skript Le premier mot, c'est Skript, mais ça veut pas dire que le problème vient forcément du plugin Skript lui-même, donc on n'apprend pas grand chose. C'est la ligne qui suit les deux points qui est plus intéressante. Elle indique ce que le plugin cherchait à faire quand l'erreur est arrivée. Dans notre cas, Skript cherchait à vérifier si une nouvelle version n'était pas disponible. Dans ce cas-ci, puisque normalement, vous ne tournez pas sur la dernière version de Skript, cette erreur est sans importance et dans ce cas-ci, il vaut mieux désactiver le checking de nouvelle version dans la config' du plugin. Après, je suis pas forcément bien calé en java donc je vais pas trop insister sur cette partie, ça pourrait être cool que quelqu'un la fasse. Le mieux, si l'erreur est incompréhensible pour vous aussi, c'est de chercher le début sur Google avec des guillemets ("votre erreur"). 3. Ça marche pas, mais y'a pas de message d'erreur Agent 007, voici votre équipement pour cette mission : broadcast "Le joueur est dans le bon monde" broadcast "%{Variable}%" send "Il a bien un bâton dans la main" to console Ces outils, les plus élémentaires qui soient, permettent de localiser à peu près n'importe quel problème par logique. Une fois le problème repéré, on peut, au mieux le résoudre soi-même, au pire en donner tous les éléments dans une demande d'aide au lieu d'un "ça marche pas svp". L'intérêt donc des instructions énoncées au dessus, c'est qu'en les disposant un peu partout dans son code, on peut savoir ce qui se passe exactement lorsqu'on exécute son plugin, en regardant quels messages se sont affichés ou non.
  36. 2 points
    Introduction Je vous présente une potentielle évolution du plugin Skript et qui a pour but de compiler les skripts en byte code utilisable par la JVM. USkript (Universal Skript) permettra de pouvoir avoir un skript aussi rapide que Java, et il ne sera plus dépendant d'Addons, vos scripts ne seront plus limités à Spigot/Bukkit, vous pourrez les utiliser pour BungeeCord, Forge, crée des applications sur ordinateur ou sur téléphone. En résumé vous pourrez tous faire comme Java. Différence USkript reprend le fonctionnement de Skript en grande partie, mais à quelques différences prêt: Les éléments de syntaxe enregistrés ne serviront plus à l'exécution, mais à indiquer les instructions que le programme doit faire une fois compiler. Les addons existeront toujours mais ne seront plus requis pour l'exécution seulement pour la compilation. Vous n'aurez plus besoin de vous passer les addons pour compiler, USkript se chargera d'aller les trouver sur les différents répertoires en ligne enregistrée et de les télécharger. USkript ajoute aussi la notion de préprocesseur, qui sont des syntaxes optionnelles qui ont pour but d'indiquer au compilateur des actions à faire. USkript ne sera pas un plugin comme son prédécesseur Skript, mais un logiciel à pars entiers sous forme de commande qui aura pour but de compiler et d'analyser vos skripts. Pour plus d'informations SiteWeb: link Discord: link
  37. 2 points
    Si ton codes fonctionne, tant mieux, j'aimerais juste t'informer d'un truc : Au lieu d'utiliser une variable pour contenir ton GUI, tu peux créer un gui avec un ID et tu pourras le réutiliser dans n'importe quel autre Skript sur ton serveur. Pour ce faire, c'est très simple : < create a new chest inventory with id "MyGUI" with 6 row named "Vendeur" > Et pour l'ouvrir : < open gui with id "MyGui" to player > Et pour l'edit : < edit gui with id "MyGui": > (Après le ":", tu as juste à ajouter ce que tu veux, comme un < set slot .... >, ...)
  38. 2 points
    Ouai je vous fais pas dire j'ai quand même galéré sa fait du bien d'avoir enfin la solution
  39. 2 points
    Version de Minecraft : 1.7.10 Version de Skript : 2.1.2 Type du skript : Je voudrais un skript ou seul les staffs peuvent executer. Description du script : Je voudrais les commande : /warn Lenomdujoueur laraison /warn lenomdujoueur info /delwarn Lenomdujoueur laraisonduwarnquiavaitetaitmis pour avertir les joueur qui sont un warn est de stocker cette un infos que pour les staff style gmod est quaud bout de 3 il soit ban 24h. Merci d'avance.
  40. 2 points
    Ce tutoriel est assez vieux, je vous réfère à un tutoriel un peu plus récent : [Contenu masqué] 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
  41. 2 points
    De rien ! N'hésite pas à passer en résolu et me donner un ! (Sa fait toujours plaisir :D)
  42. 2 points
    Salut, Ton code ne peut pas fonctionner car : - Tu souhaites le désactiver pour l'ensemble des joueurs présents? - La variable que tu utilises est "temporaire", c'est à dire que dès que tu commences une variable par {_} une fois la commande terminée, la variable n'existe plus. Donc voici deux codes permettant soit de faire comme tu souhaites faire, c'est à dire désactiver le scoreboard pour tout le monde et une autre version pour désactiver le scoreboard uniquement pour le joueur qui fait la commande. #Version pour désactiver pour tout le monde every 10 seconds: loop all players: set {_player} to loop-player set {perf} to tps from last minute set {_online} to number of all players if {noscoreboard} is true: delete {_player} sidebar else: wait 3 tick wipe {_player} sidebar set name of sidebar of {_player} to "&6&l➵ &4&lDK&8&lSM &7&lV &6&l➵" set score " " in sidebar of {_player} to 16 set score " &6&lInfos Joueur" in sidebar of {_player} to 15 set score "&e⬩ &aMonnaie: &e%{_player}'s balance%" in sidebar of {_player} to 14 set score "&e⬩ &aJetons: &e%{balance::%{_player}%}%" in sidebar of {_player} to 13 set score "&e⬩ &aMonde: &e%world of {_player}%" in sidebar of {_player} to 12 set score " " in sidebar of {_player} to 11 set score " &6&lInfos Serveur" in sidebar of {_player} to 10 set score "&e⬩ &aEn ligne: &e%{_online}%&a/50" in sidebar of {_player} to 9 set score "&e⬩ &aPing: &e%{_player}'s ping%" in sidebar of {_player} to 8 set score "&e⬩ &aÉtat: &e%{perf}%&a/20" in sidebar of {_player} to 7 set score " " in sidebar of {_player} to 6 set score " " in sidebar of {_player} to 5 set score " " in sidebar of {_player} to 4 set score " " in sidebar of {_player} to 3 set score " " in sidebar of {_player} to 2 set score "&8Désactiver:" in sidebar of {_player} to 1 set score "&7/&fBientôt " in sidebar of {_player} to 0 command /off: trigger: set {noscoreboard} to true message "&cLe scoreboard n'est plus actif pour aucun joueur." command /on: trigger: clear {noscoreboard} message "&cLe scoreboard est désormais actif pour l'ensemble des joueurs." #Version pour désactiver uniquement au joueur qui fait la commande every 10 seconds: loop all players: set {_player} to loop-player set {perf} to tps from last minute set {_online} to number of all players if {noscoreboard.%loop-player%} is true: wipe {_player} sidebar else: wait 3 tick wipe {_player} sidebar set name of sidebar of {_player} to "&6&l➵ &4&lDK&8&lSM &7&lV &6&l➵" set score " " in sidebar of {_player} to 16 set score " &6&lInfos Joueur" in sidebar of {_player} to 15 set score "&e⬩ &aMonnaie: &e%{_player}'s balance%" in sidebar of {_player} to 14 set score "&e⬩ &aJetons: &e%{balance::%{_player}%}%" in sidebar of {_player} to 13 set score "&e⬩ &aMonde: &e%world of {_player}%" in sidebar of {_player} to 12 set score " " in sidebar of {_player} to 11 set score " &6&lInfos Serveur" in sidebar of {_player} to 10 set score "&e⬩ &aEn ligne: &e%{_online}%&a/50" in sidebar of {_player} to 9 set score "&e⬩ &aPing: &e%{_player}'s ping%" in sidebar of {_player} to 8 set score "&e⬩ &aÉtat: &e%{perf}%&a/20" in sidebar of {_player} to 7 set score " " in sidebar of {_player} to 6 set score " " in sidebar of {_player} to 5 set score " " in sidebar of {_player} to 4 set score " " in sidebar of {_player} to 3 set score " " in sidebar of {_player} to 2 set score "&8Désactiver:" in sidebar of {_player} to 1 set score "&7/&fBientôt " in sidebar of {_player} to 0 command /off: trigger: set {noscoreboard.%player%} to true message "&cVous ne pouvez plus voir le scoreboard." command /on: trigger: clear {noscoreboard.%player%} message "&cVous voyez désormais le scoreboard." Bonne soirée
  43. 2 points
    Salut, tu peux de baser sur le fichier template pour le cooldown : # # This script is a template for commands which have a cooldown. # I will add a more intuitive way of handling cooldowns/countdowns in the future, # But for now please use something like this. # Make sure that you do not use delays for cooldowns as they stop when the server stops. # # This command allows each player to get infinite cakes # but the command has a cooldown of one minute (per player) command /cake: description: Recieve a cake, but you can only do this once per minute! permission: cake.is_a_lie executable by: players trigger: # stores how long it's been since the player last used this command set {_waited} to difference between {cake.%player%.lastused} and now # checks whether the player has used the command within the last minute if {_waited} is less than a minute: message "You have to wait %difference between a minute and {_waited}% before you can use this command again!" stop # some condition which sould not start the cooldown # (if the player doesn't get the cake he should be able to use the command again immediately) player doesn't have space for a cake: message "You do not have enough space in your inventory to hold the cake!" stop # do the action of the command give a cake to the player # and finally start the cooldown set {cake.%player%.lastused} to now et pour quand le joueur bouge, c'est pas très optimisé, mais tu peux essayer un : on any move: if {teleport.%player%.cooldown} is 1: set {teleport.%player%.cooldown} to 2 command /nether: trigger: set {teleport.%player%.cooldown} to 1 send "Téléportation dans 3 secondes" wait 3 seconds if {teleport.%player%.cooldown} is 2: set {teleport.%player%.cooldown} to 0 send "téléportation annulé" stop else if {teleport.%player%.cooldown} is 1: set {teleport.%player%.cooldown} to 0 #le téléporter
  44. 2 points
    Bonjour à tous, Skript n'étant plus disponible en 1.8 depuis au moins 1 an (avec les versions dev25 ou dev36), j'ai donc cherché à le faire fonctionner en 1.8. Voyant pas mal de gens travaillant encore sur de très anciennes versions, j'ai décidé de rendre mon travail public sur GitHub : [Contenu masqué] Vous pouvez télécharger les dernières versions de Skript-1.8 ici : [Contenu masqué]/releases Je mets à jour régulièrement mon travail par rapport à la version officielle en local et j'envoie tout ça une fois la version suivante de Skript sortie. Lien vers la ressource Skript-MC : [Contenu masqué] (tout est indiqué là-bas) Merci pour votre lecture, enjoy !
  45. 2 points
    Skript-YAML : le bon YML Me voici à nouveau pour un autre tutoriel ! Et vous savez parfaitement que quand je fais un tutoriel, c'est que quelque chose me tient à coeur. Sans plus tarder, commençons. Si vous ne savez pas ce qu'est le YML, faites une recherche, puis lisez ce tuto. Le YML avant : Le YML est le format de configuration officiel de Bukkit. Skript permettant de faire des pseudo-plugins, il est logique qu'on veuille répliquer le fonctionnement d'un vrai plugin, d'où l'idée du YML. Et le YML dans Skript alors ? Ben, ça puait. Toutes les syntaxes qui offraient la fonctionnalité du YML avaient le même défaut : elles lisaient et interprétaient le fichier en entier à chaque fois. C'est comme si, pour trouver une réplique dans une pièce de théâtre, vous deviez lire la pièce en entier à chaque fois avant de trouver votre réplique (RPZ la seconde). Pas optimisé DU TOUT. Ah, et si vous voulez une preuve, voici un test de performance réalisé par Rezz : Pour les stats : C'est 53 fois plus lent de changer une valeur YML qu'une variable normale et 28 fois plus lent d'en obtenir (get). Changer une valeur YML prend 25,5 ms contre 0.472 ms pour une variable normale. Ça représente en peu plus de la moitié du temps qu'une balle de baseball reste en contact avec la batte (merci WolframAlpha). Obtenir une variable YML prend 17,3 ms contre 0,616 ms pour une variable normale Je vous laisse vérifier ces chiffres par vous-mêmes. Gardez en tête que ce sont des moyennes, et qu'il y a des chances qu'elles soient légèrement éloignées de la réalité. Au passage, les 4 addons (oui, quatre) qui ont cette fonctionnalité sont WildSkript, skQuery, Skellett, skUtilities. Déjà que j'aime pas WildSkript en général, alors si vous utilisez le YML de WildSkript, je vais vous réduire en salade de fruits. Bon, comme vous le voyez, j'ai quelques raisons pour dire que le YML tel que vous le connaissez, c'est de la bonne grosse daube. Bon, vous vous doutez bien que je ne vais pas m'arrêter là, donc continuons. Le YML maintenant : NB : quand je dis "maintenant", je veux dire "ce à quoi c'est censé ressembler maintenant". Récemment, l'addon skript-yaml, développé par Sashie, développeur de skDragon est sorti.... Putain que c'est mieux. Mais bon, il y a un peu d'explications nécessaires pour comprendre pourquoi c'est mieux, et surtout, comment l'utiliser. Le fonctionnement : Avant, on chargeait tout le fichier à chaque fois qu'on essayait de faire quoi que ce soit avec le fichier. Maintenant, ça fonctionne de la façon suivante : On charge le fichier en mémoire. Ça veut dire qu'on ne lit et traverse le fichier qu'une fois. Ensuite, les valeurs récupérées sont stockées quelque part dans la mémoire, prêtes à être utilisées. Là, on fait ce qu'on veut avec nos valeurs. Mais il est crucial de noter que on ne modifie RIEN sur le fichier. Une fois qu'on a fini d'éditer nos valeurs, il n'y a plus qu'à sauvegarder le YML. C'est le seul moment où on modifie le fichier. Bon, c'est bien gentil de savoir le principe, mais c'est encore mieux de pouvoir l'utiliser concrètement, non ? A) L'utilisation : 1. Charger le fichier YML : [re]load [non[(-| )]relative] [y[a]ml] %string% [as %-string%] Cet effet charge un fichier YML en mémoire. Le premier "%string%" est le chemin de votre fichier YML qui va être chargé en mémoire, c'est celui qui vous utiliseriez avec n'importe quelle autre syntaxe YML. Si vous utilisez "[non[(-| )]relative]", alors le chemin commencera à la racine de votre disque dur au lieu du dossier de votre serveur. Le second "%string%", optionnel, représente l'identifiant donné à ce fichier, utilisé dans les syntaxes suivantes. Vous vous doutez bien qu'on va pas taper tout le chemin à chaque fois, ce serait totalement absurde et ce serait signe d'une mauvaise fonctionnalité, non ? Vous voyez où je veux en venir, hein ? Si ce paramètre est omis, alors on prendra le nom du fichier sans ".yml". Donc pour "config.yml", on gardera "config" comme nom. #Racine #Si serveur est sur le disque D:/ (pour Windows), alors la syntaxe ressemblerait à ceci load non-relative yaml "RootFolder/MyAwesomePlugin/config.yml" #Vous pouvez aussi spécifier le disque vous-mêmes load non-relative yaml "C:/RootFolder/MyAwesomePlugin/config.yml" #Si vous êtes vraiment borné et que vous voulez utiliser le chemin à chaque fois, voici comment load yaml "plugins/MyAwesomePlugin/config.yml" as "plugins/MyAwesomePlugin/config.yml" set yaml value "version" from "plugins/MyAwesomePlugin/config.yml" to 1.0 broadcast "%yaml value ""version"" from ""plugins/MyAwesomePlugin/config.yml""%" # Ces deux effets produisent un même identifiant : "config" load yaml "plugins/MyAwesomePlugin/config.yml" load yaml "plugins/MyAwesomePlugin/config.yml" as "config" 2. Modifier les valeurs : [[skript-]y[a]ml] (1¦value|2¦(node|path)[s]|3¦(node|path)[s with] keys|4¦list) %string% (of|in|from) %string% [without string checks] Comme vous pouvez la voir, cette expression ne diffère pas trop des anciennes. Pour éviter tout risque de conflit, je suggère d'utiliser "skript-yaml" au début. Le premier "%string%" simplement votre valeur telle que vous l'utiliseriez avec un YML standard. Pas de changements de ce point de vue-là. Le second est l'identifiant du YML chargé en mémoire. Attention, ce n'est pas le chemin du fichier. En reprenant l'exemple de la syntaxe précédente, on mettrait simplement "config". Enfin, si vous ajoutez "without string checks", l'expression retournera un texte quoi qu'il arrive, sans essayer de le convertir en nombre ou en booléen. Ça peut rendre votre code un tout petit peu plus rapide. Exemple : set skript-yaml value "test1.test2" from "config" to "test3" set skript-yaml list "list.name" from "config" to {_list::*} set {_test} to skript-yaml value "test1.test2" from "config" broadcast "%{_test}%" 3. Sauvegarder votre fichier : save [y[a]ml] %string% Permet de sauvegarder le YML spécifié dans son fichier correspondant. C'est le seul moment où vous modifiez le fichier. Exemple : save yaml "config" B) Autres fonctionnalités: Vous vous en doutez sûrement, mais skript-yaml ne se limite pas à ces trois syntaxes. Les syntaxes suivantes ont leur utilité, mais il est probable que vous ne les utiliserez que dans certains cas. Syntaxe : unload [y[a]ml] %string% Exemple : unload yaml "config" Permet tout simplement de supprimer un YML de la mémoire. À n'utiliser que si vous voulez supprimer les changements non sauvegardés. Syntaxe : [(the|all (of the|the))] [currently] loaded y[a]ml [files] Exemple : set {_list::*} to the currently loaded yaml files broadcast "%{_list::*}%" Retourne la liste de tous les configurations YML chargées par "load yaml" Syntaxe : [all] [[skript-]y[a]ml] (node|path)[s] (of|in|from) %string% Exemple : set yaml value "test1.test2" from "config" to "test3" set yaml value "boop.beep" from "config" to "bop" set {_list::*} to all yaml nodes of "config" broadcast "%{_list::*}%" Retourne tous les noms des entrées d'une config YML. L'exemple au-dessus enverra "test1, test1.test2, boop and boop.beep" dans le chat. Syntaxe : y[a]ml[s] %strings% (is|are) loaded y[a]ml[s] %strings% ((are|is) not|(is|are)n[']t) loaded Même pas besoin d'exemple pour celui-là, retourne vrai si la config YML spécifée a été chargée en mémoire. Syntaxe : [skript-]y[a]ml [(node|path)[s]] %strings% (of|in|from) %string% has value [skript-]y[a]ml [(node|path)[s]] %strings% (of|in|from) %string% does(n't| not) have value Exemple : set skript-yaml value "test.test" from "config" to "test" yaml path "test.test" in "config" has value: # toujours vrai broadcast "has value" Retourne vrai si le chemin spécifié existe/a une valeur. Syntaxe : [the] comment[s] (of|from) [y[a]ml] node[s] %strings% (of|in|from) %string% [the] (comment[s] (at|on) [the] top of |header (of|from)) %string% Exemple : set the comments of yaml node "test" from "config" to "First line" and "Second line" delete the comments of yaml node "test" from "config" set {_header::*} to "First line" and "Second line" set the comments at the top of "config" to {_header::*} delete the comments at the top of "config" set the header of "config" to "First line" and "Second line" delete the header of "config" set the header of "config" to {_header::*} Obtient, édite ou supprime les commentaires ou le header d'une config YML : Les headers ne contiennent pas '#' donc ajoutez-les si vous le voulez Les commentaires doivent se trouver à la racine. Exemple : 'root', et non 'root.something' On peut passer plusieurs valeurs aux commentaires et headers Cette expression ne modifie pas le fichier (ndlr : c'est une traduction) En espérant que ça vous ait aidé, je vous dis à plus tard. Je dirais même plus, à l'année prochaine ! HAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAAAAAAAA !!!! ...elle est nulle je sais. ...vous vous y attendiez hein ? ...c'est bien ce que je pensais. ... ...Qu'est-ce que vous foutez à lire ça ? (c'est ironique je vous rassure)
  46. 2 points
    Et n'oublie pas le like si je t'ai aidé ;)
  47. 2 points
    Alors 3 choses : 1) J'essaye de t'aider, la moindre des choses serait d'être sympa 2) Tu as mal vue car le cooldown était déjà présent dans le skript 3) J'ai modifier le skript en ajoutant tes options. J'ai tester et il fonctionne comme tu l'as demander. Espérant avoir pu t'aider PS : Tu peux t'excuser en me mettant un like, ca fait toujours plaisir PS 2 : Si j'ai résolu ta demande, pense à la passer en résolu
  48. 2 points
  49. 2 points
    Je propose le skript McPvP-Pro Gratuitement pour évité toute les tensions. Ce skript nommé McPvP – Pro, est un plugin vous rajoutant de nombreux kits pour optimiser le pvp, avec de nombreux kits des serveurs bien connu " McPvP" ainsi que d'autre nouveaux kits que nous avons réalisés mon équipe et moi. 2444 Lignes Liste des kits (42 Kits au total !): – Camel : Au contact du sable le kit Camel vous permet d'obtenir un effet de speed. – Ninja : Le kit Ninja vous permet de vous teleporter à la dernière personne que vous avez frappé en utilisant la touche snick. Ce kit est idéal pour pvp ou rattraper un adversaire en fuite. – Archer : Vous possédez un arc power I dans votre inventaire. – Berserker : Le kit Berseker vous permet d'obtenir un effet de force durant quelques secondes lorsque vous tuez un adversaire. – Viper : Le kit Viper vous donne le pouvoir de mettre l'adversaire en poison durant quelques secondes lorsque vous frappez votre adversaire. – Poseidon : Au contact de l'eau le kit Poseidon vous donne un effet de force et de speed II. – Fireman : Vous ne prenez aucun dégat de feu mais au contraire, vous en perdez dans l'eau. – GranPa : Le kit Grandpa vous permet d'obtenir un baton recul II et vous permet d'infliger de grand recul à vos adversaires. – Snail : Le kit Snail vous donne le pouvoir de mettre l'adversaire en lenteur durant quelques secondes lorsque vous le frappez. – Turtle : Lorsque vous maintenez le clic droit et la touche sneak le kit Turtle vous permet d'encaisser uniquement 0,5 coeurs de dégats lorsque l'on vous frappe. – Tank : Vous êtes plus résistant. – Spécialist : Le kit specialist vous permet d'obtenir une fiole d'xp qui vous donne 1 niveau à chaque fois que vous tuez un adversaire. Ainsi vous pouvez utiliser vos niveaux gagner en ouvrant un livre qui vous servira de table d'enchant pour enchanter votre stuff. – Switcher : Le kit Switcher vous donne 2x16 boules de neiges qui ous permettent d'échanger votre position avec l'adversaire touché avec la boule de neige lancée. – Gladiator : Le kit Gladiator vous permet de faire un combat 1vs1 avec l'adversaire que vous avez sélectionné avec vos barreaux de fer. Ce kit est idéal pour affronter une team en les affrontant en 1vs1. – Spectre : Lorsque vous faites un click droit avec la redstone, vous devenez invisible. – Phantom : Le kit Phantom vous donne le pouvoir de vous envoler pendant quielques secondes avec une plume. Idéal pour enfuir ou mettre des coups critiques à l'adversaire. – Vampire : Le kit Vampire vous permet de récupérer une grande partie de vos points de vie à chaque adversaire que vous tuez. – Ghastman : Vous pouvez envoyer des boules de ghast. – Scoot : Grâce à ce kit, vous êtes plus rapide. – MilkMan : Vous devenez plus puissant lorsque vous buvez votre lait. – Bomber : Avec ce kit, vous ne prenez aucun dégat d'éxplosion et vous explosez lorsque vous mourez. – Jumper : Vous avez l'effet d'une potion de jump II continuellement tant que vous ne mourrez pas. – Monk : Lorsque vous faites click droit avec votre baton de blaze, l'adversaire est désarmé. – Démoman : Lorsque votre adversaire marche sur vos plaque de pression, il explose. – Furtif : Si kit est très utiles quand vous êtes en mauvaise posture, il vous permet de fuir si vous faîtes un click droit sur la larme de ghast. – Swifter : Quand vous arrivez à tué votre adversaire, vous aurez automatiquement l'effet d'une potion de speed II pendant 30 secondes. – LoveBlind : Quand vous faites un click droit avec votre gateau sur l'adversaire, votre adversaire tombe amoureux de vous. – Pumpkin : Lorsque vous faites un click droit sur l'adversaire, celui ci ne voit plus rien. – PotLuck : Vous avez des chances d'obtenir des potions de heal en cassant des fleurs. – Analyseur : Lorsque vous faites click droit avec votre oeil de l'end, vous avez toute les infortmations intéressante sur votre adversaire. – Scorch : Lorsque vous marchez avec vos bottes de feu, du feu ce dépose derrière vous. – LaserMan : Lorsque vous faites un click droit avec votre baton, vous envoyez un laser. – FisherMan : Quand vous arrivez à attraper un adversaire avec votre canne à pêche et que vous faîtes un click droit sur celle-ci, le joueur sera automatiquement téléporté à vous. – FreezMan : Réduit la mobilité de tes ennemi dans un rayon de 10 block de la ou tu jette la boule de neige. – LanceFlame : Enflame tes ennemi dans un rayon de 10 block de la ou tu jette l'oeuf. – JailMan : Enferme ton ennemi dans une cage de feux. – Spiderman : Lance tes toiles d'araigné. – Flash : Téléporte toi la ou tu veut. Nouveauté: - Un système d'Anti Déconnexion en Comdbat #ADC - Une tornade de feux lors d'un kill: Image - Un feux d'artifice lors d'un kill - Un système de statistique performant - Un système de KillStreak - Changement des messages de mort, de connexion et de déconnection - Un systèmee de regen soupe - Un système de selection de kit par panneau - Un système de récupération des soupes par panneau - Un système de refill avec les mushrooms (Vous pouvez casser un mushroom vous en récupérer 2) - Ajouts du SpongeJump (Eponge qui fait sauter) Liste des permissions : mcpvp.admin #Cette permission permet d’administrer le plugin. mcpvp.sponge #Permet de recevoir l’autorisation d’utilisé les éponge. mcpvp.shop #/Cette permission permet d’utiliser le shop InGame. mcpvp.goodgame #Cette commande vous donne le droit d’ultilisé /gg ou /gf ou /goodgame. mcpvp.kit #Cette permission permet d’utiliser un kit (Avoir au préalablement la permission du kit). mcpvp.kits #Cette permission permet d’utiliser la command /kits (La liste des kits). mcpvp.menu #Cette permission permet d’utiliser le menu des kits. kit.<nom du kit> #Permett d’utilisé un kit. kit.* #Pour avoir tous les kits. Liste des commandes : /mcpvp config (Couleur|Setinv|Titre|Stats|Drop|Streak|FireWork|Holo|Item|Menu) #Permet de configurer le skript. /kits #Permet d’avoir la liste des kits. /kit <nom du kit> #Permet de prendre un kit. /clearchat #Permet de clear le chat minecraft de tous les joueurs. /menu #Permet d’acceder au menu de tous les kits. /shop #Permet d’acheté les kits au shop. /gg ou /goodgame ou /gf #Permet d’envoyer un message“Goodgame“ dans le chat. /stats #Permet de connaître ses statistique en jeu. /suicide #Permet de se suicider /mcpvp maj #Permet d’avoir des informations sur la nouvelle mise à jour. /mcpvp #Permet de voir toue les nouvelles commandes. Vous pouvez tout personnaliser vous même, vous êtes libres et lorsque vous voulez de nouvelle chose, vous me le dites et j'améliore le skript ! Il y a de nouvelle mise à jour assez fréquemment. Besoin de: SkQuery, Skript, WildSkript, SkqGeometry Payez moi café ce travail prend du temps, multipliez le temps passé par le SMIC horaire:
×
×
  • 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.