Aller au contenu

Classement


Contenu populaire

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

  1. 1 point
    Go mettre @Arwex ancien membre.
  2. 1 point
    - Skript vu et revu | -1 - Manque d'optimisation (un on any move est présent sachant qu'on peut faire plus simplement) | -1 - Aucune configuration possible (et on trouve un "KlatoniaFaction" dans les messages qui ne sors de je ne sais où) | -1 - Des commandes sont en double (/l et /login) | -1
  3. 1 point
    Bonsoir, ton skript comporte plusieurs problèmes 1 - Le skript mute le joueur seulement et seulement si il dit une phrase bien précise, donc ce n'est pas très précis dans la détection des insultes. 2 - Il y a beaucoup de répétitions, tu aurais puis rajouter une liste pour enlever environ 95% des lignes du skript. 3 - Il n'y pas de personnalisation possible (Prefix, heure du mute, commande du mute, message du mute, la possibilité de rajouter des insultes, etc...) Voici un petit skript d'Anti-Insultes qui enlève la plupart des problèmes options: prefix: &7[&4Anti&7-&cInsultes] &7 command: mute %player% 1h message_player: &7Tu viens d'être sanctionner a cause du mot suivant : &c%loop-value% on script load: if {AInsulte::*} is not set: #Rajout d'une liste de base d'insulte (Si la variable n'est pas défini) add "Merde", "pute", "salope", "con", "enculé", "enculer", "ez", "fdp", "abruti", "foutre", "fiotte", "pd", "fumier", "gogol", "emmerdeur", "imbécile", "branleur", "kikoo" and "kikou" to {AInsulte::*} command /AntiInsulte <text=help> [<text>]: permission: AI.admin permission message: &cVous n'avez pas la permission d'éxecuter cette commande ! trigger: if arg-1 is "help": send "&7/AntiInsulte add [Insulte]" send "&7/AntiInsulte remove [Insulte]" send "&7/AntiInsulte list" else if arg-1 is "add": if arg-2 is set: if {AInsulte::*} contains arg-2: send "{@prefix} Ce mot est déjà dans la liste !" else: add arg-2 to {AInsulte::*} send "{@prefix} L'insulte a été rajoutée !" else: send "{@prefix} Il faut définir une insulte" else if arg-1 is "remove": if arg-2 is set: if {AInsulte::*} contains arg-2: remove arg-2 from {AInsulte::*} send "{@prefix} L'insulte a été retirée !" else: send "{@prefix} Ce mot n'est pas dans la liste !" else: send "{@prefix} Il faut définir une insulte" else if arg-1 is "list": send "{@prefix} Liste : " loop {AInsulte::*}: send "%loop-index% &7- &f%loop-value%" else: send "{@prefix} Commande inconnue -> /mute help" on chat: set {_msg::*} to message split at " " loop {_msg::*}: if {AInsulte::*} contains loop-value: cancel event make console execute "{@command}" send "{@message_player}" stop
  4. 1 point
    Salut à tous ! Tout d'abord, vous allez me demander : pourquoi y a t-il "Tuto Maths #1" dans le titre ? Tout simplement parce que j'ai décide de faire une série du tutos sur différentes utilisations des mathématiques en informatiques. A la fin de chaque tutos je mettrai la liste des tutos que j'ai fait pour que vous puissiez vous y retrouver facilement. Le premier tuto de cette série sera sur la division euclidienne donc le modulo et le quotient, 2 notions peu souvent utilisé en skript mais qui peuvent être utiles quand même. I. Quelques notions Voici d'abord une petite définition de la division euclidienne. La division euclidienne ou division entière est une opération qui, à deux entiers naturels appelés dividende et diviseur, associe deux autres entiers appelés quotient et reste, voici un petit exemple en photo. C'est en faite la première division qu'on apprend en première, il n'y a rien de sorcier sous ce nom la. Voici un petit exemple : Maintenant mettons un visage sur les noms évoqués dans la définition. Dividende : C'est le nombre qu'on va diviser (ici c'est 47) Diviseur : C'est le nombre par lequel on va diviser (ici c'est 5) Reste : C'est le nombre qu'il reste une fois qu'on a enlever le plus de fois possible le diviseur (ici c'est 2) Quotient : C'est le nombre qui correspond à combien "il y a a de fois 5 dans le diviseur" (ici c'est 9) Ce sont toujours des nombres entiers. Si vous souhaitez davantage d'explications sur tout ça je vous conseille de chercher sur internet, vous trouverez votre bonheur. II. Le quotient En informatique le quotient d'une division peut servir dans plusieurs cas. Par exemple si on dois manipuler un tableau à 2 dimensions (c'est un tableau avec plusieurs lignes et plusieurs colonnes). Imaginons que je fais 5 colonnes de 5 lignes chacunes. Maintenant je veux placer tout les nombres entre 0 et 4 inclus dans la première colonne, tout les nombres entre 5 et 9 dans la deuxième et ainsi de suite. Si je veux savoir ensuite dans quelle colonne se place le nombre 16 comment je peux faire ? A moins de tous les compter à chaque fois, on va utiliser la division euclidienne et le quotient. En fait, on va juste prendre le nombre et le diviser par le nombre de lignes (ici c'est 5), car à chaque fois qu'on va changer de colonne le nombre de la première ligne aura augmenté du nombre de lignes. Voici les premières divisions euclidienne pour mieux comprendre. Je vous donne juste le quotient de chaque division euclidienne, de plusieurs nombres par 5. 0/5 = 0 1/5 = 0 2/5 = 0 3/5 = 0 4/5 = 0 5/5 = 1 6/5 = 1 7/5 = 1 8/5 = 1 9/5 = 1 10/5 = 2 15/5 = 3 Vous aussi vous remarquez quelque chose ? A chaque fois qu'on passe un nombre divisible par 5 on change de quotient. Maintenant prenez le quotient et rajouter 1 à chaque fois, vous obtenez la colonne. Comment cela se fait-il ? C'est le principe de la division euclidienne en faite. A chaque fois que vous ajoutez 1 le reste de la division va augmenter, jusqu'à ce qu'il soit à son tour divisible par 5, c'est à ce moment la qu'on va changer de colonne. III. Le reste et le modulo Le reste de la division euclidienne est le nombre qu'il reste une fois qu'on ne peut plus enlever le diviseur au nombre, il est toujours inférieur au diviseur. C'est logique, si il était supérieur ou égale alors on pourrai encore soustraire le diviseur au reste. A quoi peut bien servir le reste ? A plusieurs chose : reprenons l'exemple utilisé avec le quotient. On a pu obtenir le numéro de la colonne en utilisant le quotient et en lui ajoutant 1. Mais comment obtenir le numéro de lignes ? En utilisant le reste cette fois et en lui ajoutant un. Faîtes un petit schéma et regarder : si on prend le nombre 0 son reste est égale à 0 et il se place ligne 1, avec le nombre 1 : le reste est égale à 1 et il se place ligne 2. En fait, c'est le même principe qu'avec le quotient, on se fiche de savoir dans quelle colonne le nombre se trouve (on le sait avec le quotient ça) donc on peut enlever le quotient multiplié par le diviseur pour faire comme si on était sur la première colonne, et maintenant on a juste à regarder ce qu'il se passe sur la première colonne, c'est ce qu'on a fait juste au dessus. Voilà une utilité du reste. On entend aussi souvent parler de modulo, en faite c'est pareil. Un nombre x modulo un nombre y ça revient à chercher le reste de la division euclidienne de a par b. Vous étonnez donc pas si dans un langage de programmation ou dans la vie vous entendez parler de modulo. IV. Et le skript dans tout ça ? On y venait justement. Voici les moyens de retrouver le quotient et le modulo de deux nombres et 1 exemples d'utilisation chacun. Pour obtenir le quotient de la division euclidienne de {_x} par {_y} il faut utiliser le calcul : floor({_x}/{_y}). En faite floor() retourne l'arrondi à l'unité inférieur d'un nombre à virgule, si on prend 9 et 2 par exemple : 9/2=4.5 mais le quotient est seulement 4. En faite le quotient est toujours l'entier égale ou inférieur à la division que vous faîte habituellement. Pour obtenir le modulo de {_x} par {_y} maintenant, il suffit juste d'utiliser l'expression {_x} mod {_y}. Voici un exemple de skript utilisant le modulo maintenant. En faite c'est un décompte partant de 60 qui va envoyer un message à chaque fois que le nombre sera un multiple de 10. Pour savoir si c'est un multiple de 10, on va juste vérifier si le reste du nombre par 10 est égale à 0. Si c'est vrai ça voudra dire que le nombre est divisible par 10 donc que c'est un multiple de 10. command /decompte: trigger: set {_start} to 60 while {_start}!=0: if {_start} mod 10 = 0: broadcast "Début dans %{_start}% secondes" remove 1 from {_start} wait 1 seconds Voici un exemple de skript utilisant le quotient maintenant. Ce skript va nous dire si l'argent du joueur est entre 0 et 1000, 1001 et 2000 ect... Pour cela, c'est la même technique que pour le remplissage des colonnes. Si le quotient de l'argent du joueur par 1000 est égale à 0 c'est que son argent est inférieur à 1000 car on ne peut pas enlever au moins 1000 à l'argent du joueur et ainsi de suite. command /classe: trigger: set {_quotient} to floor(player's balance/1000) if {_quotient} = 0: send "ton argent est inférieur à 1000" else if {_quotient} = 1: send "ton argent est entre 1000 et 2000" else if...... Voilà j'espère que ce tuto vous a plu, et je vous félicite d'avoir lu jusqu'en bas. Si vous n'avez pas compris certains points n'hésitez pas à me le dire et je les corrigerai avec plus d'explications, mais c'est vrai que c'est pas facile d'expliquer tout ça par écrit. A la prochaine ! Cordialement Kilterra
  5. 1 point
    Salut ! Comme promis, nous voici pour un tutoriel sur Skore. C'est un addon développé par LimeGlass (encore) et qui permet de faire des scoreboards. Bref commençons. I/ Informations II/ Syntaxes III/ Scoreboards statiques IV/ Scoreboards dynamiques V/ Exemples VI/ Fin I/ Informations Skore est un addon qui a presque 1 an tout pile. Il est en version 1.0.0. Vous pouvez le télécharger ici, et télécharger sa dépendance ici. Car oui, Skore a besoin d'une dépendance. C'est TitleManager. Quand vous avez installer ces deux plugins, redémarrez le serveur (pas de reload). Vous pouvez ensuite aller dans la config de Title manager pour désactiver ce dont on ne veux pas, en l'occurence, les scoreboards. Vous allez donc passez enabled a false. (vers la ligne 190). scoreboard: # Toggles this feature enabled: false Si vous voulez vous pouvez aussi désactiver d'autres fonctionnalités, mais ca c'est a vous de voir car elles ne changeront pas notre code. Enfin : pourquoi utiliser Skore et pas d'autres addon. Déjà, il faut savoir que skore ne fonctionne que en 1.12, et n'est plus MàJ par son auteur, qui a même supprimé le repo GitHub du projet. Skore utilise les packets, il ne passe pas par les scoreboards spigot, comme SkRayFall et Skellett le font, ce qui rend les skoreboards plus performants. Ensuite, skore est un addon très simple a utiliser, alors pourquoi ne pas le prendre ? C'est optimisé, performant, simple d'utilisation... Exemple : Voici un exemple de skoreboard (=scoreboard fais avec skore). Mes TPS ne sont pas descendus en dessous de 19.5/19.6. Plutôt cool non ? surtout que jamais vous n'utiliserais ce genre de scoreboard x II/ Syntaxes Voici toutes les syntaxes disponible (elles se trouvent dans plugins/Skore/syntaxes.yml) : (1¦(create|set[up])|2¦(remove|reset|delete)) [a] [([skore] sc|sk)oreboard] (for|to|of) %players% [Skore] [(all [[of] the]|the)] (slot|value|line)[s] %numbers% (of|from|in) skoreboard[s] %players% [Skore] %players%'[s] skoreboard[s] (slot|value|line)[s] %numbers% [Skore] [(all [[of] the]|the)] title[s] (of|from|in) skoreboard[s] %players% [Skore] %players%'[s] skoreboard[s] title[s] %player% (1¦has|2¦does not have) [a] skoreboard La première va permettre de soit créer un scoreboard au joueur, soit en supprimer 1. Les 2 suivantes vont permettre de définir des lignes au scoreboard. La 2 d'après vont définir des titres au scoreboard. La dernière est une condition pour vérifier si le joueur a un scoreboard. III/ Scoreboards statiques Alors, commençons a créer un skoreboard. Déjà, il va falloir créer le skoreboard quand le joueurs rejoint le serveur. On va donc faire on join: setup a skoreboard for player Setup a skoreboard for player est équivalent au "wipe player's sidebar" de SkRayFall. Il permet de créer un scoreboard au joueur. Ensuite on va vérifier si le joueur a un scoreboard de créé. Oui ca peut paraitre bête car on l'a créé une ligne au dessus, mais comme ca si jamais il y a un problème et qu'il ne se créé pas, le serveur ne crashera pas. Donc on rajoute : on join: setup a skoreboard for player if player has a skoreboard: Jusque la très simple. On créé un skoreboard quand le joueur arrive, et si il a réussit a se créer, on fait la suite. Mais on mets quoi dans la suite On va commencer par définir un titre au skoreboard. Il peut faire 32 charactères de long maximum, en comptant les codes couleurs. C'est une limite de Minecraft, pas de skore, donc on ne peux rien y faire Bref voici la syntaxe : set title of skoreboard player to "&aVoici un titre ! &eIl est long" #32 chars max Et voilà ! On peut ensuite ajouter des lignes, qui suivront ce modèle, et qui feront maximum 40 caractère (limite de Minecraft encore une fois... pas de skore) : set slot 1 of skoreboard player to "&aVoici une ligne ! &eElle est longue..." #40 chars max Voici le skoreboard que j'ai donc créé : on join: setup a skoreboard for player if player has a skoreboard: set title of skoreboard player to "&aVoici un titre ! &eIl est long" #32 chars max set slot 1 of skoreboard player to "&aVoici une ligne ! &eElle est longue..." #40 chars max set slot 2 of skoreboard player to "&r" set slot 3 of skoreboard player to "&9&l&nPseudo :" set slot 4 of skoreboard player to " &b%player%" set slot 5 of skoreboard player to "&r " set slot 6 of skoreboard player to "&9&l&nArgent :" set slot 7 of skoreboard player to " &b%player's balance%" set slot 8 of skoreboard player to "&r8 " set slot 9 of skoreboard player to "&r9 " set slot 10 of skoreboard player to "&r10 " set slot 11 of skoreboard player to "&r11 " set slot 12 of skoreboard player to "&r12 " set slot 13 of skoreboard player to "&r13 " set slot 14 of skoreboard player to "&r14 " set slot 15 of skoreboard player to "&r15 " Bon il est moche, jugez pas, mais au moins il fonctionne . A noter : on peut mettre maximum 15 lignes. Bref il y a un problème avec ce skoreboard, c'est qu'il ne se rafraîchit jamais. c'est a dire que la, si le joueur gagne de l'argent, ma ligne 7 ne va pas bouger... Pour remédier a ca, je vais vous montrer comment rendre le scoreboard dynamique. III/ Dynamique On commence pareil : on join: setup a skoreboard for player Mais après on va modifier un peu. Déjà, voyons avec 1 page (je vous montrerai comment faire plusieurs pages après). Déjà, pour l'actualiser, je vais utiliser un while, car il nous faut bien une boucle qui va refresh le scoreboard. Et ensuite je vais mettre mes lignes habituelles : on join: setup a skoreboard for player while player is online: if player has a skoreboard: set title of skoreboard player to "&aVoici un titre ! &eIl est long" #32 chars max set slot 1 of skoreboard player to "&aVoici une ligne ! &eElle est longue..." #40 chars max set slot 2 of skoreboard player to "&r" set slot 3 of skoreboard player to "&9&l&nPseudo :" set slot 4 of skoreboard player to " &b%player%" set slot 5 of skoreboard player to "&r " set slot 6 of skoreboard player to "&9&l&nArgent :" set slot 7 of skoreboard player to " &b%player's balance%" set slot 8 of skoreboard player to "&r " set slot 9 of skoreboard player to "&9&l&nDate :" set slot 10 of skoreboard player to " &b%now%" wait 10 ticks Et voilà ! Comme vous pouvez le voir, j'ai mis que le skoreboard se rafraîchit tous les 10 ticks (= 2 fois par seconde) Vous pouvez mettre moins mais je n'y vois pas de raison de le faire, surtout que ca réduira légèrement vos performances. A savoir : pour la vidéo au dessus, j'avais mis le scoreboard dans un every tick: loop all players: (avec 1 joueur) et mes TPS n'allaient pas en dessous de 19.5 / 19.6. Donc vous pouvez mettre wait 1 tick, mais ca ne servira a rien ^^ car on est pas a 1/20ème de seconde près. Important : il est cependant OBLIGATOIRE d'avoir un wait a la fin du while (la ou je l'ai mis). Sinon votre serveur va crash instantanément. IV/ Exemples Voici un exemple de skoreboard avec plusieurs pages, et 5 secondes d'attentes entre chaque page : on join: setup a skoreboard for player while player is online: if player has a skoreboard: set title of skoreboard player to "Mon serveur !" #----- Premier Skoreboard set slot 1 of skoreboard player to "&r" set slot 2 of skoreboard player to "&9&l&nPseudo :" set slot 3 of skoreboard player to " &b%player%" set slot 4 of skoreboard player to "&r " set slot 5 of skoreboard player to "&9&l&nArgent :" set slot 6 of skoreboard player to " &b%player's balance%" set slot 7 of skoreboard player to "&r " set slot 8 of skoreboard player to "&9&l&nDate :" set slot 9 of skoreboard player to " &b%now%" set slot 10 of skoreboard player to "&r " set slot 11 of skoreboard player to "Page 1/2" wait 5 seconds # ----- On attend 5 secondes set title of skoreboard player to "Mon serveur !" #------ 2ème skoreboard set slot 1 of skoreboard player to "&r" set slot 2 of skoreboard player to "Tes Kills :" set slot 3 of skoreboard player to "&r " set slot 4 of skoreboard player to "Tes morts" set slot 5 of skoreboard player to "&r " set slot 6 of skoreboard player to "Ton meilleur KillStreak" set slot 7 of skoreboard player to "&r " set slot 8 of skoreboard player to "Tes pâtes préférées" set slot 9 of skoreboard player to "&r " set slot 10 of skoreboard player to "&r " set slot 11 of skoreboard player to "Page 2/2" wait 5 seconds # ------- On attend 5 secondes V/ Fin Voilà pour ce tutoriel que j'avais fait il y a déjà 1 an ! J'attendais seulement que l'auteur corrige quelquebugs, mais il ne l'a jamais fait.... Voici donc le seul bug que j'ai pu trouvé a l'heure actuelle : Quand on a un skoreboard avec un certains nombre de lignes, puis qu'on affiche un 2ème skoreboard avec moins de ligne, les dernières lignes du 1er vont être affichées dans le 2ème. Exemple : Si vous avez un skoreboard avec marqué 1: "Ligne 1" 2: "Ligne 2" 3: "Ligne 3" 4: "Page 1" puis un 2ème avec 1: "Ligne 1" 2: "Ligne 2" 3: "Page 2" Alors vous verrez sur la première page "Ligne 1, Ligne 2, Ligne 3, Page 1" et sur la deuxième page : "Ligne 1, Ligne 2, Page 2, Page 1" Pensez à allez voir aussi le tuto de @Salwyn sur skore ! Il l'avait sortit juste avant moi : [Hidden Content] Bref, sur ce : bonne vacances
  6. 1 point
    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 des 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.
  7. 1 point
    Heyy, Je propose comme idée d'ajouter un durabilité car sinon sa deviens un peu abuser a mon goût Sinon merci ^^
  8. 1 point

    Classique

    Version Dev 2.6

    479 downloads

    Pour commencer, Sully est Anticheat fait en Skript pour Minecraft 1.8.x par moi même, il n'était pas censé être public (C'est une version que j'ai pas touché depuis plusieurs semaines) mais finalement j'ai changer d'avis (Plus d'infos sur ça dans le skript). Sully détecte la plus part des cheat de mouvement, et ceux de combat (Pour les Ghost client y'a la Reach et une détection d'Aimassist) qui détecte la majorité des Killaura. Oui, les Packets sont très utilisé dans Sully, la plupart des Checks sont basé sur les packets. Bien sûr, tous les Anticheat ont des faux positifs (False log), mais il est possible de les réduire fortement, c'est ce que j'ai essayer de faire avec Sully. Je ne vais pas faire une liste inutile de ce qui est "détecter" car tous simplement la plupart des cheat de mouvement (par exemple) ce ressemble, exemple: Jetpack et Fly dans les deux cas cela vous permets de voler et les deux sont détecter, mais je vais vous en lister qu'un seul voir aucun mais car il est détecter par une détection de nom différents. Donc voici la liste des noms que j'ai attribué a chaque détection: Si la détection contient * c'est que elle n'est pas fini ou fait des faux positif et donc elle n'autoban/kick pas. seulement des alertes Exemple: Cheat (type) Combat (12): Autoclick (left) Autoclick (right) Analyze (a) (Check de "killaura") Reach (a) Badpacket (a) Badpacket (b) Killaura (a) Killaura (b) AimAssist (a) Keepsprint (Killaura) InvalidRotation (Headless) Velocity* (Cancel) Mouvement (22): Morepackets (a) LessPackets (a) Speed (ground) Speed (bounce) Speed (airdown) Speed (airup) Fly (a) Fly (b) Hover (null) NormalMovement (higher) NormalMovement (lower) NormalMovement (repeated) NormalMovement (step) AbnormalMovement (ground) AbnormalMovement (air) Travel (player tried to teleport himself far away down) FastLadder (player tried to go faster in a ladder) WebSpeed (player tried to move faster in a web (air)) WebSpeed (player tried to move faster in a web (ground)) WebFly (player tried to float above a web) Nofall (player claimed to be on ground while being in air) Nofall (player claimed to be on ground while falling) Addons: https://nofile.io/f/8DyueHrnxZ5/Addons.rar WildSkript SkUtilities skRayFall SkQuery Sketch Alpha 0.4 (0.3 marche peut-être) Skellett ExtraSK
  9. 1 point
    quand je mets : %asb level of player% ou %asb island level of player% marche pas sur le scoreboardcommand /test: trigger: wipe player's sidebar wait a tick set name of sidebar of player to "&6AgeOf&eSurvival" set score "&aArgents : &6%player's balance%" in sidebar of player to 6 set score "&aLVL : &6%island level of player%" in sidebar of player to 7
  10. 1 point
    La première fois que je l'ai testé il fonctionnait pas, pourtant t'as bien pris le temps de m'aider et trouver le problème. Donc, en plus que c'est le skript est génial, tu mérites amplement ces 5 étoiles.
  11. 1 point
    Petite pub ? mais noël approche, et j'imagine que tout le monde veut sa surprise le matin en se connectant au serveur ! Pour ca passez voir ma dernière ressource : Calendrier :
  12. 1 point
    comme ca : et même si tu as des problèmes en orthographe, essaye de faire attention... ?
  13. 1 point
    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 ? !
  14. 1 point
    Salut, voici Soundex mis aux dernières version de skript et skquery, et y'a plus besoin de skutilities. Je l'ai pas du tout optimisé, mais si qqn est chaud, foncez ? function Soundex(a: text) :: text: set {_text} to capitalized {_a} set {_first} to first character of {_text} replace all "a", "e", "i", "o", "u", "y" and " " with "" in {_text} set {_1} to first character of {_text} set {_2} to first character of {_a} if {_1} is not {_2}: set {_text} to concatenate {_first} and {_text} set {_text::*} to {_text} split at "" loop {_text::*}: set {_v} to (loop-index parsed as number + 1) if loop-index is "1": remove loop-value from {_text::*} else: if loop-value is "%{_text::%{_v}%}%": remove loop-value from {_text::*} else: if loop-value is "B" or "F" or "P" or "V": add "1" to {_s::*} else if loop-value is "C" or "G" or "J" or "K" or "Q" or "S" or "X" or "Z": add "2" to {_s::*} else if loop-value is "D" or "T": add "3" to {_s::*} else if loop-value is "L": add "4" to {_s::*} else if loop-value is "M" or "N": add "5" to {_s::*} else if loop-value is "R": add "6" to {_s::*} else if loop-value is "H" or "W": add "*" to {_s::*} loop {_s::*}: set {_v} to (loop-index parsed as number + 1) set {_v2} to (loop-index parsed as number + 2) if {_s::*} is "*": return "%{_first}%000" else if loop-value is "%{_s::%{_v}%}%" and "%{_s::%{_v2}%}%": remove {_s::%{_v}%} from {_s::*} remove {_s::%{_v2}%} from {_s::*} else if loop-value is "%{_s::%{_v2}%}%": if "%{_s::%{_v}%}%" is "*": remove {_s::%{_v2}%} from {_s::*} else if loop-value is "*": remove loop-value from {_s::*} else: add 1 to {_t} set {_final} to concatenate {_final} and loop-value if size of {_s::*} is 1: return "%{_first}%%{_final}%00" if size of {_s::*} is 2: if {_t} is 2: return "%{_first}%%{_final}%0" else: if {_t} is 3: return "%{_first}%%{_final}%"
  15. 1 point
    Bonjour, aujourd'hui je vous partage ma dernière création en Skript : un algorithme Soundex Merci de laisser le commentaire avec mon nom avant la fonction si vous l'utiliser dans votre code. Vous pouvez aussi me citer sur le post si vous êtes quelqu'un de gentil Il est très important d'avoir SkUtilities et skQuery pour que la fonction marche ! Qu'est ce que l'algorithme Soundex ? L'algorithme Soundex est un algorithme phonétique d'indexation de noms par prononciations (merci Wikipedia). En gros, il va transformer les mots en chiffres selon certains critères, et permettra ainsi de reconnaitre deux mots proches, deux mots qui ont une correspondance entre eux malgré des différences dans l'écriture. Il est utilisé par beaucoup de sites, du moins est repris par beaucoup de sites (moteurs de recherches, etc.). Je prefère vous le partager plutôt que le voir copier coller depuis mes futurs skripts qui l'utiliseront. L'algorithme L'algorithme Soundex est plutôt simple à comprendre. Je vais le décrire grossièrement, si vous voulez le voir en détail, rendez-vous ici. (le wikipedia anglais indique les exceptions et les règles, alors que la page française non) On retire les espaces, les voyelles (dont celles anglaises), et les lettres doublées puis on met le mot en majuscule On garde la première lettre On attribue un numéro à chaque lettre que l'on a encore sauf la première On garde seulement 3 chiffres, ou bien on ajoute des 0 pour avoir 3 chiffres On met la première lettre suivi des trois chiffres, voilà. Prenons par exemple le mot "Comment" COMMENT CMMNT CMNT M = 5, N = 5, T = 3 C553 La personne écrit mal le mot, et écrit "Cament" CAMENT CMNT M = 5, N = 5, T = 3 C553 Même code, donc mot proche Exceptions Il y a néanmoins quelques exceptions. L'algorithme les respecte parfaitement ! Si 3 chiffres sont les même de suite dans le code final, on en garde qu'un seul. C'est à dire que si 3 lettres avec le même chiffre se suivent, on en garde qu'une. Par exemple, "Jackson" ne donne pas pas "A222" mais "A250" Si deux lettres avec le même chiffre sont séparés d'un H ou d'un W, il n'y a qu'un chiffre et pas deux. Par exemple, "Ashcraft" n'est pas "A226" mais "A261" Le code, la fonction, l'algorithme donc pour l'utiliser, il suffit de faire soundex("text") et cela retournera un code. Par exemple "set {var} to soundex("salut")" Le code expliqué Utilisation théorique Vous allez sûrement vous dire "ok mais je fais quoi de cette fonction". Exemple théorique Il suffit de comparer ce que retourne la fonction pour un terme, et pour l'autre. On peut comparer 'soundex("salut")' et 'soundex("solut")', on aura le même code. Exemple command /money <text>:[/size][/size] [size=5][size=4] trigger: if arg 1 is not "remove": if soundex("remove") is soundex(arg 1): send "The command is /money remove and not /remove %arg 1% :)" Corrige la commande /money remove Il y a des tonnes de choses à faire avec cela ! Des corrections, des anti-spam développés, pleins de trucs ! A vous de voir maintenant... Si vous avez besoin d'aide n'hésitez pas à me demander, et n'hésitez pas non plus à lâcher un petit j'aime et un commentaire si vous aimez l'algorithme. Polymeth.
  16. 1 point
    Alors, pour tout le monde... Le projet a beaucoup de bug et n'est pas fini et est beaucoup moins agréable qu'un autre logiciel type ST3 (ou 2) ou notepad et malheureusement le dev vient d'annoncer il y a 1 semaine qu'il abandonnait le projet donc pas d'espoir que ça s'améliore... Bref ça aurait été une magnifique idée si le projet avait fini mais actuellement on a que la moitié :'c
  17. 1 point
    Voici un algorithme pour créer une sphère dans minecraft: Premièrement, voici une sphère: [ATTACH=full]8086[/ATTACH] Rien de plus classique, mais une forme complexe n'est-ce pas ? Après quelques recherches, il est facilement possible de récupérer un algorithme qui permet de créer des disques ou des cercles: Algorithmes de Bresenham et Andres. Dans mes algorithmes qui sont des fonctions je vais simplement récupérer les locations dans une liste: Pour les intéressés, j'ai refait Bresenham et Andres sous forme de fonction return. [spoiler=Bresenham, Andres][spoiler=Cercle Bresenham] function bresenham(radius:number,location:location,world:world) :: locations: set {_x} to 0 set {_z} to {_radius} set {_m} to 5-4*{_radius} while {_x} <= {_z}: add location {_x}+x-location of {_location}, y-location of {_location}-1, {_z}+z-location of {_location} of {_world} to {_locations::*} add location {_z}+x-location of {_location}, y-location of {_location}-1, {_x}+z-location of {_location} of {_world} to {_locations::*} add location -1*{_x}+x-location of {_location}, y-location of {_location}-1, {_z}+z-location of {_location} of {_world} to {_locations::*} add location -1*{_z}+x-location of {_location}, y-location of {_location}-1, {_x}+z-location of {_location} of {_world} to {_locations::*} add location {_x}+x-location of {_location}, y-location of {_location}-1, -1*{_z}+z-location of {_location} of {_world} to {_locations::*} add location {_z}+x-location of {_location}, y-location of {_location}-1, -1*{_x}+z-location of {_location} of {_world} to {_locations::*} add location -1*{_x}+x-location of {_location}, y-location of {_location}-1, -1*{_z}+z-location of {_location} of {_world} to {_locations::*} add location -1*{_z}+x-location of {_location}, y-location of {_location}-1, -1*{_x}+z-location of {_location} of {_world} to {_locations::*} if {_m} > 0: remove 1 from {_z} set {_m} to {_m}-8*{_z} add 1 to {_x} set {_m} to {_m}+8*{_x}+4 return {_locations::*} [spoiler= Cercle Andres] function andres(radius:number,location:location,world:world) :: locations: set {_x} to 0 set {_z} to {_radius} set {_d} to {_radius}-1 while {_z} >= {_x}: add location x-location of {_location}+{_x}, y-location of {_location}-1, z-location of {_location}+{_z} of {_world} to {_locations::*} add location x-location of {_location}+{_z}, y-location of {_location}-1, z-location of {_location}+{_x} of {_world} to {_locations::*} add location x-location of {_location}-{_x}, y-location of {_location}-1, z-location of {_location}+{_z} of {_world} to {_locations::*} add location x-location of {_location}-{_z}, y-location of {_location}-1, z-location of {_location}+{_x} of {_world} to {_locations::*} add location x-location of {_location}+{_x}, y-location of {_location}-1, z-location of {_location}-{_z} of {_world} to {_locations::*} add location x-location of {_location}+{_z}, y-location of {_location}-1, z-location of {_location}-{_x} of {_world} to {_locations::*} add location x-location of {_location}-{_x}, y-location of {_location}-1, z-location of {_location}-{_z} of {_world} to {_locations::*} add location x-location of {_location}-{_z}, y-location of {_location}-1, z-location of {_location}-{_x} of {_world} to {_locations::*} if {_d} >= 2*{_x}: set {_d} to {_d}-2*{_x}-1 add 1 to {_x} else if {_d} < 2*({_radius}-{_z}): set {_d} to {_d}+2*{_z}-1 remove 1 from {_z} else: set {_d} to {_d}+2*({_z}-{_x}-1) remove 1 from {_z} add 1 to {_x} return {_locations::*} [spoiler=Disque Andres] function disk(radius:number,location:location,world:world) :: locations: set {_x} to x-location of {_location}+{_radius} set {_y} to rounded down z-location of {_location}+{_radius} set {_d} to {_radius}-1 set {_a} to {_radius}-1 set {_b} to 0 while {_a} >= {_b}: loop all integers between {_y}-{_a} and {_y}+{_a}: add location {_x}+{_b}-{_radius}, y-location of {_location}-1, loop-integer+0.5-{_radius} of {_world} to {_locations::*} loop all integers between {_y}-{_b} and {_y}+{_b}: add location {_x}+{_a}-{_radius}, y-location of {_location}-1, loop-integer+0.5-{_radius} of {_world} to {_locations::*} loop all integers between {_y}-{_a} and {_y}+{_a}: add location -1*{_radius}+{_x}-{_b}, y-location of {_location}-1, loop-integer+0.5-{_radius} of {_world} to {_locations::*} loop all integers between {_y}-{_b} and {_y}+{_b}: add location -1*{_radius}+{_x}-{_a}, y-location of {_location}-1, loop-integer+0.5-{_radius} of {_world} to {_locations::*} if {_d} >= 2*{_b}: set {_d} to {_d}-2*{_b}-1 add 1 to {_b} else if {_d} < 2*({_radius}-{_a}): set {_d} to {_d}+2*{_a}-1 remove 1 from {_a} else: set {_d} to {_d}+2*({_a}-{_b}-1) remove 1 from {_a} add 1 to {_b} return {_locations::*} Passons à notre sphère: Première chose à "savoir", une sphère de rayon r, est contenu dans un cube de côté 2r. Le centre O, est aussi le centre de notre cube. En géométrie cartésienne, une sphère de centre (x0,y0,z0) et de rayon r est l'ensemble des points (x,y,z) tel que: L'algorithme: r = rayon x0 = position x du centre y0 = position y du centre z0 = position z du centre on se place dans deux coins opposés du cuboid de côté 2r de centre (x0,y0,z0) créer une liste de position contenant les blocs de notre cuboid saisir cette liste: x = position x du bloc y = position y du bloc z = position z du bloc si la difference entre (x-x0)²+(y-y0)²+(z-z0)² et r² < r: ajouter les positions de ce bloc à notre liste finale renvoyer la liste finale En skript: Plusieurs étapes nécessaires: Récupérer un cuboid en format texte Récupérer les locations d'un cuboid [spoiler=Cuboid sous format texte] function bigger(numbers:numbers) :: number: loop {_numbers::*}: if {_max} is not set: set {_max} to loop-value else if loop-value is bigger or equal to {_max}: set {_max} to loop-value return {_max} function smaller(numbers:numbers) :: number: loop {_numbers::*}: if {_min} is not set: set {_min} to loop-value else if loop-value is smaller or equal to {_min}: set {_min} to loop-value return {_min} function cuboid(corner:location,corner2:location,world:world) :: text: set {_x::*} to rounded down x-location of {_corner} and rounded down x-location of {_corner2} set {_y::*} to rounded down y-location of {_corner} and rounded down y-location of {_corner2} set {_z::*} to rounded down z-location of {_corner} and rounded down z-location of {_corner2} add bigger({_x::*}) to {_c::*} add bigger({_y::*}) to {_c::*} add bigger({_z::*}) to {_c::*} add smaller({_x::*}) to {_c::*} add smaller({_y::*}) to {_c::*} add smaller({_z::*}) to {_c::*} return "%{_c::1}%,%{_c::4}%,%{_c::2}%,%{_c::5}%,%{_c::3}%,%{_c::6}%,%{_world}%" [spoiler=Locations du cuboid] function cuboids(cuboid:text) :: locations: loop {_cuboid} split by ",": if loop-value parsed as number is set: add loop-value parsed as number to {_c::*} else: set {_world} to loop-value parsed as world loop all numbers between {_c::2} and {_c::1}: loop all numbers between {_c::4} and {_c::3}: loop all numbers between {_c::6} and {_c::5}: add location loop-number-1, loop-number-2, loop-number-3 of {_world} to {_locations::*} return {_locations::*} [spoiler=Fonction finale] function sphere(radius:number,center:location,world:world) :: locations: set {_corner} to location x-location of {_center}+{_radius}, y-location of {_center}+{_radius}, z-location of {_center}+{_radius} of {_world} set {_corner2} to location x-location of {_center}-{_radius}, y-location of {_center}-{_radius}, z-location of {_center}-{_radius} of {_world} set {_x0} to x-location of {_center} set {_y0} to y-location of {_center} set {_z0} to z-location of {_center} loop cuboids(cuboid({_corner},{_corner2},{_world})): set {_x} to x-location of loop-value+0.5 set {_y} to y-location of loop-value+0.5 set {_z} to z-location of loop-value+0.5 if difference between ({_x}-{_x0})^2+({_y}-{_y0})^2+({_z}-{_z0})^2 and {_radius}^2 is smaller than {_radius}: add loop-value to {_locations::*} return {_locations::*} Bonne utilisation.
  18. 1 point
    Il existe déjà un système de Top/Flop ici : [Hidden Content] Mais je vous en propose un autre qui n'a rien à voir et qui est très performant : Ne nécessite pas d'addon possibilité de choisir par exemple "de la place 5 à la place 10" (ex: /top Kill 5 10) Ordre croissant et décroissant (ex: /top Kill 10 5) inverser l'ordre de lecture : la place 1 à la plus haute valeur/ la plus basse valeur (ex: /top Kill 1 10 /top Kill 1 10 f) /top Kill 10 1 est donc l'équivalent de /top Kill 1 10 f command /top <text> [<integer=1>] [<integer=5>] [<text>]: usage: /top <statistique> [debut] [fin] [inverser] trigger: set {_now} to now #---------------------------------------------------------------# # CODE A MODIFIER # # OBJECTIF : RECUPERER LA LISTE DES JOUEURS ET LEUR STATISTIQUE # #---------------------------------------------------------------# set {_players::*} to yml list "list.allplayers" from file "plugins/PlayerStats/SERVEUR.yml" loop {_players::*}: "%loop-value%" is not "SERVEUR" set {_value} to yml value "%arg-1%" from file "plugins/PlayerStats/%loop-value%.yml" parsed as number #----------------------------# # DEBUT DU CODE UTILE # # NE MODIFIER QUE LES TEXTES # #----------------------------# # les 2 lignes en dessous sont 2 sécurités à activer en cas de doute du fonctionnement du code au dessus # set {_value} to {_value} parsed as number # {_value} +1 > {_value} set {_value} to ({_value}*100000 + (random integer between 1 and 99)) set {_list::%{_value}%} to loop-value delete {_value} if arg-4 is not set: send "<gold>Top <white>%arg-1% <gold>a partir de la place <white>%arg-2% <gold>a la place <white>%arg-3%" to player else: send "<gold>Top <white>%arg-1% <gold>a partir de la place <white>%arg-2% <gold>a la place <white>%arg-3% <gray>(Inversé)" to player set {_a} to 1 loop {_list::*}: set {_result::%{_a}%::%loop-index%} to loop-value add 1 to {_a} set {_num} to arg-2 loop (1+ difference between arg-2 and arg-3) times: if arg-4 is not set: set {_i} to ({_a} + {_num}*-1) else: set {_i} to {_num} loop {_result::%{_i}%::*}: send " <gold>%{_num}%- <light green>%loop-value-2% : <white>%(( (loop-index parsed as number) /100000))%" to player remove 1 from {_num} if arg-3 > arg-2: add 2 to {_num} send "Temps de calcul : %difference between {_now} and now%" to player Il n'y a que le début du code à changer, par exemple avec quelque chose comme: #---------------------------------------------------------------# # CODE A MODIFIER # # OBJECTIF : RECUPERER LA LISTE DES JOUEURS ET LEUR STATISTIQUE # #---------------------------------------------------------------# set {_players::*} to all players loop {_players::*}: set {_value} to {%loop-player%.%arg-1%} parsed as number #----------------------------# # DEBUT DU CODE UTILE # # NE MODIFIER QUE LES TEXTES # #----------------------------# En faite tout ce qu'il faut faire c'est définir les variables {_players::*} et {_value} ! Le reste du code va se charger de traiter ces variables * # les 2 lignes en dessous sont 2 sécurités à activer en cas de doute du fonctionnement du code au dessus # set {_value} to {_value} parsed as number # {_value} +1 > {_value} **N’hésitez pas à supprimer le "set {_now} to now" et la dernière ligne de code qui ne sert qu'à montrer la rapidité du code.
  19. 1 point
  20. 1 point
    Bonjour, bonsoir Sur mon serveur j' ai cacher des têtes un peu partout dans le Hubs, et j' aimerais détecter le clique droit, pour y exécuter une commande "/reward.head". Le "/reward.head" executerais un compteur de tête et au bout de 10 têtes trouvers, un variable s'affiche dans le scoreboard avec "Head : X/10"...un truc du style... Si vous avez des questions je reste disponible, et a bientôt ! ;) Bonne journée/soirée
  21. 1 point
    Bonjour ! Le titre résume très bien l'affaire, je ne sais pas si c'est très utile, mais sait-on jamais, peut-être dans un skript complexe... ? Tout est expliqué dans le code, le voici en spoiler avec un exemple pour ceux ayant la flemme de télécharger ^^: EDIT : voici quelques exemples de forme que l'équation peut prendre : 2x + 1 = 5 -5x +6 = -2 -x -4 = 2 x + 1 = 0 Vous envoyez ceci en paramètre de la fonction en faisant : set {variableTexte} to solv("2x+1=5") Et le tour est joué, la {variableTexte} contient la valeur de x selon cette fonction. Par défaut de la forme "x = ...", modifiable dans les options. Il n'y a besoin que de SkQuery, pour le fait que ce soit une fonction. Vous pouvez l'adapter comme vous voulez :) Voilà voilà :D Blueblasterz
  22. 1 point
    Bonjour bonsoir, je décide aujourd'hui de partager un petit bout de code qui est la fonction factorielle. Je vous invite à mener 2/3 recherches pour comprendre cela. Je ne sais pas trop à quoi ça peut servir en Skript, mais bon on ne sait jamais :P function ffactorial(n: number) :: number: if {_n} is less than or equal to 0: return 1 else: return {_n} * ffactorial({_n} - 1) Voilà, c'est juste comme ça mais bon, Polymeth.
  23. 1 point
    Comment l'utiliser? c'est très simple: 1) Créez la zone de "largage" des tnt pour cela, prenez deux points opposés qui créeront cette zone. (Vous pouvez choisir une plus ou moins grande zone (évitez de faire trop grand pour éviter les crashs/!\) Exemple: le point 1 en x:15 y:70 z:15 et le point 2 en x:-15 y:65 y:-15 2) Au premier point, faites la commande "/tnt 1" puis au second point, la commande "/tnt 2" 3)Un fois cela fait. 4) Il ne vous reste plus qu'a executer la commande /tntrandom 5) Vous pourrez l'utiliser plusieurs fois afin de faire spawn plusieurs tnt Merci beaucoup pour votre aide !
  24. 1 point
    Bonjour, je code actuellement un serveur UHC Host et il me faudrait le scénarios Superhéros je m'explique SuperHeroes: quand je ferais la commande /superhero sa va donner des effets de potions Aléatoire à tout les joueurs mais chacun différents. Les effets: Soit speed 2 et Haste 2, soit Force 1, Soit résistance 1, soit Health boost 5 (10 Coeur en +), soit Jump Boost 3 + Haste 2. voila donc si vous arrivez a faire une commande qui donne ces effet mais aléatoire à tout les joueurs Je vous remercie d'avance !
  25. 1 point
    Bonjours moi j'ai un petit système mais c'est pas des permission :/ C'est des variable ex Command /test: Trigger: If {Perm.%player%} is true: Message "il a la perme" Else: Message "Vous n'avez pas la permission" Command /addperm <text> <player>: Trigger: If arg 1 is set: If arg 2 is set: Set {%arg 1%.%arg 2%} to false Je suis sur tel du coup les Tab c'est pas bien :( puis je pense que tu as compris ! :)
×

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.