Aller au contenu

Classement


Contenu populaire

Affichage du contenu avec la meilleure réputation depuis le 09/27/20 dans toutes les zones

  1. 4 points

    Version 1.2

    5 downloads

    Skript-packet est un remplacement de l'addon ThatPacketAddon qui n'est plus mis à jour depuis longtemps. Les packets sont les informations échangé entre le serveur et le client. On utilise souvent la manipulation des packets pour modifié le contenue visuel de chaque joueur indivuduellement, exemple : faire croire à un joueur qu'il a en fasse de lui un bloc de TNT alors qu'en vérité il s'agit d'un magnifique bloc de diamant ! Cet addon n'est absolument pas conseillé aux débutants, il faut des grosses connaissances en Minecraft / packet / java / skript / skipt-reflect pour l'utiliser à son plein potentiel ! Si vous avez déjà utilisé TPA, j'ai fait mon possible pour simplifié la migration du code. Les deux principales différences avec TPA sont : - Il n'y a plus besoin de spécifié le type de field ! - J'ajoute un support pour interagir avec les objets java et skript afin de l'imiter l'utilisation de skript-reflect. Vous aurez-besoin d'installer ProtocolLib 4.6.0+ pour faire fonctionner cette addon. L'utilisation de l'addon skript-reflect 2.1+ est plus que recommandé ! Retrouvez mes exemples de code utilisant skript-packet sur mon github : https://github.com/Anarchick/skript-packet , Si vous avez d'autres exemples utiles à me soumettre, je les acceptes. Désolé mais je ne donne pas de support sur l'utilisation des packets aux débutants, c'est un sujet très difficile à maitrisé et les tutos concernant TPA, MundoSK, Skellet ou même Java sont tous applicable à skript-packet ! Bonne chance :3
  2. 4 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.
  3. 4 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.
  4. 4 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. 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 ;) )
  6. 3 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
  7. 3 points
    j'aimerais tellement qu'il y ais un bouton DisLike rien que pour cliquer dessus quand quelqu'un le mendie !
  8. 2 points
    Je t'ai distribué toutes les cartes pour que tu réussisses Même étant débutant, le but est de s'améliorer... Si tu n'essaies pas de toi-même, tu n'évolueras certainement pas ! J'ignore comment tu as appris à développer mais l'avantage avec Skript c'est que c'est un "langage" très haut niveau, c'est un "langage" interprété. De simples connaissances en anglais te suffiront à faire à peu près ce que tu souhaites... Bien que d'amples connaissances techniques et mathématiques sont requises pour faire des choses plus complexes. L'essentiel c'est de comprendre les concepts de base qui sont quasi communs à tous les langages de programmation, entre autre : comprendre ce qu'est une variable, assimiler les conditions, savoir créer une boucle et comprendre l'intérêt des fonctions. Pour comprendre et assimiler ces concepts, il faut t'entraîner. Ces 4 concepts-là, tu les retrouveras partout et en ayant compris ça, ça te débloquera pleins de choses. Voici quelques conseils / ressources qui pourront t'aider à l'avenir : Toujours faire plusieurs recherches Google : généralement, si tu te poses une question, elle a déjà été posée quelque part par une autre personne ayant rencontré le même problème. Si ta recherche n'aboutie pas, change de mots clés, tourne ta question différemment... Il ne faut surtout pas se contenter d'une seule source, confronte-les et teste tous les bouts de code que tu pourras voir. Attention : le copier / coller ne sert à rien, il faut que tu comprennes ce que tu es en train de faire, sinon ça n'a pas d'intérêt. Te servir des documentations officielles (celle de Skript-MC par exemple, celle de SkriptHub.net que je trouve plus complète, celle de SkUnity etc..) : l'avantage avec les documentations, c'est qu'il y a généralement des exemples pouvant t'aider à la résolution de ton problème. Lien vers la documentation officielle (toujours la plus complète) de Skript : [Contenu masqué] Dans le cas où tes recherches ne t'aident pas du tout, demander de l'aide sur les forums peut constituer une très bonne solution Si je pouvais te donner un dernier conseil, ça serait de ne jamais abandonner face à une quelconque difficulté. Ce que tu trouveras compliqué aujourd'hui, tu le trouveras plus ou moins facile demain. Mais pour s'en rendre compte, il faut pratiquer et tester massivement.
  9. 2 points
    Ah ! Si tu passes sur du full-skript ca devient directement beaucoup plus accessible ! La solution que je te donnes ci-dessous est celle que j'ai trouvé grâce au serveur Discord de Skript-MC, notamment une partie de code qui vient de @Ultracube command /loop-riches: permission: sk.loop-riches trigger: loop {money::*}: add loop-index to {_inverted::%loop-value%::*} set {_position} to 1 loop reversed sorted {money::*}: {_previous_value} is not loop-value set {_previous_value} to loop-value loop {_inverted::%loop-value%::*}: set {_sorted::%{_position}%} to loop-value-2 add 1 to {_position} loop {_sorted::*}: send "&b&l%loop-index% >>> &f%loop-value% (&b%{money::%loop-value%}%&f)" Voici le rendu ingame Bonne soirée
  10. 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 !
  11. 2 points

    Version 1.2

    16 downloads

    SkriptDocsGenerator - Générateur de documentation Skript SkriptDocsGenerator est un plugin spigot qui pourrai se montrer utile aux développeurs d'addon Skript. En effet, il permet de générer des fichiers JSON contenant les différentes syntaxes des addons présent sur le serveur d'exécution. Chaque syntaxe est accompagnée d'un nom, d'une description, des patterns, d'exemples ainsi que toutes les options personnalisables via les annotations Skript. Ce fichier JSON est ensuite prêt à l'emploi, pour mettre à jour la documentation de votre addon sur votre site de documentation Skript préféré ! Installation: Téléchargez et mettez la dernière version dans le dossier plugins/ de votre serveur. Démarrez votre serveur Faites la commande /skriptdocsgenerator. Les fichiers JSON sont générés et envoyés dans le dossier /plugins/SkriptDocsGenerator/. Maintenant, vous pouvez utiliser votre fichier sur votre site de documentation favori ! Support: Pour toutes demandes de support ou d'informations, vous pouvez me contacter sur le discord de Skript-MC, ou bien sur le discord de support prévu pour cet outils.
  12. 2 points

    Version 1.5

    40 downloads

    DiSky est un nouvel addon Skript, reprenant Vixio, et vous permettant ainsi de relier vos Skript à Discord. Gérez les roles, créer vos propres commande et créez le bot le plus Cependant, DiSky est toujours en version alpha et toutes les fonctionnalités de Vixio ne sont pas encore implémentees. Pour obtenir quelques codes d'exemples, regarde sur notre Discord, dans le channel "example" ou regarde la section ci-dessous pour quelques codes simples marchant avec la dernière version de DiSky Voici quelques liens qui vous seront, je pense, très utiles pour en savoir plus quant à DiSky ^^ GitHub (Code source): https://github.com/SkyCraft78/DiSky Téléchargement Alpha (les versions en beta-test): https://github.com/SkyCraft78/DiSky/releases/latest Documentation: soon (Les syntaxes sont globalement les mêmes que celles de Vixio) Wiki: https://github.com/SkyCraft78/DiSky/wiki Discord: https://discord.com/invite/whWuXwaVwM Pour finir, voici quelques exemples de codes utilisable avec la dernière version de DiSky uniquement. Ce sera avec plaisir de vous aidez pendant votre code, venez sur notre discord ou en MP (ItsTheSky#1234)! Simple code pour ajouter un role spécifique à un membre quand il rejoins le serveur: Charger puis modifier le statut et activité d'un bot: on load: # On charge le bot, avec le token et son nom login to "ROKEN" with name "NAME" # On change son activité mark bot "NAME" watching "The Seven Deadly Sins, favourite anime" # Puis on change son statut change online status of bot "NAME" to do not disturb Résultat: Créer une commande, puis renvoyer, dans un embed, le contenu de la commande: on discord command: # On vérifie le préfix et la commande "%event-prefix%" is "!" "%event-command%" is "say" # On crée un nouvel embed make new embed: set title of embed to "%discord name of event-member% veut me faire dire:" set color of embed to color from rgb 50, 30, 255 set description of embed to (join values of event-argument with " ") set footer of embed to "Demandé par %discord name of event-member%" # On renvoie l'embed crée dans le channel de la commande reply with last created embed Résultat:
  13. 2 points

    Version 2.2.1

    36 downloads

    MongoSK Voici enfin mon premier add-on pour Skript ! Celui-ci est donc dédié à la gestion de données avec un hôte MongoDB. Son avantage est qu'il s'agit d'une base de données documentaire construite sur une architecture évolutive qui est devenue populaire auprès des développeurs de tous types qui construisent des applications évolutives. Support de plusieurs clients Vous avez plusieurs hôtes, et vous souhaitez vous y connecter ? Pas de problème, MongoSK peut gérer plusieurs connexions ! Création, suppression de base de donnée, collections et documents Créez de nouvelles collections, insérez de nouveaux documents ... Attention : vous devez activer des options de MongoSK pour activer les effets de suppression. Gestion simple et intuitive des documents Récupérez, ajoutez des valeurs des documents MongoDB en quelques lignes seulement. Les documents supportent les listes de Skript et les types de MongoDB uniquement pour le moment. Quoi de neuf dans la version 2.0.0 Comme prévu et planifié depuis un certain temps, le voici enfin ! MongoSK v2 fait place. Au programme : ️ Les requêtes envers la base de données sont exécutées de manière asynchrone Le code a été réécrit en utilisant la librairie mongodb-driver-reactivestreams Transformation automatique et intelligente de toutes sortes de données Vous pouvez désormais stocker tous les types de Skript comme des objets, des joueurs, des blocs, etc. MongoSK fait le travail pour vous ! Débogage simple et compréhensible pour identifier rapidement les problèmes Les informations sont pertinentes et utiles tant pour les utilisateurs novices que pour les développeurs du plugin Ajout de requêtes avancées pour des requêtes spécifiques Vous pouvez désormais cibler des données plus précises dans vos requêtes grâce à de nombreuses options Des syntaxes plus logiques et plus intelligentes Les syntaxes ont été retravaillées pour être plus cohérentes et logiques Alors, comment passer de MongoSK 1 à MongoSK 2 ? Toutes les informations sont disponibles sur une discussion spécialement créée ici : https://github.com/Romitou/MongoSK/discussions/23. Si vous avez encore besoin d'aide, vous pouvez vous rendre sur le serveur Discord ou demander de l'aide dans les discussions GitHub. Tous les liens se trouvent sur la page principale GitHub. J'adore l'Open Source, vous pouvez retrouver les sources de MongoSK sur GitHub. Vous rencontrez un problème ou vous avez une question ? N'hésitez pas à ouvrir une issue. Les noms comme hôte, serveur, base de donnée, collections, documents ne vous sont pas familiers ? Vous ne comprenez pas comment se structure les données avec MongoDB ? Voici un de mes schémas représentant son fonctionnement :
  14. 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 script 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. Pour plus d'informations SiteWeb: link Discord: link
  15. 2 points

    Version ALPHA-2.0

    208 downloads

    Quand je sortirai la dernière version, je referai la présentation au propre - Features: Configuration complète Économie (compatible Vault grâce à skVault) Un chat RP à distance limitée, avec des hologrammes Un chat HRP Vehicules (seulement des voitures pour l'instant), qui peuvent être verrouillés et tout Un mode maintenance Et autres.. - Commandes: Aucune pour l'instant - Permission: rpe.maintenance.toggle • Activer/désactiver le mode maintenance rpe.maintenance.bypass • Se connecter même lorsque le mode maintenance est activé rpe.cmd.help • Utiliser la commande /rpe help rpe.report_see • Voir les signalements rpe.cars.destroy • Détruire toutes les voitures - Installation: Installer la dernière version de Skript Mettre RPE dans plugins/Skript/scripts Redémarrer le serveur Vérifier d'avoir toutes les dépendances installées ! - Dependances: Skellett Holographic Displays MundoSK skDragon SkQuery skRayFall skript-yaml SkVault Vault WolvSK C'est possible qu'elles ne soient pas toutes là, si c'est le cas alors n'hésitez pas à me le faire remarquer ! Discord: https://discord.gg/Hx393nu
  16. 2 points

    Version 1.2.0

    6 downloads

    Skonnection Voici un addon skript permettant de gérer des sockets java, créer des serveurs de connexion ainsi que d'utiliser des plugin messages. Cela permet d'améliorer la communication entre vos serveurs minecraft. Vous pourrez trouver la liste des expressions, events, effets et conditions ici : https://github.com/BakaAless/Skonnection#description Code source : https://github.com/BakaAless/Skonnection/ Contributeurs : https://github.com/BakaAless/Skonnection/graphs/contributors Si vous trouvez un problème : https://github.com/BakaAless/Skonnection/issues Me contacter : Aless#6161 ou mentionnez moi sur le discord de SkriptMC Aucun support ne sera fourni pour les versions antérieures à la 1.8
  17. 2 points

    Version 1.2

    106 downloads

    Interagissez avec WorldGuard grâce à de nouvelles syntax La commande /wgregions permet de vérifier que l'ensemble de l'API fonctionne correctement et indiquera un message d'erreur en cas d’échec Syntax: create [(WorldGuard|WG)] Cuboid region (from|between) %location% (and|to) %location% with id %string% create WorldGuard region between {_loc1} and {_loc2} with id "test" create [(WorldGuard|WG)] polygon[al] region (from|with) [locations] %locations% with id %string% create WorldGuard polygonal region from locations {_locs::*} with id "test" delete [(WorldGuard|WG)] region with id %string% in [world] %world% and remove children %boolean% delete WorldGuard region with id "test" in world "Lobby" and remove children true redefine [(WorldGuard|WG)] cuboid region with id %string% (from|between) %location% (and|to) %location% redefine WorldGuard cuboid region with id "test" between {_loc1} and {_loc2} [(WorldGuard|WG)] region %object% contain location %location% [(WorldGuard|WG)] region %object% (doesn't|does not|do not|don't) contain location %location% if WorldGuard region {_region} contain location {_loc}: #Code # OU BIEN if WorldGuard region {_region} do not contain location {_loc}: #Code [(Worldedit|WE)] volume of selection of %player% in [world] %world% set {_volume} to Worldedit volume of selection of player in world of player [all] [(Worldedit|WE)] blocks in selection of %player% in [world] %world% set {_blocks::*} to all Worldedit blocks in selection of player in world of player [(WorldGuard|WG)] region with (id|name) %string% in [world] %world% set {_region} to WorldGuard region with id "test" in world of player [all] [(WorldGuard|WG)] regions in [world] %world% set {_regions::*} to all wg regions in world world of player [all] [(WorldGuard|WG)] regions at [location] %location% set {_regions::*} to all wg regions at location of player # OU BIEN set {_region} to first element of all wg regions at player [(WorldGuard|WG)] region (id|name) of %region% set {_id} to region name of {_region} [(WorldGuard|WG)] world of region %object% set {_world} to WorldGuard world of region {_region} [all] [(WorldGuard|WG)] points location (from|of) region %object% set {_locs::*} to all WorldGuard points location of region {_region} [(WorldGuard|WG)] (0¦min[imum]|1¦max[imum]) location (from|of) region %object% set {_min} to WorldGuard minimum location of region {_region} [all] [(WorldGuard|WG)] blocks (from|in|of) region %object% set {_blocks::*} to all WorldGuard blocks of region {_region} [(WorldGuard|WG)] volume [of blocks] (from|in|of) region %object% set {_volume} to WorldGuard volume of blocks of region {_region} [(WorldGuard|WG)] type of region %object% set {_type} to WorldGuard type of region {_region} [all] [(WorldGuard|WG)] (0¦members|1¦owners) (in|of) %region% #get set {_memebers::*} to all wg members in {_region} #add add player and "Anarchick" to owners of {_region} #remove remove {_players::*} from members of {_region} [(WorldGuard|WG)] name of flag object %object% set {_name} to WorldGuard name of flag {_StateFlag} [(WorldGuard|WG)] flag object %string% set {_StateFlag} to flag object "block break" # OU BIEN set {_StateFlag} to flag object "block-break" # OU ENCORE set {_StateFlag} to flag object "BLOCK_BREAK" all [(WorldGuard|WG)] [registred] flags set {_Flags::*} to all WorldGuard registred flags all [(WorldGuard|WG)] flags (from|of) region %region% set {_StateFlags::*} to all wg flags in {_region} [(WorldGuard|WG)] flag %StateFlag/String% (from|of) region %region% #get set {_flagValue} to wg flag {_StateFlag} in {_region} #set set flag "USE" in {_region} to "DENY" set flag {_StateFlag} in {_region} to false #delete delete flag "pvp" in {_region} Note diverses: * Skript permet depuis la version 2.1 d'utiliser quelques expressions de régions worldguard mais il ne s'agit pas du même {_region} que moi donc attention ! N'utilisez les régions skript QUE pour connaitre l'identifiant d'une région ou pour ajouter des membres à celle-ci ** {_StateFlag} est un objet java de worldguard (comme {_region} ou {_flagValue}) , il ne contient pas de résultat ALLOW ou DENY *** Mon code qui gère les membres/propriétaires d'une région utilise le système UUID , il est donc possible d'ajouter des joueurs qui sont hors-ligne **** Actuellement la version 1.0 et 1.1 ne gèrent que les flags de type StateFlag , c'est à dire ayant pour valeur "ALLOW" ou "DENY" Plugins nécessaires: Skript (testé avec la version 2.4Beta8 , 2.4.1 et 2.5Alpha3) Skript-mirror 2.0.0-SNAPHOT WorldEdit (Obligatoire pour faire fonctionner WorldGuard) WorldGuard (testé avec la version 7.0.1 et 7.0.2) Note : Si ce script fonctionne avec des versions antérieurs, ou ne fonctionne pas dans des versions antérieurs, merci de me le signaler Droits d'utilisations: Ce script m'appartient exclusivement, vous êtes autorisé à le modifier pour une utilisation personnel, vous pouvez me suggérer des modifications ou des bugs, vous n'êtes pas autorisé à le publier avec ou sans votre nom sans mon accord. Ne me demander pas des mises à jour, je la ferais en temps voulu. Merci
  18. 2 points
    Bonsoir à toi @Filou_YT, Je vois que tu t'essais à la manipulation de variable, c'est bien continu! C'est en manipulant et en demandant de l'aide qu'on apprend. Alors voilà, il y a plusieurs problèmes dans ton code. Les voicis variables: # J'apprécis le fait que tu ai défini tes variables (très peu de personnes le font donc, GG! comme disent les "Gamerz") weed = false cooldown = false on right click on a sugar cane: # parfait pour la détection set {weed} to true # Tu ne cherches pas à savoir si le joueur est en train de récolter que tu lui dit qu'il récolte {weed} is true: # Bah oui, la variable sera tout le temps en true si tu la set à chaque fois au préalable. send "Recolte de la weed en cours.." wait 1 seconds {weed} is true: # tu peux condenser ton script ici avec l'expression "wait <number> <ticks/seconds/minutes/hours/days/etc...>" wait 1 seconds {weed} is true: clear {weed} # bien pour le reset cependant ne supprime pas tes variables définis pour dire qu'elles sont en false (si elles sont définis) drop 1 cactus green named "&a&lWEED" # tu ne dis pas où le cactus doit apparaître on walk on grass: # pour verifier si le joueur bouge, utilise les coordonnées, je pense que c'est un meilleure façon de procédé. {weed} is true: send "Récolte annulée." to player clear {weed} # Code by Filou_YT Bon comme tu le vois, il te faut encore t'habituer au langage mais ça viendra ne t'en fait pas. Alors, à présent je te passe ma version de ton code et je vais t'expliquer comment j'ai fais. on rightclick on sugar cane: if {weed::%player%} is not set: # Nous verifions que le joueur n'est pas en train de récolter à cette ligne cancel event set {weed::%player%} to true # Nous disons au skript que le joueur est en train de récolter à cette ligne send "&7» &6Récolte en cours..." to player wait 0.5 second # Si nous faisons attendre Skript avant qu'il ne puisse sauvgarder, c'est à cause le l'inertie du mouvement pour que le joueur ai le temps de s'arretter set {_x} to round(x-coordinate of player) # Nous mettons la variable temporaire {_x} au nombre X des coordonnés du joueur dans la map (arrondit à l'unité) set {_y} to round(y-coordinate of player) # Ainsi de suite pour la variable {_y} set {_z} to round(z-coordinate of player) # Et {_z} wait 1.5 second # Nous attendons le temps que tu voudras ici set {_x2} to round(x-coordinate of player) # A la fin du temps imparti, nous mettons la variable temporaire {_x2} au nombre X des coordonnés du joueur dans la map (toujours arrondit) set {_y2} to round(y-coordinate of player) # De même pour la variable {_y2} set {_z2} to round(z-coordinate of player) # Et {_z2} if {_x} = {_x2}: # Nous verifions maintenant si le joueur changé de coordonnées et donc bougé avec les 6 variables. if {_y} = {_y2}: if {_z} = {_z2}: send "&7» &aVous récoltez de la weed." to player drop 1 wheat named "&aWEED" at event-block's location without velocity # Ici nous faisons apparaître la "weed" sur le bloc cliqué par le joueur s'il n'a pas bougé else: send "&7» &cRécolte annulée, vous avez bougé." to player # Si le joueur a bougé, il aura les messages d'erreurs suivants, un pour chaque axe x, y, et z else: send "&7» &cRécolte annulée, vous avez bougé." to player else: send "&7» &cRécolte annulée, vous avez bougé." to player clear {weed::%player%} # Enfin, nous n'oublions pas de clear cette variable sinon le joueur ne pourra plus récolter. on unload: # Enfin, ici c'est seulement si le serveur crash, alors on clear tout les joueurs (c'est pour cela que j'utilise les variables liste) clear {weed::*} on load: # De même pour ici clear {weed::*} # Code testé et fonctionnel par Nyu! pour Filou_YT Voilà ce code devrait fonctionner, si tu as des questions à propos de Skript, du code présenté, ou bien quelque soit ton problème... J'y répondrai vonlontier! Je suis disponible sur le discord de Skript-MC en tant que Nyu!#0497 Vraiment n'hésite surtout pas. Bien à toi et bonne soirée! Nyu!
  19. 2 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
  20. 2 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
  21. 2 points
    Bonjour, je poste mon skript pour faire plaisir à certain. C'est un skript de chronomètre. ce skript peut servir à des mini-jeux, et plein d'autres choses comme ça. Commandes: /chrono : Démarre ou arrête le chrono. /chronomessage true/false : Active ou désactive les messages du chronomètre. Le chronomètre fonctionne avec le LEVEL ou LES MESSAGES. Vérifiez bien que vous êtes en encodage "UTF-8". Good bye :)
  22. 1 point
    Bonjour Je suis pas sur d'avoir bien compris mais si tu veux mettre une tête dans le gui tu as sa format slot 2 of player with player head named "&aAcheté la porte" to be unstealable Si tu veux mettre la tête du joueur qui ouvre le gui tu as sa skull of ("%player%" parsed as an offline player) named "&e&lShop" Voila Cordialement
  23. 1 point
    Salut, je ne sais pas si ton problème est toujours d'actualité puisque le topic commence a dater. Dans le doute, je suis là. command /test1: trigger: open virtual chest inventory with size 3 named "&9&nTest" to player if {test1} is false: format gui slot 0 of player with red stained clay with name "test1" autres options ..... else: format gui slot 0 of player with green stained clay with name "test1" autres options ..... Lorsqu'on exécute la commande et que le Gui s'ouvre, on vérifie si la variable est vraie ou fausse et en fonction on définie la couleur de ta clay et les autres options que tu souhaites ajouter. Ainsi si tu ouvres 50x le Gui sans toucher à la variable ton choix restera le même. on inventory click: if name of item is "test1": if {test1} is false: set {test1} to true execute player command "/test1" else: set {test1} to false execute player command "/test1" Quand tu cliques sur la laine, l'état de ta variable change et le Gui se réouvre puisque tu forces le joueur à exécuter une nouvelle fois la commande. Pas besoin de boucle ou d'écrire 50 lignes si tu changes 50x d'avis.
  24. 1 point
    Hello, pour cela je te conseille d'utiliser une base donnée avec l'addon skript-db
  25. 1 point
  26. 1 point
    Salut, alors il y a plusieurs problèmes, le premier c'est que quand tu imposes une condition il faut mettre 2 points à la fin car tu vas exécuter quelque chose après avoir vérifié la condition. Ensuite dans la condition elle-même il y a une erreur de syntaxe, "if player is a world" = "si le joueur est un monde" et je pense que tu veux vérifier si le joueur est DANS un monde, donc "if player is IN world "lobby"... if player is a world "lobby" -> if player is in world "lobby": En ce qui concerne l'évènement on break et le cancel event, rien à signaler Espérant t'avoir aidé
  27. 1 point
    Pas mal, cependant, pourquoi créer un addon qui fait exactement la même chose que Vixio ? Autant rester sous Vixio ... J'espère tout de même qu'il y aura des fonctionnalités que Vixio ne propose pas. (Si tu ajoutes le fait de pouvoir faire comme le bot "InviteManager", qui permet de savoir qui à invité qui et avec quel invite afin de les comptabilisé. Je quitte Vixio pour DiSky x)) Bref, bonne chance ! Hâte de voir les futurs mises à jours
  28. 1 point
    Salut, depuis j'ai pu me débrouiller avec la base de ton skript merci.
  29. 1 point

    Version 1.2

    79 downloads

    Dé à Coudre Présentation: Bonjour, voici un skript de Dé à coudre réalisé avec Skript-dev36 en 1.8.8 Qu'est qu'un dé à coudre ? C'est un mode de jeux qui consiste au fur et à mesure de la game à remplir une piscine avec un bloc en sautant en hauteur. Vous pouvez gagner des vies bonus grâce à un Dé à coudre en faisant un saut en plein centre entre 4 blocs. Le dernier survivant gagne la partie. Dépendances: - Tuske 1.8.2 - Skript-Mirror 0.19.1 - SkBee 1.10.2 - Skellet 1.9.6b - SkRayFall 1.9.5, - MundoSK 1.8.5 - SkQuery-Lime 3.6.0 - HolographicDisplay - Citizens Caractéristiques: - Multi-Arène - 100% automatique - Setup très facile - MainLobby - Joueur invisible pour les games - Spectate des games - Anti-AFK Permissions: - dac.admin = Pouvoir gérer les arène dé à coudre (supprimer, créer etc...) - dac.forcestart = Pourvoir forcer à une partie de se démarrer Commandes: Pour les admins: /dacadm create <nom> - Créer un arène /dacadm delete <nom> - Supprimer une arène /dacadm list - Liste des arènes /dacadm setwaitlobby <nom> - Mettre le lobby d'attente /dacadm setspawnspec <nom> - Mettre le spawn des spectateurs /dacadm setspawnplayers <nom> - Mettre le spawn des joueurs /dacadm setmaxplayers <nom> - Mettre le nombre maximum de joueurs /dacadm setminplayers <nom> - Mettre le nombre minimum de joueurs pour qu'une partie commence /dacadm setmainlobby - Définir le mainlobby /dacadm setleaderboard <nom> - Mettre un classement d'une statistique /dacadm delleaderboard <nom> - Supprimer un classement /dacadm forceupdateleaderboard - Forcer les classement à se mettre à jour /dacadm setnpc <nom> - Ajouter le npc /dacadm detnpc <nom> - Supprimer le npc /dacadm wand <nom> - Sélectionné 2 points du bassin /dacadm setbassin <nom> - Mettre le bassin /dacadm save <nom> - Activer votre arène /dacadm unsave <nom> - Désactiver votre arène /dacadm debug - Clear les bugs (A utiliser en cas de crash de serveur) Pour les Joueurs: /dac play - Rejoindre une arène aléatoirement /dac join <nom> - Rejoindre une arène prédifini /dac spec <nom> - Regarder une partie en cour /dac list - Liste des arènes disponible /dac quit - Quitter une arène Screenshots: NPC Lobby d'attente Gameplay La victoire Classement Scoreboard Mainlobby (Modifiable Prochainement: Rien pour l'instant Ce skript à été réalisé par Moi Pour respecter mon travail, merci de ne pas revendre le Skript à votre NOM ! Si vous avez un problème, contacter moi par discord LOUDO#4466
  30. 1 point
    Super addon, avec des update régulière et toujours du nouveau contenu !
  31. 1 point
    Salut, Comme la 1.7.10 est dépréciée et très vieille, il te faudra également une version dépréciée et très vieille de Skript, la 2.1.2 (que tu peux trouver sur Bukkit) Si tu restes en 1.7.10 pour les mods, tu peux passer en 1.12 voire 1.16.4 avec Mohist par exemple. Ca te permettra de bénéficier de toutes les dernières nouveautés de Minecraft et de Skript 2.5, incluant les bug fixes et les performances, tout en gardant la majorité voire la totalité de tes mods Si tu restes en 1.7.10 pour le PvP...... tu peux passer dans une version récente, comme la 1.16.4, et retrouver le PvP d'avant en 1.7.10, et ainsi bénéficier encore une fois des nouveautés et améliorations de Minecraft et Skript 2.5. Tu peux aussi essayer de passer en 1.8, et de bénéficier d'une version de Skript un peu plus récente, ou d'une version non-officielle adaptée de la dernière mise à jour, mais pour la 1.8
  32. 1 point
    Le sujet a été résolu. Il a donc été verrouillé. Cordialement, l'équipe.
  33. 1 point
    bonjour, peut être que ceci peut marcher : options: founder: Notch #pseudo du fondateur on join: set {connection.%player%} to true set {connection.%player%.location} to player's location apply blindness 2 to the player apply slowness 2 to the player if {players::*} doesn't contain the player: send message "Enregistre-toi avec /register <mot de passe>." to the player else: send message "Connecte-toi avec /login <mot de passe>." to the player every second: loop all players: if {connection.%loop-player%} is true: teleport loop-player to {connection.%loop-player%.location} on chat: if {connection.%player%} is true: cancel the event on command: if {connection.%player%} is true: if {players::*} doesn't contain the player: if the command isn't "register": cancel the event else: if the command isn't "login": cancel the event on quit: if {connection.%player%} is true: remove blindness from the player remove slowness from the player clear {connection.%player%} clear {connection.%player%.location} command /register [<text>]: executable by: players trigger: if {connection.%player%} isn't set: send message "Tu t'es déjà enregistré(e)." to the player else: if the argument 1 isn't set: send message "Utilise /register <mot de passe>." to the player else: set {password.%player%} to the argument 1 add the player to {players::*} remove blindness from the player remove slowness from the player clear {connection.%player%} clear {connection.%player%.location} send message "Tu as été enregistré(e) avec succès." to the player set {_founder} to "{@founder}" parsed as player if {_founder} isn't the player: send message "Le joueur %player% vient de s'enregistrer avec le mot de passe %argument 1%." to {_founder} command /login [<text>]: executable by: players trigger: if {connection.%player%} isn't set: send message "Tu t'es déjà connecté(e)." to the player else: if the argument 1 isn't set: send message "Utilise /login <mot de passe>." to the player else: if {password.%player%} isn't the argument 1: send message "Ton mot de passe est incorrect." to the player else: remove blindness from the player remove slowness from the player clear {connection.%player%} clear {connection.%player%.location} send message "Tu t'es connecté(e) avec succès." to the player Edit: je n'ai pas fait la partie pour stocker les mots de passe car je n'en ai pas les connaissances nécessaires mais peut être que le code proposé pourrait être un début ?
  34. 1 point
    Salut. Vu le code tu peux le mettre directement sur le forum Sinon je pense que la commande que doit faire le joueur c'est ça : 'ob warp [JOUEUR]' ducoup tu peux juste utiliser %loop-player% ...
  35. 1 point
    Pour utiliser wf, il faut wildskript, mais je pense que c'est plus la bonne solution. utilise plutôt skript-yml ?
  36. 1 point
    options: ErrorClaimed: &7&l(&6Guild&7&l)> &eThis is already claimed by %{GuildClaim::%{_chunk}%}% ErrorBalance: &7&l(&6Guild&7&l)> &eYou dont have enough money you need 500$ Alreadyexist: &7&l(&6Guild&7&l)> &eA guild with this name already exist NotInGuild: &7&l(&6Guild&7&l)> &eYou''re not in a guild /guild create <name> CantBreakThere: &7&l(&6Guild&7&l)> &eYou cannot break in a claimed land CantPlaceThere: &7&l(&6Guild&7&l)> &eYou cannot place in a claimed land Cantdothis: &7&l(&6Guild&7&l)> &eYou cannot do this action in a claimed land Claimed: &7&l(&6Guild&7&l)> &eYou''ve claimed this land for 500$ command /guild [<text>] [<text>] [<text>]: trigger: if arg-1 is "claim": if {Guild::%player%} is set: set {_guild} to {Guild::%player%} set {_chunk} to chunk at location of player if {GuildClaim::%{_chunk}%} is set: send "{@ErrorClaimed}" else: if player's balance is bigger than 499: send "{@Claimed}" remove 500 from player's balance set {GuildClaim::%{_chunk}%} to {_guild} else: send "{@ErrorBalance}" else: send "{@NotInGuild}" else if arg-1 is "create": if arg-2 is set: set {_guild} to arg-2 if {GuildNamelist::*} contains "%{_guild}%": send "{@Alreadyexist}" else: add {_guild} to {GuildNamelist::*} set {Guild::%player%} to {_guild} else if arg-1 is "Delete": if {Guild::%player%} is set: loop {GuildClaim::*}: if loop-value is "%{Guild::%player%}%": delete {GuildClaim::%loop-index%} delete {Guild::%player%} remove {Guild::%player%} from {GuildNamelist::*} on break: set {_chunk} to chunk at location of event-block if {GuildClaim::%{_chunk}%} is set: if {GuildClaim::%{_chunk}%} is {Guild::%player%}: stop else: cancel event send "{@CantBreakThere}" on place: set {_chunk} to chunk at location of event-block if {GuildClaim::%{_chunk}%} is set: if {GuildClaim::%{_chunk}%} is {Guild::%player%}: stop else: cancel event send "{@CantBreakThere}" on interact: set {_chunk} to chunk at location of player if {GuildClaim::%{_chunk}%} is set: if {GuildClaim::%{_chunk}%} is {Guild::%player%}: stop else: cancel event send "{@Cantdothis}" on rightclick on a chest: set {_chunk} to chunk at location of event-block if {GuildClaim::%{_chunk}%} is set: if {GuildClaim::%{_chunk}%} is {Guild::%player%}: stop else: cancel event send "{@Cantdothis}" on rightclick on a hopper: set {_chunk} to chunk at location of event-block if {GuildClaim::%{_chunk}%} is set: if {GuildClaim::%{_chunk}%} is {Guild::%player%}: stop else: cancel event send "{@Cantdothis}" on rightclick: set {_chunk} to chunk at location of player if {GuildClaim::%{_chunk}%} is set: if {GuildClaim::%{_chunk}%} is {Guild::%player%}: stop else: cancel event send "{@Cantdothis}" on rightclick on block: set {_chunk} to chunk at location of event-block if {GuildClaim::%{_chunk}%} is set: if {GuildClaim::%{_chunk}%} is {Guild::%player%}: stop else: cancel event send "{@Cantdothis}" je metais tromper a deux trois endroit tk haha
  37. 1 point
    Merci à: KyloRen3600 LeCraftDeOuf DrComaster Pour votre aide !
  38. 1 point
    Dans ton dossier "server.properties", s'il n'y est pas, met "broadcast-console-to-ops=false" voilà ! :)
  39. 1 point
    Salut à tous, Je viens vous faire une demande de skript pour me faire un scoreboard :) . Le scoreboard ; UniversCube Grade: <prefix> --> selon le nom de group il y'a marqué un truc... Factions: <Factions> --> (si il n'y a pas de Faction il y'a marqué Aucune) Money: <money> Commandes et permissions: /sc on --> active le scoreboard Perm: sc.sc /sc off --> desactive le scoreboard Perm: sc.sc J'utilise le Plugin Faction, PermissionEx, Iconomy :) Cdt MGamer91
  40. 1 point
  41. 1 point
    Je ne peut pas te dire j'ai juste chercher vite fait sur internet a ta place, je n'ai pas mon serv sous la main je ne peut donc pas test. Mais il me semble que ca s'utilise comme ceci: set {_test} to text from "[Contenu masqué]..." En gros la meme chose que ce sue tu avais marqué sans le url Enfin meme avec le url ca aurait du marcher... PS : pour l'inserer dans un texte comme ceci: %text from ""[Contenu masqué]...""% Envois le lien que tu veut prendre je fairais des tests ce soir...
  42. 1 point
    Tu ne devrais pas te déranger avec ça sans être méchant, mais cela est trouvable dans la documentation :)
  43. 1 point
    Aussi simple tu meurt :p command /poubelle: trigger: open chest with 6 rows named "&6&k ::&9Poubelle&6&k ::" to player
  44. 1 point
    Bonjour, comme le dit le titre, je cherche un moyen pour que lorsque un block à une coordonnée précise (donc le bloc est unique) est cassé, celui ci drop quelque chose de bien précis et que ça ne s'applique pas à tous les blocks du même type. Par exemple, si je prend la stone : Si elle est a la coordonnée précise : elle drop autre chose mais tous les autres blocks de stone gardent le drop normal. Voilà quelques tests que j'ai effectué pour vous donner une idée mais ça à pas l'air de marcher.. x) on break of cobweb: if location of targeted block is 1415, 6, -431 on break of cobweb: event-block's x-coordinate is equal to 1414 event-block's y-coordinate is equal to 9 event-block's z-coordinate is equal to -429 drop redstone on break of cobweb: set {_loc} to location at 1414, 6, -431 set {_loc2} to targeted block's location if {_loc} is equal to 1414, 6, -431 drop redstone Merci d'avance, et j'espère avoir été clair ^^ Cordialement, DylanVII.
  45. 1 point
    NoxTails submitted a new resource: [plain]Backpack[/plain] - [plain]Coffres personnels pour chaque joueurs[/plain] Read more about this resource...
  46. 1 point
    Non justement car il était voulu dans un premier temps uniquement la distance sur le plan X-Z (sans prendre en compte l'altitude) ^^
  47. 1 point
    Bonsoir, j'aimerais empecher qu'un mob bouge. Merci d'avance
  48. 1 point
    Bonjour ! #--------------------------------# Je vous présente la version PDF de la doc de skript ! Pour l'instant, il n'y a que la liste des Events de Skript [spoiler=ScreenShot] #--------------------------------# Dans le futur je finirais complétement la doc de Skript, puis je ferais peut être d'autre Plugins. Voilà, j'espère que cette Doc en .pdf t'aura plus ! Cordialement xHydro_
  49. 1 point
    Pourrais tu faire un tuto sur les variables mais en un peut plus avancé ? Cordialement Hugoarth
×
×
  • 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.