Classement
Sur cette page tu trouveras comment faire:
- Un script Local Joueur pour gerer les joueurs en jeu, leur temps en jeu
 - Un classement simple qui utilise la fonctionalité de classement de Roblox
 - Un script de Classement avec affichage
 
Pour les faires fonctionner il te faudra un RemoteEvent. Consulte la fiche « Variable Serveur » si tu ne sais plus comment cet element fonctione!
						Script Local Joueur
Ce premier script permet aux joueur d’entrer ou de sortir du jeu en touchant un objet, et d’être chronometrés
local humanoid = script.Parent:WaitForChild("Humanoid") --recupère le corps du joueur pour tester ce qui est touchélocal player = game.Players:GetPlayerFromCharacter(script.Parent) -- récupère le joueur dans la liste des joueurs pour gerer les scoreslocal Remote = game:GetService("ReplicatedStorage"):WaitForChild("ClassementRemote") -- accès au données du serveurlocal inGame = falselocal chrono = 0humanoid.Touched:Connect(function(hit) --si on touche un objet    if hit.Name == "StartGame" and inGame == false then --si il a le tag qu'on veut et qu'on est pas déjà en jeu        inGame = true        Remote:FireServer(inGame,chrono) -- envoi l'état du joueur au serveur, évite les triches    end    if hit.Name == "EndGame" and inGame == true then --si il a le tag qu'on veut et qu'on est pas deja hors-jeu        inGame = false        Remote:FireServer(inGame,chrono) -- envoi l'état du joueur au serveur, évite les triches        chrono = 0  --reset le chrono    endend)--pendant qu'on est en jeu, chronomètre le joueurwhile true do    wait(1)    if inGame then        chrono += 1    endendServeur script: version simple
Ici on utilise le système d’affichage de Roblox pour faire directement le classement pour tous les joueurs
local function playerSpawned(player) --création des valeurs. Une fois créer ici elles ne se mettent pas a jour sauf si le server le demande    local leaderstats = Instance.new("Folder", player)    leaderstats.Name = "leaderstats"    local chrono = Instance.new("IntValue", leaderstats)    chrono.Name = "chrono"    chrono.Value = 0       local ingame = Instance.new("BoolValue", leaderstats)    ingame.Name = "ingame"    ingame.Value = falseendgame.Players.PlayerAdded:Connect(playerSpawned) --done aux nouveau joueur leurs valeurslocal Remote = game:GetService("ReplicatedStorage"):WaitForChild("ClassementRemote") -- accès au données du serveurRemote.OnServerEvent:Connect(function(Player, Value, Chrono) -- quand le serveur reçoit l'info que ses données ont changées    Player.leaderstats.ingame.Value = Value -- actualiser son état de jeu    Player.leaderstats.chrono.Value = Chrono -- actualiser son chronomètreend)Serveur Script: version complexe personalisée
Ce script-ci permet de faire l’affichage mais de façon personalisée. C’est à dire qu’on peut afficher les joueurs par nombre croissant ou decroissant de points.
Pour l’utiliser il te faudra dans ton niveau un panneau d’affichage avec les élements suivants:
															-- Récupère le panneau d'affichage (par son nom)local rankingPart = game.Workspace.ClassementPanneau-- Récupère le RemoteEvent pour recevoir les données du serveurlocal Remote = game:GetService("ReplicatedStorage"):WaitForChild("ClassementRemote")-- Tableau pour stocker les données du classement actuellocal scoreArray = {}-- Fonction pour trier les scores en ordre décroissantlocal function Decroissant()    table.sort(scoreArray, function(a, b)        return a[2] > b[2] -- Trier en ordre décroissant par le deuxième élément (Timer). Pour changer en ordre croissant mettre un <    end)    return scoreArrayend-- Fonction pour mettre à jour le texte du classementlocal function updateText()    local sortedScores = Decroissant() -- Trier les scores    local rankingText = "" -- Préparer un texte vide    for _, value in ipairs(sortedScores) do -- Pour chaque joueur dans les scores triés        if value[3] then -- Si le joueur est en jeu, affiche son nom et indique qu'il est en jeu            rankingText = rankingText .. value[1] .. " ___ En Jeu" .. "\n" -- \n pour aller à la ligne suivante        else -- Si le joueur est hors-jeu, affiche son temps            rankingText = rankingText .. value[1] .. "___" .. tostring(value[2]) .. "\n"        end    end    -- Affiche le classement sur le panneau    rankingPart.RankingSurfaceGui.ScrollingFrame.TextLabel.Text = rankingTextend-- quand le serveur reçoit l'info que ses données ont changéesRemote.OnServerEvent:Connect(function(Player, Value, Timer)    local index = 0    -- Cherche si le joueur existe déjà le tableau des scores    for i, entry in ipairs(scoreArray) do        if entry[1] == Player.Name then            index = i -- récupère la place actuelle du joueur si il existe        end    end    if index == 0 then        -- Si le joueur n'est pas trouvé, l'ajoute à la liste        table.insert(scoreArray, {Player.Name, Timer, Value})    else        -- Si le joueur est trouvé, met à jour son temps et son état de jeu        scoreArray[index][2] = Timer        scoreArray[index][3] = Value    end    updateText() -- Met à jour le texte du classementend)