Here’s a collection of Roblox Studio scripts for creating and managing leaderboards and teams in your game. These scripts allow you to organize players into teams and display scores or stats in an easy-to-use format.
1. Leaderboard with Teams
This script creates a leaderboard that tracks scores for players and assigns them to teams.
game.Players.PlayerAdded:Connect(function(player)
— Create the leaderboard folder
local leaderstats = Instance.new(“Folder”)
leaderstats.Name = “leaderstats”
leaderstats.Parent = player
— Create a “Score” stat
local score = Instance.new(“IntValue”)
score.Name = “Score”
score.Value = 0
score.Parent = leaderstats
— Assign the player to a random team
local teams = game:GetService(“Teams”)
local teamList = teams:GetTeams()
if #teamList > 0 then
local assignedTeam = teamList[math.random(1, #teamList)]
player.Team = assignedTeam
end
end)
How to Use:
1. Add this script to ServerScriptService.
2. Create teams in Teams (add a Teams service through the Explorer if not already present).
3. Players will be assigned to random teams when they join.
2. Team-Based Scoring
This script tracks scores for each team instead of individual players.
local teams = game:GetService(“Teams”)
— Initialize team scores
for _, team in pairs(teams:GetTeams()) do
if not team:FindFirstChild(“TeamScore”) then
local teamScore = Instance.new(“IntValue”)
teamScore.Name = “TeamScore”
teamScore.Value = 0
teamScore.Parent = team
end
end
— Add points to the player’s team when they perform an action
game.Players.PlayerAdded:Connect(function(player)
player.CharacterAdded:Connect(function(character)
local humanoid = character:WaitForChild(“Humanoid”)
humanoid.Died:Connect(function()
local team = player.Team
if team and team:FindFirstChild(“TeamScore”) then
team.TeamScore.Value = team.TeamScore.Value + 10 — Add 10 points
end
end)
end)
end)
How to Use:
1. Add this script to ServerScriptService.
2. Players’ actions (e.g., kills) will contribute to their team’s score.
3. Display Team Scores on the Leaderboard
This script shows team scores on a leaderboard UI.
local teams = game:GetService(“Teams”)
local starterGui = game:GetService(“StarterGui”)
local function createLeaderboard()
local screenGui = Instance.new(“ScreenGui”)
screenGui.Name = “TeamLeaderboard”
screenGui.Parent = starterGui
local leaderboardFrame = Instance.new(“Frame”)
leaderboardFrame.Size = UDim2.new(0.3, 0, 0.2, 0)
leaderboardFrame.Position = UDim2.new(0.35, 0, 0.05, 0)
leaderboardFrame.BackgroundColor3 = Color3.new(0.1, 0.1, 0.1)
leaderboardFrame.Parent = screenGui
local title = Instance.new(“TextLabel”)
title.Text = “Team Scores”
title.Size = UDim2.new(1, 0, 0.2, 0)
title.BackgroundColor3 = Color3.new(0.2, 0.2, 0.2)
title.TextColor3 = Color3.new(1, 1, 1)
title.TextScaled = true
title.Parent = leaderboardFrame
local scoreList = Instance.new(“Frame”)
scoreList.Size = UDim2.new(1, 0, 0.8, 0)
scoreList.Position = UDim2.new(0, 0, 0.2, 0)
scoreList.BackgroundTransparency = 1
scoreList.Parent = leaderboardFrame
return scoreList
end
local function updateLeaderboard(scoreList)
scoreList:ClearAllChildren()
for _, team in pairs(teams:GetTeams()) do
if team:FindFirstChild(“TeamScore”) then
local scoreLabel = Instance.new(“TextLabel”)
scoreLabel.Text = team.Name .. “: ” .. team.TeamScore.Value
scoreLabel.Size = UDim2.new(1, 0, 0.2, 0)
scoreLabel.BackgroundTransparency = 1
scoreLabel.TextColor3 = team.TeamColor.Color
scoreLabel.TextScaled = true
scoreLabel.Parent = scoreList
end
end
end
local leaderboard = createLeaderboard()
while true do
wait(1)
updateLeaderboard(leaderboard)
end
How to Use:
1. Add this script to StarterPlayerScripts.
2. It dynamically updates the leaderboard UI to show team scores.
4. Team Assignment Script Based on Skill
This script assigns players to teams based on their skill level (e.g., Score).
game.Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new(“Folder”)
leaderstats.Name = “leaderstats”
leaderstats.Parent = player
local score = Instance.new(“IntValue”)
score.Name = “Score”
score.Value = 0
score.Parent = leaderstats
player.CharacterAdded:Connect(function()
local teams = game:GetService(“Teams”)
local highSkillTeam = teams:FindFirstChild(“HighSkill”)
local lowSkillTeam = teams:FindFirstChild(“LowSkill”)
if highSkillTeam and lowSkillTeam then
if score.Value > 50 then
player.Team = highSkillTeam
else
player.Team = lowSkillTeam
end
end
end)
end)
How to Use:
1. Add this script to ServerScriptService.
2. Create two teams in the Teams service: “HighSkill” and “LowSkill.”
3. Players are assigned based on their scores.
5. End Game When a Team Reaches a Score
This script ends the game and announces the winning team when a team reaches a specific score.
local winningScore = 100
local teams = game:GetService(“Teams”)
for _, team in pairs(teams:GetTeams()) do
if not team:FindFirstChild(“TeamScore”) then
local teamScore = Instance.new(“IntValue”)
teamScore.Name = “TeamScore”
teamScore.Value = 0
teamScore.Parent = team
end
end
while true do
wait(1)
for _, team in pairs(teams:GetTeams()) do
if team.TeamScore.Value >= winningScore then
print(“The winning team is: ” .. team.Name)
— Optionally, teleport players to a new game or restart.
break
end
end
end
How to Use:
1. Add this script to ServerScriptService.
2. Update the winningScore variable to set the win condition.
These scripts help you set up and manage leaderboards and teams in your game. Let me know if you need assistance customizing them further or creating additional functionality!