Aller au contenu

Classement


Contenu populaire

Affichage du contenu avec la meilleure réputation depuis le 02/19/18 dans Messages

  1. 18 points
    Bonjour, bonsoir, aujourd’hui, le staff de Skript-MC se décide à ré-écrire de manière propre et structurée les règles du forum. Règlement du forum Skript-MC Ces règles sont à respecter et à appliquer à partir du moment où vous vous inscrivez sur le forum. Les posts et topics Restez calme et respectueux envers l’équipe du staff et les utilisateurs. Le partage de contenu à caractère illégal, menaçant, discriminatoire (xénophobe, racisme, etc.), pornographique, vulgaire ou harcelant est fortement interdit. Ecrivez dans un français correct, vous avez le temps avant de poster un message. L’abus de langage SMS peut être réprimé. Les pratiques comme le flood, le spam, ou l’envoi de messages sans utilité sont interdites. Les messages trop courts (smileys par exemple) seront effacés. Veuillez respecter les règles de la section dans laquelle vous postez. Évitez le hors-sujet au possible. Les ups (action de faire remonter un topic dans une catégorie en postant un message dans celui-ci) sont autorisés à intervalle de 24 heures. Les titres doivent coller au plus possible au topic. Les titres “aguicheurs” ou mensongers ne sont pas tolérés et seront supprimés. Il est fortement interdit de poster un message qui a pour but de nuire au forum ou à une personne, un utilisateur. La promotion de logiciels de triche (cheats) est interdite. Le forum est un forum francophone. Les posts doivent donc être en français et non pas dans une langue étrangère. Les sections “Aide” et “Demandes de skript” Les topics avec des titres comme “aidez moi!!!”, “probleme svp aide” sont prohibés et seront fermés voire supprimés. Veuillez effectuer des recherches avant de poster, sur le forum ou sur Google. Votre souci a très sûrement déjà été résolu autre part. Détaillez au plus possible vos demandes d’aides et ne vous contentez pas seulement de 5 lignes. Précisez la version de votre plugin Skript et la version de votre serveur. Ne créez pas des tonnes de posts pour le même souci. Si personne ne répond, faites preuve de patience et faites un “up” toutes les 24 heures, sans en abuser. N’attendez pas que l’on vous donne un code tout prêt uniquement car vous n’avez pas compris. Demandez des explications si nécessaire. Les personnes s'étant inscrites dans les dernières 24h et qui ne respectent pas les règlements de catégorie se verront bannies définitivement. Les demande d'aide et de skript doivent figurer de la demande jusqu'à la finalisation de la demande sur le forum. Les réponses du type "viens mp discord pour t'aider" ne sont plus tolérées car les demandes d'aide sur le forum ne sont jamais finalisées ni répondues. La section “Ressources” Faites une présentation soignée, et non pas bâclée. Évitez les couleurs trop vives comme le jaune. Il est très important d’inscrire dans votre présentation : les dépendances du skript (skQuery, WildSkript, etc.), les versions de Minecraft compatibles, les versions de Skript compatibles, des screenshots / captures d’écran de votre création, la liste des commandes détaillées. Ne spammez pas les membres du staff pour que votre ressource soit acceptée rapidement. Les ressources sont vérifiées assez rapidement et dans les plus brefs délais. Ne partagez pas une ressource qui ne vous appartient pas sans l'avis du créateur original. Une lourde sanction sera appliquée à ceux qui copient / collent des skripts qui ne sont pas d’eux. La documentation Nous avons développé une documentation pour que nous puissions vous partager un maximum de connaissance via le site de Skript-MC. Nous exigeons donc qu'un maximum de liens où les syntaxes sont disponibles sur le site de Skript-MC soient utilisés dans vos topics. Pour les Membres Actifs, nous vous demandons de nous aider à compléter la documentation. Il ne sera pas toléré de votre part, le partage d'une autre documentation, si les syntaxes qui sont demandées par un membre, existe déjà sur la documentation de Skript-MC (A savoir qu'on a fait ça par votre demande (la refonte de la doc) alors complétez là avec nous). Les publicités Les personnes s’inscrivant uniquement pour faire de la publicité, même dans une catégorie où cela est toléré seront bannies. Les liens rémunérés (adf.ly, etc.) ne sont pas tolérés sur le forum et seront supprimés. Votre profil Les signatures ne doivent pas être trop grandes ou trop présentes. Veillez à avoir une image de profil qui n’est pas trop “choquante”. Les informations que vous entrez lors de votre inscription restent et resteront confidentielles et protégées. Faites la demande auprès d’un membre du staff si vous voulez les faires retirer de votre profil. Les doubles comptes sont interdits. Si un membre banni se réinscrit sous un autre pseudo, il sera supprimé sans préavis, et le compte précédent sera banni définitivement (si la sanction était temporaire). De même, si vous êtes en situation de double compte, tous les comptes possédés hormis le plus ancien seront supprimés. Autre Ce forum est modéré à priori, les ressources ou certains messages que vous postez dans le forum ne seront pas mis en ligne directement mais lu préalablement par les modérateurs de Skript-Mc. Ceux-ci sont seuls habilités à décider de l’opportunité de publier votre ressource ou votre message. La publication d’un message ou d'une ressource posté ne vous exonère en rien de votre responsabilité concernant son contenu. Les modérateurs du forum se réservent le droit de supprimer les messages à tout moment. Ce forum est modéré à posteriori, les messages que vous postez sont directement publiés sans aucun contrôle préalable. Il est de votre responsabilité de veiller à ce que vos contributions ne portent pas préjudice à autrui et soient conforment à la réglementation du forum en vigueur. Les modérateurs se réservent le droit de retirer toute contribution qu’ils estiment déplacée, inappropriée, contraire aux règlements de catégories, à ce règlement ou susceptible de porter préjudice directement ou non à des tiers ou à un groupe de personnes. Les messages qui ne sont pas en relation avec les thèmes de discussion ou avec l’objet du forum peuvent être supprimés sans préavis par les modérateurs. Les modérateurs du forum se réservent le droit d’exclure du forum, de façon temporaire ou définitive, toute personne dont les contributions sont en contradiction avec les règles mentionnées. N’hésitez pas à contacter le staff en cas de problème avec le forum ou avec un utilisateur en question. Un Discord officiel est disponible à cette adresse. Respecter les règles de celui-ci comme le respect de ce dernier. N’hésitez pas à signaler un message ou une ressource que vous pensez “hors-règles”. Nous la réprimanderons voire la supprimerons dans les plus brefs délais. La liste des sanctions est disponible à cette adresse. En tant que modérateur de ce forum, nous nous réservons le droit de supprimer tout message qui nous semble inapproprié, sans justification. De même, le fait de participer à ce forum implique l'acceptation de ces règles, ainsi que des conditions générales d'utilisations de Skript-Mc. Si vous avez une question sur le fonctionnement du forum, une proposition d'amélioration ou autre chose, n'hésitez pas à laisser un message à l'équipe de Skript-Mc. Nous nous ferons un plaisir de les lire. Cordialement, l'équipe de modération et d'administration de Skript-Mc.
  2. 13 points
    Bienvenue dans mes premiers tutoriaux sur Apprendre le Skript ! Dans ce premier épisode,nous allons déjà apprendre à installer Skript,et un peu commencer le code. Tout d'abord,il vous faut un logiciel de traitement de texte.C'est assez con mais il vous en faut un bon.Même le bloc-note suffit,ou vous pouvez opter pour SublimeText,Notepad... il faut juste que vous soyez à l'aise.Pour Notepad++,cliquez ici pour voir un tutoriel qui vous permettra de tous voir en couleur etc pour vous faciliter la vie. Ensuite,il vous faut un serveur,spigot de préférence mais bukkit marche aussi,peu importe la version.Ensuite,vous devez télécharger Skript,je vous conseille la 2.2 fixe qui est vraiment pas mal. ICI Une fois téléchargé,mettez Skript dans votre fichier plugins sur votre serveur,tout marche à présent. Optionnel: Vous aurez forcément besoin d'addons,donc jvous conseille de les téléchargez maintenant: pack Une fois fait,prenez les .jar de votre version,et pareil,dans le dossier plugins ! I) Commençons par le commencement ! > Bon,c'est bien long de faire tout ça,mais on a envie de coder nous ! Oui oui,attendez,déjà,allez dans le fichier "Skript" qu'à générer le .jar.Allez dans "scripts" Vous verrez un tas de merde Skript avec un petit tiret avant chaque nom >Cool mais à quoi ça sert ? les tirets servent à désactiver le skript :) > On a qu'à le supprimer lol Ben non,si on le développe et qu'il a des erreurs et qu'on stoppe le développement un moment,ça évide qu'à chaque /reload y'as ses erreurs :) Donc,pour commencer,créer un fichier .txt que vous renommez "votrenom.sk" (Le .sk est très important pour que skript reconnaisse le fichier !) Ouvrez le avec l'éditeur de texte de votre choix,pour commencer un code,ce sera toujours pareil ! Skript se compose de plusieurs choses: > Evenements > Variables > Commandes custom > Effect > Conditions > Fonctions > Breeeeeeeeeeef Pour commencer un code,il y a deux grandes "manières" de commencer un code. Détecter un évènement (Qu'on va faire dans ce tuto) Créer une commande custom ( Pas maintenant <: ) II) Les évènements Pour commencer,on va apprendre à éxecuter un effet.Qu'est-ce qu'un effet ? C'est quelque chose qui se passe après une certaine action ou commande.Par exemple,l'effet de kill quelqu'un,vous comprenez ? Au cas ou,je fais un exemple ;x on damage: #Alors la on dit "Quand un joueur reçoit des dégats" kill the victim #On tue la personne qui s’est pris les dégats (Pour un système de mort subite par exemple) Donc,pour commencer,on met l'évènement au bord (Clique >ici< pour la liste des évènements sans addons) on break: A noter qu'il y a toujours un ":" à la fin de chaque évènement ! Il signifie que vous devez retourner à la ligne et faire une tabulation après (Pour tabulation,faire "TAB",ou 4 espaces,mais dans un code,faite soit l'un soit l'autre !).Vous pouvez préciser la plupart des évènements ! on break of stone: Ici,on précise que les effects ne se font que si le block cassé est de la stone ! Ensuite,après la tabulation,on fait un effect.Les effects n'ont jamais (Sauf cas rares comme loop all players ou autres) mais alors jamais de ":",donc les effets s'alignent comme ça: on break: # Quand un block se casse cancel event # Permet d'arrêter l'évènement,et de réinisialiser.Par exemple,la le block va se remettre,si un outil a été utilisé,sa durabilité sera comme avant,bref wait 1 second # Demande à skript d'attendre une seconde après avoir cancel l'event kill the player # Tue le joueur qui l'a cassé message "&aTu as cassé un block,tu as été tué par Mère Nature !" Voila,vous pouvez maintenant,quand un évènement se produit,produire des effets ! Liste des effets: ici Vous pouvez voir que touts les effets sont alignés,effets les plus utiles: broadcast "Message" > Permet de mettre un message à tout les joueurs message "Message"> Permet de faire un message privé au joueur qui a éxecuté l'évènement kill the player/victim/attacker > Tue le joueur,pour victim et attacker,c'est seulement dans les évènements de pvp ! (On damage,on death...) wait "Nombre" "ticks/seconds/minutes..." Permet d'ordonner à Skript d'attendre clear the player's inventory > Permet de clear l'inventaire du joueur cancel event > Le fameux ! Permet d'annuler l'évènement ! J'ai dit dans les grandes lignes,après on peut rajouter énormément de choses dans ces effects la. C'est la fin de ce tutoriel,prochain tutoriel assez court mais je vous dirais comment créer une commande ;) N'hésitez pas à me dire ce qui va pas pour que j'édit tout ça ! > J'ai rien compris mec Alors poste ta demande dans les commentaires de ce topic ! :D Apprendre le skript #2 : ici
  3. 12 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. 12 points
    Bonjour/bonsoir ! Dans les dernières versions de Skript se trouve une nouvelle fonctionnalité assez utile, permettant d'utiliser le format JSON dans des messages de manière à mon goût très simple et plus pratique qu'avec json.sk. ➤ Qu'est ce qu'un message contentant du 'json' ? Comment en faire via Skript ? Le json est un format permettant de stocker des données, et n'est pas utilisé que par Minecraft. Dans Minecraft, il permet entre autres d'envoyer des messages en couleur, contenant des commandes cliquables, des infobulles, et autres choses que l'on verra par la suite. Pour l'utiliser directement dans minecraft, il faut se servir de la commande "/tellraw", une commande à la syntaxe très restrictive et compliquée à utiliser. C'est le mode de fonctionnement de l'API json.sk. L'inconvénient est qu'avec ceci, il est difficile (impossible ?) d'envoyer plusieurs formats différents sur la même ligne, par exemple 2 commandes cliquables sur 2 portions de textes différentes de la même ligne. De plus cela envoie dans la console le log de la commande tellraw. Il existe aussi une syntaxe contenue dans SkQuery permettant d'envoyer des messages json, pouvant contenir plusieurs formats, mais cette syntaxe reste assez restrictive elle aussi, et nécessite l'addon. ➤ La nouvelle méthode Depuis longtemps il existe dans skript des bouts de codes intégrable directement dans l'effet "message/send", permettant de faire la mise en forme : message "<red><bold>Message en rouge et en gras<reset> en blanc <green> en vert" Ils sont très peu utilisés, car il est bien plus simple de se servir de "&4 , &l , &2 , &r , ...". Mais c'est avec des balises de ce type que l'on va intégrer des commandes/tooltip à nos messages. Voici les 4 balises disponibles : <url:url>texte cliquable, ouvre la fenêtre 'Êtes vous sûr de vouloir ouvrir..'<reset> <command:/commande>texte cliquable, exécute la commande<reset> <suggest command:commande>texte cliquable, écrit la commande dans la barre de tchat<reset> <tooltip:texte de la tooltip>Quand on passe la souris sur le texte, affiche la tooltip<reset> Et voici quelques exemples d'utilisations et le résultat en jeu: [spoiler=Exemples] #1 message "<command:/say J'ai cliqué><tooltip:§4Allez, clique%nl%§2§lSteuplé%nl%&1 :)>Passe ta souris....<reset>" #2 message "<url:[Contenu masqué] ici pour ouvrir%nl%le magnifique forum>Ouvrir le forum skript-mc.fr<reset>" #3 message "<tooltip:Clique pour faire /say Bonsoir><command:/say bonsoir>clic ?<reset>%nl%<tooltip:Clique pour préparer la commande /say><suggest command:/say >ou bien ici ?<reset>" [spoiler=Résultats](Après avoir cliqué sur le message) #1 [ATTACH=full]7864[/ATTACH] J'ai sauté quelques lignes pour ne pas cacher le texte, mais normalement il n'y a pas de saut de ligne. On remarque que dans les tooltips, le code couleur doit être mit avec le symbole § et non &, si vous écrivez le texte directement. Néanmoins si le texte de la tooltip est stocké dans une variable, alors le caractère & fonctionnera. Exemple : set {_tooltip} to "&1Bonsoir" message "<tooltip:%{_tooltip}%>Bonjour<reset>" affichera bien Bonsoir en bleu dans la tooltip. #2 [ATTACH=full]7867[/ATTACH] et au clic : [ATTACH=full]7868[/ATTACH] [spoiler=Résultats] #3 [ATTACH=full]7866[/ATTACH] Juste pour montrer qu'il est possible de faire plusieurs commandes dans le même message, sur plusieurs parties de textes différentes. C'est bien sûr aussi possible avec les url. ➤ Remarques ● Certaines combinaisons de formatage ne sont pas possibles, si elles sont mises sur la même portion de texte: - commande + commande suggérée - commande + url - commande suggérée + url ● Ils n'est pas possible d'associer plus d'un format du même type à la même portion de texte. Par exemple, les codes suivants ne fonctionneront que partiellement : message "<command:/say premier message><command:/say 2eme message>clic<reset> -> n'exécute que la 2eme commande message "<tooltip:premiere><tooltip:deuxième><tooltip:troisième>texte<reset>" -> n'affiche que la 3ème tooltip etc.. ● Les caractères < et > écrits dans l'un des formatages le fera boguer. Je n'ai personnellement pas trouvé d'autre moyen que de les remplacer par un caractère unicode comme ➤ ou ▶ ● Les commandes cliquables et les commandes suggérées ne peuvent pas faire plus de 100 caractères, sinon seuls les 100 premiers caractères seront exécutés. ● Placer le symbole § dans une commande cliquable fera kick le client, avec l'erreur "illegal characters in chat". Si vous placez un § dans une commande suggérée, la couleur sera bien appliquée dans le tchat, mais le joueur sera kick s'il exécute la commande, avec la même erreur. ● Les urls doivent commencer par "http(s)://", sinon le texte ne sera pas cliquable ● Ces formats ne sont pas utilisables avec l'effet broadcast Je rappelle qu'il faut avoir une version assez récente de skript, prenez les dernières releases de Bensku pour être sûr, et parce que c'est bien d'être à jour ;) Pour info, cette fonctionnalité a été ajoutée dans la dev26. Voilà, en espérant que ça vous sera utile :)
  5. 10 points
    Bonjour à tous, Skript n'étant plus disponible en 1.8 depuis au moins 1 an (avec les versions dev25 ou dev36), j'ai donc cherché à le faire fonctionner en 1.8. Voyant pas mal de gens travaillant encore sur de très anciennes versions, j'ai décidé de rendre mon travail public sur GitHub : [Contenu masqué] Vous pouvez télécharger les dernières versions de Skript-1.8 ici : [Contenu masqué]/releases Je mets à jour régulièrement mon travail par rapport à la version officielle en local et j'envoie tout ça une fois la version suivante de Skript sortie. Lien vers la ressource Skript-MC : [Contenu masqué] (tout est indiqué là-bas) Merci pour votre lecture, enjoy !
  6. 9 points
    — Pourquoi skript-gui ? Cet add-on est un fork, une copie améliorée de TuSKe (Pikachu Patch 3) spécialement dédié pour la création de vos GUI. ↪ Celui-ci est désormais le seul et unique add-on que je recommande ; l'auteur de TuSKe ne le mettant plus à jour et donc de nombreux bugs restent non résolu. — Téléchargement L'auteur de skript-gui (APickledWalrus) a décidé de le mettre à disposition sur GitHub. ↪ Vous pouvez télécharger la dernière version stable à cette adresse, et glissez-le dans vos plugins. — Création de votre premier GUI ↪ Pour commencer, nous allons visiter la documentation de skript-gui (en anglais) et y trouver la syntaxe pour créer un nouveau GUI : create [a] [new] gui [[with id] %-string%] with %inventory% [(and|with) (moveable|stealable) items] [(and|with) shape %-strings%] ↪ Construisons ensemble notre inventaire virtuel ("%inventory%" dans la syntaxe) avec les syntaxes d'exemple : virtual %inventorytype% [(named|with (name|title)) %string%] with size %number% virtual %inventorytype% [(named|with (name|title)) %string%] with %number% row[s] Cette syntaxe vous demande de préciser un "inventorytype". Rendez-vous sur la documentation de Skript pour récupérer tous les types d'inventaire existants ; nous allons choisir un "chest inventory" (coffre), avec comme nom "Tartiflette" et avec 6 de taille. Voici à quoi devrait ressembler cette syntaxe : virtual chest inventory named "Tartiflette" with 6 rows ↪ Parfait. Nous avons créé notre %inventory%. Intégrons-là désormais à notre syntaxe de départ (nous reviendrons sur les autres possibilités après) : create a new gui with virtual chest inventory named "Tartiflette" with 6 rows — Ouvrir un GUI ↪ Jetons un œil à cet effet : (open|show) [[skript[-]]gui] %guiinventory% (to|for) %players% Vous me direz, comment afficher le GUI que j'ai créé juste en haut ? Utilisez l'expression "[the] last[ly] [created] gui". Voici un exemple de son utilisation : command tartiflette: trigger: create a new gui with virtual chest inventory named "Tartiflette" with 6 rows open last created gui to player — Modifier son contenu ↪ Bien. Vous avez désormais un GUI fonctionnel, mais vous ne savez pas comment ajouter du contenu. Nous y voilà ! Si vous avez l'habitude des GUI avec TuSKe, les syntaxes que je vais vous présenter vous seront familières : (make|format) [the] next gui [slot] (with|to) %itemtype% (make|format) gui [slot[s]] %strings/numbers% (with|to) %itemtype% ↪ Pour cela, nous allons essayer de définir le premier emplacement avec la tête du joueur. En se basant sur cette syntaxe, nous devrions avoir : make gui slot 0 with player's head ↪ Intégrons désormais ceci à la création de notre GUI. Nous allons modifier légèrement la syntaxe de création de GUI de manière à ce qu'elle prenne en compte des modifications : command tartiflette: trigger: create a new gui with virtual chest inventory named "Tartiflette" with 6 rows: # <-- ajout de deux points make gui slot 0 with head of player # ne pas oublier l'indentation ! open last created gui to player — Shapes ↪ Les shapes sont une fonctionnalité très intéressante propre à skript-gui. Vous pouvez par exemple l'utiliser pour remplir facilement certaines parties de votre GUI. Voici un exemple : command tartiflette: trigger: create a new gui with virtual chest inventory named "Tartiflette" with 3 rows with shape "sssssssss", "s-------s" and "sssssssss": make gui slot "s" with dirt named "Ceci fait le tour du GUI !" make gui slot "-" with head of player open last created gui to player Cette syntaxe fonctionne comme un schéma. La première ligne de votre GUI est représentée avec la première ligne du shape, la deuxième pour la deuxième ligne du shape etc. Vous pouvez remarquer que la lettre "s" fait donc le tour du GUI en laissant un espace vide au milieu ("-"). Pour remplir toutes les cases "s", j'ai simplement utilisé la syntaxe classique, en utilisant donc la lettre "s". De même pour la tête du joueur, j'ai simplement utilisé "-". Voici les principales fonctionnalités de skript-gui, je n'ai pas présenté tout dans ce tutoriel. N'hésitez pas à poser vos questions en commentaire.
  7. 9 points
    Bonjour à vous tous ! Bon, après la petite réunion du 10/08/2018, nous avons évoqué avec le staff de faire des petits changements sur les rôles et les rangs pour donner de la diversité et du renouveau sur cette V2 et de petit à petit se détacher de l'ancien système de la V1. Je pense que vous avez pu voir ces nouveautés procéder hier avec des tests mais c'est maintenant mis en place ! Nous avons refait notre système de rang. C'est à dire que maintenant, vous n'avez plus des petits points banals ou même un Chuck Norris dégueulassement incorporé à votre profil mais bien des bannières pour démarquer votre rang. Voici la liste des rangs disponibles et quand ils s'appliqueront: - Touriste (Bannière Noire) : de 0 à 4 Élément de contenus - Nouveau (Bannière Grise) : de 5 à 14 Élément de contenus - Intéressé (Bannière Bleu Claire) : de 15 à 29 Élément de contenus - Apprenti (Bannière Bleu) : de 30 à 59 Élément de contenus - Membre (Bannière Bleu Foncé) : de 60 à 249 Élément de contenus - Habitué (Bannière Verte) : de 250 à 499 Élément de contenus - Impliqué (Bannière Orange) : supérieur à 500 Élément de contenus Nous nous sommes aussi intéressé à la reconstitution des grades. En effet , Nous avons implémenté des grades supplémentaires pour donner une sorte de fonction pour chacun et pour récompenser les plus impliqués sur le forum. Vous avez maintenant beaucoup de choix. Les grades seront donnés quand le staff remarquera une bonne participation de votre part dans l’enceinte du forum. Voici les grades implémentés et modifiés avec leur description et comment les avoir: - Développeur d'add-ons: C'est un grade qui permettra de vous démarquer par le fait que vous développez des add-ons skript pour la communauté. Comment avoir le rôle ? Rien de plus simple que de poster des add-ons ? - Érudit: Ce rôle est donné aux gens qui permettent à la communauté de se développer en fournissant des tutoriels de qualité ! Il vous permettra de poster des tutoriels sans passer par une vérification du staff lors de l'envoi de votre poste sur la catégorie dédiée. Postez encore et toujours plus de tutoriels ! - Membre Actif: Voila un grade qui a fait polémique et dont nous avons décidé de changer sa manière de l'avoir. Pas de panique pour les anciens MA, vous avez été transférés dans Ancien où vous allez pouvoir garder vos anciens privilèges. Cependant maintenant pour avoir ce rôle, vous allez devoir montrer votre activité parmi la communauté ! Nous ne demandons pas une connexion 7J-H24 mais une participation régulière. Dans les jeux avec des rangs vous devez montrer que vous êtes celui qui est à la hauteur pour avoir ce rôle ! Ce rôle à vu ces permissions changer notamment dans ces permissions qui vous permettront d'avoir une image de profil animé et d'autres options supplémentaires que les membres n'ont pas ? . Fini les gens qui viennent se plaindre en disant "Ouai mais lui il est MA mais on le voit plus !". Montrez vous présent et vous mériterez votre gain ? ! - Helpeur: Quel est ce rôle voyons ?! Contrairement à ce que vous pouvez penser mais helpeur ne fait aucunement partie du staff et ne possède pas de permissions de modération. Ce rôle sera attribué aux personnes impliquées dans l'aide des membres dans la communauté. C'est une forme de remerciement de notre part pour aider au développement des membres afin d'en apprendre plus et de maîtriser ce langage pour le faire grandir. Pour compléter le tout, nous avons caché un rang et un grade. Ceux qui réussiront les avoirs font partie de l'élite de Skript-Mc et prendra une grande place dans cette communauté en plus d'avoir beaucoup de privilèges ! (Attention aux abus vous n'êtes pas immunisé contre les sanctions ? ) Aurez vous la force de les avoir et de savoir comment les avoir ? Ce n'est pas très bien caché mais possible à avoir (Un est moins hardcore à avoir que l'autre). Quelques problèmes ont été corrigés. L'embed de partage est maintenant bien détouré, vous bénéficiez tous d'une boîte à messages infinis, le problème de mise en évidence des messages du staff sans demander, des petits problèmes de permission et j'en passe. Des choses dites ici risque de changer ou d'être peaufinées donc pas de panique ! Nous comptons sur vous pour faire prospérer Skript-Mc et faire grandir cette communauté ! Cordialement, Le staff de Skript-Mc. PS: Nous recommandons de laisser des notes sur les ressources afin de mieux les faire référencer. Ça peut jouer sur le gain de certains rôles ?.
  8. 8 points
    Bonjour à vous tous ! Quoi de neuf cette fois ci après une longue période sans mise à jour et de renouveau ? Et bien on vous a pondu du lourd ! je vous détaille tout ce qu'on a fait I - Nouveau Thème: Après une multitude de demande pour avoir un dark thème et bien le voici. On a trouvé un thème qui nous plaisent bien on l'a adapté pour garder les couleurs de Skript-MC. On y a passé une bonne soirée à le configurer et on espère qui vous plaira ! Il se peut que le thème soit quelques problèmes d'affichage, si tel est le cas alors n'hésitez pas à nous le dire sur le discord (Vengelis ou Uneo) et on adaptera en conséquence. De plus, ce thème va nous permettre de faire encore plus de chose que le précédent mais vous verrez cela en temps voulu ! II - Mise à jour du forum: Nous avons fait une update de version. Cela nous a donc permis de régler de nombreux problèmes présents anciennement. III - Update Ressources: Cette mise à jour sur les ressources elle consiste à quoi ? Eh bien il y a maintenant une partie support et une amélioration de la visualisation des reviews. Voici quelques images: Le principe est presque le même que sur GitHub et on l'a intégré au forum. Il y a encore quelques bugs de couleur par endroits mais ça sera vite corrigé. N'hésitez pas à vous en servir pour vos nouvelles ressources. Vous allez maintenant pouvoir aider les créateurs de contenu ou gérer vos bugs directement sur la plateforme sans passer par discord ou autres. IV - Continuité de traduction J'avais un peu de temps alors j'en ai profité pour continuer à traduire le forum. Toute la partie ressource est normalement traduite avec le nouveau module. V - Système de report Je suis actuellement en train de chercher un nouveau module pour améliorer le système de report du forum. On ne va pas se le cacher c'est relativement rudimentaire. Voilà pour la nouvelle maj du forum. Il y a plein d'autres trucs qui devraient être mis en place dans les jours à venir. N'hésitez pas à envoyer des retours Cordialement, l'équipe de Skript-MC.
  9. 7 points
    Bonjour, Je vous présente mon premier tutoriel pour les débutants. Je ferais plusieurs tutoriels pour but d'enseigner les bases aux nouveaux qui entrent dans le monde de Skript. Nous allons donc commençer. I/C'est quoi une variable ?: Une variable, comme son nom l'indique c'est quelque chose de modifiable, qui varie. Vous pouvez ajouter un certain nombre de choses dans une variable, en retirer, l'afficher ect... Les variables peuvent aussi s'appliquer pour le joueur, ou pour autre chose (vous comprendrez plus bas). II/Comment stocker dans une variable ?: Une variable a pour but d'être un stockage de plusieurs choses ou d'être appliqué à quelque chose. Nous allons d'abord étudier ce premier point: stocker dans une variable. Nous allons étudier plusieurs exemples: on join: add 1 to {players.count} Grâce à ce code, quand un joueur rejoindra le serveur, cela ajoutera 1 "point" dans "{players.count}". Il est aussi possible de supprimer dans une variable, grâce à cela: on quit: remove 1 from {players.count} Quand un joueur quitte le serveur, cela supprime 1 "point" de "{players.count}". Il existe aussi la possibilité de supprimer la variable, c'est à dire qu'elle sera remise à zéro: command /clear: trigger: delete {players.count} send "&eLa variable {players.count} a été supprimée" III/Appliquer une variable à un joueur ou autre: Il est aussi possible d'appliquer une variable à un joueur, la variable sera unique au joueur. Si vous écrivez une variable comme "{skript.test}", la variable s'appliquera pour tout le monde. Mais si vous faites "'{skript.%player%.test}", la variable s'appliquera SEULEMENT au joueur. Voici deux exemples: command /join: trigger: set {join.%player%.serveur} to true send "&eVous êtes bien connecté !" Là, quand vous allez exécuter cette commande, la variable "{join.%player%.serveur}" sera en true (activée) pour vous. Vous pouvez aussi désactiver une variable, comme l'exemple ci-dessous: command /quit: trigger: set {join.%player%.serveur} to false Là, en exécutant cette commande, la variable "{join.%player%.serveur}" sera en false (désactivée) pour vous. III/Afficher une variable: Une variable peux aussi être affichée en message. Il suffit juste de mettre votre variable entre "%" pour pouvoir la "lire". Voici un exemple: command /check: trigger: send "&eJoueurs: &a%{join.%player%.serveur}%" Là, quand vous allez faire la commande /check, le message vous dira le nombre qui est stocké dans la variable, par exemple, cela vous affichera en jeu: Joueurs: 5 Le tutoriel est terminé. Je sais qu'il y a encore plus à dire, mais comme précisé dans le titre, c'est un tutoriel pour les débutants. J'en ferais d'autres pour ceux qui débutent :). N'hésitez pas à me poser une question si vous ne comprenez pas. Cordialement, Voserv
  10. 7 points
    Hey les skripteurs Tutoriel pour installer le langage Skript 2.0 sur Notepad++ qui intègre des variations de couleur pour vous aider dans votre code. 1) Rendez-vous sur ce lien : [Contenu masqué] 2) Cliquez sur Télécharger qui se trouve à votre droite. 3) Cliquez sur " Téléchargement direct. " 4) Après l'avoir télécharger mettez le fichier dans votre bureau. 5) Lancer Notepad++ et rendez vous dans : Langage>Définissez votre langage... 6) Cliquez sur "Importer" et prenez votre fichier Skript 2.0 7) Relancez Notepad++. 8) Repartez dans Langage>Skript2.0 ( qui se trouve tout en bas. ) Voilà , votre langage Skript est désormais installer ! Si vous avez un problème, n'hésitez pas à me le faire part dans les commentaires. A bientôt.
  11. 7 points
    Bien le bonjour, Aujourd’hui je vous propose un petit tuto pour utiliser la coloration syntaxique Skript sur sublime text. Rapide topo sur sublime text : Sublime est un IDE qui pour moi fait partis des meilleurs, autant pour sa légèreté, son confort d'utilisation et son extensibilité. Il gère nativement une cinquantaine de langages, et il existe des plug-ins pour tout et n’importe quoi.Petite note Sublime texte est payant à la winrar (un pitit message tous les 50 enregistrements). Essayez-le vous ne serez pas déçus. Vous êtes prêts ? On est partis. Déjà, si ce n'est pas déjà fait installez l'ide : [Contenu masqué] Une fois lancé vous suivez les étapes indiquées pour installer package control: [Contenu masqué] Le plus dur est fait vous pourrez désormais à l'aide de package control accéder a toute un libraire de plug-in pour a peut près tout. Je laisse l'installation de package control qui donne accès à des centaines de plugins utiles [spoiler=Installation d'un plugin] Pour installer un plug-in : Préférences -> Pakage Control et sélectionnez a l'aide des flèches du clavier et d'entrer "Package control : install package" Patientez quelques secondes un autre fenêtre s'ouvre tapez alors Skript (ou le nom du plug-in que vous voulez) appuyez sur entrer pour valider l'installation et c'est fait vous n'avez plus qu'a ouvrir un .sk Update : Le package n’étant plus disponible sur package control voici comment remédier au problème : Téléchargez le fichier ci-joint Télécharger Sur sublime text dans le menu Préférences -> browse packages Un fois dans le dossier remontez s'en d'un et glissez le zip tel quel dans le dossier Installed packages Redémarrez Sublime text Je vous invite à explorer plus en détail les secrets de cet IDE qui est bourré de fonctionnalités, si vous êtes perdu n'hésitez pas à me demander ou à utiliser google :p
  12. 6 points
    Beaucoup d'entre vous demandent un pack d'addon, alors voici les addons qu'il vous faut au minimum. Les packs peuvent être changé à votre sauce, et tout les addons ne sont que recommandé et non obligatoire. Les packs d'addons pré-fait sont mauvais, donc les packs ci-dessous seront mis à jour au besoin en cas d'addon abandonné ou autre changement. Voici la liste des addons abandonnés (sur à 100%) et donc à ne pas utiliser: Umbaska WildSkript MundoSk (Devient Kosmos, WebSKT et Tablisknu) J-NBT (Devient Sk-NBeeT) Sk-NBeeT (Devient SkBee) Skuared Skraper QuarSk SkStuff Sketch Skematic SkUtilities (Devient Skent) Voici une liste des spécificités de chaque addons qui ne sont pas recommandés: SkQuery: Les guis SkUtilities: Tout ce qui est gestion de fichiers Voici les packs que je vous propose. Il n'y a aucun ordre de préférence. Je vous invite à directement vous renseigner sur l'addon en question en lisant sa description anglaise, en vous renseignant sur le discord de skript-mc ou le forum directement: Le pack basic: SkQuery ([Contenu masqué]) Skript-yaml ([Contenu masqué]) Skent ([Contenu masqué]) Skester ([Contenu masqué]) Le pack plus de syntaxes: Le pack basic Tablisknu ([Contenu masqué]) SkQuery ([Contenu masqué]) Skellett ([Contenu masqué]) ExpressionsPlus ([Contenu masqué]) QuarSk ([Contenu masqué]) Le pack gestion de monde: Le pack basic Kosmos ([Contenu masqué]) Skematic ([Contenu masqué]) FaweSk ([Contenu masqué]) Khoryl ([Contenu masqué]) Le pack jeux: Le pack basic GameAPI ([Contenu masqué]) Le pack web: Le pack basic WebAddon ([Contenu masqué]) Skript-json ([Contenu masqué]) Reqn ([Contenu masqué]) WebSKT ([Contenu masqué]) SkLib ([Contenu masqué]) TwitterSk ([Contenu masqué]) SkEmail ([Contenu masqué]) Vixio ([Contenu masqué]) Le pack bungeecord: Le pack basic Skungee ([Contenu masqué]) BungeeMaster ([Contenu masqué]) BungeeAddon ([Contenu masqué]) Le pack multi plugins: Le pack basic SkUniversal ([Contenu masqué]) SkWaze ([Contenu masqué]) WolvSk ([Contenu masqué]) LiteBanSk ([Contenu masqué]) SkriptNPC ([Contenu masqué]) NpcAddon ([Contenu masqué]) SharpSk ([Contenu masqué]) Skellett ([Contenu masqué]) SkVault ([Contenu masqué]) SKPermissionsEx ([Contenu masqué]) Sky ([Contenu masqué]) Le pack geometrie et constructions: Le pack basic Biosphere ([Contenu masqué]) FaweSk ([Contenu masqué]) Netrozor ([Contenu masqué]) Le pack particules: Le pack basic SkDragon ([Contenu masqué]) Beamer ([Contenu masqué]) HolographicDisplaysAddon ([Contenu masqué]) Le pack scoreboard: Le pack basic SkBee ([Contenu masqué]) SkRayFall ([Contenu masqué]) Skore ([Contenu masqué]) Skellett ([Contenu masqué]) Le pack NBT: Le pack basic SkBee ([Contenu masqué]) Le pack GUIS: Le pack basic SkQuery ([Contenu masqué]) TuSke ([Contenu masqué]) Skript dev34+ ([Contenu masqué]) Le pack permissions: Le pack basic Sk-Perm ([Contenu masqué]) SkPermissionsEx ([Contenu masqué]) Le pack REGEX: Le pack basic TuSke ([Contenu masqué]) Le pack modification de server: Le pack basic skript-mirror ([Contenu masqué]) skript-log ([Contenu masqué]) SkUtilities ([Contenu masqué]) Skent ([Contenu masqué]) ThatPacketAddon ([Contenu masqué]) Le pack holographic: Le pack basic skript-holo ([Contenu masqué]) HolographicDisplayAddon ([Contenu masqué]) skRayFall ([Contenu masqué]) Le pack inclassable: Le pack basic TranSKator ([Contenu masqué]) Skester ([Contenu masqué]) Tout les addons sont trouvable sur skunity partie "addons" ([Contenu masqué])
  13. 6 points
    /. INTRODUCTION Bonjour, J'ai remarqué depuis déjà un certain temps que les joueurs on tendance à utiliser SkQuery pour les GUI bien que celui ci possède de nombreux bug, est moins pratique, offre moins de fonctionnalités et que beaucoup de personnes dans la catégorie "aide" poussent les joueurs à utiliser TuSke. J'imagine que c'est probablement du au faire que en cherchant "GUI Skript" les premiers liens montrent le fonctionnement des GUI avec SkQuery (de même avec 95% des vidéos d'apprentissages de GUI fr). J'ai donc décidé d'essayer de changer cela en créant ce poste dans le but de vous montrer le Sacro-Saint-Graal des GUI Skript, j'ai nommé TuSKe. J'ajouterai aussi un sondage afin de savoir avec quoi vous avez appris à utiliser les GUI afin de connaître pourquoi tant de personnes on commencées en utilisant SkQuery. P.S : Je sais que psyziik a déjà crée un poste semblable mais je compte rendre celui ci plus complet ou en tout cas montrer clairement la différence entre les deux plutôt que faire un tuto. ^^ IMPORTANT Il est très important de savoir que pour Gui on peut utiliser SkQuery sans TuSKe mais pas TuSKe sans SkQuery. I. L'OUVERTURE D'INVENTAIRE Dans SkQuery : open chest with 3 row named "&8&l[&6&lTEST&8&l]" to player wait 1 tick Dans Tuske : open chest with 3 row named "&8&l[&6&lTEST&8&l]" to player Comme vous pouvez le voir, pas grand chose ne change et ce n'est certainement pas ça qui va vous faire passez sur TuSKe mais bon c'est déjà un problème car il arrive souvent d'oublier le wait 1 tick pour SkQuery II. L'AJOUT D'ITEMS Dans SkQuery : format slot 0 of player with 1 dirt named "test" with lore "c'est un lore..." to be unstealable Dans Tuske : make a gui slot 0 of player with 1 dirt named "test" with lore "c'est un lore..." Comme vous pouvez le voir les deux non pas vraiment de différence mais font là même chose, toutefois voici une grosse différence : Imaginons que l'on veuille afficher des item qui fassent exactement la même chose dans 5 slots différent : Dans SkQuery : [spoiler=Code SkQuery] format slot 0 of player with 1 dirt named "test" with lore "c'est un lore..." to be unstealable format slot 1 of player with 1 dirt named "test" with lore "c'est un lore..." to be unstealable format slot 2 of player with 1 dirt named "test" with lore "c'est un lore..." to be unstealable format slot 3 of player with 1 dirt named "test" with lore "c'est un lore..." to be unstealable format slot 4 of player with 1 dirt named "test" with lore "c'est un lore..." to be unstealable Dans TuSke : [spoiler=Code TuSKe] make a gui slot 0, 1, 2, 3, 4 and 5 of player with 1 dirt named "test" with lore "c'est un lore..." ça peut vous sembler pas grand chose mais quand on fait ça avec une vingtaine d'items, utiliser SkQuery rend votre code très désagréable et moins performant. III. EXÉCUTER DES EFFETS Sachez avant tout que toute les choses faisables dans SkQuery sont faisables dans TuSKe (close, close then run, etc..) mais pas le contraire : Par exemple pour exécuter un loop ou exécuter plusieurs effet avec SkQuery on est obligé de passer par une fonction ou "on inventory click:" ce qui non seulement est moins optimisé, moins pratique (imaginez vous faire 20 fonction avec un gui où il y a 20 items qui font 20 choses différentes :/) et moins compréhensible pour vous et toutes autre personnes qui essayerait de lire votre script. [spoiler=Code SkQuery] on right click on stone: open chest with 3 row named "&8&l[&6&lTEST&8&l]" to player format slot 0 of player with 1 diamond sword named "a" to close then run [a(player)] function a(p: player): loop 5 times: message "test" to {_p} Alors que Tuske: [spoiler=Code TuSKe] on right click on stone: open chest with 3 row named "&8&l[&6&lTEST&8&l]" to player make a gui slot 0 of player with 1 diamond sword named "a" to run: close player's inventory loop 5 times: message "test" to player IV. LES TYPES DE CLIQUES Pour SkQuery on est obligé de passer par le "on inventory click" [spoiler=Code SkQuery] on right click on stone: open virtual chest inventory with size 4 with name "&6&lTest" to player format slot 0 of player with 1 dirt named "test" with lore "c'est un lore..." to be unstealable on inventory click: if inventory name of player's current inventory is "&6&lTest": cancel event if clicked slot is 0: if clicked type is right mouse button: message "test" to player Pour Tuske par contre non seulement on peut passer directement par le to run: [spoiler=Code TuSKe] on right click on stone: open virtual chest inventory with size 4 with name "&6&lTest" to player make a gui slot 0 of player with 1 dirt named "test" with lore "c'est un lore..." to run: if clicked type is equal to left mouse button: message "a" to player Mais on peut aussi intégrer la condition dans le "make a gui": [spoiler=Code TuSKe] on right click on stone: open virtual chest inventory with size 4 with name "&6&lTest" to player make a gui slot 0 of player with 1 dirt to close then run player command "/gm 1" using left click V. D'AUTRES FONCTIONNALITÉS Voici quelque petit truc en plus dans Tuske: Supprimer les items d'un slot: unformat the gui slot %numbers% of %players% De tout les slots: unformat all gui slots of %players% Condition pour savoir si le joueur a un GUI: %player% has [a] gui Et condition pour savoir si un slot fait partit d'un GUI: slot %numbers% of %players% is a gui Le as op: make a gui slot 0 of player with 1 dirt to close then run player command "/gm 1" as op VI. LES LOOPS Sur SkQuery ce code vous affichera 10 dans tout les cas: [spoiler=Code SkQuery] on right click on stone: open virtual chest inventory with size 4 with name "&6&lTest" to player set {_s} to 0 loop 10 times: format slot {_s} of player with 1 dirt to run [message "%{_s}%"] add 1 to {_s} Alors que le premier aurait du donner 0, le 2eme 1, etc... Mais pour Tuske: [spoiler=Code TuSKe] on right click on stone: open virtual chest inventory with size 4 with name "&6&lTest" to player set {_s} to 0 loop 10 times: make a gui slot {_s} of player with 1 dirt to run: message "%{_s}%" add 1 to {_s} Tout marche ^^ et croyerz moi les loops peuvent être vraiment utile dans les GUI quand on sait les utiliser. VII. LES GUI AVANCES Bon sachez que pour TuSke ce que je vous ais présenté est la partie dite "simple", il existe des GUI bien plus complexes. Ceux-ci vous permettent par exemple de créer un gui définit par une ID puis ouvrir l'inventaire de cette ID, de connaitre le type d'action du joueur(ex: swap with cursor, pickup half et bien d'autres), de connaitre le type de slot (armor, fuel) et bien plus ^^ . Mais surtout ces GUI sont vraiment vraiment biens plus rapident et prennent moins de ressources :D. Voici le tuto officielle en Anglais. VII. LES BUGS Il faut savoir que SkQuery est connu comme possédant des bugs dans ses GUI et que donc dans de gros GUI il n'est pas si rare d'avoir des résultats inexplicables. Tel que : - loop avec des valeurs qui changent qui ne marche pas - si on met unstelable à un slot dans le GUI, le slot situé à la même position dans l'inventaire du joueur aurra le même effet (pareil avec les to run command) - bug visuel quand on spamclick / dans certain cas il est aussi arrivé de vraiment recevoir l'item (en créa en spamcliquant) ------------------------------------------------------------------------------------- Voilà, c'est la fin de ce poste que je tenais beaucoup à faire ^^ Si vous avez aimé n'hésitez pas à donner un like. Si vous avez des arguments soutenant ou contre ce poste n'hésitez pas à le dire (en restant poli svp) Tuske : [Contenu masqué] Documentation GUI TuSke : [Contenu masqué] Merci à psyziik pour son Tuto qui m'a été très utile pour apprendre à utiliser TuSKe : [Contenu masqué] P.S : Je sais parfaitement que ce post comportement de très nombreuses fautes mais sachez que cela n'est clairement pas une raison de juger négativement ce poste. EDIT: J'ai appris qu'il existais déjà un poste semblable mais bon impossible de le trouver sur Google. Mais bon voici ce qu'il a écrit, c'est un peu plus complet que mon poste : [Contenu masqué]
  14. 6 points
    Tien ! C'est un petit code simpatoche :D #Bon jeu , et n'oublie pas de like mon com' :D on join: teleport player to {Hub} command /sethub: trigger: if player have permission "admin": set {Hub} to player's location message "&aTu as bien placé le hub ! :D"
  15. 6 points
    j'aimerais tellement qu'il y ais un bouton DisLike rien que pour cliquer dessus quand quelqu'un le mendie !
  16. 5 points
    Skript-Yaml en 5 minutes: Il est important de noter que ce tutoriel n'entrera pas dans du complexe, et restera sur du basique. Pour aller dans le complexe, je vous invite à aller voir les syntaxes de l'addon et demander de l'aide sur le forum ou discord à ce propos. Skript-yaml est un addon comme son nom l'indique conçu pour gérer des fichier en .yaml (ou .yml). Il fonctionne avec un système de cache. Qu'est-ce que le "cache" ? Imaginer vous devez faire des allez-retours d'une pièce à une autre pour transférer des cartons. Vous laisserez la porte ouverte de manière à ne pas avoir à la rouvrir à chaque fois. Le cache c'est pareil. Vous allez ouvrir 1 fois la porte, faire le transfert de carton puis la refermer (facultatif). Charger le fichier: Bien, si vous avez saisi le système de cache vous êtes bien parti. Ici la porte sera l'effet: load yaml "plugins/Mon fichier yaml.yml" as "test" Ici as "X" est le choix de l'identifiant de votre fichier où X est le nom de l'identifiant. Rien ne sert de charger 50 fois le même fichier. C'est comme vouloir ouvrir 50 fois une porte déjà ouverte. C'est pourquoi il faut placer cet effet au bon endroit: - Si vous comptez créer un fichier non modifiable manuellement (donc qu'on ne puisse pas écrire des valeurs dans le fichier et les appliquer juste après) je vous recommande de mettre cet effet dans un événement on skript load. - Si vous comptez créer un fichier modifiable manuellement par la suite, alors ce serait plus l’événement on load - Si c'est un fichier pour un joueur, ou utilisateur, alors utilisez cet effet au moment où l’interaction avec l'utilisateur se fait (comme une commande, un événement pouvant cibler un joueur etc....) . Si le fichier yaml n'existe pas, skript-yaml va le créer, cela inclut les dossiers. L'effet "unload" ne servira que si vous chargez trop de fichier. Sauvegarder vos donnés avant de l'utiliser (voir plus bas). Mettre des valeurs: Pour mettre des valeurs dans le fichier yaml en question vous avez le choix entre les list et value. Les list sont plusieurs valeurs, donc vous pouvez modifier les listes à partir de add et remove. Les value ce n'est qu'une seule valeur, donc modifiable uniquement avec set. La syntaxe: yaml (list|value) "root node.node.value" from "votre fichier yaml ou identifiant" Il s'agit d'une expression. Il est important de noter que skript-yaml fait attention aux types, c'est à dire que faire: set yaml value "test" from "config" to "true" n'est en aucun cas la bonne méthode. Dans cet exemple, la bonne méthode serait: set yaml value "test" from "config" to true Ce sera exactement pareil avec les number, locations, item etc.... Exemple: on script load: load yaml "plugins/skript-yaml/teleport.yml" as "plugins/skript-yaml/teleport.yml" command /savetp: trigger: set yaml value "%player%.location" from "plugins/skript-yaml/teleport.yml" to location of player save yaml "plugins/skript-yaml/teleport.yml" command /tp: trigger: teleport player to yaml value "%player%.location" from "plugins/skript-yaml/teleport.yml" Je ne vois pas les valeurs s'afficher dans mon fichier, normal ? Oui, les valeurs sont modifiés dans le cache. Ce qui signifie que les changements seront disponible jusqu'à ce que le cache soit effacé par l'application en question (ici ce sera votre serveur). Pour sauvegarder vos donnés, il s'agit de: save yaml "votre fichier yaml ou identifiant" Utilisez cet effet uniquement lorsque vous avez fait tout les changements. Sinon ce serait comme fermer la porte après avoir fait passer chaque carton, ça n'aurait pas de sens. Exemple: save yaml "config" Comment puis-je ajouter des commentaires à mon fichier ? Une expression existe pour ça. Il s'agit de: comments of yaml node "root node.node.valeur" from "votre fichier yaml ou son identifiant" Les commentaires ne peuvent être appliqués uniquement aux "root node" comme dans la syntaxe au-dessus. Ils peuvent néanmoins être appliqués tout en haut de votre fichier grâce à: comments at the top of "votre fichier yaml ou son identifiant" Exemples: set the comments of yaml node "test" from "config" to "Première ligne" and "Seconde ligne" delete the comments of yaml node "test" from "config" set {_en haut::*} to "Première ligne" and "Seconde ligne" set the comments at the top of "config" to {_en haut::*} delete the comments at the top of "config" set the header of "config" to "Première ligne" and "Seconde ligne" delete the header of "config" set the header of "config" to {_en haut::*} ======================================= Ressources ======================================= Lien de l'addon: [Contenu masqué] Voici un tutoriel pour compléter le mien: Si l'affichage ne fonctionne pas, voici le lien brute: [Contenu masqué]
  17. 5 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 !
  18. 5 points
    /. INTRODUCTION Bonjour, depuis pas mal de temps je remarque que trop de gens on tendance à créer un serveur dans les versions 1.8.+ refusant totalement de passer dans les dernières version (1.12 à cette heure). Après avoir beaucoup discuté avec pas mal de personnes pour voir les raisons derrières ce choix, je me suis rendu que toutes les raisons sont infondé... Et comme je déteste devoir me répété pour contré chacun des arguments, j'ai décidé de créer ce poste où j'expliquerai en quoi les arguments sont faux ? IMPORTANT Il est important de savoir que ce poste n'est pas destiné aux serveurs moddés et que si vous avez un autre arguments que ceux montré ci-dessous, n'hésiter pas à les présenter de manière constructif dans les commentaires de ce poste. ------------------------------------------------------------------------ Ci-dessous la liste des arguments utilisés par les personnes pensant qu'il faut rester en 1.8 dans l'ordre des plus compréhensible aux plus infondée. I. Le PVP Ah le fameux pvp qui a rendu fou la communauté, je ne suis pas ici pour dire que le pvp 1.9 est meilleur ou le contraire. Je fais cette partie car trop de personne refuse de passer aux version supérieurs à cause du pvp. Donc voici comment on peux garder le pvp 1.8 en 1.9 et +. En premier voici un plugins permettant de copier parfaitement le pvp 1.8 en 1?9 et +: [Contenu masqué] Et pour les plus intelligent, vous pouvez même décider de garder certaines fonctionnalités des deux par exemple, garder le cooldown 1.8 mais gardé le bouclier 1.9 mais seulement contre les arcs afin de les rendres moins op ainsi que la seconde moins avec lequel il est agréable de jouer ^^ Voici par exemple le choix qu'a fait Epicube [spoiler=Epicube pvp] II. Le nombre de joueur L'argument du fait que tout les joueurs soient en 1.8 revient souvent (bien que ça soit très con car les gros serveurs sont tous en 1.11-1.12) du-coup j'ai décidé de faire apelle à un ami commun qui mettra tout le monde d'accord, je parle bien sur DES STATS. Apprécier : (plus de précision ICI) Voici quelques infos prisent de ce graphique : - pourcentage de présence de version 1.12-1.12.2 : 62,5% - pourcentage de présence de version 1.9 et + : 69,019% - pourcentage de présence de version 1.8-1.8.9 : 14,7% Donc pour ceux qui osent encore me dire que tout le monde est en 1.8.... III. Les ajouts "inutiles" Bon alors là je vais devoir aller plus loin... Cette partie s'adresse aux personnes qui pensent que tout les ajouts des version 1.9 et + sont nul ou inutile (alors que les ajouts 1.8 sont les seuls utiles) donc petit comparatif entre les deux : Voici les ajouts les plus importants pour les joueurs en 1.8 : - Communauté redstone : slimeblock - Communauté commandes block : quelques commande en plus + armor stand - Communauté build : bannière, feu d'artifice et armor stand - Communauté survie normal : donjon dans l'eau - Communauté pvp : rien en même temps ce sont des puristes (réprésente un peu le vieu qui te fait chier dans ton quartier XD) Voici ce qu'il y a eu jusqu’à la 1.12 : - Communauté redstone : observer - Communauté commande : type de commandes blocks (franchement c'est déclaré comme la meilleur invention de tout les temps de la pars de la commu des commandes block ^^) - Communauté Build : TROP DE BLOCS OMG o_O - Communauté Survie : élytra, donjon, nouveaux mob - Communauté pvp : bon vous connaissez tous l'histoire... Et pour ceux qui sont en mode : "oui mais y'a des trucs vraiment inutile genre des Ours ? a quoi ça sert des Ours ? (car après osef qu'un monde soit vivant, agréable avec de la diversités)" Et bien en 1.8 il y a eu LES LAPINS et pourtant personne c'est jamais plain. Et la j'ai citée ce qui me passait rapidement par la tête mais y'a carrément bien plus : [Contenu masqué] [Contenu masqué] [Contenu masqué] [Contenu masqué] Donc regarder un peu avant de dire, "y'a rien d'utile" ! Et des images sympa : IV. Il n'y a pas assez de plugin en 1.12 ou tout n'es pas mis à jour...Bon pour ça il est très important de savoir que non seulement la communauté de dev se développe mais en plus que les gros plugins dont le dev on été arrêter se sont vu reprendre par d'autres personnes donc j'attend toujours un exemple d'un plugin d'on on a besoin mais qui n'existe pas en 1.12 (ou un équivalent)...Et si vous pensez que y'a pas assez de plugin :Jetez un coup d’œil ici et ici...De plus sachez que les plugins quand ils sont update, ils sont update dans les versions supérieurs donc en restant en 1.8 vous manquer certaine chose.. (l'exemple parfait est Skript où tout les addons et les devs sont destiné à la 1.12)---------------------------------------------------------C'est donc ici que ce conclut mon poste sur pourquoi il n'y a aucune raison de rester en 1.8, je répete si vous n'êtes pas d'accord poster un commentaire constructif !!! Avec tout mes plus sincères remerciement: uiytt
  19. 5 points
    Générer des courbes type f(x)=-x² Difficulté: Partie 1: Difficile | Partie 2: Expert Partie 1 - Les bases mathématiques Une équation du second degrés c'est quoi ? En mathématiques, une équation du second degré est une équation polynomiale de degré 2, c'est-à-dire qu'elle peut s'écrire sous la forme: ax² +bx+c (a,b et c sont des paramètres coefficient dont a différent de 0 et x l'inconnue) Les équations du second degrés sont représentées sur un graphique de la manière suivante: y est appelé "équation de courbe" x1 et x2 représente les deux solution en y=0 de l'équation de courbe. Ces deux solutions nous intéresse pour notre skript en question ainsi que notre équation de courbe. Pour plus d'informations, checkez sur internet ou vos cours de mathématiques de la seconde générale au lycée ^^ Wow trop d'info ! on en fait quoi de l'équation de courbe ? Déjà on va devoir réfléchir à une équation quadratique simple. Pour mon exemple on va prendre y = -0.85x²+100 Version difficile: -0.85x² aura donc les limites suivantes (voir les exemple de la courbe bleu du schéma ci-dessus) - Limx->-inf|x<0 -0.85x² = -infini (quand l'inconnu x ira vers -infini alors -0.85x² ira vers un résultat vers - infini) - Limx->0 -0.85x² = 0 - Limx->+inf|x>0 -0.85x² = -infini En français ça donne ceci: Cette courbe vas donc être croissante pour x allant de -infini à 0 puis décroissante pour x allant de 0 à +infini (cependant l'exemple n'est pas valable pour Lim cos(x) ou Lim sin(x) qui tout deux n'ont pas de limite !) Le +100 nous permet de faire en sorte que f(0)=100 c'est à dire que quand x = 0 (en abscisse) alors y = 100 (en ordonnée) Jusque là ce n'est pas trop difficile de faire de la lecture graphique sur sa calculatrice pour constater de -0.85x²+100 fait une courbe croissante au départ avec une approximation d'un x1 vers -11 puis décroissante à partir de x=0 et la présence d'un x2 vers +11. Version résumé: Si vous êtes paumé, c'est normal xD. Je vous ai expliqué des trucs qui ne sont pas facile à comprendre quand on fait pas des mathématiques plus difficile. Au collège on n'apprend pas ça et au lycée on ne voit que les limites vers la terminal scientifique ou technologique. Pas d'inquiétude, retenez juste le fait que grâce à l'équation -0.85x²+100 on aura une courbe qui monte et qui descend avec des coupure vers des x1 = -11 et x2 =+11. Pour inverser le sens du genre, je veux que la courbe descende puis remonte, il faut juste changer le signe du coefficient a) Partie 2 - L'algorithme Quel repère ? Minecraft étant un jeu 3 dimensions, on va avoir besoin d'un repère 3 dimensions (O,x,y,z) (dont O étant une position absolue) Commençons par le plus simple: positionner notre départ et notre "arrivée". notre point de départ représente le x1 de notre courbe et l'arrivée le x2. On commence par quoi ? Voici 3 commandes: # Supprimer toutes les variables command /reset: trigger: delete {CourbeSk::*} # Poser le départ command /start: trigger: set {CourbeSk::PosStart} to player's location set {CourbeSk::StartX} to x-location of player set {CourbeSk::StartZ} to z-location of player message "&7Position de départ: &aX: %{CourbeSk::StartX}% &7- &aZ: %{CourbeSk::StartZ}%" # Poser la potentielle arrivée command /end: trigger: set {CourbeSk::EndX} to x-location of player set {CourbeSk::EndZ} to z-location of player message "&7Position d'arrivée: &aX: %{CourbeSk::EndX}% &7- &aZ: %{CourbeSk::EndZ}%" On sépare bien les variables X et Z pour pouvoir comparer les distances plus tard. Les 3 commandes ci-dessus sont essentielles pour le reste du skript. Le skript ne va pas deviner la position de départ ni d'arrivée. On va faire ensuite l'algo qui va dire dans quels sens sont le départ et l'arrivée. On va détecter si X-Départ est négatif/positif et plus loin/près que de X-Arrivée par rapport au centre de la map. C'est pas simple à comprendre quand on l'explique en français mais regardez le code vous allez comprendre. command /courbe: trigger: # /// Vérification du sens if {CourbeSk::StartX} > 0: if {CourbeSk::EndX} > 0: if {CourbeSk::EndX} > {CourbeSk::StartX}: set {CourbeSk::SigneX} to 1 message "&cX1 &ax> z> &ee>s &31" if {CourbeSk::EndX} < {CourbeSk::StartX}: set {CourbeSk::SigneX} to -1 message "&cX2 &ax> z> &ee<s &3-1" if {CourbeSk::StartX} < 0: if {CourbeSk::EndX} < 0: if {CourbeSk::EndX} > {CourbeSk::StartX}: set {CourbeSk::SigneX} to 1 message "&cX3 &ax< z< &ee>s &31" if {CourbeSk::EndX} < {CourbeSk::StartX}: set {CourbeSk::SigneX} to -1 message "&cX4 &ax< z< &ee<s &3-1" if {CourbeSk::StartX} > 0: if {CourbeSk::EndX} < 0: if {CourbeSk::EndX} > {CourbeSk::StartX}: set {CourbeSk::SigneX} to 1 message "&cX5 &ax> z< &ee>s &31" if {CourbeSk::EndX} < {CourbeSk::StartX}: set {CourbeSk::SigneX} to -1 message "&cX6 &ax> z< &ee<s &3-1" if {CourbeSk::StartX} < 0: if {CourbeSk::EndX} > 0: if {CourbeSk::EndX} > {CourbeSk::StartX}: set {CourbeSk::SigneX} to 1 message "&cX7 &ax< z> &ee>s &31" if {CourbeSk::EndX} < {CourbeSk::StartX}: set {CourbeSk::SigneX} to -1 message "&cX8 &ax< z> &ee<s &3-1" if {CourbeSk::StartZ} > 0: if {CourbeSk::EndZ} > 0: if {CourbeSk::EndZ} > {CourbeSk::StartZ}: set {CourbeSk::SigneZ} to 1 message "&cZ1 &ax> z> &ee>s &31" if {CourbeSk::EndZ} < {CourbeSk::StartZ}: set {CourbeSk::SigneZ} to -1 message "&cZ2 &ax> z> &ee<s &3-1" if {CourbeSk::StartZ} < 0: if {CourbeSk::EndZ} < 0: if {CourbeSk::EndZ} > {CourbeSk::StartZ}: set {CourbeSk::SigneZ} to 1 message "&cZ3 &ax< z< &ee>s &31" if {CourbeSk::EndZ} < {CourbeSk::StartZ}: set {CourbeSk::SigneZ} to -1 message "&cZ4 &ax< z< &ee>s &3-1" if {CourbeSk::StartZ} > 0: if {CourbeSk::EndZ} < 0: if {CourbeSk::EndZ} > {CourbeSk::StartZ}: set {CourbeSk::SigneZ} to 1 message "&cZ5 &ax> z< &ee>s &31" if {CourbeSk::EndZ} < {CourbeSk::StartZ}: set {CourbeSk::SigneZ} to -1 message "&cZ6 &ax> z> &ee<s &3-1" if {CourbeSk::StartZ} < 0: if {CourbeSk::EndZ} > 0: if {CourbeSk::EndZ} > {CourbeSk::StartZ}: set {CourbeSk::SigneZ} to 1 message "&cZ7 &ax< z> &ee>s &31" if {CourbeSk::EndZ} < {CourbeSk::StartZ}: set {CourbeSk::SigneZ} to -1 message "&cZ8 &ax< z> &ee<s &3-1" L'algo ci-dessus ne sert qu'a savoir la direction d'un vecteur entre deux points. Il peut donc vous servir pour autre chose. Notez que cet algo ne fonctionne que pour des vecteurs horizontaux Quand j'envoie des messages type "Z8 x< z> e<s -1" c'est: - Z8: Huitième paramètres de direction - x< : X négatif - z> : Z positif - e<s : E représente l'arrivée et S le départ. Dans ce cas là le Z-Arrivée est plus petit que Z-Départ - -1 : Représente le signe Grace aux 8 possibilités de X et Z on peut savoir parfaitement le sens d'un vecteurs dans un monde minecraft défini par deux points. Bon, on a fait la moitié ! Le plus difficile reste à faire ^^. On va avoir besoin de calculer les distances entre chaque blocs de la courbe. A noter que la valeur "coefficient réducteur de distance" que je vais citer ne fonctionne que pour cette équation et qu'elle a été trouvée par du bidouillage ! # (P1) /// Définition des distances (P1) set {CourbeSk::CompX} to difference between {CourbeSk::StartX} and {CourbeSk::EndX} set {CourbeSk::CompZ} to difference between {CourbeSk::StartZ} and {CourbeSk::EndZ} # (P2) /// Mise du signe + ou - sur les distances (qui sera reset plus tard) (ce passage est inutile xD) (P2) set {CourbeSk::FianlCompX} to {CourbeSk::SigneX}*{CourbeSk::CompX} set {CourbeSk::FianlCompZ} to {CourbeSk::SigneZ}*{CourbeSk::CompZ} message "&a%{CourbeSk::CompX}% - %{CourbeSk::CompZ}% &7| &6%{CourbeSk::FianlCompX}% - %{CourbeSk::FianlCompZ}%" # (P3) /// Tracage de la courbe (P3) set {_loc} to {CourbeSk::PosStart} set {_y} to 0 set {_x} to 0 # (P4) /// Défintion du coef de distance réducteur (+ la distance sera grande, moins ça sera précis) (P4) set {CourbeSk::LocStartX} to abs({CourbeSk::FianlCompX}/34) set {CourbeSk::LocStartZ} to abs({CourbeSk::FianlCompZ}/34) message "&5%{CourbeSk::LocStartX}% &7 &5%{CourbeSk::LocStartZ}%" (P1): Déjà expliqué, on va prendre la distance des deux points (départ et arrivée) que l'on va diviser plus tard pour avoir une distance relative pour chaque blocs de la courbe. (P2): On défini le signe pour savoir dans quelle direction on va suivant les axes X et Z du monde minecraft. Cette valeur est transmise par l'algorithme de détection de direction. Ce passage est aussi inutile car les signes vont être enlevés par la conversion par valeur absolue (P3): Ce sont les variables temporaires qui vont nous servir pour tracer la courbe (P4): On fait une division pour trouver la valeur qui représentera la distances des blocs en X et Z. 34 est la valeur la plus précise que j'ai trouvé pour être le plus précis. Si vous réduisez cette valeur, la courbe dépassera de plus loin que le point d'arrivé et si vous mettez une trop grande valeur, la courbe s’arrêtera avant le point d'arrivée. On a donc un point d'arrivée qui ne sert que de repère d'arrivée de la courbe. En bidouillant cette valeur, vous pourrez potentiellement tomber sur le point d'arriver. Elle est comprise entre 36 et 33 pour l'équation -0.85x²+100. Une fois ça fait, on attaque l'algo de traçage: loop 300 times: add 1 to {_x} add 0.25 to {_y} set {_result} to ((-0.85)*({_y}*{_y}))+100 if {_result} < 1: if {_result} > -300: #Moitié -100 #message "&7f(&e%{_y}%&7)=&a%{_result}%" # /// Message d'affichage de f(x) = 0.85x²+100 if {_y} <= 30: #Moitée 14.75 # \/ Coeficient de hauteur #(PE) set {_loc} to location {_loc}'s x-coordinate+({CourbeSk::SigneX}*{CourbeSk::LocStartX}), {_loc}'s y-coordinate+({_result}/7)+14, {_loc}'s z-coordinate+({CourbeSk::SigneZ}*{CourbeSk::LocStartZ}) set block at {_loc} to redstone block #message "&7f(&e%{_y}%&7) = &a%{_result}%" # /// Message d'affichage de f(x) = 0.85x²+100 wait 1 tick wait 1 tick Ça c'est notre algo pour tracer la courbe. Pour commencer on loop 300 fois pour avoir une plage de valeur y la plus grande sans trop abuser non plus. Pour une assez bonne précision, on met un pas pour la suite {_y} de 0.25 c'est à dire que que loop de cette variable, on ajouter 0,25. On défini {_result} comme le résultat de l'équation de la courbe à la position de {_y} quand {_x} = nloopé. On check si notre valeur est inférieur à 1 puis supérieur à -200 (c'est environ 32 blocs de check ce qui correspond presque au même Y de départ qu'il y aura à l'arrivée) ou -300 pour être large et aller plus bas que le Y de départ de la courbe. On regarde si {_y} ne dépasse pas une limite de 30 (sachant que 30 représente 120 blocs de checks avec un pas de 0.25) (PE) Si on est bien dans toute les conditions réunies, on pose un bloc en X et Z avec les positions défini précédemment puis on place en Y avec la valeur de notre équation + un coefficient de hauteur (surélever les blocs sinon la courbe ce trace par le bas). {CourbeSk::SigneX} et {CourbeSk::SigneZ} sont soit égale 1 ou -1. C'est le coefficient multiplicateur qui sert à donner le signe du coup il a pour valeur 1 ou -1. Voila, on va donc avoir une jolie courbe comme ceci: J’espère que ce tuto va pouvoir vous aider dans des algorithme complexes ou même basique. Perso je vais m'en servir pour AFR-ICBM (skript à venir très prochainement !) Dans tout les cas n'hésitez pas à le partager et à en faire une bonne grosse utilisation pour prouver à vos potes que Skript c'est pas de la merde si on le met entre de bonne mains . J'ai eu pas mal de mal à le faire même si il m'a demandé qu'une soirée pour le réaliser. J'y ai pensé des heures carrés à le faire et le voila enfin ! J’espère surtout vous avoir débloqué sur des trucs ! Je vais le poster comme ressource sur le forum ^^ Bonne continuation à vous tous !
  20. 5 points
    Hello ! Alors j'avais hésité à poster ça dans la section "Aide", mais du coup celle-ci me paraît pas mal car je n'ai pas encore commencé de base, même si mes recherches vous permettront très certainement de faire ce que je voudrais. Tout d'abord, les versions de MC/Skript/Add-ons: MC: Spigot 1.12.2 Skript: dev36 SkRayFall: dernière version à jour MundoSK: dernière version à jour Skelett: Dernière version à jour /!\ Ce n'est pas un add-on, mais un plugin: ProtocolLib (dernière version à jour) (J'ai mis ici uniquement les add-ons/plugin que je juge nécessaire quant à la tâche demandée) Ensuite, pour ce qui est de la demande: Ranger un tab (pour les joueurs, le header/footer je sais faire sans soucis) en fonction de variables de Skript. Cela veut dire que: Il n'y a aucun (et désolé, c'est une condition nécessaire !) et n'y aura pas de plugin de permissions Il faut ranger uniquement l'intérieur du tab, et ce en script, sans aucun plugins. (Oui, je sais il y a des plugins existants pour, mais j'aimerais juste du script) Cependant, tout add-on ou plugin tel que ProtocolLib peuvent être rajoutés. (Je ne voudrais pas de plugin comme CustomTab par exemple) Pour ce qui est du résultat voulu, c'est le suivant: Un rangement dans l'ordre de puissance du grade (Du genre Admin > Modo > Joueur) dans le tab, et... c'est tout ! Voici le résultat attendu: (On reconnaîtra ici le tab de Hypixel. On a pas admin ou quoi, mais on comprend que c'est ordonné x) Pour vous aider, j'ai pu commencé à chercher la doc etc: %player%'s [mundo[sk]] tab[list] name [mundo[sk]] tab[list] name of %player% (%-tablist%|%-player%'s tablist) contains players new tablist scores enabled in (%-tablist%|%-player%'s tablist) tablist name of %player% (in %-tablist%|for %-player%) %player%'s tablist name (in %-tablist%|for %-player%) tablist score of %player% (in %-tablist%|for %-player%) %player%'s tablist score (in %-tablist%|for %-player%) (show|hide) %players% in (%-tablist%|tab[list] of %player%) set tablist of %players% to %tablist% set %player%'s tablist to %tablist% create tab id %string% (in %-tablist%|for %-player%) with [display] name %string% [(ping|latency) %-number%] [(head|icon|skull) %-skin%] [score %-number%] delete tab id %string% (in %-tablist%|for %-player%) delete all id tabs (in %-tablist%|for %-player%) [display] name of tab id %string% (in %-tablist%|for %-player%) (latency|ping) of tab id %string% (in %-tablist%|for %-player%) (head|icon|skull) of tab id %string% (in %-tablist%|for %-player%) score of tab id %string% (in %-tablist%|for %-player%) (disable|deactivate) array tablist for %player% (enable|activate) array tablist for %player% [with [%-number% columns] [%-number% rows] [initial (head|icon|skull) %-skin%]] [display] name of tab %number%, %number% (in %-tablist%|for %-player%) (latency|ping) of tab %number%, %number% (in %-tablist%|for %-player%) (head|icon|skull) of tab %number%, %number% (in %-tablist%|for %-player%) initial icon of (%-tablist%|%player%'s [array] tablist) score of tab %number%, %number% (in %-tablist%|for %-player%) amount of (0¦column|1¦row)s in (%-tablist%|%-player%'s [array] tablist) (Ça c'est les tablist avec mundoSK et ProtocolLib). Les tablist depuis skripthub: [Contenu masqué] Et enfin le lien de MundoSK où l'auteur donne un exemple de ce qu'on peut faire avec MundoSK et les tabs: [Contenu masqué] Bien entendu, libre à vous de faire comme voulez, si vous arrivez à respecter mes conditions vous êtes géniaux ! Merci d'avance pour l'aide que vous apporterez, que le script soit complet ou non !
  21. 5 points
    Je vais te le faire, sans aucune API hihi:p:p Testé, aucun add-on nécessaire: function G(MM:number,DD:number,YY:number) :: number: if {_MM} > 2: set {_y} to {_YY} set {_m} to {_MM} if {_MM} is 1 or 2: set {_y} to {_YY}-1 set {_m} to {_MM}+12 set {_B} to 0 if {_YY} > 1582: if {_MM} > 10: if {_DD} > 15: set {_A} to floor({_y}/100) set {_B} to 2-{_A}+floor({_A}/4) return floor(365.25*{_y})+floor(30.6001*({_m}+1))+{_DD}+1720994.5+{_B} function JJour(JJ:number) :: string: set {_a} to {_JJ}+1.5 set {_r} to {_a}-7 while {_r} > 7: remove 7 from {_r} set {_d::*} to "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi" and "Dimanche" return {_d::%{_r}%} on command: if command is "jour": cancel event set {_a::*} to arguments split by " " if {_a::1} is set: if {_a::2} parsed as number is set: if {_a::3} parsed as number is set: # /MM /DD /YY if {_a::1} parsed as number is smaller or equal to 12: send "%JJour(G({_a::1} parsed as number,{_a::2} parsed as number,{_a::3} parsed as number))%" else: set {_n} to "%now%" set {_t::*} to first element of {_n} split by " " split by "/" loop {_t::*}: set {_t::%loop-index%} to loop-value parsed as number if loop-index parsed as number is 1: set {_t::%loop-index%} to {_t::%loop-index%}+1 if loop-index parsed as number is 3: set {_t::%loop-index%} to {_t::%loop-index%}+2000 execute player command "/jour %{_t::2}% %{_t::1}% %{_t::3}%" Je demande pas souvent des "likes" mais ca fait plaisir quand on se casse la tête pendant plusieurs minutes. ;) [Fusion de deux messages]
  22. 5 points
    Et oui, j'ai fait un chiffreur ROT (comme vous avez pu le voir sur discord). Par contre, je poste ici car j'ai la flemme de faire une présentation de ressource et tout. Brefffffff. Bon, le but de ce chiffreur est de chiffrer (merci captain obvious) une phrase/une chaine de caractères en ROT (Ou le chiffre de César, c'est la même chose.). Qu'est-ce que c'est? Je vous renvoie sur une page wikipédia : [Contenu masqué]. Aussi, cette fonction a une autre fonctionnalité, et c'est de chiffrer des chiffres via une formule mathématique. Je donnerais des exemples vers la fin de ce post pour que ce soit plus clair ;). La fonction avec tout ce qu'il faut pour qu'elle marche: [spoiler=Le code brut] [spoiler=Le code brut] [spoiler=Le code brut] [/size][/size][/size][/size][/size][/size][/size][/size][/size][/size] [size=1][size=4][size=1][size=4][size=1][size=4][size=1][size=4][size=1][size=4]function Chiffrage(t: text, l: text, f: text, p: player): if file "plugins/Skript/scripts/ChiffreurMSG.sk" doesn't exist: create file "plugins/Skript/scripts/ChiffreurMSG.sk" set {_t} to "%convert {_t} to uppercase%" set {_l::*} to {_l} split at "NbreLettres:" set {_l} to "%{_l::2}%" parsed as integer set {_msglist::*} to {_t} split at "" loop (size of {_msglist::*}) times: set {_f::*} to {_f} split at "Formule:" set {_msg} to {_msglist::%loop-value%} set {_nbre} to loop-value set {_msg} to "%{_msg}%" parsed as integer if {_msg} is an integer: replace all "x" with "%{_msg}%" in {_f::2} wf("on load:","plugins/Skript/scripts/ChiffreurMSG.sk") wf(" set {CFR} to (%{_f::2}%)","plugins/Skript/scripts/ChiffreurMSG.sk") execute console command "/sk reload ChiffreurMSG.sk" replace all "%{_msg}%" with "x" in {_f::2} wait 1 second if {_fullmsg} isn't set: set {_fullmsg} to "" set {_fullmsg} to "%{_fullmsg}%%{CFR}%" delete {CFR} else: loop 26 times: set {_groups::*} to groups 1 of "%{_t}%" matched to "([^a-zA-Z_])" if {_fullmsg} isn't set: set {_fullmsg} to "" loop (size of {_groups::*}) times: if "%{_msg}%" is "%{_groups::%loop-value-3%}%": set {_fullmsg} to "%{_fullmsg}%%{_msg}%" replace all "%{_msg}%%{_msg}%" with "%{_msg}%" in {_fullmsg} exit loop else: if {_msg} is "%{Alphabet::%loop-value-2%}%": set {_nbre2} to loop-value-2 if ({_nbre2} + {_l}) <= 0: set {_lettre} to (26+{_nbre2}+{_l}) replace all "-" with "" in {_lettre} set {_lettre} to {Alphabet::%{_lettre}%} else if ({_nbre2} + {_l}) > 26: set {_lettre} to (({_nbre2} + {_l}) - 26) set {_lettre} to {Alphabet::%{_lettre}%} else: set {_lettre} to ({_nbre2} + {_l}) set {_lettre} to {Alphabet::%{_lettre}%} set {_fullmsg} to "%{_fullmsg}%%{_lettre}%" exit loop if {_msg} is "A": set {_nbre2} to 1 if ({_nbre2} + {_l}) <= 0: set {_lettre} to (26+{_nbre2}+{_l}) replace all "-" with "" in {_lettre} set {_lettre} to {Alphabet::%{_lettre}%} else if ({_nbre2} + {_l}) > 26: set {_lettre} to (({_nbre2} + {_l}) - 26) set {_lettre} to {Alphabet::%{_lettre}%} else: set {_lettre} to ({_nbre2} + {_l}) set {_lettre} to {Alphabet::%{_lettre}%} set {_bckpfullmsg} to {_fullmsg} set {_fullmsg} to "%{_fullmsg}%%{_lettre}%" set {_nxt} to (loop-value-1+1) if "%{_msglist::%{_nxt}%}%" isn't "A": replace all "%{_lettre}%%{_lettre}%" with "%{_lettre}%" in {_fullmsg} else: set {_fullmsg} to "%{_bckpfullmsg}%[%{_lettre}%]" exit loop replace all "<none>" with "" in {_fullmsg} replace all "[" with "" in {_fullmsg} replace all "]" with "" in {_fullmsg} if file "plugins/Skript/Chiffrages.txt" doesn't exist: create file "plugins/Skript/Chiffrages.txt" wf("Chiffrage du %now% :","plugins/Skript/Chiffrages.txt") wf(" %{_fullmsg}%","plugins/Skript/Chiffrages.txt") wf(" Ecart des lettres: %{_l}%","plugins/Skript/Chiffrages.txt") wf(" Formule pour les chiffres: %{_f::2}%","plugins/Skript/Chiffrages.txt") wf(" Message original: %{_t}%","plugins/Skript/Chiffrages.txt") send "&aLe message chiffré a bien été généré." to {_p} send "&aSon emplacement est ""plugins/Skript/Chiffrages.txt"" " to {_p} function wf(s: string, file: string): #Merci à Syst3ms pour cette fonction :^) write {_s} at line (line count of file {_file} + 1) to file {_file} on load: if (size of {Alphabet::*}) = 0: set {Alphabet::*} to "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y" and "Z" on Skript stop: delete "plugins/Skript/scripts/TestChiffrage.sk" delete "plugins/Skript/scripts/ChiffreurMSG.sk" [spoiler=Le code sur hastebin car c'est plus joli] [spoiler=Le code sur hastebin car c'est plus joli] [spoiler=Le code sur hastebin car c'est plus joli] [Contenu masqué] Voilà la fonction et tout ce qui sert à la faire marcher sans être user-friendly. Voici maintenant, la version user-friendly Yay :D. [spoiler=Le code brut encore :kappa:] [spoiler=Le code brut encore :kappa:] [spoiler=Le code brut encore :kappa:] [/size][/size][/size][/size][/size][/size][/size][/size][/size][/size] [size=1][size=4][size=1][size=4][size=1][size=4][size=1][size=4][size=1][size=4]function Chiffrage(t: text, l: text, f: text, p: player): if file "plugins/Skript/scripts/ChiffreurMSG.sk" doesn't exist: create file "plugins/Skript/scripts/ChiffreurMSG.sk" set {_t} to "%convert {_t} to uppercase%" set {_l::*} to {_l} split at "NbreLettres:" set {_l} to "%{_l::2}%" parsed as integer set {_msglist::*} to {_t} split at "" loop (size of {_msglist::*}) times: set {_f::*} to {_f} split at "Formule:" set {_msg} to {_msglist::%loop-value%} set {_nbre} to loop-value set {_msg} to "%{_msg}%" parsed as integer if {_msg} is an integer: replace all "x" with "%{_msg}%" in {_f::2} wf("on load:","plugins/Skript/scripts/ChiffreurMSG.sk") wf(" set {CFR} to (%{_f::2}%)","plugins/Skript/scripts/ChiffreurMSG.sk") execute console command "/sk reload ChiffreurMSG.sk" replace all "%{_msg}%" with "x" in {_f::2} wait 1 second if {_fullmsg} isn't set: set {_fullmsg} to "" set {_fullmsg} to "%{_fullmsg}%%{CFR}%" delete {CFR} else: loop 26 times: set {_groups::*} to groups 1 of "%{_t}%" matched to "([^a-zA-Z_])" if {_fullmsg} isn't set: set {_fullmsg} to "" loop (size of {_groups::*}) times: if "%{_msg}%" is "%{_groups::%loop-value-3%}%": set {_fullmsg} to "%{_fullmsg}%%{_msg}%" replace all "%{_msg}%%{_msg}%" with "%{_msg}%" in {_fullmsg} exit loop else: if {_msg} is "%{Alphabet::%loop-value-2%}%": set {_nbre2} to loop-value-2 if ({_nbre2} + {_l}) <= 0: set {_lettre} to (26+{_nbre2}+{_l}) replace all "-" with "" in {_lettre} set {_lettre} to {Alphabet::%{_lettre}%} else if ({_nbre2} + {_l}) > 26: set {_lettre} to (({_nbre2} + {_l}) - 26) set {_lettre} to {Alphabet::%{_lettre}%} else: set {_lettre} to ({_nbre2} + {_l}) set {_lettre} to {Alphabet::%{_lettre}%} set {_fullmsg} to "%{_fullmsg}%%{_lettre}%" exit loop if {_msg} is "A": set {_nbre2} to 1 if ({_nbre2} + {_l}) <= 0: set {_lettre} to (26+{_nbre2}+{_l}) replace all "-" with "" in {_lettre} set {_lettre} to {Alphabet::%{_lettre}%} else if ({_nbre2} + {_l}) > 26: set {_lettre} to (({_nbre2} + {_l}) - 26) set {_lettre} to {Alphabet::%{_lettre}%} else: set {_lettre} to ({_nbre2} + {_l}) set {_lettre} to {Alphabet::%{_lettre}%} set {_bckpfullmsg} to {_fullmsg} set {_fullmsg} to "%{_fullmsg}%%{_lettre}%" set {_nxt} to (loop-value-1+1) if "%{_msglist::%{_nxt}%}%" isn't "A": replace all "%{_lettre}%%{_lettre}%" with "%{_lettre}%" in {_fullmsg} else: set {_fullmsg} to "%{_bckpfullmsg}%[%{_lettre}%]" exit loop replace all "<none>" with "" in {_fullmsg} replace all "[" with "" in {_fullmsg} replace all "]" with "" in {_fullmsg} if file "plugins/Skript/Chiffrages.txt" doesn't exist: create file "plugins/Skript/Chiffrages.txt" wf("Chiffrage du %now% :","plugins/Skript/Chiffrages.txt") wf(" %{_fullmsg}%","plugins/Skript/Chiffrages.txt") wf(" Ecart des lettres: %{_l}%","plugins/Skript/Chiffrages.txt") wf(" Formule pour les chiffres: %{_f::2}%","plugins/Skript/Chiffrages.txt") wf(" Message original: %{_t}%","plugins/Skript/Chiffrages.txt") send "&aLe message chiffré a bien été généré." to {_p} send "&aSon emplacement est ""plugins/Skript/Chiffrages.txt"" " to {_p} function wf(s: string, file: string): #Merci à Syst3ms pour cette fonction :^) write {_s} at line (line count of file {_file} + 1) to file {_file} on load: if (size of {Alphabet::*}) = 0: set {Alphabet::*} to "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y" and "Z" on Skript stop: delete "plugins/Skript/scripts/TestChiffrage.sk" delete "plugins/Skript/scripts/ChiffreurMSG.sk" command /chiffrage [<text>]: trigger: if arg-1 is "cancel": if {ToChiffrage.%player's UUID%} isn't set: send "&cVous n'avez même pas commencé de chiffrage!" else: delete {ToChiffrage.%player's UUID%} send "&aVous avez bien annulé la demande de chiffrage!" else: if {ToChiffrage.%player's UUID%} isn't set: send "&aBienvenue. Pour chiffrer le message de votre choix, veuillez écrire le message à chiffrer dans le chat." send "&aPour annuler, veuillez faire la commande &6""/chiffrage cancel""&a." send "&c&lATTENTION! Les caractères spéciaux ne seront pas convertis, donc évitez d'utiliser des accents." set {ToChiffrage.%player's UUID%} to "ToSet" on chat: if {ToChiffrage.%player's UUID%} is "ToSet": cancel event set {ToChiffrage.%player's UUID%} to "%message%|SetLettres" send "&aVous avez bien défini le message à chiffrer. Le message à chiffrer sera:" send "&6%message%" send "&aVeuillez désormais mettre le nombre entier (négatif ou positif) pour les lettres..." send "&aSi vous mettez +5 par exemple, ""A"" sera transformé en ""F"". " send "&aEt si vous mettez -5, ""F"" sera transformé en ""A"". " else if {ToChiffrage.%player's UUID%} contains "SetLettres": cancel event set {_nbre} to "%message%" parsed as integer if ({_nbre}+1) = 1: send "&cVeuillez mettre un nombre entier non nul strictement inférieur à 26 et strictement supérieur à -26!" stop else if {_nbre} >= 26: send "&cVeuillez mettre un nombre entier non nul strictement inférieur à 26 et strictement supérieur à -26!" stop else if {_nbre} <= -26: send "&cVeuillez mettre un nombre entier non nul strictement inférieur à 26 et strictement supérieur à -26!" stop else: set {_t::*} to {ToChiffrage.%player's UUID%} split at "|" set {ToChiffrage.%player's UUID%} to "%{_t::1}%|NbreLettres:%message%|SetFormule" send "&aVous avez bien défini le chiffrage des lettres." send "&aPour définir le chiffrage des nombres, il va falloir faire la méthode suivante." send "&aEcrivez la formule avec des ""x"" pour définir où se trouvera le nombre à chiffrer." send "&c&lATTENTION! Veuillez utiliser les opérateurs de programmation!" send "&c&l""*"" pour la multiplication, ""^"" pour les puissances, ""/"" pour les divisions, le reste c'est comme en maths." send "&c&l10x n'est pas acceptable, alors que 10*x est acceptable!" send "&c&lSi vous mettez 10x et que 2 doit être chiffré, ça mettra juste 102 à la place de 20!" else if {ToChiffrage.%player's UUID%} contains "SetFormule": cancel event send "&cTest de la formule en cours..." set {_msg} to "%message%" loop 9 times: replace all "%loop-value%x" with "%loop-value%*x" in {_msg} set {_msgbackup} to "%{_msg}%" replace all "x" with "124563254125" in {_msg} if file "plugins/Skript/scripts/TestChiffrage.sk" doesn't exist: create file "plugins/Skript/scripts/TestChiffrage.sk" wf("on load:","plugins/Skript/scripts/TestChiffrage.sk") wf(" set {_t} to (%{_msg}%)","plugins/Skript/scripts/TestChiffrage.sk") wf(" set {_t} to ({_t}+1)","plugins/Skript/scripts/TestChiffrage.sk") wf(" if {_t} = 1:","plugins/Skript/scripts/TestChiffrage.sk") wf(" set {VerifChiffrage} to ""Failure""","plugins/Skript/scripts/TestChiffrage.sk") wf(" else:","plugins/Skript/scripts/TestChiffrage.sk") wf(" set {VerifChiffrage} to ""Success""","plugins/Skript/scripts/TestChiffrage.sk") execute console command "/sk reload TestChiffrage.sk" wait 1 second if {VerifChiffrage} is "Failure": send "&cVeuillez mettre une formule valide!" delete {VerifChiffrage} else: delete {VerifChiffrage} set {_t::*} to {ToChiffrage.%player's UUID%} split at "|" set {ToChiffrage.%player's UUID%} to "%{_t::1}%|%{_t::2}%|Formule:%{_msgbackup}%" set {_t::*} to {ToChiffrage.%player's UUID%} split at "|" set {_t::2} to "%{_t::2}%" parsed as integer delete {ToChiffrage.%player's UUID%} send "&cGénération du chiffrage..." Chiffrage("%{_t::1}%", "%{_t::2}%", "%{_t::3}%", player) [spoiler=Le code sur hastebin comme d'habitude] [spoiler=Le code sur hastebin comme d'habitude] [spoiler=Le code sur hastebin comme d'habitude] [Contenu masqué] Voici un exemple en GIF, car on aime les gifs quand même Et ça donne ça : Voilà voilà :v
  23. 5 points
    Bonjour, En réponse à votre demande, je vous présente Beautiful Tab List, un petit script permettant d'afficher un message personnalisé dans la liste des joueurs (TAB). Configuration: Tous les messages sont éditables, il suffit de modifier la catégorie "options". Commandes et Permissions: /beautifultablist refresh ou /btl refresh Permet de rafraichir la liste de tous les joueurs. permission: skript.beautifultablist Droits: Vous êtes autorisés à utiliser et modifier ce script comme bon vous semble, mais s'il vous plait, ne le republiez pas, donnez plutôt le lien vers ce sujet. De plus, je vous demanderai de bien vouloir me laisser le crédit de la création de ce script. [spoiler=Beautiful Tab List] # SKRIPT - BeautifulTabList # # # # Description: Permet d''afficher un message personnalisé # # dans la liste des joueurs (TAB). # # Auteur: The__V # # Dependances: Skript, WildSkript, SkRayFall # options: tabHeader: "&5Bienvenue sur %server name% %loop-player%" tabFooter: "&7&oEn ligne: &d%amount of players%&7/&5%max players%" refreshLog: "[beautifulTabList] Raffraichissement des tabLists terminé avec succès." refreshNotif: "&7[&b&lBeautifulTabList&r&7] &bRaffraichissement des tabLists terminé avec succès." On Skript Start: execute console command "/beautifultablist refresh" On Join: execute console command "/beautifultablist refresh" On Quit: execute console command "/beautifultablist refresh" command /beautifultablist refresh: aliases: btl description: Permet de rafraichir les tabLists de tous les joueurs. Requis en cas modification des messages. permission: skript.beautifultablist executable by: console and players trigger: loop all players: set tab header to {@tabHeader} and footer to {@tabFooter} for loop-player wait 1 tick log {@refreshLog} if command sender is not console: message {@refreshNotif} to the command sender
  24. 4 points
    Hey, souvent on voit des demandes d'aide qui consistent en un "ça marche pas, voici mon code". @PsYZiiK avait proposé un formulaire, mais chaque cas étant ce qu'il est, il est difficile d'en avoir un qui couvre vraiment tous ces cas. Aujourd'hui, je vous propose donc de trouver les problèmes de vos plugins pour vous en débarrasser vous-même et ainsi désengorger la section Aide et vous permettre de dire précisément où se situe votre problème aux gens qui vous aident. 1. Les messages d'erreur de Skript Ce qui est génial avec ces messages qui s'affichent quand on recharge un plugin Skript, c'est qu'ils sont (souvent) courts et simples à comprendre. Ils se présentent comme ceci : Explication de l'erreur (Plugin.sk, line X: 'Instruction mise en cause') La ligne C'est le plus important en fait et y'a plein de gens qui passent à côté en lisant leur message d'erreur. Et le principe est tout simple, évident même : c'est la ligne où Skript a trouvé une erreur en chargeant le plugin. Alors pas la peine de désespérer en cherchant d'où peut venir le problème quand vous avez un message d'erreur, c'est écrit exactement où vous devez regarder. Instruction mise en cause C'est juste un copier/coller de la ligne d'où vient le problème. Pour le coup, c'est une partie un peu inutile. Si vous avez le numéro de la ligne -ce qui est toujours le cas-, cette partie du message risque de vous servir rarement. Par contre, si la ligne en question est très longue, cette partie risque de prendre beaucoup de place et rendre le message un peu plus difficile à lire. Le plugin.sk C'est juste au cas où vous rechargez plusieurs plugins en même temps et que du coup, vous ne savez pas si l'erreur vient du premier, du deuxième ou du douzième. L'explication de l'erreur Ici, c'est ce qui va vous permettre, après avoir localisé le problème, de savoir ce qu'il est. Je vais développer un peu chacun d'eux plus loin. indentation error: expected X tabs, but found Y tabs Ce message est un peu particulier, parce qu'en général, il est présent plusieurs fois pour une seule erreur, mais il est très fréquent quand on débute. Il apparaît quand Skript trouve une incohérence dans les tabulations (tabs). Le cas le plus répandu, c'est quand on oublie de mettre deux points ":" à la fin d'une condition ou d'un événement. Dans ce cas, Skript considère la ligne de l'oubli comme une condition sans if ou un effet, deux cas où les lignes suivantes doivent être au même niveau que l'instruction en cause. Du coup, le fait que toutes les lignes suivantes soient décalées d'une tabulation fait que Skript les voit comme mal placées et signale une erreur pour chacune d'elles alors que la ligne où se situe le vrai problème n'est pas signalée par ce message. En revanche, la bonne ligne est souvent signalée par le message d'erreur suivant. Can't understand this condition/effect : Instruction Cette explication, c'est celle qui apparaît quand Skript ne reconnaît pas la syntaxe que vous avez utilisée dans une instruction sans deux points ":" à la fin. Le problème : - comme je disais au dessus, peut venir du fait qu'il manque les deux points ":", puisque Skript lit très différemment les instructions avec et sans. - mais le plus souvent, le problème est que la syntaxe n'est pas reconnue parce qu'elle est ajoutée par un add-on que vous n'avez pas installé ou qui n'est pas à la bonne version (ou de Skript qui n'est pas à la bonne version). Si vous ne savez pas de quel add-on vient une instruction, cherchez-la sur internet. - une autre cause récurrente. c'est que vous vous êtes juste trompé en écrivant l'instruction et que Skript ne comprend pas si c'est juste à peu près la bonne instruction. Dans ce cas, vérifiez la syntaxe là aussi en cherchant l'instruction sur internet. Le mot syntaxe comprend aussi les types d'arguments que vous utilisez. Si vous tentez de mettre potato là où Skript attendait un nombre, vous aurez le même message. Vous pouvez trouver la grande majorité des instructions et les add-ons dont elles dépendent sur SkUnity, ainsi que leur syntaxe, simplement en tapant le début dans le moteur de recherche en haut à droite. Empty configuration section! You might want to indent one or more of the subsequent lines to make them belong to this section or remove the colon at the end of the line if you don't want this line to start a section. Bon je sais, c'est long comme message, mais c'est très simple. Si vous avez une instruction qui finit par deux points ":", mais que la ligne en dessous n'a pas une tabulation en plus, le message apparaît pour dire qu'il faut soit retirer les deux points ":" soit ajouter la tabulation qui manque pour les instructions qui dépendent de celle qui pose problème. En général, on est tête en l'air et il fallait ajouter la tabulation. Beaucoup d'autres messages d'erreurs Il existe beaucoup d'autres erreurs, mais elles sont pour la plupart très simples à comprendre et ne nécessitent pas spécialement d'être développées. Si vous ne comprenez pas, un traducteur en ligne devrait faire l'affaire. Et si vous ne trouvez pas votre bonheur, vous avez toujours la possibilité de chercher votre erreur sur internet au cas où quelqu'un aurait eu le même problème et si vous êtes désespérés, vous pouvez poster un topic dans les demandes d'aide, où vous devrez donner l'erreur qui vous bloque, la partie du code liée, voire le code entier si vous n'êtes pas sûr d'avoir tous les éléments dans une partie réduite et dire ce que vous essayez de faire, puis tout ce que vous avez tenté pour résoudre le problème. 2. Les messages d'erreur Java Hors des messages d'erreur de Skript, on croise parfois d'autres messages qui proviennent des add-on ou de Skript directement. Les messages dans le tchat qui commencent par "An error occured while..." signalent qu'il y a un message d'erreur de ce type à lire dans la console, même si pas toujours. La difficulté de ces messages, c'est qu'ils sont longs et moins explicites. Dans cette partie, on va prendre un exemple très courant : [spoiler=An internal error occurred while checking for the latest version of Skript] [16:11:49] [skript update thread/INFO]: [0;37;22m[[0;33;22mSkript[0;37;22m][m [0;31;22mAn internal error occurred while checking for the latest version of Skript. Please refer to the server log for details.[m [16:11:49] [skript update thread/ERROR]: #!#! [16:11:49] [skript update thread/ERROR]: #!#! [skript] Severe Error: [16:11:49] [skript update thread/ERROR]: #!#! Unexpected error while checking for a new version of Skript [16:11:49] [skript update thread/ERROR]: #!#! [16:11:49] [skript update thread/ERROR]: #!#! If you're developing an add-on for Skript this likely means that you have done something wrong. [16:11:49] [skript update thread/ERROR]: #!#! If you're a server admin however please go to [Contenu masqué] [16:11:49] [skript update thread/ERROR]: #!#! and check whether this error has already been reported. [16:11:49] [skript update thread/ERROR]: #!#! If not please reply with meaningful content, copy & paste this whole error into a pastebin ([Contenu masqué]), [16:11:49] [skript update thread/ERROR]: #!#! and describe what you did before it happened and/or what you think caused the error. [16:11:49] [skript update thread/ERROR]: #!#! If you think that it's a trigger that's causing the error please post the trigger as well. [16:11:49] [skript update thread/ERROR]: #!#! By following this guide fixing the error should be easy and done fast. IF YOU DON'T FOLLOW IT, WE'LL HUNT YOU DOWN. [16:11:49] [skript update thread/ERROR]: #!#! [16:11:49] [skript update thread/ERROR]: #!#! Stack trace: [16:11:49] [skript update thread/ERROR]: #!#! javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,1] Message: Fin prématurée du fichier. [16:11:49] [skript update thread/ERROR]: #!#! at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(Unknown Source) [16:11:49] [skript update thread/ERROR]: #!#! at com.sun.xml.internal.stream.XMLEventReaderImpl.nextEvent(Unknown Source) [16:11:49] [skript update thread/ERROR]: #!#! at ch.njol.skript.Updater.getChangelogs(Updater.java:286) [16:11:49] [skript update thread/ERROR]: #!#! at ch.njol.skript.Updater$2.run(Updater.java:210) [16:11:49] [skript update thread/ERROR]: #!#! at java.lang.Thread.run(Unknown Source) [16:11:49] [skript update thread/ERROR]: #!#! [16:11:49] [skript update thread/ERROR]: #!#! Version Information: [16:11:49] [skript update thread/ERROR]: #!#! Skript: 2.2-Fixes-V9b [16:11:49] [skript update thread/ERROR]: #!#! Bukkit: 1.10-R0.1-SNAPSHOT [16:11:49] [skript update thread/ERROR]: #!#! Minecraft: 1.10 [16:11:49] [skript update thread/ERROR]: #!#! Java: 1.8.0_101 (Java HotSpot(TM) Client VM 25.101-b13) [16:11:49] [skript update thread/ERROR]: #!#! OS: Windows 10 x86 10.0 [16:11:49] [skript update thread/ERROR]: #!#! [16:11:49] [skript update thread/ERROR]: #!#! Running CraftBukkit: false [16:11:49] [skript update thread/ERROR]: #!#! [16:11:49] [skript update thread/ERROR]: #!#! Current node: set {_Ligne} to line 2 of lore of player's tool (Entraînement au tir.sk, line 36) [16:11:49] [skript update thread/ERROR]: #!#! Current item: null [16:11:49] [skript update thread/ERROR]: #!#! [16:11:49] [skript update thread/ERROR]: #!#! Thread: Skript update thread [16:11:49] [skript update thread/ERROR]: #!#! [16:11:49] [skript update thread/ERROR]: #!#! End of Error. [16:11:49] [skript update thread/ERROR]: #!#! A noter que la plupart des informations sont présentes dans le début de l'erreur. On a donc ça (étalé sur deux lignes) : [skript] Severe Error: Unexpected error while checking for a new version of Skript Le premier mot, c'est Skript, mais ça veut pas dire que le problème vient forcément du plugin Skript lui-même, donc on n'apprend pas grand chose. C'est la ligne qui suit les deux points qui est plus intéressante. Elle indique ce que le plugin cherchait à faire quand l'erreur est arrivée. Dans notre cas, Skript cherchait à vérifier si une nouvelle version n'était pas disponible. Dans ce cas-ci, puisque normalement, vous ne tournez pas sur la dernière version de Skript, cette erreur est sans importance et dans ce cas-ci, il vaut mieux désactiver le checking de nouvelle version dans la config' du plugin. Après, je suis pas forcément bien calé en java donc je vais pas trop insister sur cette partie, ça pourrait être cool que quelqu'un la fasse. Le mieux, si l'erreur est incompréhensible pour vous aussi, c'est de chercher le début sur Google avec des guillemets ("votre erreur"). 3. Ça marche pas, mais y'a pas de message d'erreur Agent 007, voici votre équipement pour cette mission : broadcast "Le joueur est dans le bon monde" broadcast "%{Variable}%" send "Il a bien un bâton dans la main" to console Ces outils, les plus élémentaires qui soient, permettent de localiser à peu près n'importe quel problème par logique. Une fois le problème repéré, on peut, au mieux le résoudre soi-même, au pire en donner tous les éléments dans une demande d'aide au lieu d'un "ça marche pas svp". L'intérêt donc des instructions énoncées au dessus, c'est qu'en les disposant un peu partout dans son code, on peut savoir ce qui se passe exactement lorsqu'on exécute son plugin, en regardant quels messages se sont affichés ou non.
  25. 4 points
    Hey ! J’ai eu un petit problème m’empêchant de me servir de TusKe pour transformer l’UUID d’un joueur en son pseudo donc j’ai bricolé un peu et j’ai fait ça, c’est certainement pas la meilleure solution mais ça dépanne si vous avez besoin de passer de l'UUID au pseudo sachant que le joueur ne s'est jamais connecté à votre serveur. function UUIDtoPlayer(t: text) :: offline player: set {_a} to text from "[Contenu masqué]" set {_list::*} to split {_a} at "{" set {_list::*} to split "%last element out of {_list::*}%" at """" return "%{_list::4}%" parsed as offline player Je l'ai fait en 1.12.2, vous aurez sûrement besoin d'un addon pour les requêtes, après le reste je ne pense pas. Je me sers de SkQuery mais je vous conseille Reqn qui est bien plus sécurisé.
  26. 4 points
    Bonjour, aujourd'hui je vais vous montrer comment mettre le nombre de personnes connectées sur un serveur dans une variable, cela marche pour les serveurs BungeeCord et tout les autres. Le codes est simple: Command /infox: trigger: set {_g} to text from "[Contenu masqué]" send "&7Nombre de joueurs connéctés sur &eEpiCube&7: %{_g}%" Voici un exemple en mettant l'IP d'Epicube:
  27. 4 points
    Bonjour! Dans Skript, il y a quelques chose qui plutôt pratique, c'est de pouvoir attribuer une variable à un joueur, un uuid, un monde etc... Par exemple la variable {test.%player%} change à chaque joueur. Ou alors {test.%event-block%} change en fonction du bloc Et bien en Java c'est possible ? Dans ce tuto, je ne traiterai pas d'enregistrer ces variables dans des fichiers, ça je ferais peut-être plus tard dans un autre tuto. Ces variables s'appellent des HashMap. Un HashMap est constitué d'une clé (key) et d'une valeur (value). A chaque clé est associée une valeur. Une clé est une variable de n'importe quel type, mais c'est bien souvent un String. Si vous recherchez une variable dans le HashMap qui est identique à la clé, alors vous récupérerez la valeur associé. Les HashMaps permettent aussi d'enregistrer des variables temporairement, sans charger le fichier de sauvegarde à chaque fois car ça bouffe ÉNORMÉMENT de ressources de faire ça. Bon maintenant passons à la pratique! Pour retrouver l'utilité des variables de Skript, les HashMap doivent être déclaré juste après le "public class", avant toute fonction. Les HashMap contiennent deux type de variable, un pour la clé et un pour la valeur. Ces types de variables peuvent être différents ou les même, ce sera déterminé en fonction de ce que vous en ferez. Voila à quoi ressemble un HashMap: HashMap<String, Double> variable; Le String est donc le type de clé et le double est le type de la valeur associée. Voilà maintenant comment déclarer cette variable: public class Exemple extends JavaPlugin implements Listener { static HashMap<String, Double> missions = new HashMap<String, Double>(); @Override public void onEnable() { //CODE } } Vous pouvez changer le "static" en "public static" si vous voulez que cette variable puisse être lu par d'autres classe ou même enlever le "static" si vous n'utilisez pas de fonctions static. Maintenant on va apprendre à mettre et récupérer des infos de cette variable. Dans les exemples suivant, ma variable sera nommé "exemple". Si vous voulez mettre des joueurs ou d'autre choses en clé, je vous conseille de mettre un String, souvent avec le nom. Ça évite de charger des grosses variables comme les Player et les noms ne bougent pas. Voilà comment mettre une clé et une valeur: exemple.put(key, value); Et voici comment récupérer une valeur: exemple.get(key); Pour tester si le HashMap contient une clé: exemple.containsKey(key); Pour tester si le HashMap contient une valeur: exemple.containsValue(value); Pour finir un petit exemple. On enregistre ici une variable contenant un nombre de point d'un joueur. La clé est donc le nom du joueur et la valeur son nombre de points. public class Exemple extends JavaPlugin implements Listener { static HashMap<String, Integer> points = new HashMap<String, Integer>(); @Override public void onEnable() { } @EventHandler public void onJoin(PlayerJoinEvent e) { Integer pts = 1; //Normalement je charge de mon fichier de config mais là c'est un exemple points.put(e.getPlayer().getName(), pts); } } Maintenant imaginons qu'à sa déconnexion je sauvegarde ses points. J'utilise donc: public class Exemple extends JavaPlugin implements Listener { static HashMap<String, Integer> points = new HashMap<String, Integer>(); @Override public void onEnable() { } @EventHandler public void onLeave(PlayerQuitEvent e) { Player p = e.getPlayer(); //Je crée une variable pour raccourcir le code if(points.containsKey(p.getName())) { Integer pts = points.get(p.getName()); //Là j'utilise ma fonction pour sauvegarder les points } } } Voilà! Encore une fois j'espère avoir été assez clair et que ce tuto vous sera utile ? (un p'tit like ça fait toujours plaisir aussi :D) Et je vous invite à me demander sur quel thème voulez vous que mon prochain tuto soit ?
  28. 4 points
    Bonjour à tous ! Aujourd'hui, je vais vous aider à préparer votre lobby pour l'arrivé de vos joueurs. Difficulté » ●●●●● Prérequis Vous aurez seulement besoin de skript. -[●]- Skript -[●]- Vous l'avez ? Alors c'est partis ! Code Tout d'abord nous allons créer deux options pour ne pas devoir retaper 150 000x la même chose options: prefix: &8[&rNom de votre serveur&8] # Ceci est le préfixe affiché devant chacuns des messages qui seront envoyé à vos joueurs. Vous pouvez utiliser le nom de votre serveur ou autre chose. permission: lobby.use # Ceci est la permission que vous devrez vous assigner pour avoir accès à toutes les commandes restreintes. Ensuite nous allons créer deux commandes, celle qui nous permettra de placer l'endroit où les joueurs apparaîtront dés leurs connexion et celle qui permettra à vos joueurs de retourner au lobby facilement. command /setlobby: trigger: if player has permission "{@permission}": # La permission. set {lobby} to location of player # Une variable qui nous sera utile plus tard send "{@prefix} &7Le lobby à été positionné en &6%location% &7!" to player # Un petit message. stop # Arrêt de la commande. else: # Si le joueur n'a pas la permission "lobby.use". send "{@prefix} &7Vos permissions sont insufisantes !" to player # On lui envoie un message. stop # On empêche la commande de s'executer. command /lobby: aliases: /hub trigger: teleport player to {lobby} # On téléporte le joueur au lobby clear player's inventory # On clear l'inventaire du joueur. set player's gamemode to adventure # On met le joueur en aventure pour qu'il ne puisse pas casser ni poser de blocks. set slot 0 of player to compass named "&bJeux" # Ceci est un exemple. set slot 1 of player to raw clownfish named "&dAmis" # Ceci est un exemple. set slot 2 of player to gold ingot named "&6Boutique" # Ceci est un exemple. stop # La commande s'arrête. Maintenant, nous allons configurer le message de join/quit et les objets du lobby (boutique, jeux, ...) on join: set join message to "" # On set le message de join à ... rien du tout. wait 1 second # On attend 1 secondes pour que le broadcast puisse s'effectuer sans problème. broadcast "&8[&a+&8] &f%joueur%" in world "Lobby" # On envois un message sur tout le lobby annonçant la connexion du joueur. teleport player to {lobby} # On le téléporte au lobby. clear player's inventory # On clear l'inventaire du joueur. set player's gamemode to adventure # On met le joueur en aventure pour qu'il ne puisse pas casser ni poser de blocks. set slot 0 of player to compass named "&bJeux" # Ceci est un exemple. set slot 1 of player to raw clownfish named "&dAmis" # Ceci est un exemple. set slot 2 of player to gold ingot named "&6Boutique" # Ceci est un exemple. stop on quit: set quit message to "" # On set le message de quit à ... rien du tout. wait 1 second # On attend 1 secondes pour que le broadcast puisse s'effectuer sans problème. broadcast "&8[&c-&8] &f%joueur%" in world "Lobby" # On envois un message sur tout le lobby annonçant la déconnexion du joueur. stop Maintenant, nous allons empêcher les joueurs de prendre des dégâts, de poser et casser des blocks, de récupérer et de jeter des objets et d’inter-changer la postions des objets étant dans leurs inventaire mais aussi désactiver la pluie et le fait d'avoir faim. on inventory click: # Empêcher de bouger les objets dans l'inventaire if player is in world "Lobby": cancel event on hunger meter change: # Empêcher d'avoir faim if player is in world "Lobby": cancel event on weather change: # Empêcher la pluie,... cancel event on place: # Empêcher de poser des blocks if player is in world "Lobby": cancel event on break: # Empêcher de casser des blocks if player is in world "Lobby": cancel event on pickup: # empêcher de récuperer des objets if player is in world "Lobby": cancel event on drop: # empêcher de jeter des objets if player is in world "Lobby": cancel event on damage: # empêcher de prendre des dégats if victim is in world "Lobby": cancel event Maintenant, je vais vous montrer comment bloquer certaines commandes à vos joueurs, vous n'aurez cas prendre celle que vous voulez bloquer. on command "/plugins": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vous n'avez pas l'autorisation de voir ceci !" to player stop on command "/plugin": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vous n'avez pas l'autorisation de voir ceci !" to player stop on command "/pl": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vous n'avez pas l'autorisation de voir ceci !" to player stop on command "/bukkit:plugins": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vous n'avez pas l'autorisation de voir ceci !" to player stop on command "/bukkit:plugin": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vous n'avez pas l'autorisation de voir ceci !" to player stop on command "/bukkit:pl": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vous n'avez pas l'autorisation de voir ceci !" to player stop on command "/tps": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vous n'avez pas l'autorisation de voir ceci !" to player stop on command "/skript": if player doesn't have permission "{@permission}": cancel event send "&fCette commande n'existe pas." to player stop on command "/sk": if player doesn't have permission "{@permission}": cancel event send "&fCette commande n'existe pas." to player stop on command "/mv": # Ajoutez cette commande dans votre code uniquement si vous utilisez Multiverse-Core ! if player doesn't have permission "{@permission}": cancel event send "&fCette commande n'existe pas." to player stop on command "/list": cancel event send "{@prefix} &7Il y a actuellement &3%amount of players% joueurs &7connectés sur le serveur !" to player stop on command "/skin": # Ajoutez cette commande dans votre code uniquement si vous utiliser Skin-Restorer ! ( Mettez la si vous ne voulez pas que vos joueurs changent leurs skins. ) if player doesn't have permission "{@permission}": cancel event send "&fCommande inconnue." to player stop on command "/restart": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vos permissions sont insufisantes !" to player stop on command "/spigot:restart": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vos permissions sont insufisantes !" to player stop on command "/bukkit:restart": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vos permissions sont insufisantes !" to player stop on command "/stop": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vos permissions sont insufisantes !" to player stop on command "/spigot:stop": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vos permissions sont insufisantes !" to player stop on command "/bukkit:stop": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vos permissions sont insufisantes !" to player stop on command "/reload": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vos permissions sont insufisantes !" to player stop on command "/spigot:reload": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vos permissions sont insufisantes !" to player stop on command "/bukkit:reload": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vos permissions sont insufisantes !" to player stop on command "/rl": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vos permissions sont insufisantes !" to player stop on command "/bukkit:rl": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vos permissions sont insufisantes !" to player stop on command "/spigot:rl": if player doesn't have permission "{@permission}": cancel event send "{@prefix} &7Vos permissions sont insufisantes !" to player stop Voilà, votre lobby est protéger et prêt à accueillir vos joueurs. J'espère que ce tutoriel vous à plu, si c'est le cas, n'hésitez pas à mettre un like et à laisser un petit commentaire. Bonne journée ! Il y aura bientôt de future mise à jours concernant ce tutoriel, une fois qu'il sera fini, je vous donnerais un lien pour télécharger le skript pour vous éviter de tout retaper ^^
  29. 4 points
    Avez vous vu ce titre ? Ce titre dont personne ne se doutait et qui pourtant est vrai ? Je vous le confirme aujourd'hui, il est possible de faire des serveurs moddés 1.12.2 avec Skript. Adieux les serveurs moddés 1.7.10 avec skript qui ne fonctionne pas, ou mal. Adieux les versions de Skript qui date en année. Aujourd'hui je vais vous expliqué comment faire un serveur 1.12.2 moddé avec skript, alors écoutez bien car je ne le répéterais pas deux fois ? Sommaire: - Présentation d'Atom et des compatibilités avec Skript - Installation - Crédits Présentation d'Atom: Atom est un projet qui est apparut cette année très rapidement, et qui commence à pas mal se faire connaitre. En effet, comme Cauldron ou Thermos, celui-ci combine les plugins bukkit/spigot et les mods de Forge. De plus, Cauldron et Thermos ont été fermé et abandonné car ils ne respectaient à priori pas les règles de Mojang, mais Atom semble les respecté. Ainsi, cette année encore, de nombreux développeurs ont utilisés des serveurs Cauldron 1.7.10, ne pouvant pas codé en 1.12.2 avec Skript, pour cause de compatibilité. Mais cette règle a été abolit ! Désormais c'est possible ! Attention, seul Skript les versions de skript dev37c ou inférieur sont, à l'heure où je parle, compatible avec la version d'Atom dont je parlerais ici. Installation (Windows): 1) Allez sur le gitlab du projet, dans la partie "pipeline": [Contenu masqué] 2) Téléchargez la dernière version d'Atom (Download build artifacts) : 3) Créer un nouveau dossier, qu'on appellera ici "Atom_server_test" 4) Ouvrez l'archive que vous avez télécharger à l'étape 2. 5) Déplacez le dossier "librairies" dans votre nouveau dossier, qui ici est "Atom_server_test" 6) Toujours dans l'archive, allez dans le dossier "libs" et déplacez le fichier finissant par "-server" à la fin de son nom dans le dossier de votre serveur, ici "Atom_server_test" 7) Renommez le fichier avec "-server" à la fin en "Atom" tout simplement ? Créez un fichier "eula.txt", mettez dedans "eula=true", et sauvegarder votre fichier 9) Créer un fichier "start" avec une extension ".bat" , et collez dedans: cls java -Xmx1G -jar Atom.jar pause Pensez à sauvegarder le fichier. 10) Vérifiez bien que vous avez la même chose que sur cette image: Si votre dossier ressemble bien à ca, double cliquez sur votre fichier "start.bat" et votre serveur sera enfin créer ! Yeah! Crédit : Découverte du projet Atom grâce à Boucki et Nathanaël: Discord du projet: [Contenu masqué]
  30. 4 points
    Charte de confidentialité Mise à jour 28 Janvier 2021 Ce que nous faisons avec vos données Le terme « données personnelles » tel qu'utilisé ici est défini comme n'importe quelles informations identifiants ou pouvant être utilisées pour identifier, contacter ou localiser la personne à qui ses informations se rapportent. Les données personnelles que nous récupérons sont soumises à la présente Charte de Confidentialité, selon les modifications qui y seront apportées de temps à autre. Quand vous vous inscrivez sur SkriptMC, nous vous demandons plusieurs informations personnelles vous concernant comme par exemple votre date d'anniversaire, votre adresse email et nous récupérons automatiquement certaines données comme votre adresse IP, votre pays et tous autres signatures numériques. EN D'AUTRES TERMES En vous inscrivant ou en utilisant un de nos services, vous fournissez des données personnelles que nous récupérons et utilisons uniquement dans les services que SkriptMC fourni. Ce que SkriptMC collecte comme données Votre pseudonyme Votre date de naissance et votre âge Votre adresse de messagerie (email) Votre mot de passe (hashé) Votre adresse IP Votre pays Votre navigateur internet et la version de celui-ci Votre langue Votre temps de connexion et de déconnexion Vos actions effectuées sur nos plateformes Les données que nous collectons sont recueillis au travers de formulaires et grâce à l'interactivité établie entre vous et SkriptMC. Nous utilisons également, comme indiqué dans la section suivante, des fichiers témoins (cookies) et/ou journaux pour réunir des informations vous concernant. Comment nous sécurisons vos données La sécurité de vos données personnelles est importante à nos yeux. Quand vous saisissez des informations sensibles, comme votre mot de passe, dans nos formulaires d'inscription ou de connexion, nous chiffrons la transmission de ces informations à l'aide du protocole de sécurisation des échanges (SSL). Les informations sont stockées et chiffrées. Stockage de vos données personnelles SkriptMC détient le droit de stockage des données, des bases de données et tous les droits de SkriptMC, mais nous ne réclamons aucun droit sur vos données. Vous gardez le contrôle sur vos données. Vous pouvez exercer votre droit d’accès, de modification et d’opposition en nous écrivant à l’adresse suivante. [email protected] Dans ce cas, vous devez nous indiquer les Données Personnelles que vous souhaitez que SkriptMC corrige, mette à jour ou supprime, en s’identifiant précisément avec une copie d’une pièce d’identité (carte d’identité ou passeport). EN D'AUTRES TERMES Vous êtes propriétaire de vos données et nous respectons ça. Divulguons-nous certaines de vos données personnelles ? Vos données sont uniquement utilisés à des fins de sécurisation, et de statistiques EN D'AUTRES TERMES Nous ne vendons pas et ne fournissons pas vos données personnelles à d'autres sociétés pour la commercialisation de leurs propres produits et services. Modifications de la présente Charte de confidentialité Nous nous réservons le droit de modifier la présente déclaration à tout moment, alors veuillez la relire fréquemment. Si nous effectuons des changements matériels à la présente politique, nous vous le ferons savoir ici ou à l'aide d'une annonce sur nos réseaux sociaux de façon à ce que vous sachiez quelles informations nous récupérons et comment nous les utilisons.
  31. 4 points
    Bonsoir, il me semble nécessaire d’éclaircir quelques points. Quel serait l'intérêt d'un effet venant de Skript s'il faut un add-on pour en faire l'usage ? La réponse semble évidente... Très certainement pour une question d’esthétique ou parce qu'ils font un autre usage de cet add-on. Tout à fait, la seule contrainte est le format [DATE] <texte> , mais pour quelqu'un de pas trop difficile ça fait l'affaire Note: il est également possible d'écrire directement dans les logs du serveur, et ainsi de tirer profit de la compression du fichier une fois le serveur redémarré/éteint. Conseil: on ne croit que ce que l'on a essayé. _________________________________________________________________________________________ Pour finir, ton fragment de code demeure tout de même utile pour les membres souhaitant s'initier au fonctionnement de skript-mirror/à la manipulation de fichiers.
  32. 4 points
    Salut salut Quoi de neuf cette semaine ? Et bien voila l'apparition d'un market pour les membres ! Votre activité sur le forum vous permettra de gagner des avantages sur plusieurs niveaux ! Je vous explique en détail: I Description: L'onglet "Marché" vous offre un maximum de choix dans des récompenses ou dans des lots. Ces lots vous allez pouvoir les utiliser ou les donner à d'autres membres. J'ai fait pas mal de lots donc vous regarderez par vous même ^^ Votre activité sur des catégories vous permettra de gagner des points. Un tableau des points par catégories sera posté plus bas dans le topic. En aucun cas les crédits peuvent être gagnés avec de l'argent ! En bref, vous serez récompensé lors de votre activité sur le forum. II Les Ressources: Voila une petite nouveauté mais, que je pense ne va pas être trop utile, l'application "Marché" vous propose de faire des échanges. En gros, vous allez pouvoir échanger des crédits contre une ressource. Soyez raisonnable car avoir des crédits n'est pas une chose facile en grande quantité ! Essayez et vous verrez. Mais je rappel que les crédits ne peuvent être obtenus avec du vrai argent ! Seul votre activité compte ! III Crédits et topics: Comment obtenir des crédits ? Il suffit de créer et de répondre à des topics dans différente catégories. Voici une liste qui récapitule les points gagnés par topics: Annonces et Événements: 3 crédits par réponse et par création d'un topic Présentation des membres et Café des membres: 1 crédit par réponse et par création d'un topic Skript-School: 10 crédits par topics créés et 2 crédits par réponses CV: 4 crédits par topics créés Suggestions Skript: 2 crédits par topics créés et 2 crédits par réponses Demande de skripts et aides: 2 crédits par topics créés et 2 crédits par réponses Tutoriels: 10 crédits par topics créés, 3 crédits par réponses et 5 crédits par réponses pour l'auteur du topic Boites à outils: 10 crédits par topics créés, 2 crédits par réponses et 3 crédits par réponses pour l'auteur du topic Les crédits peuvent être stockés dans votre banque. Les placement vous rapporterons suivant un certain temps. Les crédits peuvent être donné via un bouton "Donner crédits" sur chaque message des membres ou via le profil d'un membre ou via un bouton en cliquant sur votre profil en haut à droite. IV Les objets: Bon, j'avoue avoir un peu exploité le système xD, mais des objets y'en a en quantité astronomique et pour tout les gouts ! Les objets sont répertoriés en 5 catégories: - Bonus de profil: - Changer de pseudo - Changer de titre - Bonus de seconde chance - Bonus de Forum: - Epingler un topic 3J - Epingler un topic 5J - Epingler un topic 7J - Epingler un topic 7J (Avantage) - Bonus de Ressources: - Featured 3J - Featured 5J - Featured 7J - Featured 7J (Avantage) - Cadeaux: - Petite boite de crédits - Moyenne boite de crédits - Grosse boite de crédits - Récompenses Concours: LOT OBTENABLE UNIQUEMENT LORS DES CONCOURS INTERNES - Epingler un topic 5J - Featured 5J - Petite boite de crédits Bref y'a plein de petits tous plus sympas que les autres. Pour afficher la description des lots, il suffit de cliquer sur "Description de l'objet". Je rappel qu'il n'y a aucune micro-transaction donc qu'il est impossible d'utiliser sa carte bleu pour avoir du crédit ^^ Bref j’espère que cette nouvelle grosse mise à jour que je prépare depuis quelques semaines déjà vous plaira, n'hésitez pas à me report des problèmes de traduction. Le prix des objets se verront peut être modifier si il le faut. Sur-ce, à plus tard !
  33. 4 points
    Demande superbement réalisée, je me permets donc de la mettre en évidence
  34. 4 points
    Bonjour à tous et à toutes, Aujourd'hui, je vais expliquer comment marche les bossbars, quelles-sont les addons qui permettent des les gérer et pourquoi ainsi que quelques exemple. Ces bossbars seront fonctionnels avec skript dernières version (dev37c) et minecraft en 1.12 ainsi que le ou les addons postés ci-dessous ! Tout d'abord voici un rapide sommaire: I/Les addons à utiliser (2 choix possibles) et pourquoi II/Faire votre BossBar III/(Avancé) Animé votre Bossbar, les styles et couleurs Rentrons tout de suite dans le vif du sujet: I/Les addons à utiliser (2 choix possibles) et pourquoi Pour commencer, il existe 2 addons que je juge convenable d'utiliser pour les bossbars dont un que je vous déconseil mais qui permet toujours de les faire. Ce sont des addons très basique utilisé par un grand nombre de personnes: Skrayfall est un addon pratique pour beaucoup de choses mais qui pour moi n'est pas le meilleur addon à utiliser pour les bossbars. Il permet de faire de très bon scoraboard mais créer des incompatibilités avec certaines syntaxes de l'autre addon pour les bossbars ( qui peuvent-être réglé ). J'expliquerais comment faire les bossbars avec cette addon si l'autre addon ne marche pas chez vous ( on ne sait jamais ) Skellett est pour moi le meilleur addon que vous pourrez avoir pour les bossbars, plutôt simple et rapide d'utilisation. Mon préféré et celui avec lequelle j'expliquerais le plus de choses et donc celui que je choisis. Pour télécharger ces deux addons je vous invite à aller sur ce site et à prendre les dernières versions: Skellett: [Contenu masqué] SkRayFall: [Contenu masqué] J'ai testé les liens et les addons et ils fonctionnent tous deux. II/Faire votre BossBar A/ Avec Skellett: Voici la liste des syntaxes utilisé pour créer une bossbar: [the] [skellett] (title|name|header|string) of [boss[ ]]bar %bossbar% #MEttre un titre à votre bossbar [skellett] add %player% to [the] [boss[ ]]bar %bossbar% #Mettre une bossbar pour un joueur [the] [skellett] colo[u]r of [boss[ ]]bar %bossbar% #Mettre une couleur à une bossbar [skellett] remove %player% from [the] [boss[ ]]bar %bossbar% #Enlever un joueur d'une bossbar [the] [skellett] visib(le|ility) [(for|of)] [boss[ ]]bar %bossbar% #Cacher sans Enlever le joueur de la bossbar [the] [skellett] progress of [boss[ ]]bar %bossbar% #Changer la progressions d'un bossbar [skellett] %bossbar%'s [[boss][ ]bar] style #Mettre un style à une bossbar Pour commencer on va créer une commande basique: command /bossbar: trigger: Puis, créer notre bossbar: Ici, j'ai mis un nom à ma bossbar en gros une "ID" qui me permettra de retrouver ma bossbar partout. Sachez qu'au redémarrage du serv la bossbar n'est pas sauvegardé. Nous verrons comment la sauvegardé plus tard. Nous stockerons notre id bossbar tout au long du tutoriel dans la variable {p}. A partir du moment ou la bossbar et son id est crée, vous pouvez changez tous les attributs de la bossbar. command /bossbar: trigger: set {p} to skellett new bossbar Nous allons ensuite faire apparaître la bossbar au yeux du joueurs qui a fais la commande: command /bossbar: trigger: set {p} to skellett new bossbar add player to bossbar {p} Notre bossbar est crée et voici les bases de la bossbar de skellett pour approfondir n'hésitez pas à passer à la partie III/, nous allons voir comment faire avec SkRayFall puis nous reviendrons à Skellett B/ Avec SkRayFall: C'est un peu le même concepte qu'avec les scoreboard de SkRayFall, on crée notre bossbar, on l'edit puis on la suprrime. Voici les syntaxes: create (bossbar|boss bar) title[d] %string% and id %string% for %players% [with (value|progress) %number%] [with colors %BossBarColor%] [with style %BossBarStyle%] [with flags %BossBarFlag%] #créer notre boss bar (remove|destroy) bossbar %string% #delete notre bossbar (add|set) bossbar %string% for %player% #Met une bossbar au joueur remove %players% [from] bossbar %string% #Enlève un joueur de notre bossbar hide bossbar %string% #Cache la bossbar (show|display|unhide) bossbar %string% #Montre une bossbar (set|edit) bossbar %string% colo[u]r to %BossBarColor% #modifier la couleur d'une bossbar (set|edit) bossbar %string% (value|progress) to %number% #modifier la progression d'une bossbar Je vous passe les autres expressions car nous n'allons voir que certaines de ces syntaxes Comme pour Skellett nous allons créer notre bossbar, elle apparaitra directement au joueur qui à fais la commande /bossbar avec la couleur Bleue, le titre "Test" et un remplissage de 100% donc elle sera rempli en entier. L'id de la bossbar qui a le nom du joueur donc player nous permettra ensuite de l'édité et de la modifier command /bossbar: trigger: create bossbar title "Test" and id "%player%" for player with value 100 with colors Blue Vous voulez ensuite que tous les joueur connectés ai accès à cette bossbar ? Il suffira de ajouter le joueur à la bossbar avec l'id du joueur qui l'a crée. Regardez: command /bossbar: trigger: create bossbar title "Test" and id "%player%" for player with value 100 with colors Blue loop all players: add bossbar "%player%" for loop-player Ci-dessus nous ajoutons la bossbar à tous les joueurs du serveur grace à un loop ! Pour cacher cette bossbar il nous suffit de stoquer le nom de la bossbar crée dans une variable puis de la cacher ou de la montrer. Je m'explique, nous allons stoquer l'id de la bossbar dans une variable {id.bossbar} puis créer 2 commandes pour cacher / montrer la bossbar command /bossbar: trigger: create bossbar title "Test" and id "%player%" for player with value 100 with colors Blue set {bossbar.id} to player loop all players: add bossbar "%player%" for loop-player command /hidebossbar : trigger: hide bossbar "%{bossbar.id}%" command /showbossbar : trigger: show bossbar "%{bossbar.id}%" Et voici. Je ne vais pas approfondir plus les bossbars de SkRayFall. Je ne les aime pas car ont pas mal de bug malheureusement mais n'hésitez pas à poser des questions en commentaire, je vous répondrai. III/(Avancé) Animé votre Bossbar, les styles et couleurs Dans cette partie nous allons approfondir l'utilisation de l'addon Skellett pour les BossBars. Pour commencer, chacune des syntaxes contiens un skellett, comme le nom du plugin, ce "skellett" permet d'empêcher les incompatibilités entre les addons qui font des bossbars ou qui les gèrent comme SkRayFall. Je vous conseil fortement de les utiliser comme moi je le fais dans toutes vos syntaxes même si ce "skellett" est optionnel. A/ Les bossbars avec un style: Syntaxe utilisé: set skellett style of bossbar <bossbar> to <style> Tout d'abord quand on parle de bossbar avec un style, on parle de bossbar qui sont par exemples ségmenté par 10,12,20, 6 ou sans segment comme la bossbar qui vous optenez avec les skripts au dessus. Pour modifier ce style, il faut faire comme ci-dessous: command /bossbar: trigger: set {p} to skellett new bossbar set skellett style of bossbar {p} to SEGMENTED_20 #Segmenté en 20 add player to bossbar {p} Pour modifier le style il vous suffira de changer SEGMENTED_20 par SEGMENTED_10 , SEGMENTED_12, SEGMENTED_6 ou SOLID pour ne pas être segmenté en gros pour la bossbar classique. B/ Les couleurs des bossbars: Syntaxe utilisé : set skellett color of bossbar <id de la bossbar> to <couleur> Ensuite, nous pouvons grâce a la version 1.9 et + mettre des couleurs dans vos bossbars. La couleur basique sortie est normalement verte. Voici la liste des couleurs disponibles pour les bossbars avec Skellett: BLUE GREEN PINK PURPLE RED WHITE YELLOW Si nous voulons faire une bossbar segmenté par 6 avec une couleur Blanche nous ferrons comme ceci: command /bossbar: trigger: set {p} to skellett new bossbar #Création de la bossbar set skellett style of bossbar {p} to SEGMENTED_6 #Segmenté en 6 set skellett color of bossbar {p} to White #Couleur Blanche add player to bossbar {p} #Ajout du joueur à la bossbar C/ La progressions de la bossbar: Syntaxe utilisé: set skellett style of bossbar <id de la bossbar> to <style> Une bossbar, est une bar de progressions est peut-être utiliser comme tel, il faut savoir qu'une bossbar remplis à une progressions de 1 tandis qu'une bossbar vide à une progressions de 0. Vous voulez remplir une bossbar à 1/4 puis à la moitié puis au 3/4 nous ferons comme cela: command /bossbar: trigger: set {p} to player set {p} to skellett new bossbar #Création de la bossbar set skellett style of bossbar {p} to SEGMENTED_6 #Segmenté en 6 set skellett color of bossbar {p} to White #Couleur Blanche add player to bossbar {p} #Ajout du joueur à la bossbar set skellett progress of bossbar {p} to 0 wait 5 second set skellett progress of bossbar {p} to 0.25 wait 5 second set skellett progress of bossbar {p} to 0.5 wait 5 second set skellett progress of bossbar {p} to 0.75 wait 5 second set skellett progress of bossbar {p} to 1 Dans ce code, la bossbar à partir de la commande /bossbar sera créée la progression partira de 0% pour aller à 25% puis 50% puis 75% et enfin 1 soit 100% avec un écart de 5 second. Vous voulez une bossbar qui se remplit ? Le tour est joué. D/Mettre un titre à une bossbar: Syntaxe utilisé: set skellett title of bossbar <id de la bossbar> to "VOTRE TITRE> Je ne pense pas avoir besoins de décrire cet effet particulièrement, faite attention à ne pas oublier les guillemet pour mettre le titre ' "TITRE" ' : command /bossbar: trigger: set {p} to skellett new bossbar #Création de la bossbar set skellett style of bossbar {p} to SEGMENTED_6 #Segmenté en 6 set skellett color of bossbar {p} to White #Couleur Blanche add player to bossbar {p} #Ajout du joueur à la bossbar wait 10 second set skellett title of bossbar {p} to "&aCoucou" #Changement de titre wait 1 second set skellett title of bossbar {p} to "&bCoucou" #Changement de titre wait 1 second set skellett title of bossbar {p} to "&cCoucou" #Changement de titre Dans ce code, le titre va changer 3 fois de couleur tout en affichant Coucou avec un intervalle de 10 secondes puis de 1 seconde E/Faire disparaître une bossbar: Syntaxe utilisé: set skellett visibility of bossbar {p} to false Pour faire disparaitre une bossbar sans la supprimer il suffira de cacher la bossbar en modifiant sa visibilité comme ceci: command /bossbar: trigger: set {p} to skellett new bossbar #Création de la bossbar set skellett style of bossbar {p} to SEGMENTED_6 #Segmenté en 6 set skellett color of bossbar {p} to White #Couleur Blanche add player to bossbar {p} #Ajout du joueur à la bossbar wait 10 second set skellett visibility of bossbar {p} to false #J'ai met la visibilité sur false, la bossbar disparait wait 10 second set skellett visibility of bossbar {p} to false #J'ai met la visibilité sur true, la bossbar apparaît Ici, on peut voir qu'au bout de 10 seconde, une fois la bossbar créée celle-ci va disparaitre pour réapparaitre 10 secondes plus tard. Il semblerait que nous ayons fais le tour en ce qui concerne les bossbars avec Skellett. Maintenant, nous allons faire un petit exemple d'utilisation. F/Délete une Bossbar et enleveer un joueur de cette bossbar: Synatxe utilisé: skellett hide bossbar <id de la bossbar> #Cache la bossbar à tous un peu comme le visibility skellett show bossbar <id de la bossbar> #Montre la bossbar à tous un peu comme le visibility remove player of bossbar <id de la bossbar> "Enlève un joueur de la bossbar pour ne plus qu'il la voie Je ne vois pas trop pourquoi faire des exemples, les syntaxes sont explicites et marche comme les autres. Si vous ne les comprenez pas n'hésitez pas à me le demander en commentaire ! Exemple: Vous voulez faire une bossbar qui affiche les vies du joueur tant que celui-ci est connecté, rien de plus simple: On join: set {bossbar.vie::%player%} to skellett new bossbar set skellett title of bossbar {bossbar.vie::%player%} to "&c&lVie de %player%" set skellett color of bossbar {bossbar.vie::%player%} to red set skellett style of bossbar {bossbar.vie::%player%} to SEGMENTED_20 add player to bossbar {bossbar.vie::%player%} while player is online: wait 1 second set skellett progress of bossbar {bossbar.vie::%player%} to health of player / max health of player Dans ce code, nous créons notre bossbar au moment au le joueur se connecte et nous lui mettons ces attributs, couleur, style, titre etc ... Puis avec le while, tant que le joueur est en ligne et toutes les 1 secondes, nous actualison la progressions de la bossbar en divisans la vie du joueur sur la vie max du joueur pour avoir un nombre inférieur ou égale à 1. Voila, nous arrivons à la fin de ce tuto sur les bossbars, n'hésitez pas à laissé un petit j'aime et si vous avez des questions à les laisser en commentaire, j'y répondrai du mieux que je le pourrais. Cordialement, -Clem4510
  35. 4 points
    Vraiment minable, il rédige un topic correct, et respectable & tu lui dis 'worldedit'..
  36. 4 points
    Car tu pense que c'est une bonne mentalité de ne pas répondre par-ce qu'il ne respecte pas spécialement la règle ? Pour ce genre de demandes, surtout qu'il n'y à rien de plus simple, et que c'est pareil pour toutes les versions, c'est plutôt débile de ne pas répondre.
  37. 4 points
    Bonsoir Niveau de difficulté: tranquille, pas long Dans ce script on imagine être dans une ville où les lumières s'allument la nuit c'est à dire des lampe de redstone avec un panneau solaire disposé au dessus, parce que c'est une ville écologique ? . Qu'allons nous faire ? Grâce à un event que vous pouvez biensûr modifier, moi ça sera une commande toute bête, vous allez effectué un black out c'est à dire éteindre toutes les lampadaires autour de vous (ici on va prendre un rayon de 20 bloques). Tout ça avec des p'tits effets de hack parce qu'on est des hackeurs trop stylé. Ce tutoriel n'a pas beaucoup d’intérêt si ce n'est l'étude des loop-blocks et du fun. Aux connaisseurs qui me diront "y a toggle", bah moi ça ne marche pas On débute par un événement, pour moi une commande: command /blackout: trigger: A cette commande vous pouvez ajouter des conditions à votre guise, pour ma part...: command /blackout: trigger: if player is op: Maintenant on entre dans le sujet: loop blocks in radius 20 around player: > On check touts les bloques autour du joueur dans un rayon de 20 if loop-block is daylight_detector_inverted: >Si le block est un panneau solaire détectant la nuit (c'est à dire qui s'allumera la nuit) set loop-block to daylight sensor >On remplace ce dernier par un panneau qui détecte le jour, comme ça la lampe de redstone situé en dessous d'éteindra message "&4&k------------------------------------------" >&4: rouge &k: effet de brouille/glitch (cest uniquement pour l'effet de hack lorsque un panneau solaire est détecté) add loop-block to {_in::*} >On ajoute le bloque détecté dans une liste pour pouvoir le réutiliser plus tard: rallumer le lampadaire else: >Si le bloque n'est pas un panneau solaire message "&a&k%loop-block%" >&a: vert &k: effet de brouille/glitch (pour avoir un gros feed stylé) message "&4 shut down_" message "&4 shut down_" message "&4 shut down_" message "&a\\code[ &lBLACK OUT &r&a]: &a1_" >Message loin d'être nécessaire, c'est juste que j'ai écris ça. Ce que ça donne: Comment rallumé les lumières ? Ici on ne peut pas faire de loop-block et regarder quels sont les blocks étant des panneaux solaire en mode jour puis qu'entre temps le joueur pourrait bouger. C'est pour ça qu'on a enregistrer les bloques modifié au par-avant dans une liste : {_in::*} wait 1 minut >Le temps de kiffer le Black Out loop {_in::*} >Open for a surprise, on check les bloques à l'intérieur de la liste set {_m} to location of loop-value >Les arguments dans des listes sont des Value d'où loop-value, le problème c'est que 'location of loop-value' n'est pas possible set the block at {_m} to daylight_detector_inverted >On remet les panneaux solaires en mode nuit, les lampadaires se rallument, fin du black out stop >On sait jamais
  38. 4 points
    Salut ! Vous avez besoin d'un système de tri ? Vous êtes au bon endroit ? ! Le petit algorithme suivant (moins de 15 lignes) va vous permettre de trier une liste contenant des nombres, dans un ordre croissant ou décroissant. Ce système de tri prend aussi en charge les égalités, les nombres à virgules ainsi que les nombres négatifs. Pratique non ? De plus, vous n'avez pas besoin d'autres plugins (juste Skript est nécessaire) ! function sorting(1: numbers) :: numbers: loop {_1::*}: set {_1} to 1 loop {_2::*}: loop-value-1 >= loop-value-2 # Pour trier la liste dans un ordre décroissant, mettez "<=" au lieu de ">=". add 1 to {_1} set {_2} to {_1} + 1 set {_3::*} to {_2::*} loop (size of {_2::*} - {_1} + 1) times: set {_3} to {_2} - 1 set {_2::%{_2}%} to {_3::%{_3}%} add 1 to {_2} set {_2::%{_1}%} to loop-value return {_2::*} Pour utiliser la fonction, c'est très simple. Imaginons une liste {_numbers::*} contenant des nombres : command /test: trigger: set {_numbers::*} to 8, 4, 12, -6, 2, 1.5, 19, 726, 0.28, -65, 3, 13, 19, 72, 21, 15 and 6 send "Départ :" loop {_numbers::*}: send "%loop-value%" set {_numbers::*} to sorting({_numbers::*}) send "Arrivée :" loop {_numbers::*}: send "%loop-value%" Cette commande va trier la liste ci-dessus dans un ordre croissant. Pour trier la liste dans un ordre décroissant, référez-vous à la ligne 5 de la fonction. Merci d'avoir lu ? !
  39. 4 points
    Ajout d'une nouvelle sanction: Spam Download (21 points - Durée infini) - Sanction pour les personnes qui cherche à faire référencer leurs ressources en exploitant la possibilité de spam le téléchagement
  40. 4 points
    Bonjour, Bonsoir à tous. L'équipe de Skript-MC tient particulièrement à remercier tous nos donateurs qui ont permit à cette V2 de sortir. Nous remercions aussi toutes les personnes qui ont pu agir directement et indirectement et qui ont pu s'investir dans le projet et le développement. Cette V2 vous offre plein de nouveautés. Je vais essayer de vous en citer le plus: - Niveau des profils, les donateurs auront accès au GIF pour leur photo de profil. Vous êtes tous dans la mesure d'ajouter une bannière à votre profil pour vous distinguer comme sur Youtube ! - Les membres actifs et les donateurs sont en mesure de créer au nombre maximum de 3 des clubs publiques ou privés. Organisez des évents ou même faites vos propres messages dans vos clubs. Les membres doivent demander l'autorisation a l'équipe de modération pour éviter les abus. - La page des ressources a été complètement rafraîchie. Tous les skripts ont été supprimés donc postez de nouvelles versions de vos anciens projets si vous le souhaitez. - Les membres actifs possèdent un petit GIF de Chuck Norris sur le profil. Un GIF qui démontre leur fiabilité à la communauté (malgré le fait qu'ils soient plus ou moins actif) - La rubrique Add-ons a été mise en place pour les développeurs Java ! Pour pouvoir poster dans ce canal, demandez le grade aux administrateurs et leur fournissant le lien de votre/vos github(s) qui sert de support de développement pour votre add-on. Plein d'autres choses sont à découvrir ? Bon voyage au sein de ce forum tout neuf ! Cordialement, Vengelis_
  41. 4 points
    Puisque les spoilers sont cassés ici, je vais le mettre à jour sur gist.github.com. [Contenu masqué]
  42. 4 points
    Bonjour ! Dans ce tutoriel, je vais vous apprendre toutes les astuces que je connais pour pouvoir corriger son code seul sans avoir besoin de personne. Commençons: Sommaire: I/ Vérifier les outils qu'on possède. II/ Connaitre ses outils. III/ Localiser les erreurs. IV/ Vérifier les syntax. V/ Changer de version. VI/ Demander de l'aide de façon claire et précise. I/ Vérifier les outils qu'on possède : Beaucoup d'entre vous doivent avoir une panoplie de plugins et d'addons qui, pour la plupart, ne vous servent à rien. Alors pourquoi les gardez vous ? Ca n'a aucun sens. Pour choisir vos addons, je vous invite à lire le poste que j'ai fait : [Contenu masqué] Il vous expliquera en détails l'utilité de chacun des addons et pourquoi vous devriez les choisir. Aussi, pensez à mettre à jour vos outils (addons) dans une version plus récente, cela pourrait enlever vos erreurs. Si vous possédez l'addon "Umbaska", je vous invite à aller voir mon tutoriel à ce sujet : [Contenu masqué] II/ Connaitre ses outils : Avoir des outils, c'est bien, mais les connaitre, c'est mieux ! Vous devez connaitre la version de ces outils, ainsi que leurs syntax, et oui. Pour les syntax, skunity regroupe la plupart d'entre eux [Contenu masqué] Vous devez aussi bien savoir ces choses: - Qu'est-ce qu'un effet ? - Qu'est-ce qu'une expression ? - Qu'est-ce qu'une condition ? - Qu'est-ce qu'un événement ? - Comment les utilises-t-on ? - Qu'est-ce que notre expression nous retourne ? III/ Localiser ses erreurs : Pour localiser ses erreurs, regardez d'abord dans votre console. Vérifiez votre code et corrigez le. Si l'erreur persiste, un moyen simple permet de localiser le problème précisément. Pour cela, mettez à la suite de chaque condition un "broadcast "X"" avec un numéro suivant le "X" pour bien vous repéré. Si vous ne recevez pas le "X" après une condition, cela veut dire que le problème se trouve ici. C'est une solution bête mais qui fonctionne. Sinon, autre solution : utiliser le broadcast. Vérifier le contenu de ce que vous utilisez par cette méthode. IV/ Vérifier les syntax : Les syntax sont très importantes dans skript. Une erreur toute bête peut vous généré une erreur. Cela m'ai déjà arriver et à vous aussi sûrement. Pour cela, lisez attentivement votre code en ayant la vrai syntax sous les yeux. Rappeler vous que les pourcentage sont pour citer une chaine de caractère. V/ Changer de version : Si votre problème persiste, vous n'avez plus qu'à changer les versions de skript et de votre serveur. Le minimum à avoir est un serveur 1.9 (même 1.10 maintenant) et non 1.8 et encore moins 1.7.10. Si vous avez un serveur 1.7.10, dites vous que c'est mort, vous ne pourrez jamais travailler avec skript dans les bonnes conditions. En ce qui concerne la version 1.8, vous n'avez aucune excuse. Le fait de dire "parce qu'il y a plus de joueur" ou "Le pvp c'est mieux en 1.8" est un énorme mensonge. Pour le pvp, des plugins patch ce problème. Pour le nombre de joueur, je vous laisse regarder par vous même: Le site qui le prouve: [Contenu masqué] Bref, changez votre version. VI/ Demander de l'aide de façon claire et précise : Ce n'est pas très compliquer, mais mieux vaut écrire peut de chose et être précis que d'écrire un long pavé pour rien. Pour ce faire, commencer par une marque de politesse comme un "bonjour" ou un "hey" par exemple. Ensuite, précisez ce qu'il vous arrive, comme par exemple "mon message ne s'envoit pas". Continuer par une question du style "sauriez vous pourquoi ca ne fonctionne pas s'il vous plait". Enfin, précisez les données, c'est à dire la partie qui ne fonctionne pas (PAS TOUT LE CODE) ainsi que l'addon, la version de l'addon, skript, la version de skript et la version de votre serveur. Maintenant, attendez une réponse. Ne soyez pas impatient et attendez un peu. Pensez à mettre votre code sous balise !! Meilleure est votre présentation, meilleure sera l'aide apporté à votre problème !! Exemple: Bonjour, J'ai un soucis avec mon message "test" qui ne s'envoi pas. Sauriez vous pourquoi s'il vous plait ? Code: command /test: trigger: send "test" to loop-player Erreur: "There is no loop that match" Skript: dev33 Aucun addon Serveur version: 1.12 En espérant que ce tutoriel vous aidera ;)
  43. 4 points
    Désormais, pour vos demandes de skript, vous devrez respecter les règles suivantes : Le titre : Doit être un résumé de la demande et contenir le type de skript en préfixe. Par exemple vous voulez un skript de pet et bien le titre sera : "[Cosmétique] Skript de pet pour un lobby." La demande doit être formulée comme suit : Version de Minecraft : Version de Skript : Type du skript : Description du script en détails (3 lignes ce n'est pas assez détaillé) : Commandes éventuelles avec les permissions : Autres précisions (bout de skript déjà fait, systèmes actuellement utilisés, etc) : Une attention particulière sera portée quant à la rédaction de la demande. Elle doit être bien écrite, sans trop de fautes, bien détaillée et respectueuse des autres membres (un petit bonjour, un merci, etc.) Sanctions : Tout sujet créé ne respectant pas ces règles sera supprimé sans possibilité de recours ou de récupération. À noter que vous serez aussi sanctionné de 21 points d'avertissements. Dérogations : Vous pouvez passer outrepasser les règles de mise en forme uniquement si votre sujet est impeccablement écrit et bien présenté. Voici un exemple de présentation avec ce modèle : Titre du sujet : [Cosmétique] Skript de pet pour un lobby. Sujet : Version de Minecraft : 1.12.2 Version de Skript : 2.3.6 Type du skript : Skript de cosmétique Description du script : Bonjour je souhaiterais un skript qui permettrait aux joueurs sur mon lobby de choisir un pet. En effet, je voudrais qu'à l'aide d'un compas placé dans le 1er slot de la barre d'inventaire, l'utilisateur puisse choisir au travers d'un gui le familier qu'il désire. Il faudrait que les familiers en question soient configurables dans un fichier de configuration. Je voudrais aussi que certains pets soient accessibles uniquement aux vips+ (voir permission) là aussi, la liste de ces familiers devra être configurable dans un fichier yml. Commandes éventuelles avec les permissions : Je n'ai pas besoin de commandes particulières, mais j'ai besoin des permissions suivantes : Une permission lobby.vip donnant accès au choix d'un familier ; Une permission lobby.vip.plus. Autres précisions (bout de skript déjà fait, systèmes actuellement utilisés, etc.) : J'utilise actuellement SkQuery et Umbaska et ça serait top si le skript pouvait marcher avec une base de donnée configurable dans la config. Structure de la table pets : id unique ; uuid du joueur ; son pet actuel ; les pets autorisés (dans ce cas-là, pas besoin de permissions, il suffit d'aller voir dans la base si il a le droit de l'utiliser). Merci de votre aide et bonne journée.
  44. 3 points
    Salut tout le monde ! J'ai créer un morceau de code qui permet de ce téléporter à un endroit dans le monde (Un /spawn quoi). Propriétées : - Permet aux joueurs de ce téléporter à un spawn que l'on peut définir In-Game - Téléportation avec cooldown personnalisé - Si le joueur bouge, la téléportation sera annulé (Les mouvement de la tête ne compte pas) - Si le joueur à une certaine permission (configurable) il peut passer outre du cooldown - Option personnalisable dans la config Code : Options: prefix: &6[&2Set-Spawn&6] spawnset: Le spawn a été mit en %location of player% prefix2: &6[&2Spawn&6] starttp: Début de la téléporation ! stoptp: Téléporation annulé ! leftsecond: Téléporation dans >> %{_second}% secondes succestp: Téléporation réussi ! second: 5 prefix3: &c[&4Erreur&c] nopermission: Vous n'avez pas la permission d'utilisé cela ! spawnnoset: Le spawn n'existe pas ! (/setspawn pour le mettre) setspawnpermission: spawn.staff usespawnpermission: spawn.use bypasspermission: spawn.bypass Command /spawn: trigger: if player has permission "{@usespawnpermission}": if {serverspawn} exists: message "{@prefix2} {@starttp}" if player doesn't have permission "{@bypasspermission}": set {_x} to player's x-pos set {_y} to player's y-pos set {_z} to player's z-pos set {_second} to {@second} message "{@prefix2} {@leftsecond}" loop {@second} times: wait 1 second remove 1 from {_second} if {_x} isn't player's x-pos: message "{@prefix2} {@stoptp}" stop if {_y} isn't player's y-pos: message "{@prefix2} {@stoptp}" stop if {_z} isn't player's z-pos: message "{@prefix2} {@stoptp}" stop else: message "{@prefix2} {@leftsecond}" teleport player to {serverspawn} wait 1 second message "{@prefix2} {@succestp}" stop else: teleport player to {serverspawn} wait 1 second message "{@prefix2} {@succestp}" stop else: message "{@prefix3} {@spawnnoset}" stop else: message "{@prefix3} {@nopermission}" stop Command /setspawn: trigger: if player has permission "{@setspawnpermission}": set {serverspawn} to location of player message "{@prefix} {@spawnset}" stop else: message "{@prefix3} {@nopermission}" stop Si vous avez un bug : Signalez le moi en MP ou en dessous [Modifié]
  45. 3 points
    [Idée Forum] C'est bien de faire un serveur Minecraft, créer ses plugins (en java ou en skript) mais la majorité des serveur ferment deux semaines au maximum après leurs ouverture. La cause ? Il y en a de nombreuses: mauvais staff, bug, mauvaise communauté, hack du serveur... mais aussi le manque de joueurs qui vient d'un manque de pub. Je propose donc l'ajout d'une catégorie "Présentations de serveurs" afin de présenter son serveur (logique). Il faudrait indiquer le type de serveur (faction, mini-jeu...), le temps qu'il a falllut pour réaliser le projet, les personnes de la communauté Skript liées au projet et éventuellement l'argent investit.
  46. 3 points
    Pas trop de rapport mais on t'en veut pas ;)
  47. 3 points
    C’est quand tu envois deux posts en moins de 24h d’espacement. La prochaine fois je te mange ok ?
  48. 3 points
    Et n'oublie pas le like si je t'ai aidé ;)
×
×
  • 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.