Aller au contenu

4rno

Modérateur Discord
  • Compteur de contenus

    149
  • Inscription

  • Dernière visite

  • Jours gagnés

    3

4rno a gagné pour la dernière fois le 6 novembre

4rno a eu le contenu le plus aimé !

Réputation sur la communauté

58 Tu commences à avoir des copains !

2 abonnés

À propos de 4rno

  • Rang
    Membre
  1. Bien le bonjour/soir ! J'écris ce petit post pour vous partager le travail que @Angel_0, @Mikioul, @XC2DN et moi-même avons réalisé dans le but de créer un serveur de jeux. En effet, après quelques mois de travail, puis quelques autres mois d'inactivité, nous avons décidé de mettre en pause jusqu'à une date indéterminée ce projet... Mais afin de ne pas perdre bêtement tout ce travail, nous vous le mettons gentiment à disposition si vous le souhaitez ! Dans ce fouillis de fichiers, dossiers et autres vous pourrez y trouver: Des maps bien sympathiques Des script gérant un hub avec divers cosmétiques achetables, une tyrolienne, un affichage de scoreboard; le tout connecté à une bdd MySQL Un script de chat inter-serveur, et qui permet de formater différents types de messages (style message d'alerte, d'info, d'erreur, etc) qui utilise Redis Un jeu, le "WitherWar", inachevé Un autre jeu, "Splatoon", inachevé lui aussi Un système de gestion de serveurs, utilisant l'utilitaire "screen" Sans doute plein d'autres choses très intéressante -on n'en doute pas- ! Voilà voilà... Tous les fichiers sont accessibles à cette adresse, n'hésitez pas à y jeter un coup d’œil ! Les maps sont également disponibles directement sur le PMP de @Mikioul En ce qui concerne un copyright éventuel, eh bien si vous utiliser plus que quelques lignes de code, nous vous demandons simplement de nous citer P.S: si ce genre de "créations" vous intéresse, j'ai également une autre archive de serveur qui traîne sur mon disque dur, un serveur de Fatality (comme ceux du temps d'UHCGames), avec quelques maps plutôt sympa
  2. 4rno

    Est-ce un comportement normal de Skript ?

    Je l'avais report, mais en fait il y avait déjà une déclaration de bug pour ça x')
  3. 4rno

    Est-ce un comportement normal de Skript ?

    Mouais, 'fin il y a toujours le async de MundoSK qui est là pour ça :D
  4. 4rno

    Est-ce un comportement normal de Skript ?

    Effectivement cela me semble plus un bug qu'autre chose (ou au moins une non-fonctionnalité)... Des variables locales sont en effet sensées être internes à l'événement lui même. Faudrait faire des tests pour voir quelle portée ont ces variables...
  5. Nouveau script ^^ https://skript-mc.fr/forum/resources/alpha-ping-pong-sk.1593/
  6. https://skript-mc.fr/forum/posts/119539/ :'(
  7. 4rno

    #1 Les listes (listes de valeurs et boucles 'loop')

    Effectivement , petit oubli de ma part, j'ai voulu ajouter à la dernière minute un côté "personnalisé" au message, afin d'éviter une remarque genre "Eh mais t'aurais pu simplement faire un 'broadcast" msg" lol, t'es trop con". Effectivement c'est assez logique quand on a déjà fait de la programmation, mais j'énonçais plutôt les "caractéristiques" inhérentes aux 'loop', terme que j'ai d'ailleurs utilisé par la suite. Et en même temps, ça permet de montrer l'usage des boucles comme compteurs ;) Merci de ta critique ;)
  8. Bonjour à tous, et bienvenue à ce cours. Nous allons aujourd'hui voir différentes fonctionnalités de Skript relativement méconnues. En effet, beaucoup de personnes connaissent plus ou moins bien les boucles et listes de valeurs, mais il y a beaucoup de subtilités dans ce domaine permettant d'accomplir des tâches complexes de façon très simple et efficace. Nous allons donc aborder différentes choses étroitement liées: - Tout d'abord, nous allons rapidement voir qu'est ce qu'une liste de valeurs. - Ensuite nous verrons les boucles 'loop', et certaines de leurs applications spécifiques. - Par la suite, nous nous intéresseront aux listes de variables (au cours suivant). - Les listes de valeurs - Attention, ici, je ne parle pas encore de ce que l'on appelle communément des variables listes, que nous verrons par la suite, mais bien de simple liste de valeurs, quel qu’elles soient. On va commencer par le commencement: les listes de valeurs Posons nous donc d'abord la question: qu'est ce qu'une liste de valeurs ? Une liste de valeurs est simplement un ensemble de valeurs, étant généralement du même type ('player', 'items', 'entities'). Une des valeurs d'une liste est appelée un élément. Vous avez sans doute déjà utilisé des listes de valeurs, une des plus connues est sans doute 'all players'. Vous pouvez d'ailleurs récupérer diverses listes de valeurs en utilisant l'expression 'all <type au pluriel>', cela permet de récupérer la liste des valeurs existantes d'un type donné. 'all players' renvoie par exemple la liste de tous les joueurs présents sur votre serveur, 'all blocks' tous les blocs qui existent dans Minecraft, ... Vous pouvez cependant manipuler facilement vos propres listes de valeurs, simplement en énonçant chacun des éléments de la liste, séparée de virgule entre chaque élément, avec entre les 2 derniers éléments un 'and' comme ceci: '"a", "b", "c" and "d"' Il existe également d'autres expressions permettant de récupérer des listes de valeurs, comme par exemple 'split <texte> at <delimiteur>' ou encore 'integers between 0 and 5'. Je pense que cette partie était relativement simple à comprendre, mais néanmoins nécessaire à la compréhension de la suite de ce cours. C'est pourquoi j'ai voulu refixer précisément la nature des listes de valeurs. - Les boucles 'loop' - Une 'loop' est une méthode en Skript permettant d'appliquer une série d'opération à une liste de valeurs. Voici comment se présente une boucle 'loop': loop <liste de valeurs>: <instructions> Cette forme est très basique. Dans la majorité des cas, on aura également besoin de pouvoir récupérer ce que l'on appelle communément la "valeur courante", c'est à dire la valeur de notre liste de valeurs que l'on va utiliser dans nos opérations. La valeur courante peut être appelée avec 'loop-value' ou bien 'loop-<type de la valeur>'. Histoire de contextualiser un peu la théorie, voici un exemple très simple: loop all players: send "Hey %loop-player%, tu joues actuellement sur le cube épique ! Rejoins nous sur Discord à cette adresse: xxx !" to loop-player Dans ce code, on retrouve bien 'loop all players:' avec 'all players' comme liste de valeurs. Ensuite, dans nos instructions, nous utilisons 'loop-player' comme valeur courante pour lui envoyer un message. Il y a quelques subtilités intéressantes à noter au niveau des boucles 'loop'. Déjà, les boucles de liste de valeurs s'effectuent les uns après les autres, et non de façon simultanée. De ce fait, si on utilise l'effet 'wait' dans une boucle, il y aura un délai entre l'exécution du code pour chaque élément de la liste. Il est donc par exemple très facile de créer un compteur: loop 10 times: send "%loop-value%" wait 1 second Ici, la liste de valeurs est l'expression '10 times', qui renverra les nombres entiers de 1 à 10. On aurait pu avoir le même résultat en écrivant 'integers between 1 and 10' ou alors en citant toutes les valeurs directement '1, 2, 3, 4, 5, 6, 7, 8, 9 and 10'. Le résultat sera un compteur de 1 à 10, à intervalle de 1 seconde donc. Deuxième caractéristique des boucles 'loop', on peut les imbriquer, c'est à dire faire des boucles dans des boucles. Dans ce cas-ci, si l'on veut récupérer la valeur courante, on doit alors préciser la boucle en donnant le numéro de l'ordre de "création" de la boucle, de cette façon par exemple: 'loop-value-3'. Si 2 boucles bouclent des types de valeurs différentes, on peut alors s'abstenir de préciser de quelle boucle vient la valeur courante à condition d'utiliser 'loop-<type>' (à moins d'avoir plusieurs boucles utilisant les mêmes types de valeurs, alors là il faut tout de même préciser le numéro de la boucle). loop all players: loop all items of loop-player: broadcast "%loop-value-1% possède %loop-value-2%" Dernière petite info, on peut arrêter prématurément une boucle avec 'stop loop', par exemple si on cherche une valeur dans une liste de valeurs, on peut arrêter la boucle dès qu'on a trouvé ce que l'on cherche. loop message split at " ": if loop-value is "une insulte", "un gros mot" or "un mot pas gentil": send "%player% a dit '%loop-value%' ! :O" to console stop loop Voilà, c'est tout pour aujourd'hui ! Comme annoncé en introduction, le prochain tutoriel se concentrera sur les listes de variables, et complétera accessoirement les caractéristiques des boucles 'loop' (pour les connaisseurs, les 'loop-index'). J'espère que ce tutoriel vous aura plus, et si c'est le cas, n'hésitez pas à le manifester ;) 4rno
  9. Bonjour/Bonsoir ! Je vous partage aujourd'hui ma petite liste personnelle de liens de téléchargements, de docs, de GitHub et tout ce qui va avec de Skript et plusieurs de ses addons ! Le fichier à télécharger (et décompresser) est dispo ici Voici la liste des addons présents (en plus de Skript lui même): MundoSK Reqn Skellett SkQuery SkRayFall SkStuff SkUtilities Skript-mirror Skript-yaml TuSKe Vixio J'ai mis au minimum pour chaque addon un lien de téléchargement, la doc, le github et le lien SkUnity; en mettant à chaque fois le lien proposé par l'auteur (par exemple la doc de Vixio est sur le site vixio.space, pas SkUnity). Pour "installer" en marque pages tout cela, il vous suffit: Sous Firefox, faire le raccourci clavier CTRL+SHIFT+O, cliquer sur "Import and Backup" → "Import Bookmarks from HTML" (ou équivalent dans votre langue préférée), puis, choississez le fichier en .html préalablement téléchargé ! [ATTACH=full]7796[/ATTACH] Sous Chrome et/ou Chromium, cliquer sur le bouton composé de 3 points verticaux en haut à droite de l'écran → "Bookmarks" → "Import bookmarks and settings" (ou équivalent dans votre langue préférée). Là, choisissez "Bookmarks HTML File" et sélectionner le fichier en .html préalablement téléchargé ! [ATTACH=full]7797[/ATTACH] Après l'importation, vous pouvez librement déplacer le dossier contenant les différents liens et en profiter pleinement ! Voici ce que ça donne, une fois en marque-page: [ATTACH=full]7798[/ATTACH] Si vous avez des propositions à faire (ajout d'addons, ...), n'hésitez pas ;) Arno
  10. Oh bon anniv ! ;)
  11. Bon j'ai 2 sujets de tuto à faire, je commence par lequel ? x')
  12. Afin de mieux comprendre ton code, peux tu le mettre entre balises de code ? Car là l'indentation a été supprimée ^^ Tu peux mettre des balises code en cliquant sur ce bouton:[ATTACH=full]7214[/ATTACH]
  13. Bonjour ! Suite à une demande d'aide, j'ai réalisé une petite fonction qui peut s'avérer très utile ! Elle permet de découper un texte de façon relativement propre, en essayant de ne pas couper les mots si c'est possible. Tuske permet, en théorie, de faire la même chose, mais il semble que cette fonctionnalité soit cassée chez certains :/ Cette fonction ci permet donc de pallier à ce problème ! Voici le code: function splitText(text: text, dist: integer=50) :: texts: set {_text::*} to {_text} split by "" set {_pos} to {_dist} set {_ok} to false while {_ok} is not true: set {_posok} to false while {_posok} is not true: if {_text::%{_pos}%} is " ": set {_posok} to true else: remove 1 from {_pos} set {_c} to (amount of {_pos::*}) if {_pos} is {_pos::%{_c}%}: set {_pos} to {_pos::%{_c}%}+{_dist} set {_posok} to true if {_pos} is 1: set {_pos} to {_pos::%{_c}%}+{_dist} set {_posok} to true add {_pos} to {_pos::*} set {_pos} to {_pos}+{_dist}+1 if {_pos} > amount of {_text::*}: set {_ok} to true add amount of {_text::*} to {_pos::*} set {_pos::0} to 0 loop (amount of {_pos::*}) times: add subtext of {_text} between index {_pos::%(loop-value)-1%}+1 and {_pos::%loop-value%} to {_return::*} return {_return::*} Pour l'utiliser, il suffit de faire splitText(<texte>,<Longueur maximale de chaque partie du texte>) Elle renverra alors une liste contenant le texte découpé. Son fonctionnement n'est pas très compliqué. La fonction va d'abord découper le texte demandé à chaque caractère (de cette façon, je peux vérifier à quoi correspond le 16e caractère par exemple). À partir de là, je vais tester si le caractère à la position de la découpe demandée est un espace. Si c'est le cas, c'est bon je sais que je peux split mon texte directement à cette position; sinon je vais diminuer de 1 ma position jusqu'à trouver un espace. Dans le cas où il y a une trèèsss looonnng mot, je teste par précaution si je ne suis pas retombé sur la position de mon split précédent. Alors là seulement je vais devoir découper le mot en 2. Je continue cette opération autant de fois que nécessaire pour que le nombre de caractères restants est plus petit que la longueur maximale autorisée. Voici un petit exemple : send splitText("Bonjour je suis un message de test, je vous en prie, testez moi !Je vais être découpé en plein de petits morceaux ^^", 30) [ATTACH=full]7208[/ATTACH] Ou en plus long (là je n'ai pas indiqué de longueur maximale, celle par défaut est de 50): send splitText("Bonjour je suis un message de test, je vous en prie, testez moi !Je vais être découpé en plein de petits morceaux ^^") [ATTACH=full]7209[/ATTACH] Bonne utilisation ! 4rno
  14. 4rno

    (Amélioration) L’indentation

    Autant l'utilisation de "stop" pourrait aider (et encore, car Skript ne lira que des "else"/"else if" par la suite, donc autant dire que l'impact performance est minime). Si le bloc de code (de l'event entier) est fini, il n'y a aucune raison de mettre un "stop", c'est le but de l'indentation de délimiter le code ^^ Je reste perplexe devant cette argument... Ce serait la même chose que de dire "Bah dans un fichier YAML/JSON/XML, n'utilise aucune hiérarchie pour tes données, ça affiche le résultat en diagonale, c'est plus structuré de mettre toutes les données les unes après les autres."
×

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.