Objectif : Créé un tableau de scores
Créer un script pour afficher un tableau de score au joueur sousServerScriptService :


Renommer le script leaderstats :

Saisir le code suivant pour un affichage d’une barre de scores :
local players = game:GetService("Players")
players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
end)
Si tu lances ton jeu une barre s’affiche :

Si le score ne s’affiche pas vérifie :

Rajoute à ton script un score à afficher :
local players = game:GetService("Players")
players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local score = Instance.new("IntValue")
score.Parent = leaderstats
score.Name = "Score"
score.Value = 0
end)
Le score s’affiche si tu lances ton jeu :

Exemple d’un script pour augmenter le score si le joueur click sur un ClickDetector :
local clickDetector = script.Parent.ClickDetector
clickDetector.MouseClick:Connect(function(player)
player:WaitForChild("leaderstats").Score.Value += 10
end)
Exemple d’un script pour augmenter le score si le joueur rentre en collision avec un part :
local myPart = script.Parent
myPart.Touched:Connect(function(hit)
-- Vérifie si c'est un joueur qui a touché la part
local joueur = game:GetService("Players"):GetPlayerFromCharacter(hit.Parent)
if joueur then
-- Trouve le score du joueur dans Leaderstats
local leaderstats = joueur:FindFirstChild("leaderstats")
if leaderstats then
local score = leaderstats:FindFirstChild("Score")
if score then
-- Incrémente le score
score.Value = score.Value + 1
end
end
end
end)
Exemple d’un script pour augmenter le score si le joueur rentre en collision avec un part :
local myPart = script.Parent
myPart.Touched:Connect(function(hit)
-- Vérifie si c'est un joueur qui a touché la part
local joueur = game:GetService("Players"):GetPlayerFromCharacter(hit.Parent)
if joueur then
-- Trouve le score du joueur dans Leaderstats
local leaderstats = joueur:FindFirstChild("leaderstats")
if leaderstats then
local score = leaderstats:FindFirstChild("Score")
if score then
-- Incrémente le score
score.Value = score.Value + 1
end
end
end
end)
Un système de score avec un ModuleScript


1. Créer un ModuleScript pour gérer les scores
-- ModuleScript dans ServerScriptService : "ScoreManager"
local ScoreManager = {}
-- Initialise le Leaderstats pour un joueur
function ScoreManager.initPlayer(player)
local leaderstats = Instance.new("Folder", player)
leaderstats.Name = "leaderstats"
local points = Instance.new("IntValue", leaderstats)
points.Name = "Score"
points.Value = 0
end
-- Met à jour le score d'un joueur
function ScoreManager.addPoints(player, points)
local leaderstats = player:FindFirstChild("leaderstats")
if leaderstats then
local score = leaderstats:FindFirstChild("Score")
if score then
score.Value = score.Value + points
end
end
end
return ScoreManager
Appel dans scriptServeur pour rajouter des points :
-- Script dans ServerScriptService
local ScoreManager = require(game:GetService("ServerScriptService"):WaitForChild("ScoreManager"))
-- Initialiser le Leaderstats pour chaque joueur
game.Players.PlayerAdded:Connect(function(player)
ScoreManager.initPlayer(player)
end)
local part = workspace.Part -- La Part qui déclenche l'événement
-- Exemple : Ajouter 10 points à un joueur
part.Touched:Connect(function(otherPart)
-- Vérifie que otherPart fait partie d'un personnage
local humanoid = otherPart.Parent:FindFirstChild("Humanoid")
if humanoid then
-- Récupère le joueur associé au personnage
local player = game.Players:GetPlayerFromCharacter(otherPart.Parent)
if player then
ScoreManager.addPoints(player, 10)
part:Destroy() -- Supprime la Part après utilisation
end
end
end)
