Aller au contenu
  • 0

Un espace dans un nombre à 4 chiffres dans un scoreboard


Question

Posté(e)

Bonsoir, il y quelque temps j'ai voulu recréer le scoreboard du serveur très connu funcraft, malheureusement j'ai un problème au niveau du scoreboard, si par exemple je me give 1 000 gloires, cela va afficher :

Gloires: 1000

et moi j'aimerais que cela affiche:

Gloires: 1 000

Voici le code de mon scoreboard:

every 3 second:
   loop all players:
       if loop-player is in world "Spawn":
           wipe loop-player's sidebar
           wait 1 tick
           set name of sidebar of loop-player to "   &6&lFun&f&lCraft&r&f&o.net   "
           set score "                       " in sidebar of loop-player to 10
           set score "&7Connectés: &f%amount of players%" in sidebar of loop-player to 9
           set score "&7Lobby: &f1" in sidebar of loop-player to 8
           set score "                        " in sidebar of loop-player to 7
           set score "&e&l➣&f&l %loop-player%" in sidebar of loop-player to 6
           set score "&6Gloires&f: %{gloires : %uuid of loop-player%}%" in sidebar of loop-player to 5
           set score "&aFaveurs&f: %{faveurs : %uuid of loop-player%}%" in sidebar of loop-player to 4
           set score "                         " in sidebar of loop-player to 3
           set score "&eBoutique &fet &eForum &fsur" in sidebar of loop-player to 2
           set score "   &b&nwww.funcraft.net&r     " in sidebar of loop-player to 1
           set score "            " in sidebar of loop-player to 0
       else:
           wipe loop-player's sidebar

 

Le code pour avoir les gloires et les faveurs à 0 quand on rejoint pour la 1ere fois:

on join:
   if {gloires : %player's UUID%} is not set:
       set {gloires : %player's UUID%} to 0
on join:
   if {faveurs : %player's UUID%} is not set:
       set {faveurs : %player's UUID%} to 0

Et pour finir le code pour se give des gloires et des faveurs:

command /givemoney [<text>] [<number>] [<player>]:
   permission: givemoney.sk
   trigger:
       if arg 1 is set:
           if arg 1 is "gloires":
               if arg 2 is set:
                   if arg 3 is set:
                       add arg 2 to {gloires : %uuid of player%}
                       send "&fVous venez de give &6%arg 2% Gloires &fà &6%arg 3%" to player
                       send "&fVous avez reçu &6%arg 2% Gloires &f!" to arg 3
                       send "&fVous avez maintenant &6%{gloires : %uuid of player%}% Gloires &f!" to arg 3
                   else:
                       send "&6GiveMoney&f: Précise le joueur à qui donner des &6Gloires&f!"
               else:
                   send "&6GiveMoney&f: Précise le nombre de &6Gloires &fà donner!"
       else:
           send "&6GiveMoney&f: Précise ce que tu veux donner (&6Gloires&f/&aFaveurs&f)"
       if arg 1 is set:
           if arg 1 is "faveurs":
               if arg 2 is set:
                   if arg 3 is set:
                       add arg 2 to {faveurs : %uuid of player%}
                       send "&fVous venez de give &a%arg 2% Faveurs &fà &a%arg 3%" to player
                       send "&fVous avez reçu &a%arg 2% Faveurs &f!" to arg 3
                       send "&fVous avez maintenant &a%{faveurs : %uuid of player%}% Faveurs &f!" to arg 3
                   else:
                       send "&6GiveMoney&f: Précise le joueur à qui donner des &aFaveurs&f!"
               else:
                   send "&6GiveMoney&f: Précise le nombre de &aFaveurs &fà donner!"

Ma version de skript: dev32d

La version de mon serveur: 1.9.4

MERCI D'AVANCE!

5 réponses à cette question

Messages recommandés

  • 0
Posté(e)

Sur le forum Skunity il y a eu un concours pour le meilleur code afin de transformé ceci :

245863 -> 245,863

ou

17354682 -> 17,354,682

 

avec le code le plus court possible :

 

Voici les gagnants avec le code le plus court (donc la réponse à ta question) :

https://forums.skunity.com/threads/1-winners-of-skript-challenge-number-format.439/

 

Et voici le thème de ce concours:

https://forums.skunity.com/threads/1-skript-challenge-number-format.247/

 

Enfin si tu souhaite voir les 2 autres concours:

https://forums.skunity.com/forums/skript-challenge/

 

 

PS: Tu as juste à remplacer le symbole "," par un espace pour faire ce que tu souhaite,

Il est possible que ton addons pour le scoreboard refuse d'accepter les espaces, pour résoudre cela il faut manipuler les packets à l'aide de MundoSK ou bien tester un autre addon de scoreboard ... mais bon je suppose que ton addon supporte les espaces.

  • 0
Posté(e)
Sur le forum Skunity il y a eu un concours pour le meilleur code afin de transformé ceci :

245863 -> 245,863

ou

17354682 -> 17,354,682

 

avec le code le plus court possible :

 

Voici les gagnants avec le code le plus court (donc la réponse à ta question) :

https://forums.skunity.com/threads/1-winners-of-skript-challenge-number-format.439/

 

Et voici le thème de ce concours:

https://forums.skunity.com/threads/1-skript-challenge-number-format.247/

 

Enfin si tu souhaite voir les 2 autres concours:

https://forums.skunity.com/forums/skript-challenge/

 

 

PS: Tu as juste à remplacer le symbole "," par un espace pour faire ce que tu souhaite,

Il est possible que ton addons pour le scoreboard refuse d'accepter les espaces, pour résoudre cela il faut manipuler les packets à l'aide de MundoSK ou bien tester un autre addon de scoreboard ... mais bon je suppose que ton addon supporte les espaces.

Ca ne marche pas il y a des erreurs pourtant j'ai les addons :/ et il faut le placer ou le "regex replace "(?<=\d)(?=(\d{3})+(?!\d))" with "," in {_integer}"

  • 0
Posté(e)

ça doit marcher, c'est quand même un concours validé et fais par des gars balèze en Skript ...

Au pire si tu as du mal avec le regex tu peux prendre le troisième code qui est plus long mais plus simple à comprendre (Il fait la même chose que le Regex)

 

Le plus simple et d'utiliser une fonction car tu pourra en avoir besoin dans plusieurs Skript peut être:

 

function IntSpace(int: integer) :: text:
   regex replace "(?<=\d)(?=(\d{3})+(?!\d))" with " " in {_int}
   return "%{_int}%"

OU

function IntSpace(int: integer) :: text:
   set {_r} to "%{_int}%"
   set {_t} to ""
   loop round up length of {_r} / 3 times:
       set {_l} to the last 3 characters of {_r}
       set {_r} to the first length of {_r} - 3 characters of {_r}
       if loop-number = 1:
           set {_t} to "%{_l}%%{_t}%"
       else:
           set {_t} to "%{_l}% %{_t}%"}
   return "%{_t}%"

 

et par exemple pour l'utilisation dans ton premier code :

            set {_gloire} to IntSpace({gloires : %uuid of loop-player%})
           set score "&6Gloires&f: %{_gloire}%" in sidebar of loop-player to 5
           set {_faveurs} to IntSpace({faveurs : %uuid of loop-player%})
           set score "&aFaveurs&f: %{faveurs : %uuid of loop-player%}%" in sidebar of loop-player to 4

  • 0
Posté(e)
ça doit marcher, c'est quand même un concours validé et fais par des gars balèze en Skript ...

Au pire si tu as du mal avec le regex tu peux prendre le troisième code qui est plus long mais plus simple à comprendre (Il fait la même chose que le Regex)

 

Le plus simple et d'utiliser une fonction car tu pourra en avoir besoin dans plusieurs Skript peut être:

 

function IntSpace(int: integer) :: text:
   regex replace "(?<=\d)(?=(\d{3})+(?!\d))" with " " in {_int}
   return "%{_int}%"

OU

function IntSpace(int: integer) :: text:
   set {_r} to "%{_int}%"
   set {_t} to ""
   loop round up length of {_r} / 3 times:
       set {_l} to the last 3 characters of {_r}
       set {_r} to the first length of {_r} - 3 characters of {_r}
       if loop-number = 1:
           set {_t} to "%{_l}%%{_t}%"
       else:
           set {_t} to "%{_l}% %{_t}%"}
   return "%{_t}%"

 

et par exemple pour l'utilisation dans ton premier code :

            set {_gloire} to IntSpace({gloires : %uuid of loop-player%})
           set score "&6Gloires&f: %{_gloire}%" in sidebar of loop-player to 5
           set {_faveurs} to IntSpace({faveurs : %uuid of loop-player%})
           set score "&aFaveurs&f: %{faveurs : %uuid of loop-player%}%" in sidebar of loop-player to 4

ok merci de ta réponse mais tu peux m'aider sur un autre skript et pas sur celui ci? ou je doit créer un autre topic?

Voici le skript, il me faudrait la meme chose, que ca mette une "," comme avec celui de funcraft

on break of coarse dirt:
   cancel event
   chance of 70%:
       make console execute command "/sky give %player% 1"
       add 1 to {sky.%player%}
       edit score id "sky.%player%" to "&7Sky: &b%{sky.%player%}%" and 0
   chance of 20%:
       make console execute command "/sky give %player% 3"
       add 3 to {sky.%player%}
       edit score id "sky.%player%" to "&7Sky: &b%{sky.%player%}%" and 0
   chance of 10%:
       make console execute command "/sky give %player% 5"
       add 5 to {sky.%player%}
       edit score id "sky.%player%" to "&7Sky: &b%{sky.%player%}%" and 0
on break of diorite:
   cancel event
   chance of 70%:
       make console execute command "/sky give %player% 5"
       add 5 to {sky.%player%}
       edit score id "sky.%player%" to "&7Sky: &b%{sky.%player%}%" and 0
   chance of 20%:
       make console execute command "/sky give %player% 10"
       add 10 to {sky.%player%}
       edit score id "sky.%player%" to "&7Sky: &b%{sky.%player%}%" and 0
   chance of 10%:
       make console execute command "/sky give %player% 20"
       add 20 to {sky.%player%}
       edit score id "sky.%player%" to "&7Sky: &b%{sky.%player%}%" and 0
on death:
   set {sky.%player%} to 0
   make player execute command "/score-tuto"

on script load:
   loop all players:
       set {sky.%loop-player%} to 0
       wait 1 ticks
       make loop-player execute command "/score-t"
       make console execute command "/sky reset %loop-player%"

command /score-tuto:
   aliases: stuto, score-t
   trigger:
       wipe player's sidebar
       set name of sidebar of player to "&7[&bSkyFarm&7]"
       set score "" in sidebar of player to 1
       set id based score "&7Sky: &b%{sky.%player%}%" in sidebar of player to 0 with id "sky.%player%"

  • 0
Posté(e)

Dans ce cas ce sera la même chose sauf que la fonction de tout à l'heure on va la modifier un peu:

function IntSpace(int: integer, symbol: text) :: text:
   regex replace "(?<=\d)(?=(\d{3})+(?!\d))" with "%{_symbol}%" in {_int}
   return "%{_int}%"

OU

function IntSpace(int: integer, symbol: text) :: text:
   set {_r} to "%{_int}%"
   set {_t} to ""
   loop round up length of {_r} / 3 times:
       set {_l} to the last 3 characters of {_r}
       set {_r} to the first length of {_r} - 3 characters of {_r}
       if loop-number = 1:
           set {_t} to "%{_l}%%{_t}%"
       else:
           set {_t} to "%{_l}%%{_symbol}%%{_t}%"}
   return "%{_t}%"

 

 

et donc pour l'utiliser ce sera comme ceci:

IntSpace({_TaVariablenombre}, ",") # Si tu veux le symbole virgule

ET

IntSpace({_TaVariablenombre}, " ") # Si tu veux le symbole espace,

# Tu peux utiliser le symbole que tu souhaite, même "fzggzkgzhrg" marchera !!

Exemple de tout à l'heure: 
set {_gloire} to IntSpace({gloires : %uuid of loop-player%}, " ")

Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.
×
×
  • 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.