Aller au contenu

4rno

Donateur
  • Compteur de contenus

    149
  • Inscription

  • Dernière visite

  • Jours gagnés

    3
  • Crédits

    3 [Faire un don]

Tout ce qui a été posté par 4rno

  1. 4rno

    Un commande avec une pancarte

    Bonsoir, il existe 2 syntaxes pour faire exécuter une commande avec les permissions nécessaires. Wildskript: run %player% (command|cmd) %text% as op SkUtilities: (force|make) %player% run (cmd|command) %string% as op [Contenu masqué]# 4rno
  2. Sinon pour ton problème @zqrk , il suffit de remplacer la ligne if "plugins/Whitelist/players.yml" contains "%player%": par if "%content of file ""plugins/Whitelist/players.yml""%" contains "%player%" Mais je réitère ce que j'ai dis: c'est mieux d'utiliser les UUID des joueurs à la place de leurs pseudo, car si ils le changent, le serveur ne reconnaîtra plus le joueur :/ 4rno
  3. Bonjour, Utilise les balises de code (dans "insérer"->"code"), car là le code n'est pas très compréhensible... Ça donne quelque chose comme ceci Après je veux bien essayer de t'aider ;) 4rno
  4. Bonjour, Déjà je te conseille d'utiliser plutôt Tuske que SkQuery pour les GUI, il bugge moins. Voici 2 tutos si tu veux: FR: [Contenu masqué] EN: [Contenu masqué] Dans ton cas, ce sera aussi + facile étant donné que Tuske permet de faire exécuter directement une commande au joueur (avec des perms spéciales ou non) 4rno
  5. Nouveau tuto ! https://skript-mc.fr/forum/posts/95687/
  6. Bonjour ! Voici l'épisode 3 de Sktructure, un peu différent des autres étant donné qu'ici nous ne nous occuperons pas de manipulation de structure déjà existante, mais bien de génération de structure - et non, nous ne verrons pas comment générer un arbre :p -. -Parallélépipède rectangle- Bon, déjà on va simplifier les choses, on va l'appeler "cuboïde" notre structure et non pas "parallélépipède rectangle", avouons-le, c'est 10x plus simple ! [spoiler=Le résultat !][ATTACH=full]5565[/ATTACH] et c'est vide à l'intérieur ! [ATTACH=full]5566[/ATTACH] Voilà, c'est tout pour le creusage de cuboïdes, passons maintenant à la suite ! -Casser les arêtes- Alors, déjà, je sens certains me demander ça veux dire quoi "casser les arêtes" ! Mettons cela au clair, ça n'a rien avoir avec le poisson, ça veux plutôt dire ceci: [ATTACH=full]5508[/ATTACH] Donc pour faire cela, que peut on constater par rapport à ces arêtes ? Quelles sont leurs spécificités ? En voici la réponse: une arête, c'est lorsqu'un bloc appartient à 2 faces en même temps. Il ne faudra donc plus tester si le bloc n'appartient à aucune face, mais bien à au moins 2 faces (et oui, sinon les blocs des coins ne seront pas détruis). Pour faire cela, j'ai créé une variable {_face} à laquelle j'attribue, pour chaque bloc -la récup c'est bien- , le nombre de face auquel il appartenait. Voici le bout de code utilisé: set {_arete} to 0 if loop-value-1 = 1 or arg-2: add 1 to {_face} if loop-value-2 = 1 or arg-3: add 1 to {_face} if loop-value-3 = 1 or arg-4: add 1 to {_face} Maintenant on peut utiliser une jolie petite condition: if {_face} >= 2: set block at location {_ploc}'s x-coordinate+loop-value-1, {_ploc}'s y-coordinate+loop-value-2, {_ploc}'s z-coordinate+loop-value-3 to air Et ça fonctionne nickel ! [spoiler=Le résultat]Bah scroll un peu plus haut, il y a déjà un exemple ! :p -Petite optimisation- Étant donné que l'on a une variable {_face} qui compte le nombre de face à laquelle appartient un bloc, on peut aussi la réutiliser pour le creusage de cuboïde, il faudra alors tester si la variable est égale à 0. -Code complet- J'ai ajouté 2 arguments dans la commande, qui permettent de choisir un cuboïde plein et/ou avec les arêtes cassées. command /cube <item> <integer> <integer> <integer> [<boolean=false>] [<boolean=false>]: usage: /cube <material> <x> <y> <z> <arete=true/false> <creux=true/false> trigger: set {_ploc} to player's location loop arg-2 times: loop arg-3 times: loop arg-4 times: set block at location {_ploc}'s x-coordinate+loop-value-1, {_ploc}'s y-coordinate+loop-value-2, {_ploc}'s z-coordinate+loop-value-3 to arg-1 set {_face} to 0 if loop-value-1 = 1 or arg-2: add 1 to {_face} if loop-value-2 = 1 or arg-3: add 1 to {_face} if loop-value-3 = 1 or arg-4: add 1 to {_face} if arg-5 is true: if {_face} >= 2: set block at location {_ploc}'s x-coordinate+loop-value-1, {_ploc}'s y-coordinate+loop-value-2, {_ploc}'s z-coordinate+loop-value-3 to air if arg-6 is true: if {_face} = 0: set block at location {_ploc}'s x-coordinate+loop-value-1, {_ploc}'s y-coordinate+loop-value-2, {_ploc}'s z-coordinate+loop-value-3 to air -Escaliers en colimaçon- Comme je l'ai promis, ici nous n'auront pas affaire à une triple boucle... Mais à une seule. Déjà, il faut se poser la problématique: comment résumer un escalier (en colimaçon) ? Voici une façon de voir les choses (en tout cas c'est comme ça que l'on va les voir dans mon code !): Quelque chose qui monte (on avance de 1 bloc, on en monte de 1) C'est comme un escalier normal, sauf qu'il y a toujours quelque chose qui le dévie, de façon régulière. Il change de direction tous les x blocs. À partir de là, on peut s'imaginer la structure du code: une boucle pour chaque hauteur de bloc, une variable qui indique la direction actuelle de l'escalier, et une valeur qui augmente à chaque tour, jusqu'à un certain seuil -la longueur du côté de l'escalier en fait- et qui à ce moment là va faire changer la direction de l'escalier. On va donc créer une variable {_dir} qui nous donne la direction de notre escalier, et qui va prendre une valeur numérale entre 0 et 3 -pour les 4 directions est, sud, ouest et nord-. À chaque boucle, on modifiera des variables correspondant aux coordonnées du bloc à poser. le Y augmentera en permanence de 1, alors que X et Z dépendront de la valeur de {_dir}. Pour optimiser le code, on utilisera la valeur de Y pour déterminer si il faut changer de direction (en testant si le Y actuel est divisible par la largeur de l'escalier). -Code complet- command /stairs <integer> <integer>: trigger: #Position du joueur set {_ploc} to player's location #Déclaration des variables, de sorte à ce qu'elles n'aient pas aucune valeur set {_dir} to 0 set {_x} to 0 set {_y} to 0 set {_z} to 0 #Boucle <hauteur> fois loop arg-2 times: #Si on arrive à un "coin" de l'escalier, alors on tourne if mod({_y}, (arg-1)-1) = 0: add 1 to {_dir} #Si la direction est > 3, on la remet à 0 if {_dir} > 3: set {_dir} to 0 #En fonction de la direction, on avance dans la bonne direction if {_dir} is 0: add 1 to {_x} else if {_dir} is 1: add 1 to {_z} else if {_dir} is 2: remove 1 from {_x} else if {_dir} is 3: remove 1 from {_z} #On pose le bloc set block at location {_ploc}'s x-coordinate+{_x}, {_ploc}'s y-coordinate+{_y}, {_ploc}'s z-coordinate+{_z} to stone #On monte d'un bloc en hauteur add 1 to {_y} [spoiler=Résultat]En route ! [ATTACH=full]5567[/ATTACH] Argh ! C'est haut ! [ATTACH=full]5568[/ATTACH] -Conclusion- Dans cet épisode, nous avons vu comment générer des structures de façon automatisée. Je trouve très intéressant de comprendre qu'est ce qui, au niveau mathématique et géométrique, se cache derrière des structures comme celles là. J'espère que ce tuto vous aura plus, malgré le petit retard par rapport au 2 précédents ^^ N'hésitez pas à proposer d'autres idées de structures à générer, ou bien une autre idée pour un futur tutoriel ! 4rno
  7. @zqrk je te conseille d'enregistrer plutôt l'UUID du joueur, car maintenant si un joueur change de pseudo il est plus accepté :/
  8. loop {j::*}: set {_n} to random integer between 1 and 15 teleport loop-value to {spawn.%{_n}%}
  9. 4rno

    Message grade

    Bonjour, tu utilises visiblement à la fois des espaces et des tabulations dans l'indentation de ton code, ce qui provoque effectivement une erreur dans ton code; essaie d'activer l'affichage des caractères invisibles dans ton éditeur de texte, cela te permettra de mieux visualiser les caractères utilisés. Cdlt, RebellCraft
  10. 4rno

    Comparer deux nbt tags

    La condition "contains" n'accepte que de comparer des éléments de même type, or là la variable {_nbt} était de type "NBT list". Tu dois donc utiliser pour ta condition: if "%{_nbt}%" contains "c65047c2-45b8-424a-8461-7a28ed109686": #La catégorie Id du NBT de référence Cdlt, RebellCraft
  11. Bonjour, essaye de supprimer le fichier correspondant à ton joueur; celui ci se trouve dans le dossier playerdata qui se trouve dans le dossier de la map (par défaut "world"). Il est nommé en "<ton uuid>.dat"
  12. Bonjour, clear all players in world "ton monde"'s inventory Cdlt, RebellCraft
  13. 4rno

    [SKRIPT AIDE] : New's

    Qu'est ce qu'il ne va pas ?
  14. 4rno

    [SKRIPT AIDE] : New's

    Re, Voici le skript avec un beau petit GUI x') Tu auras besoin de l'addon TuSKe.
  15. 4rno

    Fichier de Skript?

    Oui tu peux parfaitement le faire ;)
  16. 4rno

    [SKRIPT AIDE] : New's

    Bonjour, pour supprimer une supprimer une news (ou tout simplement un élément d'une liste); j'ai personnellement 2 méthodes: Soit il t'envoie la liste dans le chat des news, avec leur index, à ce moment là tu dois indiquer dans la commande l'index de la news à supprimer. Sinon si tu veux un truc plus "user-friendly"; tu utilises un gui d'inventaire avec chaque fois un item par news, et le joueur clique sur la news à supprimer (à ce moment là on pourrait aussi imaginer qu'en fessant un clic drop -> supprimer; et un clic souris -> éditer ^^). La première option est plus simple à programmer, cependant j'ai déjà fait des systèmes de gui semblables, donc je pourrais te passer le code nécessaire ;) Cdlt, RebellCraft
  17. 4rno

    Erreur Skrip

    Effectivement c'est bien un problème d'indentation, voici le code correct: on quit: set {PlayerLocation.%player%.location} to location of player on join: wait 3 seconds if {PlayerLocation.%player%.location} is not set: set {PlayerLocation.%player%.location} to location of player else: send "&6[&4PlayerLocation&6] %{PlayerLocation.%player%.location}%" to player Cependant, dans ce cas ci, je te conseille l'utilisation de variables listes ! Voici un petit tuto sur leur utilisation: [Contenu masqué]
  18. 4rno

    Options (text)

    Ah je sais ! Tu ne dois pas mettre ton option entre guillemets: options: Prefix: [KiCraft] on join: message "{@prefix} Bon jeu sur le serveur !"
  19. 4rno

    Options (text)

    Bonjour, la bonne syntaxe est: message "{@Prefix} Ton message" Cdlt, RebellCraft
  20. 4rno

    Savoir le nom du jour

    Si ce n'est disponible directement en Skript, il te reste plus qu'à calculer toi même quel jour de la semaine nous sommes ! Pour cela, essaye de te fixer une date absolue (utilise n'importe quel date passée, mais sache que jour de de la semaine c'est (ex. Lundi 3 avril 2017)); ensuite calcule il y a combien de jours entre aujourd'hui et ta date "repère" (dans mon exemple 9 jours), puis utilise l'opération modulo 7 (c'est le reste de la division) pour pouvoir trouver -par rapport au jour de la semaine de ta date repère-, quel est celui d'aujourd'hui (ici 9modulo7 = 2, et 2 jour après le lundi c'est le mercredi). Cdlt, RebellCraft
  21. @NaolShow heu... sans vouloir te décourager ou quoi que ce soit, il existe une technique plus simple pour générer du texte aléatoire, exemple en reprenant les mêmes caractères que toi: set {_key} to random 12 char string from `A-Z0-9`
  22. 4rno

    ScoreBoard Bugs

    De rien :)
  23. 4rno

    ScoreBoard Bugs

    :'( modifie set score "&7Temps de jeu total: %{totaltime::%loop-player's uuid%} converted into hours%h %{totaltime::%loop-player's uuid%} converted into minutes%m" in sidebar of loop-player to 0 en set score "&7Temps de jeu total: %{totaltime::%loop-player's uuid%} converted into hours%h %{totaltime::%loop-player's uuid%} converted into minutes mod 60%m" in sidebar of loop-player to 0 Ce qu'il fait, c'est le modulo 60(le modulo est l'opération mathématique qui consiste à trouver le reste d'une division, ici par 60) de ton nombre de minutes; si par exemple le nombre de minutes est de 84, le modulo sera 24; et si il est de 1662, le modulo sera de 42 (omg le sens de la vie :O). Cdlt, RebellCraft
×
×
  • 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.