Aller au contenu

Classement


Contenu populaire

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

  1. 2 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 !
  2. 2 points
    L'idée est bonne. Par contre je vois pas trop l'utilité quand tu peux déjà mettre un auto-updateur sur tes fichiers directement. Je connais pas beaucoup de plugin qui utilisent ce système là mais comme j'ai dit l'idée est bonne. Elle est bonne quand tu possèdes plusieurs fichiers dépendants entre eux mais bon là pour des scripts indépendants c'est pas super utile. Bonne idée mais à retravailler pour un autre contexte ^^
  3. 2 points
    Très bon skript, très complet mais j'ai remarqué que tu utilisais les GUIs de Skquery qui sont parfois buggé ou qui obligent à mettre des wait après l'ouverture du GUI ou d'utiliser des loop pour formater des slots alors qu'avec tuske tu n 'aurais pas ce problème. J'aurai mis 4,5 si j'en avais eu la possibilité.
  4. 2 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
  5. 1 point
  6. 1 point

    Classique

    Version 1.0.0

    9 downloads

    Bonjour, aujourd'hui je vous propose un skript de path que j'avais réalisé pour un concours, et suite à la demande d'une personne, je me suis dit pourquoi pas le poster ● Ce skript comporte uniquement 1 commande. ➤ /path ➥ /path create (ou add) ➜ Créer un chemin ➥ /path edit ➜ Permet de modifier les messages créer au pendant la création du chemin ➥ /path start ➜ Permet de démarrer la création d'un chemin ➥ /path delete (ou remove) ➜ Permet de supprimer un chemin ➥ /path list ➜ Affiche la liste de tous les chemins ➥ /path debug ➜ Supprimer tout ce qui concerne les chemins (Dangereux) ● Ce skript nécessite 3 addons: ➤ SkRayFall (pour l'affichage du title) ➤ SkQuery (pour l'utilisation des functions) ➤ Skript-mirror (pour la gestion de l'armor stand & de la téléportation)
  7. 1 point
    J'avais pas remarqué mais le skript et en 1.14.4 moi je suis en 1.12.2 je vais voir si c'est quand même disponible
  8. 1 point
    Il à l'air super ton skript je le test demain et je te donne une note mais vue la présentation déjà t'a 20/20
  9. 1 point
    Le script est juste parfait ! Rien à redire et je recommande !
  10. 1 point
    Bon bah j'ai finis par m'inscrire vu que ça me plaît ! xD
  11. 1 point

    Classique

    Version 1.0.0

    78 downloads

    Hammer Informations : Version minecraft d'élaboration : 1.12.2 Version skript d'élaboration : 2.3.6 Addons nécessaires : MorkazSK ou Skellet Fonctionnalités : - Possibilité de créer un outil qui casse une zone de 3x3x1, un peu comme les marteaux via les mods Raison : J'ai réalisé ce skript pour une demande d'aide sur le discord de Skript-MC. Remarque : Ce script n'est qu'une base. C'est à vous ensuite de modifier à votre souhait les caractéristiques de l'objet auquel vous souhaitez donner ce pouvoir. Je n'ai pas pris la peine de réaliser mon propre système de minage, c'est-à-dire que si vous cassez les blocs avec un objet enchanté avec fortune III, cela n'aura pas d'effet. Il faudrait pour cela calculer le pourcentage de chance pour chaque minerais et le faire drop. Si quelqu'un veut le faire, pourquoi pas le rajouter ^^ Droits et auteurs : Ce script a été réalisé par Lou'. Pour tout support, merci de vous diriger vers moi. Vous avez le droit de modifier et utiliser ce script comme vous le souhaitez.
  12. 1 point
    Heyy, Je propose comme idée d'ajouter un durabilité car sinon sa deviens un peu abuser a mon goût Sinon merci ^^
  13. 1 point
    Bonjour, aujourd'hui je vous partage ma dernière création en Skript : un algorithme Soundex Merci de laisser le commentaire avec mon nom avant la fonction si vous l'utiliser dans votre code. Vous pouvez aussi me citer sur le post si vous êtes quelqu'un de gentil Il est très important d'avoir SkUtilities et skQuery pour que la fonction marche ! Qu'est ce que l'algorithme Soundex ? L'algorithme Soundex est un algorithme phonétique d'indexation de noms par prononciations (merci Wikipedia). En gros, il va transformer les mots en chiffres selon certains critères, et permettra ainsi de reconnaitre deux mots proches, deux mots qui ont une correspondance entre eux malgré des différences dans l'écriture. Il est utilisé par beaucoup de sites, du moins est repris par beaucoup de sites (moteurs de recherches, etc.). Je prefère vous le partager plutôt que le voir copier coller depuis mes futurs skripts qui l'utiliseront. L'algorithme L'algorithme Soundex est plutôt simple à comprendre. Je vais le décrire grossièrement, si vous voulez le voir en détail, rendez-vous ici. (le wikipedia anglais indique les exceptions et les règles, alors que la page française non) On retire les espaces, les voyelles (dont celles anglaises), et les lettres doublées puis on met le mot en majuscule On garde la première lettre On attribue un numéro à chaque lettre que l'on a encore sauf la première On garde seulement 3 chiffres, ou bien on ajoute des 0 pour avoir 3 chiffres On met la première lettre suivi des trois chiffres, voilà. Prenons par exemple le mot "Comment" COMMENT CMMNT CMNT M = 5, N = 5, T = 3 C553 La personne écrit mal le mot, et écrit "Cament" CAMENT CMNT M = 5, N = 5, T = 3 C553 Même code, donc mot proche Exceptions Il y a néanmoins quelques exceptions. L'algorithme les respecte parfaitement ! Si 3 chiffres sont les même de suite dans le code final, on en garde qu'un seul. C'est à dire que si 3 lettres avec le même chiffre se suivent, on en garde qu'une. Par exemple, "Jackson" ne donne pas pas "A222" mais "A250" Si deux lettres avec le même chiffre sont séparés d'un H ou d'un W, il n'y a qu'un chiffre et pas deux. Par exemple, "Ashcraft" n'est pas "A226" mais "A261" Le code, la fonction, l'algorithme donc pour l'utiliser, il suffit de faire soundex("text") et cela retournera un code. Par exemple "set {var} to soundex("salut")" Le code expliqué Utilisation théorique Vous allez sûrement vous dire "ok mais je fais quoi de cette fonction". Exemple théorique Il suffit de comparer ce que retourne la fonction pour un terme, et pour l'autre. On peut comparer 'soundex("salut")' et 'soundex("solut")', on aura le même code. Exemple command /money <text>:[/size][/size] [size=5][size=4] trigger: if arg 1 is not "remove": if soundex("remove") is soundex(arg 1): send "The command is /money remove and not /remove %arg 1% :)" Corrige la commande /money remove Il y a des tonnes de choses à faire avec cela ! Des corrections, des anti-spam développés, pleins de trucs ! A vous de voir maintenant... Si vous avez besoin d'aide n'hésitez pas à me demander, et n'hésitez pas non plus à lâcher un petit j'aime et un commentaire si vous aimez l'algorithme. Polymeth.
  14. 1 point
    Bienvenue pour un nouveau tutoriel ! Dans ce tuto je vais vous montré comment, crée un serveur et installer skript ! Se tuto vient de mon site In4Matik (Site encore en construction :p, ouvert mais il manque pas mal de choses !): [Hidden Content] Bref , merci de ne pas le copier coller pour le mettre sur un autre site. Partie 1 Installation de la base du serveur Pour commencer si vous n'avez pas spigot ou craftbukkit (pour avoir votre serveur qui peut posséder des plugins) Je vous conseille de prendre spigot! (Pour le télécharger cliquer sur le bouton) Télécharger spigot Une fois sur le site cliquer sur Télécharger Spigot Pack 1.8.8. Une fois que vous avez téléchargé le fichier, ouvrer le et déplacez-le spigot .jar dans un dossier. (Si le fichier .jar n'est pas appelé spigot.jar renommé le.) Maintenant crée un bloc note dans le dossier où il y a le spigot.jar. (Renommer le en START ou LANCEMENT ou comme vous voulez.) Et coller se code à l'intérieur : @ECHO OFF SET BINDIR=%~dp0 CD /D "%BINDIR%" "VotreChemin\java.exe" -Xincgc -Xmx1G -jar spigot.jar PAUSE Une fois le code coller il va falloir changer une ligne de ce code (Celle-ci :"VotreChemin\java.exe" [Arguments java]) Pour la changer il faut prendre votre chemin d'accès java ! (Voila comment faire:) allez dans disque local, programme, java, votre version java (Si vous en avez plusieurs prenez celle qui passe, /!\ ATTENTION: ne prenez pas de java JDK /!\), bin. Copier le chemin d'accès de ce dossier. Et changer le dans le code du bloc note (Il faut laisser le /java.exe !), cela devrait ressembler à ceci: "VOTRECHEMIN/java.exe". Pour les personnes un peut plus expérimenter vous pouvez changer l'allocation de RAM de votre seveur. Voilà ! Maintenant cliquer sur > > Fichier > > Enregistrer sous > > (Renommer le fichier comme vous voulez MAIS il faut finir le nom par .bat) > > Enregistrer là où il y a le .jar. Vous pouvez supprimer le bloc note mais laissez-le .bat, Maintenant pour lancer votre serveur ouvré le fichier .bat ! Partie 2 Installation de skript et ses addons Pour installer skript il faut déjà le télécharger ! Ne prenez pas script sur le site craftbukkit car la version n'est pas à jour ! Pour avoir un BON lien clique sur le bouton: Télécharger skript Pour l'installer il faut le glisser dans le dossier "plugins" de votre serveur. Pour que le plugin soit correctement installé fermer la console de votre serveur ou alors entrer la commande "reload" dans la console du serveur. Maintenant on va voir comment installer des addons ! Il faut déjà les télécharger ! Vous avez deux solutions, soit les téléchargés un par un sur SKUNITY ou alors un pack avec tous les addons ! (Pack par Psy Ziik) Encore une fois pour les installer c'est comme pour skript. SKUNITY Ou alors Pack d'addons by PsyZiik Partie 3 Fin Voilà, maintenant vous avez installé correctement skript et ses addons ! Vous être prêt à skripter ! Rendez-vous au deuxième tutoriel ! Voila , en tout cas j'espère que se tutoriel vous auras plus, je vais en faire (Je vais essayé aussi.) d'en faire 1 par semaine Bonne journée a tous ! :D
  15. 1 point
    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)
  16. 1 point
    Ce tutoriel est assez vieux, je vous réfère à un tutoriel un peu plus récent : [Hidden Content] 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
  17. 1 point
    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"
  18. 1 point
    Si t'es sur bukkit passe sur Spigot, skript et bukkit ne sont pas très cool ensemble
  19. 1 point
    on hunger meter change: set player's food bar to 10
  20. 1 point
    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][Hidden Content] Ensuite vous allez a la ligne 52 [spoiler=Ligne 52][Hidden Content] Et changez le message en celui que vous voulez. [spoiler=Ligne 52 modifié][Hidden Content] Faite un /reload ou redémarrez votre serveur [spoiler=Reload][Hidden Content] Ensuite écrivez une commande aléatoire. Par exemple /abc et faite entrez. [spoiler=Unknown command changé][Hidden Content] Et voilà ! Votre message de commande inconnue est changé ! Merci a vous d'avoir pris le temps de lire ce petit tuto ! *Bisous !*
  21. 1 point
    Salut ! Aujourd'hui je vous propose ma vidéo sur un Système de Vanish qui peut aussi géré les nombres de joueurs dans la TabList ou autres :') Pour plus d'informations, voici la vidéo: (PS: D'ailleurs, chaque Vendredi à 17h, un nouveau DevSkript sort alors, soit à l'heure)
  22. 1 point
    Bonjour, Alors, je fais une demande de skript pour un système de login via GUI. " Je sais qu'il y a déjà une demande mais il y a pas eu de réponse " - Pour faire simple j'aimerai que le skript détecte la première fois que le joueur ce connecte et du coup ouvre une interface qui ne lui laisserais le choix entre : entrer deux fois sont mot de passe dans deux casse différentes et du coup s'enregistrer avec le bouton " s’inscrire " avec un minimum de caractère qui est de "6" ou sont deuxième choix et de se déconnecter. - Et après du coup après sa première connexion plus qu'une casse ou il peut mettre sont mot de passe et un bouton se connecter et donc aussi un bouton avec mot de passe oublié et du coup de GUI change et remet en place le premier GUI en changeant le bouton " se déconnecter " en " annuler " qui fait retourner sur le jeu Minecraft. En image : Merci d'avoir pris le temps d'avoir lu cette demande ! Cordialement,
  23. 1 point
    Bonjour , voici le code : on command /exemple: world is "world" cancel event
  24. 1 point
    -- NameTagEdit est un plugin qui est utilisable aussi par Skript via un Add-On
  25. 1 point
    Il ne marche pas mais j'ai réussi a en faire un avec des membre du ts3 :)
×

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.