
zarco70
Membre-
Compteur de contenus
358 -
Inscription
-
Dernière visite
-
Jours gagnés
8
Type de contenu
Profils
Forums
Téléchargements
Tout ce qui a été posté par zarco70
-
Bonjour, ça fait un très très long moment que je n'ai pas touché à skript mais la nostalgie m'a fait revenir ton problème est quelque chose de plutôt basique si tu veux progresser en skript il faut impérativement que tu apprenne à utiliser les boucles c'est la base de toutes forme d'algorithme qu'on retrouve dans tout les langages de programmation et qui à été introduit à skript dès les débuts. N'hésite pas non plus à aller chercher les solutions dans la documentation il y a de quoi faire de gros projet avec et c'est le meilleur moyen de progresser. Enfin bref. Sache qu'il n'y a jamais qu'une seul solution à un problème avec un peu de recherche tu aurais pu avoir cette solution peu optimisé mais qui fonctionne on consume of water bottle: if name of player's tool is "&4&l» &b&lTP Potion": loop ( all blocks in radius 3 around player's location ): if ( ceil(y-coordinate of loop-block) <= y-coordinate of player ): set {_block} to random element out of blocks in radius 3 of player while ( ceil(y-coordinate of {_block}) <= y-coordinate of player ): set {_block} to random element out of blocks in radius 3 of player show mob spawner flames at {_block}'s location wait 40 tick show mob spawner flames at {_block}'s location wait 20 tick show mob spawner flames at {_block}'s location teleport player to {_block}'s location stop Et en cherchant plus loin tu aurais pu avoir cette solution plus optimisé on consume of water bottle: if name of player's tool is "&4&l» &b&lTP Potion": set {_block} to random element out of blocks in radius 3 of player while ( ceil(y-coordinate of {_block}) <= y-coordinate of player ): set {_block} to random element out of blocks in radius 3 of player show mob spawner flames at {_block}'s location wait 40 tick show mob spawner flames at {_block}'s location wait 20 tick show mob spawner flames at {_block}'s location teleport player to {_block}'s location Tout simplement on boucle à l'infini tant que la coordonné du block choisi est inférieur ou égale à celle du joueur lorsque ce n'est plus le cas alors on tp l'instruction : ceil(y-coordinate of loop-block) Permet d'arrondir la coordonnée du block choisi à l'entier supérieur.
-
résolu ✔ Exécution de Commande dans la Console avec Permission créer avec Skript
zarco70 a répondu à un(e) question de TSCoaster dans Résolus
Bonjour, Il est impossible pour la console de reconnaitre le joueur qui tape la commande depuis celle-ci car le user de minecraft et celle de la console CMD / de ton hébergeur sont 2 choses différentes. cependant il est possible de reconnaitre le joueur uniquement si on lui indique le pseudo exacte du joueur comme ceci: command /admin [<offline player>]: executable by: console and player trigger: if executor is player: if {admin_%player%} is true: send "Tu es un admin !" else: send "Tu n'es pas un admin !" to player else if executor is console: if arg-1 is a offline player: if {admin_%arg-1%} is true: send "&c&lLe joueur %arg-1% est admin" else: send "&c&lLe joueur %arg-1% n'est pas admin" Le problème étant que tu peux mettre n'importe quel argument. Même si le joueur n'existe pas, il te diras si il est admin ou non donc attention a ne pas se trompé sur le pseudo. Si tu veux éviter tout problème tu pourrais stocker le pseudo de chaque joueur dans une variable à chaque première connections pour vérifier si le joueur existe et si le joueur à déjà été connecté sur le serveur. Comme ce ci: on first join: wait a tick add player to {NewConnection::*} command /admin [<offline player>]: executable by: console and player trigger: if executor is player: if {admin_%player%} is true: send "Tu es un admin !" else: send "Tu n'es pas un admin !" to player else if executor is console: if "%{NewConnection::*}%" contain "%arg-1%": if {admin_%arg-1%} is true: send "&a&lLe joueur %arg-1% est admin" else: send "&6&lLe joueur %arg-1% n'est pas admin" else: send "&cCe joueur ne s'est jamais connecté sur le serveur !" -
Voici le code options: permissions: false see-health-bar:sh.ver.a.vida on join: while player is online: if {@permissions} = true: if player has the permission "{@see-health-bar}": loop all players: set {_a} to loop-player's absorption hearts set score "&c❤" below player to (player's health * 2) + {_a} for loop-player wait 1 tick else: loop all players: set {_a} to loop-player's absorption hearts set score "&c❤" below player to (player's health * 2) + {_a} for loop-player wait 1 tick Il te faudra l'addon Skellett pour que sa fonctionne
-
Bonjour, Qu'as tu utilisé comme moyen pour afficher les coeurs dans au dessus du joueur
-
options: Cooldown: 2 MessageErreur: &cVous devez patienter 2 secondes entre chaque utilisation ! MaxDurability: 1 command /briquet: trigger: set slot 0 of player to flint_and_steel named "&f» &eBriquet &6Spécial" with lore "&7Utilisation: ({@MaxDurability}/{@MaxDurability})" on rightclick on creeper: if player's tool is flint_and_steel: if name of player's tool is "&f» &eBriquet &6Spécial": if "%{Cooldown::%player%::Snow}%" is "<none>": set {Cooldown::%player%::Snow} to true if {Cooldown::%player%::Snow} is true: clear player's tool set {_Emplacement} to target entity's location teleport target entity to location (0, 100, 0) in world of player spawn powered creeper at {_Emplacement} set {Cooldown::%player%::Snow} to false set {_Cooldown} to {@Cooldown} while {_Cooldown} > 0: wait a second remove 1 from {_Cooldown} set {Cooldown::%player%::Snow} to true else: cancel event send "{@MessageErreur}" to player stop Normalement quand tu clique sur un creeper le briquet se casse et le creeper charge
-
essaie de voir si le code fonction sans vérifier le briquet options: Cooldown: 2 MessageErreur: &cVous devez patienter 2 secondes entre chaque utilisation ! MaxDurability: 1 command /briquet: trigger: set slot 0 of player to flint_and_steel named "&f» &eBriquet &6Spécial" with lore "&7Utilisation: ({@MaxDurability}/{@MaxDurability})" on rightclick on creeper: if "%{Cooldown::%player%::Snow}%" is "<none>": set {Cooldown::%player%::Snow} to true if {Cooldown::%player%::Snow} is true: if lore of player's tool contains "&7Utilisation: (0/{@MaxDurability})": clear player's tool else if lore of player's tool contains "&7Utilisation: ({@MaxDurability}/{@MaxDurability})": set {_lore} to {@MaxDurability} - 1 set lore of player's tool to "&7Utilisation: (%{_lore}%/{@MaxDurability})" else: set {_lore} to "%lore of player's tool%" replace all "&7Utilisation:" and "(" and ")" and "/" and "{@MaxDurability}" and " " with "" in {_lore} set {_lore} to {_lore} parsed as a integer remove 1 from {_lore} set lore of player's tool to "&7Utilisation: (%{_lore}%/{@MaxDurability})" set {_Emplacement} to target entity's location teleport target entity to location (0, 100, 0) in world of player spawn powered creeper at {_Emplacement} wait a tick repair tool of player set {Cooldown::%player%::Snow} to false set {_Cooldown} to {@Cooldown} while {_Cooldown} > 0: wait a second remove 1 from {_Cooldown} set {Cooldown::%player%::Snow} to true else: cancel event send "{@MessageErreur}" to player stop
-
Tu as bien fais la commande /briquet et utilisé sur un creeper ?
-
Ok donc tu as pas eu le bug que j'avais eu récemment. Tu as bien fais la commande /briquet ? Si tu l'as fais et que sa marche toujours pas alors installe ce dernier addon https://www.mediafire.com/file/43kz92jv6kdi733/TuSKe.jar/file (Tuske) certain dise que c'est un addon obsolète mais tout dépend des personnes moi sa marche très bien et sa n'a aucune bug
-
Et est ce que tu peux reload le skript ?
-
ok installe cette addon si sa ne marche toujours pas tu devras installer un autre addon mais pour l'instant j'attends de voir si avec celui la sa fonctionne tu as bien installé Skrayfall ? https://www.mediafire.com/file/7zk7j74mo1pkvfa/SkQuery_3.21.4.jar/file
-
parce que tu as mal incrémenté le code copy colle tout et installe le plugin que je t'ai donné options: Cooldown: 2 MessageErreur: &cVous devez patienter 2 secondes entre chaque utilisation ! MaxDurability: 1 command /briquet: trigger: set slot 0 of player to flint_and_steel named "&f» &eBriquet &6Spécial" with lore "&7Utilisation: ({@MaxDurability}/{@MaxDurability})" on rightclick on creeper: set {_Tool} to player's tool if {_Tool} is flint_and_steel: if name of tool of player is "&f» &eBriquet &6Spécial": if "%{Cooldown::%player%::Snow}%" is "<none>": set {Cooldown::%player%::Snow} to true if {Cooldown::%player%::Snow} is true: if lore of player's tool contains "&7Utilisation: (0/{@MaxDurability})": clear player's tool else if lore of player's tool contains "&7Utilisation: ({@MaxDurability}/{@MaxDurability})": set {_lore} to {@MaxDurability} - 1 set lore of player's tool to "&7Utilisation: (%{_lore}%/{@MaxDurability})" else: set {_lore} to "%lore of player's tool%" replace all "&7Utilisation:" and "(" and ")" and "/" and "{@MaxDurability}" and " " with "" in {_lore} set {_lore} to {_lore} parsed as a integer remove 1 from {_lore} set lore of player's tool to "&7Utilisation: (%{_lore}%/{@MaxDurability})" set {_Emplacement} to target entity's location teleport target entity to location (0, 100, 0) in world of player spawn powered creeper at {_Emplacement} wait a tick repair tool of player set {Cooldown::%player%::Snow} to false set {_Cooldown} to {@Cooldown} while {_Cooldown} > 0: wait a second remove 1 from {_Cooldown} set {Cooldown::%player%::Snow} to true else: cancel event send "{@MessageErreur}" to player stop
-
Ha ok je comprends mieux je ne sais plus quel addon il faut mais il me semble que c'est celui ci https://www.mediafire.com/file/05fpa49y0zm95kv/skRayFall_v1.8.jar/file (Skrayfall)
-
tu as quoi comme addon ?
-
Je sais pas pourquoi sa te fais cette erreur. Remplace cette ligne par ces 2 lignes set {_Tool} to player's tool if {_Tool} is flint_and_steel:
-
Bonjours, Effectivement c'est le skript que j'ai fais y a quelque jour pour aider une personne à faire un canon à neige avec un stick je l'ai modifié pour que sa soit un briquet qui transforme un creeper normal en creeper super chargé. Cependant même les creeper chargé sont remplacé par un autre quand tu fais un clique droit sur eux tu ne peux donc pas les faire exploser. A toi de me dire si cela pose problème. Je t'ai aussi mis des options pour modifier le cooldown, le message d'erreur et le nombre de durabilité de ton briquet. options: Cooldown: 2 MessageErreur: &cVous devez patienter 2 secondes entre chaque utilisation ! MaxDurability: 1 command /briquet: trigger: set slot 0 of player to flint_and_steel named "&f» &eBriquet &6Spécial" with lore "&7Utilisation: ({@MaxDurability}/{@MaxDurability})" on rightclick on creeper: player's tool is flint_and_steel if name of tool of player is "&f» &eBriquet &6Spécial": if "%{Cooldown::%player%::Snow}%" is "<none>": set {Cooldown::%player%::Snow} to true if {Cooldown::%player%::Snow} is true: if lore of player's tool contains "&7Utilisation: (0/{@MaxDurability})": clear player's tool else if lore of player's tool contains "&7Utilisation: ({@MaxDurability}/{@MaxDurability})": set {_lore} to {@MaxDurability} - 1 set lore of player's tool to "&7Utilisation: (%{_lore}%/{@MaxDurability})" else: set {_lore} to "%lore of player's tool%" replace all "&7Utilisation:" and "(" and ")" and "/" and "{@MaxDurability}" and " " with "" in {_lore} set {_lore} to {_lore} parsed as a integer remove 1 from {_lore} set lore of player's tool to "&7Utilisation: (%{_lore}%/{@MaxDurability})" set {_Emplacement} to target entity's location teleport target entity to location (0, 100, 0) in world of player spawn powered creeper at {_Emplacement} wait a tick repair tool of player set {Cooldown::%player%::Snow} to false set {_Cooldown} to {@Cooldown} while {_Cooldown} > 0: wait a second remove 1 from {_Cooldown} set {Cooldown::%player%::Snow} to true else: cancel event send "{@MessageErreur}" to player stop
-
Bonjour Je n'ai pas tout compris de ce que tu as demandé j'ai repris le skript et je l'ai optimisé et mis à jours les lignes parce que la c'étais vraiment des trucs qui dates d'anciennes versions. Tu as juste à faire la command /boutique en jeu pour avoir toute la liste des commandes. Je ne sais pas si tu voulais que je fasse autre chose. on skript start: clear {FallDamage::*} options: logo: &a&lMagic &c&lStick &6&l»&7 command /Boutique [<text=help>]: permission: Boutique.use permission message: {@logo} &cVous n'avez pas accès à cette commande ! trigger: if arg-1 is "Prison": give blaze rod named "&6&l[&2Pouvoir d'emprisonnement&6&l]" to player send "{@logo} Vous recevez le bâton d'&cemprisonnement&7 !" if arg-1 is "feu" or "fire": give blaze rod named "&6&l[&3Pouvoir de feu&6&l]" to player send "{@logo} Vous recevez le bâton de &6feu&7 !" if arg-1 is "envole" or "fly" or "Propulsion": give blaze Rod named "&6&l[&cPouvoir de propulsion&6&l]" to player send "{@logo} Vous recevez le bâton de &3propulsion&7 !" if arg-1 is "help": send "&8&m-------------------------------------------------" send "&3&lCommandes:" send "&c/Boutique &3Prison &6» &7Permet d'obtenir le bâton de de &aPrison &7!" send "&c/Boutique &3Feu &6» &7Permet d'obtenir le bâton de &6Feu &7!" send "&c/Boutique &3Propulsion &6» &7Permet d'obtenir le bâton de &ePropulsion &7!" send "&8&m-------------------------------------------------" on click with blaze rod: if name of player's tool is "&6&l[&2Pouvoir d'emprisonnement&6&l]": set {_loc} to target entity set variable {_Sort} to {_loc}'s location if {_loc} is an entity: clear player's tool loop all blocks in radius 3 around {_loc}'s location: if loop-block is air or long grass or double_long_grass or 175: set loop-block to cobweb wait 3 second loop all blocks in radius 3 around {_Sort}: if loop-block is cobweb: set loop-block to air else if name of player's tool is "&6&l[&3Pouvoir de feu&6&l]": set {_loc} to target entity set variable {_Sort} to {_loc}'s location if {_loc} is an entity: clear player's tool loop all blocks in radius 3 around {_loc}: loop-block is air or long_grass set loop-block to fire wait 1 second loop all blocks in radius 3 around {_Sort}: loop-block is fire set loop-block to air else if name of player's tool is "&6&l[&cPouvoir de propulsion&6&l]": set {_loc} to target entity if {_loc} is a player: clear player's tool push target player upwards with force 2 add target player to {FallDamage::*} wait 4.2 seconds remove player from {FallDamage::*} on damage of player: if {FallDamage::*} contain victim: if damage cause is fall: cancel event
-
Après avoir atteint le rank Z, si tu réeffectue la commande /rankup, une erreur t'indiquera que tu dois utiliser la commande /prestige. Mais stv j'ai fais des modif maintenant tu reçois un message disant que tu dois faire la commande /prestige quand tu passe au rank Z. Mais normalement tu es censé perdre de l'argent. Utilise la commande /int que je t'ai donné juste avant et réessaie avec ce que je te donne en dessous. Tiens remplace la commande /rankup par celle là j'ai fais des petites modifications command /rank-up: aliases: /rankup, /ru trigger: if "%{PrisonRank::%player%}%" isn't "Z": set {_Price} to getRankPrice(player) if player's balance >= {_Price}: set {_Rank} to convertPrisonRank(player) remove {_Price} from player's balance send "&7Tu as dépensé &e%{_Price}%&e$ &7pour passer rang &e%{_Rank}% &7!" to player send "" send "&e==================================" send "&2 Félicitaiton !!" send "&6&l» &7Vous avez &6atteint &7le rank &aZ &7!!" send "&6&l» &7Vous pouvez désormais utiliser la commande &b/prestige" send "&7pour &2augmenter &7votre niveau." send "&e==================================" stop else: send "&cTu n'as pas suffisament d'argent !" to player stop else: send "&cTu as atteins le rang maximal, fais &e/prestige &7pour passer au prestige suivant !" to player stop et la commande /prestige par celle-ci. command /prestige: aliases: /p trigger: if "%{PrisonRank::%player%}%" is "z": if {PrisonPrestige::%player%} < {@MaxPrestige}: set {_Price} to getPrestigePrice(player) if player's balance >= {_Price}: add 1 to {PrisonPrestige::%player%} send "&7Tu as dépensé &e%{_Price}%&e$ &7pour passer prestige &e%{PrisonPrestige::%player%}% &7!" to player stop else: send "&cTu n'as pas suffisament d'argent ! &6(%{_Price}%)" to player stop else: send "&cVous avez atteint le nivaeu de prestige maximum !" else: send "&cVous devez être au rank Z pour pouvoir utiliser cette commande !"
-
Pour pouvoir être prestige il faut être rank Z. Le changement de rank ce fait automatiquement donc tu as juste besoin de rankup jusqu'au z mais si tu veux faire des tests voici une commande command /int: trigger: set {PrisonRank::%player%} to "Z" send "&6&l>> &aFais la commande &b/prestige &amaintenant !"
-
Initialiser c'est remettre les variables par défaut par exemple les joueurs commence au rang A du coup tu met la variable du joueur au rank A lors de sa première connexion. Tu as juste à mettre sa command /initialise: trigger: set {PrisonPrestige::%player%} to 0 set {PrisonRank::%player%} to "A" Bien évidement je te donne sa sous forme de commande mais faudra que tu le fasse automatiquement lorsque qu'un nouveau joueur rejoint le serveur
-
as-tu bien initialisé la variable ? et as tu bien pris le skript que j'ai modifié ? command /initialise: trigger: set {PrisonPrestige::%player%} to 0 set {PrisonRank::%player%} to "A"
-
Pourrais tu me dire ou donner un screen de l'erreur et me dire le plugin d'économie que tu utilise stp. PS: je sais pas si tu as pris le skript que j'ai modifié mais au cas ou j'ai oublié de changer cette ligne: if 100000000000000000 >= {_Price}: par celle la if player's balance >= {_Price}: C'étais pour faire les tests
-
Ton skript est bien fait mais je me suis permis d'optimiser certain passage comme la fonction convertPrisonRank au lieu de copier collé 26 fois la vérification j'ai directement en 10 lignes fais la même chose ce qui permet aussi d'enlever quelques autre ligne qui devienne inutile. J'ai également fais un calcul mathématique pour faire le prix des rank et des prestiges les prix sont énorme mais pas autant que la plus part des serveurs op prison bien évidement ce n'est pas une obligation de prendre ce que j'ai fais. Et tout en haut j'ai mis des options pour mieux configurer les limites des prestiges ou mettre son propre calcule. options: MaxPrestige: 26 #Nombre maximum de prestige EquationRank: ({_Price} * 2) - {_PriceStart} #Equation numérique du prix des ranks (avec cette équation le dernier vaux environ 8 Milliard) EquationPrestige: {_Price} + 2000000000 #Equation numérique du prix des prestiges (avec cette équation le dernier prestige vaux 60 Milliard) function convertPrisonRank(Rank: player) :: text: add "A" and "B" and "C" and "D" and "E" and "F" and "G" and "H" and "I" and "J" and "K" and "L" and "M" and "O" and "P" and "Q" and "R" and "S" and "T" and "U" and "V" and "W" and "X" and "Y" and "Z" to {_Ranks::*} loop {_Ranks::*}: if "%{PrisonRank::%{_Rank}%}%" is "%loop-value%": remove "%loop-value%" from {_Ranks::*} exit loop else: remove "%loop-value%" from {_Ranks::*} loop {_Ranks::*}: set {PrisonRank::%{_Rank}%} to loop-value return "%loop-value%" function getRankPrice(Rank: player) :: number: set {_Price} to 1000 if "%{PrisonRank::%{_Rank}%}%" is "D" or "E" or "F": set {_PriceStart} to 1000 * 2 if "%{PrisonRank::%{_Rank}%}%" is "J" or "K" or "L": set {_PriceStart} to 64000 * 2 if "%{PrisonRank::%{_Rank}%}%" is "P" or "Q" or "R": set {_PriceStart} to 4096000 * 2 if "%{PrisonRank::%{_Rank}%}%" is "V" or "W" or "X": set {_PriceStart} to 262144000 * 2 if "%{PrisonRank::%{_Rank}%}%" is "Y" or "Z": set {_PriceStart} to 4194304000 * 2 add "A" and "B" and "C" and "D" and "E" and "F" and "G" and "H" and "I" and "J" and "K" and "L" and "M" and "O" and "P" and "Q" and "R" and "S" and "T" and "U" and "V" and "W" and "X" and "Y" and "Z" to {_Ranks::*} loop {_Ranks::*}: if "%{PrisonRank::%{_Rank}%}%" is "%loop-value%": set {_Price} to {@EquationRank} return {_Price} exit loop else: set {_Price} to ({_Price} * 2) function getPrestigePrice(Rank: player) :: number: set {_Price} to 10000000000 loop {PrisonPrestige::%{_Rank}%} times: set {_Price} to {@EquationPrestige} return {_Price} command /rank-up: aliases: /rankup, /ru trigger: if "%{PrisonRank::%player%}%" isn't "Z": set {_Price} to getRankPrice(player) if 100000000000000000 >= {_Price}: set {_Rank} to convertPrisonRank(player) remove {_Price} from player's balance send "&7Tu as dépensé &e%{_Price}%&e$ &7pour passer rang &e%{_Rank}% &7!" to player stop else: send "&cTu n'as pas suffisament d'argent !" to player stop else: send "&cTu as atteins le rang maximal, fais &e/prestige &7pour passer au prestige suivant !" to player stop command /prestige: aliases: /p trigger: if "%{PrisonRank::%player%}%" is "z": if {PrisonPrestige::%player%} > 26: set {_Price} to getPrestigePrice(player) if 100000000000000000 >= {_Price}: add 1 to {PrisonPrestige::%player%} send "&7Tu as dépensé &e%{_Price}%&e$ &7pour passer prestige &e%{PrisonPrestige::%player%}% &7!" to player stop else: send "&cTu n'as pas suffisament d'argent ! &6(%{_Price}%)" to player stop
-
Ha ok options: Cooldown: 2 MessageErreur: &cVous devez patienter 2 secondes entre chaque utilisation ! command /stick: trigger: set slot 0 of player to glowing stick named "&3&l» &b&lCanon à Neige" with lore "&7Utilisation: (500/500)" on rightclick with stick: if name of tool of player is "&3&l» &b&lCanon à Neige": if "%{Cooldown::%player%::Snow}%" is "<none>": set {Cooldown::%player%::Snow} to true if {Cooldown::%player%::Snow} is true: if lore of player's tool contains "&7Utilisation: (0/500)": clear player's tool else if lore of player's tool contains "&7Utilisation: (500/500)": set lore of player's tool to "&7Utilisation: (499/500)" else: set {_lore} to "%lore of player's tool%" replace all "&7Utilisation:" and "(" and ")" and "/" and "500" and " " with "" in {_lore} set {_lore} to {_lore} parsed as a integer remove 1 from {_lore} set lore of player's tool to "&7Utilisation: (%{_lore}%/500)" shoot an snowball at speed 0.9 set {Cooldown::%player%::Snow} to false set {_Cooldown} to {@Cooldown} while {_Cooldown} > 0: wait a second remove 1 from {_Cooldown} set {Cooldown::%player%::Snow} to true else: send "{@MessageErreur}" stop Je t'ai mis des options tout en haut pour modifier le temps du cooldown et le message d'erreur
-
Je n'ai pas compris tu pourrais me montrer un screen de l'erreur du cooldown stp. Et oui c'est possible mais si tu regarde bien sur la ligne après le rightclick, je vérifie justement le nom de l'item avec ce code on rightclick with stick: if name of tool of player is "&3&l» &b&lCanon à Neige":
-
command /stick: trigger: set slot 0 of player to glowing stick named "&3&l» &b&lCanon à Neige" with lore "&7Utilisation: (500/500)" on rightclick with stick: if name of tool of player is "&3&l» &b&lCanon à Neige": if lore of player's tool contains "&7Utilisation: (0/500)": clear player's tool else if lore of player's tool contains "&7Utilisation: (500/500)": set lore of player's tool to "&7Utilisation: (499/500)" else: set {_lore} to "%lore of player's tool%" replace all "&7Utilisation:" and "(" and ")" and "/" and "500" and " " with "" in {_lore} set {_lore} to {_lore} parsed as a integer remove 1 from {_lore} set lore of player's tool to "&7Utilisation: (%{_lore}%/500)" shoot an snowball at speed 0.9 if difference between {Cooldown::%player%} and now < 2 seconds: set {_Cooldown} to 2 seconds remove difference between {Cooldown::%player%} and now from {_Cooldown} stop set {Cooldown::%player%} to now Essaie j'ai un peu modifié les 2 lignes.