Aller au contenu
Shykuzo

[Scoreboard] Créer un scoreboard (Auto-Actualisation + Clignote pas)

Qu'avez-vous pensé de ce tutoriel ?  

9 membres ont voté

  1. 1. Qu'avez-vous pensé de ce tutoriel ?

    • Excellent tutoriel !
      5
    • Bon Tutoriel !
      4
    • Mauvais Tutoriel !
      0
  2. 2. Connaissiez-vous cet add-on avant ce tutoriel ?

    • Oui
      4
    • J'en ai entendu parlé
      2
    • Non
      3
  3. 3. Seriez-vous intéressé par un tutoriel sur les fonctions ?

    • Oui
      4
    • Peut-être
      2
    • Non
      3


Messages recommandés

Tutoriel #1 | Les Scoreboards
Créer un Scoreboard qui s'auto-actualise, sans clignotements et qui ne cause aucune latence.

 

| Prérequis
| Voyons les plugins nécessaire à la réalisation de ce tutoriel.

Skript :
    × Si votre serveur est dans une version différentes de la 1.8.8,

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.
.
    × Si votre serveur est en 1.8.8,

Contenu masqué

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

SkBee :
    × Si votre serveur est dans une version supérieure à la 1.12.2,

Contenu masqué

    Réagissez ou répondez à ce message afin de consulter le contenu masqué.
.
    × Si votre serveur est dans une version inférieure ou égal à la 1.12.2,

Contenu masqué

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

| Tutoriel - Partie #1
| Commençons par voir quelques syntaxes utiles.
 

Pour commencer, je vais donc pour présenter différentes syntaxes qui vous seront utilise lors de la réalisation de votre Scoreboard, sachez malgré tout que SkBee ne se limite pas qu'aux Scoreboard, je vous invite donc à aller voir la documentation de SkBee sur SkriptHub en cliquant

Contenu masqué

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


Ces deux syntaxes permettent de nettoyer le Scoreboard d'un joueur, s'il change de monde par exemple, c'est important d'exécuter ce code avant la création du nouveau Scoreboard afin que l'ancien Scoreboard soit effacé et ne se superpose pas au nouveau.

Citation

clear [score]board of %player%

# Ou
clear %player%'s [score]board

 

Ces deux syntaxes permettent d'activer ou de désactiver le Scoreboard d'un joueur, sans ça, vous pouvez customiser votre Scoreboard comme bon vous semble, personne ne le verra.

Citation

Contenu masqué

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

 

Ces trois syntaxes permettent de vérifier si le Scoreboard du joueur est activé, elles sont très importantes pour éviter d'exécuter le code qui suite si le Scoreboard est activé ou non.

Citation

Contenu masqué

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

 

Ces deux syntaxes permettent de définir le titre du Scoreboard (Ce qui se trouve tout au dessus, en général, c'est le nom du serveur)

Citation

Contenu masqué

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


Ces deux syntaxes permettent de définir quelque chose dans une ligne du Scoreboard, cela vous permet donc d'y ajouter du contenu.

Citation

Contenu masqué

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


| Tutoriel - Partie #2
| Entrons dans le vif du sujet, la création du Scoreboard.
 

Pour commencer, voyons tout d'abord un code de Scoreboard complet, ensuite, nous décortiquerons chaque ligne (Sauf celles déjà décrite dans la partie précédente) afin de comprendre à quoi elles servent, ne vous en faites pas, ce n'est rien de très compliqué.

Citation

Contenu masqué

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

 

En premier lieu, nous retrouvons cette ligne :

Citation

Contenu masqué

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

Ce n'est qu'une simple fonction, pour la créée, nous indiquons d'abord à Skript que c'est une fonction avec le mot-clé "function".
Ensuite, nous donnons un nom à notre fonction, dans ce tutoriel, elle se nomme : "DisplayScoreboard".
Pour finir, nous définissons des arguments à notre fonction, "User" et "World" sont les noms de nos arguments et "player" et "text" sont les types de nos arguments.

Donc, "User" retourne un joueur et "World" retourne un texte.


Ensuite, nous avons cette condition :

Citation

Contenu masqué

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

Ce n'est qu'une simple condition, dans ce cas-ci, nous vérifions que l'argument "World" que nous avons vu précédemment contient la valeur "Lobby".


Pour finir, nous avons cette autre condition un peu spéciale :

Citation

Contenu masqué

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

Enfaite, c'est une condition mais aussi une boucle, dans le même genre d'une "loop" sauf que celle-ci ne s'arrête jamais tant que sa condition n'a pas été remplie.
En gros, cette condition veut dire "Tant que {_User} est dans le monde "Lobby"", donc, cette condition s'effectuera tous les X temps tant que le joueur sera dans le monde Lobby, quand il l'aura quitté, la boucle s'arrêtera.


La condition précédente est accompagnée d'une ligne indispensable, sans cette ligne, votre serveur ne fera que crasher :

Citation

Contenu masqué

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

Cette ligne indique à Skript d'attendre 1 seconde, vous pourriez réduire ce temps si ça vous chante mais 1 seconde, c'est parfait pour garder une bonne stabilité sur votre serveur et aussi pour avoir un taux de rafraîchissement du Scoreboard assez rapide.

 

Voilà, vous avez désormais toutes les cartes en main pour réaliser le plus beau Scoreboard possible !

Si vous avez un problème, une question ou une suggestion à me faire, n'hésitez pas à commenter sous ce poste ou à me contacter via Discord : Shykuzo#7097
 

Si ce tutoriel vous a plu, n'hésitez pas à laisser un petit ❤️ sous ce message 🙂

Modifié par Shykuzo

Partager ce message


Lien à poster
Partager sur d’autres sites

Le scoreboard clignote à chaque fois que la function se fait, enlevez le "clear {_User}'s scoreboard" dans la function et mettez le quand le joueur rejoint le serveur, puis votre scoreboard ne va pas clignoter.

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 22 heures, Deglamby a dit :

Le scoreboard clignote à chaque fois que la function se fait, enlevez le "clear {_User}'s scoreboard" dans la function et mettez le quand le joueur rejoint le serveur, puis votre scoreboard ne va pas clignoter.

Bizarre, pour moi, cela ne clignote pas, ton serveur est à 20TPS contant ? Car sinon, cela ne vient pas du Skript mais du manque de puissance de ton serveur.

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 22 heures, iGlacial a dit :

J'ai un problème quand j'update mon grade le scoreboard disparait 

Ça m'aide beaucoup '-'

Quel est ton code ?
As-tu une erreur ?
Utilises-tu un système de rang personnalisé ou un plugin ?

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 02/05/2022 à 19:34, Shykuzo a dit :

Ça m'aide beaucoup '-'

Quel est ton code ?
As-tu une erreur ?
Utilises-tu un système de rang personnalisé ou un plugin ?

function DisplayScoreboard(User: player, World: text😞
    clear {_User}'s scoreboard
    toggle scoreboard of {_User} on
 
    if {_World} = "World":
        if scoreboard of {_User} is on:
            while {_User} is in world "World":
                set title of {_User}'s scoreboard to "&b&lHyriaCraft"
                set line 13 of {_User}'s scoreboard to "&1 "
                set line 12 of {_User}'s scoreboard to "&d&lProfils"
                set line 11 of {_User}'s scoreboard to " &7Compte : %{_User}%"
                set line 10 of {_User}'s scoreboard to " &7Garde : %{grade.tab.%{_User}%}%"
                set line 9 of {_User}'s scoreboard to "&2 "
                set line 8 of {_User}'s scoreboard to "&d&lArgent"
                set line 7 of {_User}'s scoreboard to " &7Coins : &c%{coins::%{_User}%}% &d*"
                set line 6 of {_User}'s scoreboard to " &7Rumble : &c%{ultracoins.%{_User}%}% &b*"
                set line 5 of {_User}'s scoreboard to "&2   "
                set line 4 of {_User}'s scoreboard to "&d&lServeur"
                set line 3 of {_User}'s scoreboard to " &7Conecté &7: &f%amount of all players%"
                set line 2 of {_User}'s scoreboard to "&2   "
                set line 1 of {_User}'s scoreboard to "&e&lplay.hyriacraft.fr"
                wait 1 second
 
on join:
    DisplayScoreboard(player, "%player's world%")


0 Erreur rang personnalisé (skript)

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 7 heures, iGlacial a dit :
function DisplayScoreboard(User: player, World: text😞
    clear {_User}'s scoreboard
    toggle scoreboard of {_User} on
 
    if {_World} = "World":
        if scoreboard of {_User} is on:
            while {_User} is in world "World":
                set title of {_User}'s scoreboard to "&b&lHyriaCraft"
                set line 13 of {_User}'s scoreboard to "&1 "
                set line 12 of {_User}'s scoreboard to "&d&lProfils"
                set line 11 of {_User}'s scoreboard to " &7Compte : %{_User}%"
                set line 10 of {_User}'s scoreboard to " &7Garde : %{grade.tab.%{_User}%}%"
                set line 9 of {_User}'s scoreboard to "&2 "
                set line 8 of {_User}'s scoreboard to "&d&lArgent"
                set line 7 of {_User}'s scoreboard to " &7Coins : &c%{coins::%{_User}%}% &d*"
                set line 6 of {_User}'s scoreboard to " &7Rumble : &c%{ultracoins.%{_User}%}% &b*"
                set line 5 of {_User}'s scoreboard to "&2   "
                set line 4 of {_User}'s scoreboard to "&d&lServeur"
                set line 3 of {_User}'s scoreboard to " &7Conecté &7: &f%amount of all players%"
                set line 2 of {_User}'s scoreboard to "&2   "
                set line 1 of {_User}'s scoreboard to "&e&lplay.hyriacraft.fr"
                wait 1 second
 
on join:
    DisplayScoreboard(player, "%player's world%")


0 Erreur rang personnalisé (skript)

Si le nom de ton rang est trop long, il se peut qu'il ne s'affiche pas, si ton problème vient de là, je ne peux absolument pas t'aider, il faudrait que tu réduises le nom de ton rang.
(Exemple : Administrateur -> Admin)

Désolé de ne pas pouvoir trop t'aider, ça fait un moment que j'ai pas touché à Skript et je n'ai plus fais de scoreboard depuis ce tutoriel 😕
Cependant, mise à part ce soucis de longueur du nom du rang, je ne connais aucun autre problème pouvant causer ça ...

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 12 heures, Shykuzo a dit :

Si le nom de ton rang est trop long, il se peut qu'il ne s'affiche pas, si ton problème vient de là, je ne peux absolument pas t'aider, il faudrait que tu réduises le nom de ton rang.
(Exemple : Administrateur -> Admin)

Désolé de ne pas pouvoir trop t'aider, ça fait un moment que j'ai pas touché à Skript et je n'ai plus fais de scoreboard depuis ce tutoriel 😕
Cependant, mise à part ce soucis de longueur du nom du rang, je ne connais aucun autre problème pouvant causer ça ...

Ca ne marche toujours pas 😞 pas grave si ta 0 idée 

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 2 heures, iGlacial a dit :

C'est ca mon code de grade 


 

options:
    prefix: &6Grade &8»
   
    GUI: ON#     OFF pour le désactiver /!\ NE PAS LAISSEZ D'ESPACE EN LE HASHTAG ET LE 'ON' OU LE 'OFF'
   
    perm: grade.use #Permission de la commande | Etre Opérateur du serveur suffit.
    permmsg: &cTu n'as pas la permission ! #message en cas ou le joueur n'aurai pas la permission.
   
    Lore: %nl%&7Clique &fGauche &7pour définir le grade de &e%arg 1% &7en# Description des items dans le GUI | Pour sautez des lignes dans la description (lore) utilisez ' || '
   
    Done: &6Grade &8» &7Vous êtes maintenant &e%arg 2% &7sur le serveur.
    Doneplayer: &6Grade &8» &7Vous avez défini le grade de &d%arg 1% &7en &e%arg 2%&7.
   
    usage: &fCommande &c&o/grade <Joueur> &7&o(<Grade> --> Si le GUI n'est pas activer.)


 
command /grade [<offlineplayer>] [<text>]:
    trigger:
        if executor is player:
            set {_arg} to arg 1
            if {grade.tab.%player%} is "&c&lFondateur&c&l" or "&cAdmin&c":
                if arg 1 is set:
                    if "{@GUI}" is "ON":
                        create a new gui with virtual chest inventory named "&7Grade &e%arg 1%" with 5 rows:
                            make gui slot 0 with light blue stained glass pane
 
                            make gui slot 11 with book named "&4&lFondateur" with lore "{@Lore} &4&lFondateur&7.":
                                close player's inventory
                                make player execute command "/§pgrade %{_arg}% Fondateur"
                            make gui slot 12 with book named "&4Admin" with lore "{@Lore} &4Admin&7.":
                                close player's inventory
                                make player execute command "/§pgrade %{_arg}% Admin"
                            make gui slot 13 with book named "&5Super Modérateur" with lore "{@Lore} &5Super Modérateur&7.":
                                close player's inventory
                                make player execute command "/§pgrade %{_arg}% SuperModerateur"
                            make gui slot 14 with book named "&9Modérateur" with lore "{@Lore} &9Modérateur&7.":
                                close player's inventory
                                make player execute command "/§pgrade %{_arg}% Moderateur"
                            make gui slot 15 with book named "&2Helper" with lore "{@Lore} &2Helper&7.":
                                close player's inventory
                                make player execute command "/§pgrade %{_arg}% Helper"
 
                            make gui slot 29 with book named "&6Youtubeur" with lore "{@Lore} &6Youtubeur&6.":
                                close player's inventory
                                make player execute command "/§pgrade %{_arg}% Youtubeur "
                            make gui slot 30 with book named "&cLégende+" with lore "{@Lore} &cLégende+&c.":
                                close player's inventory
                                make player execute command "/§pgrade %{_arg}% Legende+"
                            make gui slot 31 with book named "&aLégende" with lore "{@Lore} &aLégende&a.":
                                close player's inventory
                                make player execute command "/§pgrade %{_arg}% Legende"
                            make gui slot 32 with book named "&bVIP+" with lore "{@Lore} &bVIP+&b.":
                                close player's inventory
                                make player execute command "/§pgrade %{_arg}% VIP+"
                            make gui slot 33 with book named "&eVIP" with lore "{@Lore} &eVIP&e.":
                                close player's inventory
                                make player execute command "/§pgrade %{_arg}% VIP"
                        open the last gui for the player
                        stop
                    if "{@GUI}" is "OFF":
                        if arg 2 is set:
                            make player execute command "/§pgrade %arg 1% %arg 2%"
                            stop
                        else:
                            message "{@usage}"
                            stop
                    else:
                        message "&cMauvaise configuration du Skript ! &eGUI doit être défini sur ON ou OFF."
                        stop
                else:
                    message "{@usage}"
                    stop
            else:
                message "&7Vous n'avez pas la permission"


 
command /§pgrade [<offlineplayer>] [<text>]:
    trigger:
        if arg 1 is set:
            if arg 2 is set:
                if arg 2 is "Fondateur":
                    set {grade.%arg 1%} to "Fondateur"
                    set {grade.tab.%arg 1%} to "&c&lFondateur&c&l"
                    make server execute command "/tag %arg 1% &c&lFondateur&c&l"
                    send "{@Done}" to arg 1
                    send "{@Doneplayer}" to player
                if arg 2 is "Admin":
                    set {grade.%arg 1%} to "Admin"
                    set {grade.tab.%arg 1%} to "&cAdmin&c"
                    make server execute command "/tag %arg 1% &cAdmin&c"
                    send "{@Done}" to arg 1
                    send "{@Doneplayer}" to player
                if arg 2 is "SuperModerateur":
                    set {grade.%arg 1%} to "SuperModerateur"
                    set {grade.tab.%arg 1%} to "&6SuperMod&6"
                    make server execute command "/tag %arg 1% &6SuperMod&6"
                    send "{@Done}" to arg 1
                    send "{@Doneplayer}" to player
                if arg 2 is "Moderateur":
                    set {grade.%arg 1%} to "Moderateur"
                    set {grade.tab.%arg 1%} to "&9Mod&9"
                    make server execute command "/tag %arg 1% &9Mod&9"
                    send "{@Done}" to arg 1
                    send "{@Doneplayer}" to player
                if arg 2 is "Helper":
                    set {grade.%arg 1%} to "Helper"
                    set {grade.tab.%arg 1%} to "&2Helper&2"
                    make server execute command "/tag %arg 1% &2Helper&2"
                    send "{@Done}" to arg 1
                    send "{@Doneplayer}" to player
               
                if arg 2 is "Youtubeur":
                    set {grade.%arg 1%} to "Youtubeur"
                    set {grade.tab.%arg 1%} to "&6Youtubeur&6"
                    make server execute command "/tag %arg 1% &6Youtubeur&6"
                    send "{@Done}" to arg 1
                    send "{@Doneplayer}" to player
                if arg 2 is "Legende+":
                    set {grade.%arg 1%} to "Légende+"
                    set {grade.tab.%arg 1%} to "&cLégende+&c"
                    make server execute command "/tag %arg 1% &cLégende+&c"
                    send "{@Done}" to arg 1
                    send "{@Doneplayer}" to player
                if arg 2 is "Legende":
                    set {grade.%arg 1%} to "Légende"
                    set {grade.tab.%arg 1%} to "&aLégende&a"
                    make server execute command "/tag %arg 1% &aLégende&a"
                    send "{@Done}" to arg 1
                    send "{@Doneplayer}" to player
                if arg 2 is "VIP+":
                    set {grade.%arg 1%} to "VIP+"
                    set {grade.tab.%arg 1%} to "&bVIP+&b"
                    make server execute command "/tag %arg 1% &bVIP+&b"
                    send "{@Done}" to arg 1
                    send "{@Doneplayer}" to player
                if arg 2 is "VIP":
                    set {grade.%arg 1%} to "VIP"
                    set {grade.tab.%arg 1%} to "&eVIP&e"
                    make server execute command "/tag %arg 1% &eVIP&e"
                    send "{@Done}" to arg 1
                    send "{@Doneplayer}" to player
                if arg 2 is "Joueur":
                    set {grade.%arg 1%} to "Joueur"
                    set {grade.tab.%arg 1%} to "&7Joueur&7"
                    make server execute command "/tag %arg 1% &7Joueur&7"
                    send "{@Done}" to arg 1
                    send "{@Doneplayer}" to player
                set arg 1 tab name to "%{grade.tab.%arg 1%}% %arg 1%"
                stop
            else:
                message "{@usage}"
                stop
        else:
            message "{@usage}"
on first join:
    make server execute command "/§pgrade %player% Joueur"
on join:
    if {grade.%player%} is set:
        set player tab name to "%{grade.tab.%player%}% %player%"
        stop



 
on first join:
    make server execute command "/tag %player% &7Joueur&7"
on join:
    if {nametag.%player%} is set:
        make server execute command "/tag %player% %{nametag.%player%}%"
        wait 1 tick
    else:
        send "%{nametag.%player%}% %player% &7a rejoind le serveurs !"
 
command /tag [<player>] [<text>] [<text>]:
    trigger:
        if arg 1 isn't set:
            send "&cTu dois choisir un joueur !" to player
            stop
        else:
            if arg 2 isn't set:
                send "&3Préfix de %arg 1%: %getted prefix in tag of arg 1%" to player
                send "&3Suffix de %arg 1%: %getted suffix in tag of arg 1%" to player
                stop
            else:
                if arg 3 isn't set:
                    clear {nametag.%player%}
                    set {nametag.%player%} to arg 2
                    replace all "&" in {nametag.%player%} with "§"
                    modify the arg 1's tag to prefix "%{nametag.%player%}%" and suffix ""
                    hide arg 1 from player
                    send "&3Préfix de %arg 1%: %getted prefix in tag of arg 1%"
                    reveal arg 1 to player
                    stop
                if arg 3 is set:
                    modify the arg 1's tag to prefix "%arg 2%" and suffix "%arg 3%"
                    send "&3Préfix de %arg 1%: %getted prefix in tag of arg 1% &b/ &3Suffix de %arg 1%: %getted suffix in tag of arg 1%"
                    stop

Pas hyper optimisé ton système de rang 😕
En plus, tu devrais utiliser des variables listes pour ce genre de chose, c'est plus facile à supprimer et à gérer.

Partager ce message


Lien à poster
Partager sur d’autres sites

Pour ceux qui avait des problèmes avec ce tutoriel ou qui ne comprenait pas bien, je viens de mettre à jour le tutoriel en essayant d'expliquer un peu mieux chaque partie, je vous ai aussi donné des liens vers Skript et SkBee en fonction de la version de votre serveur et pour finir, je vous ai décrit toutes les syntaxes utiles pour ce tutoriel 🙂

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 03/08/2022 à 17:36, Shykuzo a dit :

Pour ceux qui avait des problèmes avec ce tutoriel ou qui ne comprenait pas bien, je viens de mettre à jour le tutoriel en essayant d'expliquer un peu mieux chaque partie, je vous ai aussi donné des liens vers Skript et SkBee en fonction de la version de votre serveur et pour finir, je vous ai décrit toutes les syntaxes utiles pour ce tutoriel 🙂

J'ai un problème mon serveur lag beaucoup des solution (skript: 2.6.4, serveur: 1.8.8)

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 24/03/2023 à 08:32, iGlacial a dit :

J'ai un problème mon serveur lag beaucoup des solution (skript: 2.6.4, serveur: 1.8.8)

Bonsoir, cela est probablement dû aux performances de ton serveur, je ne saurais pas t'aider plus, ça fait longtemps que je ne Skript plus :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×
×
  • 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.