Aller au contenu

Classement


Contenu populaire

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

  1. 2 points
    Bonjour, ce sujet s'adresse aux personnes disposant déjà des bases en skript et qui souhaite s'améliorer dans leur méthodologie Règle de nomenclature {_nameofvariable} ou {_name.of.variable} ou {_nameOfVariable} A défaut de retrouver le sujet de la personne qui avait rédiger tout un article dessus je vous renvoie vers cette page [Hidden Content] Les noms des variables doivent donc être attachés en commençant par une minuscule et les mots suivant doivent commencer par une majuscule en étant attaché au précédent , donc {_nameOfVariable}, Pour ce qui est des fonctions la règle devrait être la même que pour les methods() mais il y a juste un petit problème qui se pose avec skript-mirror, "Comment faire la distinction entre une méthode java et une fonction skript ?" pour le coup je suggère que toute les premières lettres du nom d'une méthode commence par une majuscule (n'hésitez pas à donner votre avis) La bonne méthode pour définir une variable {player.level.%player%} , ça vous plait ? moi ça me donne envie de m’arracher les yeux ! Pourquoi ? Car plusieurs problèmes se pose : On peux oublier de supprimer des variables qu’on utilise plus, lorsque l’on souhaite supprimer toutes les informations concernant un joueur c’est plus que pénible d’utiliser cette méthodologie, et enfin ce n’est absolument pas le plus optimal pour un système de top/flop par exemple. Ma recommandation : {%uuid of player%::level} , {%uuid of player%::{@title}::homes::*}, {{@title}::locations::*} , en gros utiliser les variables liste ! C’est vraiment très pratique et plus complet que les variables simples. Le plus gros avantage est ceci delete {%uuid of player%::*} Bonus : j’ai écris {@title} , vous aurez donc comrpis que j’utilise une « option » , j’aime bien faire ça pour définir quel script utilise quel variable et ainsi éviter tout conflit entre scripts Bonus 2 : A l’heure ou j’écris il y a un problème avec la version Skript-2.4Beta8 , qui bug avec function {@title}Xp(player: player) , mais j’ai déjà signalé le bug et il devrait être corrigé un jour où l’autre. Variable local ou global ou yaml ou SQL ? La règle est simple, le fichier variables.csv doit pourvoir être supprimé sans que cela ne casse quoi que ce soit après un redémarrage, pourquoi ? Car il arrive parfois qu’un problème persiste alors que le code est correct, et cela peut être la cause de l’oubli de suppression d’une variable (ce cas se présente principalement avec les variables de type liste {::*} ) Pour éviter ce phénomène il faut privilégier les variables locales (qui en plus ne s’écrivent pas dans le fichier .csv donc gain de temps), et les variables globales doivent êtres définis lors d’un événement tel que le on load: ou lors de l’exécution d’une commande ou … Dans quel cas utiliser les fichiers yaml (ou autre type de fichier textuel) ? Je recommande ce type de fichier pour tout ce qui est lié à la sauvegarde de statistique ou de données concernant le joueur ou le serveur qui doivent persister après l’extinction du serveur. L’utilisation de l’addon Skript-yaml sera nécessaire et pour ceux qui se le demande, oui c’est plus long au chargement mais cette addon a la particularité de ne pas passer son temps à aller chercher l’information dans le fichier, une fois que le fichier est chargé il est enregistré dans la RAM ce qui le rend rapide d’accès. EDIT : Comme l'indique Kilterra dans les commentaires, il y a un ralentissement du à l'accès à ce ficher, voici la technique que j'utilise pour palier à ce problème : options: title: breeding author: Anarchick version: 1.0 dependencies: skript, skript-yaml, SkQuery, skent, skript-mirror, skellet config: plugins/skript/config on load: if file "{@config}/{@title}.yml" exist: load yaml "{@config}/{@title}.yml" as "{@title}" delete {{@title}::*} set {{@title}::version} to yaml value "version" from "{@title}" if {{@title}::version} is not {@version}: send "<pink>{@title} : Unload the script cause version of the script ({@version}) does not match with version of the config file (%{{@title}::version}%)" to console and ops stop set {{@title}::description::*} to colored yaml list "description" from "{@title}" without string checks set {{@title}::egg::uncooked::name} to colored yaml value "egg.uncooked.name" from "{@title}" without string checks set {{@title}::egg::uncooked::lore::*} to colored yaml list "egg.uncooked.lore" from "{@title}" without string checks set {{@title}::egg::cooked::name} to colored yaml value "egg.cooked.name" from "{@title}" without string checks set {{@title}::egg::cooked::lore::*} to colored yaml list "egg.cooked.lore" from "{@title}" without string checks set {{@title}::egg::cooked::time} to yaml value "egg.cooked.time" from "{@title}" set {{@title}::egg::cooked::xp} to yaml value "egg.cooked.xp" from "{@title}" else: send "<pink>The config file at path ""{@config}/{@title}.yml"" does not exist" to console and ops Une fois fait je peux oui ou non décharger le fichier yml de la ram Le cas du SQL : C’est très sympathique mais aussi très pénible à utiliser, entre latence, baisse de performance, code à rallonge, perte de données, base de données payante, problème de configuration réseau, … Bref, c’est malheureusement une vraie galère bien que l’idée soit bonne. Recommandé uniquement pour les personnes qui gère un site web utilisant la même base de donnée SQL. Rédiger en français ou en anglais ou autre ? Souvent je vois du code avec des nom de variable comme {joueurs::*} ou {niveauJoueur.%player%} , alors je suis d’accord que nous sommes sur un forum français et que nous sommes francophones MAIS il ne faut pas oublier que la plus grosse communauté Skript est anglophone et que c’est chez eux qu’il y a les « skripteur » les plus talentueux , donc si vous avez un jour besoin de demander de l’aide sur le forum SkUnity ou les différents discords anglophone il est préférable de rédiger les noms de variables en ANGLAIS , car oui vous avez bien fait correspondre votre nom français avec l’utilisation que vous faite de votre variable et ça aide beaucoup pour comprendre rapidement votre code, mais si vous avez besoin d’aide de la part d’un anglophone ça peut lui un poser problème de compréhension et il ne vous répondra peut être pas. Imaginer on fait l’analogie avec des écritures cyrilliques ou des Kanji, là ça devient très complexe car en plus la personne qui souhaite vous aider ne pourra même pas utiliser les mêmes caractères que vous pour définir une nouvelle variable. Conclusion : LES NOMS DE VARIABLES DOIVENT ÊTRE ÉCRIT EN ANGLAIS PS : Les commentaires doivent être écrits si possible dans la langue du forum sur lequel vous souhaitez partager votre script. Voir même en FR et ANG en même temps pour les courageux ! L’optimisation poids/lisibilité/évolutivité/CPU/RAM Lorsque tu code (peu importe le langage), ne te dis pas « ça fonctionne donc je n’y touche plus », c’est une mauvaise façon de réfléchir, si l’on ne fait pas d’effort pour optimiser son code on ne progresse pas ! Il existe différentes façons d’optimiser et certaines sont compatibles les uns avec les autres, le tout c’est d’identifier ce dont on a besoin. Par exemple mon projet btooom est tellement conséquent qu’il m’impose de faire un code extrêmement optimisé pour le CPU/RAM mais à défaut il est très peu lisible et son évolutivité me demande parfois de tout réécrire. Mais je ne partage pas ce code donc ce n’est pas gênant. (En même temps aucun code n'est en double, tous mes scripts sont liés les uns aux autres dans le but de réduire le plus possible la consommation des ressources matériel ce qui veut dire que pour identifier une erreur c'est un véritable labyrinthe dont je suis le seul à connaitre les recoins) Et pour mon autre projet de serveur survie c’est totalement différent, je fais un code orienté sur la lisibilité et surtout l’évolutivité, mais j’optimise moins les ressources CPU/RAM (J'ai du code en double car chacun de mes scripts sont totalement indépendant et non interférant avec les autres), par contre ça me permettra de potentiellement partager mes scripts. Tout ce que j’ai à dire dans cette rubrique c’est qu’il faut bien réfléchir en amont à comment doit être penser son code en mettant toute sa bonne volonté pour l'optimiser le plus possible. Maintenant je vous invite à proposer des exemples de code (basique ou complexe tant qu'il ne sont pas long) qui peuvent être optimisé afin de donner des idées : #étape 1 Set {_test::*} to "premier", "second" and "troisième" Loop {_test::*}: Broadcast "%loop-value%" #étape 2 Loop "premier", "second" and "troisième" Broadcast "%loop-value%" #étape 1 broadcast "5" wait 1 second broadcast "4" wait 1 second broadcast "3" wait 1 second broadcast "2" wait 1 second broadcast "1" wait 1 second #étape 2 loop 5 times: broadcast "%loop-number%" wait 1 second #étape 1 loop 100 times: set {_n} to loop-number {_n} > 80 #étape 2 loop 20 times: set {_n} to loop-number +80 #étape 3 loop integers between 81 and 100: #étape 1 set {_::*} to false and true set {_} to random element out of {_::*} if {_} is false: set {_} to true else: set {_} to false #étape 2 set {_} to random boolean out of false and true set {_} to true if {_} is false otherwise false #étape 3 avec l'addon skript-mirror set {_} to random boolean out of false and true set {_} to !{_}
  2. 2 points
    Je trouve ma signature très poetique
  3. 1 point
    Comme dit en MP, il faut vraiment utiliser des fonctions pour optimiser ton Skript. À revoir, mais les idées sont là.
  4. 1 point
    Salut, Faut vraiment que tu apprennes a optimiser tes skript. Utilises des fonctions, y'a genre 90% de tes lignes de code qui pourrait être enlever. De plus, tu utilises skquery pour le menu. Enfin, la commande fpgive n'a pas de permission donc les joueurs peuvent se give des oeuf de loup à l'infini. La commande fpclose ne sert a rien. Breff, c'est un mauvais skript. PS (après la lecture de la réponse): Si une MAJ d'opti est à venir, bah sors pas ton skript qui n'est pas du tout opti...
  5. 1 point

    Classique

    Version 1.5.0 release

    4 downloads

    Voici un Skript venant de notre serveur MédiévalTown, nous le partageons pour d'autre serveur utilisant Skript & voulant faire des pad sans se compliqué la vie ! Voici comment ce présente ce Skript, 4 commandes : /pad list - permet de visualisé les pads déjà enregistré /pad Setblock [id] [Force] - permet d'enregistrer un pad de propulsion avec un ID unique et une force illimitée (évitez de mettre 50000) /pad delete [id] - permet de supprimer l'enregistrement d'un pad et donc d'annuler sont effet /pad debug - Permet de supprimer tout les variable lié a ce skript (A manipuler avec précaution)
  6. 1 point
    Encore 3 likes et j'atteins les 200 réactions positives yay
  7. 1 point

    Classique

    Version 2.2.3 + Installer 1.4

    1394 downloads

    --------------------------------------------------------------------------------------------- L'ancien doit être corrigé, pour du nouveau contenue va falloir attendre car je suis sur du dev de mod actuellement Idée déjà reçu : - Maire - l'arnacoeur - L'ombre Message Update le 30/07/2019 -------------------------------------------------------------------------------------------- /. INTRODUCTION Bonjour, voici un script fait pour la 1.12.2 et ayant pour but de permettre à n'importe quel joueur ayant un serveur de faire une partie de Lg-UHC grandement personnalisable. Le script fait 3600 lignes et contient environ 156 000 caractères. Merci à Faywyrr pour son aide pour tester le plugin ainsi que ses nombreuses bonne idées ^^ Merci à ItsFytz pour m'avoir prêté son compte lors de tests ainsi que pour l'écritures de certains messages Merci à Cormorax pour ses idées I. INSTALLATION Ne marche pas pour avant 1.12.2 Certain hébergeur ont banni des plugins instables si mal utilisés (Skellett pour boxtoplay ), merci de renommer les fichiers bannis pour un bon fonctionnement Ceci n'est pas un plugin en .jar mais un script ! il utilise donc Skript, cette section montre comment l'installer ainsi que tout les plugins (addons) nécessaires. Ce plugin nécessite spigot ou paper-spigot ou Sponge (version compatible avec spigot) ou Atom (cauldron pour 1.12.2) etc... tout ce qui utilise l'API spigot. Donc surtout pas BUKKIT Il vous suffit de juste télécharger l'installer(le .jar) dans le bouton de téléchargement à droite, le mettre dans votre dossier plugins, lancer votre serveur, attendre que celui-ci soit totalement démarré. L'éteindre puis le rallumer et voilà ^^ Vous pouvez ensuite enlever l'installer de votre dossier plugins ALTERNATIVES En premier télécharger tout ces plugins (dans les versions demandés) et mettez les dans le dossier /plugins/ Skript Tuske Skquery-Lime MundoSK Skellett Pour avoir un chat propre, il faut avoir EssentialsX et EssentialsXChat en dernière version : https://ci.ender.zone/job/EssentialsX/ Une fois tout les fichiers .jar dans le dossier, démarrez votre serveur et une fois que celui-ci est totalement charger; éteignez-le. Allez maintenant dans le dossier dans le chemin : /plugins/Skript/scripts/ Vous pouvez supprimer tout les fichiers dedans et mettre à la place le fichier nommé "Lg-UHC.sk" téléchargeable sur cette page. Relancez votre serveur, faite la commande /lg setup et tout est prêt ^^ Vous pouvez maintenant configurer une partie (/lg config), démarrer une partie (/lg start) ou autres (voir /lg help) II. Commandes et permissions : "/lg" ou "/lg help" -> Voir la liste des commandes : lgu.admin pour voir toutes les commandes "/lg setup" -> Lors de l'installation du plugin, initialise les variables : lgu.admin.setup "/lg config" -> Configurer la partie : lgu.admin.config "/lg start" -> démarrer la partie : lgu.admin.start "/lg stop" -> Arrêter la partie : lgu.admin.stop "/lg spectateur" -> Gérer les joueurs ne participant pas : lgu.admin.spec "/lg respawn" -> Faire respawn un joueur sans stuff (Voir dans IV. OPTIONS pour une autre solution) : lgu.admin.respawn "/lg force (mur|pvp|rôles)" -> Forcer un événement "/lg reset" -> Remettre à zéro toutes les variables (ne faire qu'en cas de bug) : lgu.admin.reset Commandes pour joueur : "/lg lg" -> permet aux loups-garous de connaitre les autres loups-garous "/lg roles" permet de voir tout les rôles encore existant dans la partie "/lg info" -> voir les infos de la partie "/lg p" -> Voir son rôle ainsi que sa description III. Vidéo explicative IV. OPTIONS En faisant /lg config dans la partie vous pouvez configurer : - Les rôles - La durée d'un jour - Le chat - Le temps avant la bordure - taille de la bordure de départ - taille de la bordure à la fin - temps avant le pvp - temps avant la révélation des rôles - items de départ - items drop à la mort - la durée d'un jour (le visuel bug pour "extrème") - Paramètre de mort à la déconnexion - Règles - Scénarios Dans le script (Lg-UHC.sk) il existe une option à la ligne 7 (debug) qui si activer (remplacer "false" par "true") permet lors de la mort d'un joueur de pouvoir ressuciter un joueur sans dévoiler son rôle et en gardant le même stuff, très utile si vous jouez avec des joueurs mauvais en survie. V. Règles Les règles sont globalement similaire aux Lg-UHC fait sur youtube, bien que certain rôle ont été nerfs ou créer... VI. Remercient : - ItsFytz pour les messages des rôles - uiytt pour avoir créer le script - Les créateurs des addons VII. Me contacter Je suis disponible sur discord : uiytt#7002 SI VOUS AVEZ DES PROBLÈMES, MERCI DE ME CONTACTER SUR DISCORD pas sur skript-mc, Merci
  8. 1 point
  9. 1 point
    Normalement ça fonctionne, tu as quelle erreur ?
  10. 1 point
    Salut, Tu peux essayer peut-être: format slot 12 of player with skull of ("MHF_Cow" parsed as an offline player) named "&5&lPets" to run [make player execute command "/fpmenu"] après je ne suis pas sûr car j'utilise TuSKe et en 1.12.2
  11. 1 point
    Un code pas fini mais qui permet de créer des régions worldguard via skript-mirror 2.0.0 import: com.sk89q.worldguard.protection.regions.ProtectedCuboidRegion com.sk89q.worldedit.math.BlockVector3 com.sk89q.worldguard.WorldGuard com.sk89q.worldedit.world.World com.sk89q.worldedit.bukkit.BukkitAdapter on sneak toggle: player is sneaking set {_chunk} to chunk at player set {_loc1} to {_chunk}.getBlock(0, 0 and 0).getLocation() set {_loc2} to {_chunk}.getBlock(15, 255 and 15).getLocation() set {_min} to BlockVector3.at({_loc1}.getX(), 0 and {_loc1}.getZ()) set {_max} to BlockVector3.at({_loc2}.getX(), 255 and {_loc2}.getZ()) set {_region} to new ProtectedCuboidRegion("spawn", {_min} and {_max}) set {_container} to WorldGuard.getInstance().getPlatform().getRegionContainer() set {_regions} to {_container}.get(BukkitAdapter.adapt(player.getWorld())) {_regions}.addRegion({_region}) PS: C'était bien prise de tête à faire !!
  12. 1 point
    on damage of player: attacker is a player victim is a player set {attacker::%{_victim}%} to attacker wait 10 seconds clear {attacker::%{_victim}%} on death of player: if attacker or victim is not in world "lobby": if attacker is set: set {_attacker} to attacker else: set {_attacker} to {attacker::%{_victim}%} send "&a+1.0" to {_attacker} add 1 to {_attacker}'s balance send "&cVous êtes mort(e) contre %attacker%" to victim send "&aVous venez de détruire %victim% !" to {_attacker} clear {attacker::%{_victim}%}
  13. 1 point
    J'avais 630 crédits, mais j'ai tout niqué xD
  14. 1 point
  15. 1 point
    Salut, essaye de supp la partie scoreboard puis l'autre partie, pour voir de quel partie provient ce message. As-tu des erreurs console ?
  16. 1 point
    ._. on death: attacker is a player: victim is a player: add 2 to player's balance
  17. 1 point
    Évidemment que ça fonctionne mieux vu que c'est spécialement prévu pour la 1.8, t'es bébête toi x) (je plaisante hein te vexe pas)
  18. 1 point
    Merci pour les 10 crédits, je t'aime
  19. 1 point
    Sa marche bah tu m'envoye un message quand tu peut puis je te repondrai des que je peut;)
  20. 1 point
    L'équipe vous annonce que le topique a été verrouillé pour éviter de "déterrer une tombe". Cordialement.
  21. 1 point
    Tiens ! options: tag: &6&oMenu perm: spawn.use command /setspawn: permission: {@perm} trigger: set {spawnp} to location of player command "/spawn": message "Vous êtes arrivés au spawn" teleport player at {spawnp} On right click with clock: open chest with 3 rows named "&cPortail de téléportation" to player wait 1 tick format slot 12 of player with beacon named "&fSpawn" with lore "&7Pour te teleporter au spawn ||&7 Fais /spawn ||&7 Ou clique ICI" to run [make player execute command "/spawn"] format slot 14 of player with Grass named "&fCréatif" to run [make player execute command "/mvtp creatif"] on join: set slot 5 of player to a clock named "{@tag}" teleport player at {spawnp} on quit: clear player's inventory
  22. 0 point
    J'ai chopé cette monstruosité tout à l'heure sur le discord : every ticks: loop all entities: if loop-entity is a snowball: loop all blocks in radius 1 around loop-entity: wait 1 tick if loop-block is air: set loop-block to ice block add location of loop-block to {_blocks::*} wait 2 seconds loop {_blocks::*}: set block at loop-value to air wait 1 tick remove loop-value from {_blocks::*} J'aimerai bien m'en occupé pour montrer un exemple d'optimisation plus que nécessaire mais il faut que je trouve le temps pour ça ^^
  23. 0 point
    Merci ça marche. Mais juste un problème avec ça J'ai rajouté ça car j'en ai besoin. Mais on peut pas mettre de variables dans le nom de la variable
  24. 0 point
    je trouve ton script très bien mais cela serais mieux si sa serais plutôt utiliser un item genre une hache en or pour pouvoir fouiller une personne mais avant de pouvoir les menotter
  25. 0 point
    Hey uiytt Je suis sur que tu as fait du très bon travail mais j'aimerais que tu en face un que pour moi je te payerais 15 euro et pour mes demande elle sont ici : Merci beaucoup si tu le fait ! mon discord Ratsock#3724
×

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.