Aller au contenu

Anarchick

Membre
  • Compteur de contenus

    321
  • Inscription

  • Dernière visite

  • Jours gagnés

    17
  • Crédits

    597 [Faire un don]

Messages posté(e)s par Anarchick


  1. skript-packet

    Consulter cette ressource

    Skript-packet est un remplacement de l'addon ThatPacketAddon qui n'est plus mis à jour depuis longtemps.

     

    Les packets sont les informations échangé entre le serveur et le client. On utilise souvent la manipulation des packets pour modifié le contenue visuel de chaque joueur indivuduellement, exemple :  faire croire à un joueur qu'il a en fasse de lui un bloc de TNT alors qu'en vérité il s'agit d'un magnifique bloc de diamant ! 

     

    Cet addon n'est absolument pas conseillé aux débutants, il faut des grosses connaissances en Minecraft / packet / java / skript / skipt-reflect pour l'utiliser à son plein potentiel !

     

    Si vous avez déjà utilisé TPA,  j'ai fait mon possible pour simplifié la migration du code.

    Les deux principales différences avec TPA sont :

    - Il n'y a plus besoin de spécifié le type de field !

    - J'ajoute un support pour interagir avec les objets java et skript afin de l'imiter l'utilisation de skript-reflect.

     

    Vous aurez-besoin d'installer

    Contenu masqué

      Réagissez ou répondez à ce message afin de consulter le contenu masqué.
     pour faire fonctionner cette addon.

    L'utilisation de l'addon

    Contenu masqué

      Réagissez ou répondez à ce message afin de consulter le contenu masqué.
    est plus que recommandé !

     

    Retrouvez mes exemples de code utilisant skript-packet sur mon github : 

    Contenu masqué

      Réagissez ou répondez à ce message afin de consulter le contenu masqué.
     , Si vous avez d'autres exemples utiles à me soumettre, je les acceptes.

     

    Désolé mais je ne donne pas de support sur l'utilisation des packets aux débutants, c'est un sujet très difficile à maitrisé et les tutos concernant TPA, MundoSK, Skellet ou même Java sont tous applicable à skript-packet ! Bonne chance :3

     


     


  2. Bonjour, ce que tu demande est très simple donc je ne vais pas te donner le code, cependant je vais t'aider à le faire. (si ça ne te conviens pas tu peux faire une demande de skript ou attendre que quelqu'un d'autre accepte de te donner le code tout prêt, merci de ta compréhension)

     

    Contenu masqué

      Réagissez ou répondez à ce message afin de consulter le contenu masqué.

     

    Il faut vérifier que le joueur qui s’appète à ban quelqu'un est bien un admin et non pas un inconnu qui aurait trouvé l'épée par hasard dans un coffre ! 

    Contenu masqué

      Réagissez ou répondez à ce message afin de consulter le contenu masqué.

    if player is op:

    Contenu masqué

      Réagissez ou répondez à ce message afin de consulter le contenu masqué.

     

    En espérant que ça t'aide, bonne chance.

     

    PS: Edit ton message pour indiquer les information demandé dans le template, version du serveur + skript + addons + ....


  3. Salut, ta demande ne suit pas le template recommandé (enfin si mais tu n'as pas modifié les informations demandé, skript 2.X.X n'est pas très précis ! )

    Pour répondre à ta demande, il me semble que tu as une partie de la solution dans le fichier spigot.yml , 

    Contenu masqué

      Réagissez ou répondez à ce message afin de consulter le contenu masqué.
     (tab-complete) , exemple, si tu le met à -1 ça désactive COMPLÉMENT la suggestion du tab-completer (pas seulement celui des commandes)

    La chose à savoir c'est que la suggestion des commandes et la suggestion des arguments sont deux chose similaire mais DISTINCT. J'ai récemment codé un script qui permet de masquer la suggestion des commandes si le joueur ne possède pas la permission pour l’exécuter, il n'est pas fini à 100% donc je ne l'ai pas encore upload sur le forum, si tu le veux  

    Contenu masqué

      Réagissez ou répondez à ce message afin de consulter le contenu masqué.

    • J'aime 1

  4. il y a 3 minutes, zarco70 a dit :

    Sauf qu'avant de se lancé dans un serveur il ne faut pas se contenter que de simple connaissance le mieux est d'apprendre un maximum le skript et de le comprendre. Le skript que j'ai donné est composé d'un loop, d'une commande et de condition si il ne connait aucun de c'est truc, alors il n'a rien à faire dans se Forum je suis d'accord qu'ils apprennent par eux même mais si ils sont pas capable de comprendre ce que j'ai donner, la on peut plus rien pour eux après pour des skript plus complexe, je suis d’accord avec toi.

    Je trouve que c'est justement l'inverse : Si c'est simple (comme la cas présent) il ne faut pas spoonfeed car ce sont le bases , mais à l'inverse si c'est trop complexe à ce moment le spoonfeed se justifie. C'est mon avis perso en tout cas.


  5. il y a 55 minutes, zarco70 a dit :

    Ou tout simplement lui donner un code

    Contenu masqué

      Réagissez ou répondez à ce message afin de consulter le contenu masqué.

    Par contre sa peut être une source de lag c'est pour sa qu'il ne faut pas abuser des " every " mais pour les particules je ne vois pas d'autre solution

    Le spoonfeed n'est pas une pratique recommandé lorsque le besoin n'est pas justifié 😕 Faire en sorte que les dev skript apprennent par eux même est plus utile pour leur progression


  6. Salut, tu utilise skript 2.1+ donc tu as cette expression pour afficher les particules

    Contenu masqué

      Réagissez ou répondez à ce message afin de consulter le contenu masqué.

    ou avec skrayfall  ceci 

    Contenu masqué

      Réagissez ou répondez à ce message afin de consulter le contenu masqué.

    Ensuite le truc à savoir c'est que la location d'un joueur (et de la majorité des entités) se situe à la position des pied du joueur. Et si tu veux que ce soit encore plus bas tu as ça : 

    Contenu masqué

      Réagissez ou répondez à ce message afin de consulter le contenu masqué.


  7. Salut, comme tu l'as dit ton problème viens du wait, et plus précisément de là où tu l'as placé dans ton code. Actuellement il est à l'intérieur de la boucle, il te suffit donc de le placer à l'extérieur de cette boucle. exemple :

    Contenu masqué

      Réagissez ou répondez à ce message afin de consulter le contenu masqué.

    PS : ton code pourrait être écris différemment mais si tu débute c'est très bien, on peut toujours s'améliorer 😉 

    et petit conseil, à la place d'utiliser la commande /effect, utilise plutôt ceci

    Contenu masqué

      Réagissez ou répondez à ce message afin de consulter le contenu masqué.


  8. Il y a 3 heures, Project69XXX a dit :

    Il dit n'importe quoi pour sauter des lignes dans un with lore il suffit de faire ça

     

     

    format slot 9 of player with {Item} named "Nom" with lore " ||  &fPrix: &c50€" to run [make player execute command "/command"] ces les ||   qui font sauter les lignes plus tu en met plus ça saute de ligne

    Je ne dis pas n'importe quoi , un peu de respect ...

    Si tu utilise skript2.5-alpha3 en 1.15.2 (informations donné par la personne qui a posté la demande d'aide) tu saurais que la double barre ne fonctionne plus ... et même depuis longtemps ! Et si tu as besoin d'une preuve la voici :

    barre.jpg.bd0858ca042f98e9cdcd79cb99f85ee2.jpg alors qu'avec la méthode que j'ai indiqué ça fonctionne très bien : 

     

    Pour l'avenir Un peu plus de courtoisie dans ta façon de répondre aux gens s'il te plait.

    list.jpg


  9. Il a parlé de //expand, il me semble que ça ne s'applique que aux regions cuboid (il me semble) ? Il a aussi dit que la region n'existait pas encore et c'est pour cela que je n'ai pas mis ton code 😉

    Le 02/05/2020 à 19:55, Makavelli a dit :

    tout en sachant que la zone agrandie n’est pas encore une région WG


  10. "stop" au lieu de "stop loop", 

    le stop loop te fait sortir de la loop tout en continuant le code, alors que le "stop" arrête complètement le code

    Tu n'es pas obligé d'utiliser une variable global pour {%player%.logout.coord} , tu peux utiliser {_loc} tout court (si tu ne réutilise pas la variable)


  11. avec skUtilities 

    Contenu masqué

      Réagissez ou répondez à ce message afin de consulter le contenu masqué.
     (cet addon n'est malheureusement plus recommandé)

    ou juste avec skript: 

    Contenu masqué

      Réagissez ou répondez à ce message afin de consulter le contenu masqué.


  12. n'utilise pas le on any move (cet event est appelé trop fréquemment) , lors du /quit tu créer une variable qui enregistre la position du joueur, et a chaque boucle tu vérifie que la position actuel du joueur et la même que celle de la variable. Si ce n'est pas le cas tu lui affiche un message pour dire qu'il a bougé et tu stop le code.

     

    Ne fait pas non plus de add -1 , mais plutot remove 1 from {}

    • J'aime 1

  13. Il y a 2 heures, Alliz a dit :

    D'accord je testerai !

    PS: pour l'enclume tu t'embête, perso j'utilise ça:

    Contenu masqué

      Réagissez ou répondez à ce message afin de consulter le contenu masqué.

     

    Je n'utilise plus TuSke et dans l'api Spigot je n'ai pas vu l'event pour la combinaison dans l'enclume donc je pense que TuSke fait à peu près la même chose que moi

    • J'aime 1

  14. Il n'existe pas d'event pour détecter qu'un item a fini de cuir ou est récupérer par un joueur, il faut effectivement faire comme as dit CptBeffHeart , 

    voici le code que j'ai utilisé pour détécter l'utilisation d'une enclume, tu dois juste l'adapter pour les four (mais ça je te laisse faire)

    Contenu masqué

      Réagissez ou répondez à ce message afin de consulter le contenu masqué.

    Je ne sais plus pourquoi j'ai utilisé skript-mirror pour les 2 premières ligne mais ça devrait fonctionne avec `set {_topInv} to top inventory of player`

    • J'aime 1

  15. Puisque ce n'est pas forcement évident à faire je te donne le code complet :

    Contenu masqué

      Réagissez ou répondez à ce message afin de consulter le contenu masqué.

    sachant que pour le Add et Remove tu as une particularité, 

    Contenu masqué

      Réagissez ou répondez à ce message afin de consulter le contenu masqué.

    En gros si l'item existe dans le monde (dans un inventaire ou tombé au sol), tu n'a pas besoin de la première façon de l'écrire, CEPENDANT si l'item n'existe pas, donc si il s'agit d'une variable tu dois forcement utiliser la première façon !

    • J'aime 1

  16. Si tu sais utiliser skript-mirror, ça doit être ça je pense :

    Contenu masqué

      Réagissez ou répondez à ce message afin de consulter le contenu masqué.

     

    je verrais si je créerai ce code dans les prochain jours (pas sûr depuis que j'ai découvert Netflix je suis beaucoup moins productif , coïncidence ? )


  17. Dans le code java, les livres d'enchantement n'utilise pas le même d'enchantement que les classiques , ils "stockent" un enchantement. Ce qui explique pourquoi tu ne peux pas l'utiliser dans une enclume. Je pense que tu as besoin de passer par skript-mirror


  18. Il y a 10 heures, Olyno a dit :

    Source ? Je peux t'assurer que sans skript-mirror ca fonctionne très bien.

    Comme je l'ai dit, je n'ai pas testé, c'est de mémoire et avec 1 an sans avoir manipuler skript il y a certains trucs dont je ne suis pas sûr. C'était une hypothèse 😉


  19. La requête SQL ne serait pas delayed (peut mettre plusieurs secondes avant de s’exécuter) par hasard ? Il me semble de toute façon que le return des fonctions skript ne permettent pas les effets avec du délai (comme un wait par exemple). Les customs expressions de skript-mirror le permettent. Après je dit peut être un truc qui n'as rien à voir, j'avoue que je n'ai pas testé.


  20. il y a 22 minutes, noftaly a dit :

    Perso sur ce forum, je vois beaucoup de gens dire qu'ils ont optimisé leur code alors qu'ils ont juste réduit le nombre de ligne ^^

    Et il y a une énorme différence entre les 2 ! Tu peux très bien avoir un code pas optimisé du tout de 25 lignes, mais avoir le même code de 150 lignes beaucoup plus optimisé !

    J'ai chopé cette monstruosité tout à l'heure sur le discord :

    Contenu masqué

      Réagissez ou répondez à ce message afin de consulter le contenu masqué.

    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 ^^

    • Bruh 2

  21. Il y a 13 heures, Kilterra a dit :

    Tout d'abord, au niveau des variables listes et autres.
    Utiliser les variables listes n'est pas LA solution. Parfois je suis d'accord qu'il vaut mieux les utiliser mais à d'autres moments il vaut mieux passer par des variables simples. Comme par exemple une simple variable {chatOn} ça ne sert à rien d'utiliser une variable pour cela.

    Ensuite, il ne faut pas toujours utiliser les fichiers yaml pour sauvegarder des variables qui doivent résister à l'extinction du serveur car même si skript-yaml est l'addon le plus optimisé il ne reste pas moins que charger un fichier en mémoire coûte beaucoup en termes de ressources à trop haute dose.

    Aussi, pour moi, un code doit dans la mesure du possible est lisible même en étant optimisé, on ne fait pas de l'assembleur là.

    Enfin, il existe des règles de nomenclature des noms de variables comme tu l'a dis et je pense que ce serait bon que tu les mettes explicitement dans ton post.

    J'ai pris en compte ton commentaire et apporté des modifications dans la section nomenclature, yml et rajouté la raison de pourquoi le code de mon projet btooom n'est pas optimisé pour la lisibilité 

    Le 15/10/2019 à 14:40, Anarchick a dit :

    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

    Sans cette méthode mon serveur perdrait trop de TPS et je me retrouverai avec trop de code (j'en ai +10k)

     

    Mais je suis d'accord avoir toi qu'il est bon d'avoir le plus possible de lisibilité, c'est pour ça que mon second projet qui est bien moins imposant me permet de tout miser là dessus


  22. à l’instant, Kilterra a dit :

    Salut,
    Plutôt intéressant même si il y a quelques parties pour lesquels je ne suis pas d'accord.

     

    Lesquels ? Tu peux donner ton opinion ça peut être intéressant d'avoir un autre point de vue


  23. dBonjour, 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

    Contenu masqué

      Réagissez ou répondez à ce message afin de consulter le contenu masqué.

    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 :

    Contenu masqué

      Réagissez ou répondez à ce message afin de consulter le contenu masqué.

    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.

     

    Petites astuces pour optimiser vos codes :

    Quand je dis optimiser vos codes ça ne veut pas seulement dire "réduire la taille de son code" , absolument pas ! Parfois un code plus long est plus optimisé qu'un petit code ! Ce qui est effectivement commun à toutes les méthodes d'optimisation c'est de réduire la taille du code MAIS de façon logique pour enlever ce qui est inutile sans impacter les performances. L'optimisation passe souvent par une refonte TOTALE du code d'origine afin de trouver un algorithme plus efficace pour faire la même chose. L'optimisation c'est par exemple de passer d'une technologie de réseau GSM 3G à 4G puis 5G, ou bien de réduire la finesse de gravure des processeurs de 14nm à 7nm, ou encore Skript-yaml ! Et oui, la particularité de skript-yaml par rapport à skUtilities c'est qu'il enregistre le fichier dans la ram et ainsi il n'a pas besoin d'aller le chercher sur le disque de stockage à chaque fois ! un gain de temps considérable pour la même fonctionnalité ! Et je suis d'accord, c'est bien jolie de vous dire d'optimiser vos code mais sans vous dire réellement comment ... bah en faite on apprend à optimiser avec l'expérience, en regardant le code des autres, en demandant des conseilles, en faisant des tests, en se tenant à jour des ajouts d'une nouvelle version d'un plugin et surtout en se creusant la tête !!!

    Révélation

    Anecdote : Pour Btooom j'ai un code qui simule un gaz toxique sur 1000 blocs, un de mes tous premiers code d’ailleurs, très optimisé en terme de code brut mais toujours trop demandeur de ressource CPU et RAM, il faisait baisser le tps du serveur comme pas possible, et il m'a fallut 1 an avant de trouver une solution ! J'ai supprimé totalement mon code et développé un algorithme qui n'avait absolument rien à voir. Au final mon nouveau système me permet d'avoir 5000 blocs de gaz sans faire baisser le tps, le tout pouvant exploser d'un coup avec seulement 1 seconde de lag ! Bref tout ça pour dire qu'il suffit de se creuser la tête et qu'il faut TOUJOURS se poser cette fameuse question "Est-ce que je peux faire mieux ?" (spoiler : La réponse est OUI)

     

    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 :

    Révélation

     

    Révélation

     

    Révélation

     

    Révélation

     

    Révélation

     

    Pour cet exemple là, l'optimisation se fait au niveau des ressources CPU. En effet loop tous les blocs dans un chunk demande beaucoup de ressources alors que si l'on regarde dans l'API Spigot il existe une manière moins gourmande. Ça demande d'écrire plus de code, de connaître le java et d'utiliser skript-mirror mais le résultats est là !

    Contenu masqué

      Réagissez ou répondez à ce message afin de consulter le contenu masqué.

    PS: Ce code nécessite une version récente de Spigot et il n'y a pas la partie du code qui enregistre les changements apporté à un chunk !

     

     

    • J'aime 2
×
×
  • 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.