My Leaderboard's Aren't working

Hello! Im currently making a game cald Battle Heights, So basically Im trying to make it so that when the player wins, they get 25 Tix BUUUUT It doesn’t and 1 win and also the wins doesn’t show on the leaderboard for neither players, nothing comes inside of the output and also my modeled leaderboards didn’t show at all the players ( globally ) points on their at all, I dont know how to fix these.

MainScript ( Game Handler )

-- Define Variables

local ReplicatedStorage = game:GetService("ReplicatedStorage")

local ServerStorage = game:GetService("ServerStorage")

local MapsFolder = ServerStorage:WaitForChild("Maps")

local Status = ReplicatedStorage:WaitForChild("Status")

local GameLength = 180

local tixreward = 25

local winsreward = 1

local Gamemodes = {"Free For All", "Team Deathmatch", "Capture The Flag", "Infection", "Rocket Battle", "KOTH", "Swords Only"}


-- Game Loop

while true do
	
	
	Status.Value = "Waiting for enough players..."
	
	repeat wait() until game.Players.NumPlayers >= 2
	
	Status.Value = "Intermission..."
	
	wait(10)
	
	local plrs = {}
	
	for i, player in pairs (game.Players:GetPlayers()) do
		if player then
			table.insert(plrs,player) -- Add each player into plrs table
		end
	end
	
	wait(2)
	
	local AvalibleMaps = MapsFolder:GetChildren()
	
	local ChosenMap = AvalibleMaps[math.random(1,#AvalibleMaps)]
	
	Status.Value = ChosenMap.Name.."Chosen"
	
	local ClonedMap = ChosenMap:Clone()
	ClonedMap.Parent = workspace
	
	-- Telaports players to the map
	
	local SpawnPoints = ClonedMap:FindFirstChild("SpawnPoints")
	
	if not SpawnPoints then
		print(" { ERROR 101 } SpawnPoints not found!")
	end
	
	local AvalibleSpawnPoints = SpawnPoints:GetChildren()
	
	for i, player in pairs(plrs) do
		if player then
			character= player.character
			
			if character then
				-- Telaport them
				
				character:FindFirstChild("HumanoidRootPart").CFrame = AvalibleSpawnPoints[1].CFrame
				table.remove(AvalibleSpawnPoints,1)
				
				
				-- Give them a sword
				local Sword = ServerStorage.Sword:Clone()
				Sword.Parent = player.Backpack
				
				-- Give them a Slingshot
				local Slingshot = ServerStorage.Slingshot:Clone()
				Sword.Parent = player.Backpack
				
				-- Give them a RocketLauncher
				local RocketLauncher = ServerStorage.RocketLauncher:Clone()
				Sword.Parent = player.Backpack
				
				local GameTag = Instance.new("BoolValue")
				GameTag.Name = "GameTag"
				GameTag.Parent = player.Character
			else
				-- Their is no character
				if not player then
					table.remove(plrs, i)
				end
			end
		end
	end
	
	
	Status.Value = "Get Ready To Play!"
	
	wait(2)
	
	for i = GameLength,0,-1 do
		
		for x, player in pairs(plrs) do
			if player then
				
				character = player.Character
				
				if not character then
					-- Left the game
				else
					if character:FindFirstChild("GameTag") then
						-- They are still alive
						print(player.Name.." is still in the game!")
					else
						-- They are dead
						table.remove(plrs,x)
						print(player.Name.."Has been removed!")
					end
				end
			else
				table.remove(plrs,x)
				print(player.Name.."Has been killed!")
			end
		end
		
		Status.Value = "There are "..i.."seconds remaning, and "..#plrs.."remaning."
		
		if #plrs == 1 then
			-- Last person standing!
			Status.Value = "The winner is "..plrs[1].Name
			plrs[1].leaderstats.Tix.Value = plrs[1].leaderstats.Tix.Value + tixreward
			
			plrs[1].leaderstats.Tix.Value = plrs[1].leaderstats.Tix.Value + winsreward
			break
		elseif #plrs == 0 then
			Status.Value = "Nobody won :("
			break
		elseif i ==  0 then
			Status.Value = "Times Up!"
			break
		end
		
		wait(1)
		
	end
	
	print("End of game")
	
	for i, player in pairs(game.Players:GetPlayers()) do
		character = player.Character
		
		if not character then
			--Ignore them
		else
			if character:FindFirstChild("GameTag") then
				character.GameTag:Destroy()
			end
			
			if player.Backpack:FindFirstChild("Sword") then
				player.Backpack.Sword:Destroy()
			end
			if character:FindFirstChild("Sword") then
				character.Sword:Destroy()
			end
		end
		
	end
	
	ClonedMap:Destroy()
	
	Status.Value = "The Game has ended!"
end

StatsScript

game.Players.PlayerAdded:Connect(function(player)
	
	local leaderstats = Instance.new("Folder")
	leaderstats.Name = "leaderstats"
	leaderstats.Parent = player
	
	local Tix = Instance.new("IntValue")
	Tix.Name = "Tix"
	Tix.Value = 0
	Tix.Parent = leaderstats
	
	local leaderstats = Instance.new("Folder")
	leaderstats.Name = "leaderstats"
	leaderstats.Parent = player

	local Wins = Instance.new("IntValue")
	Wins.Name = "Wins"
	Wins.Value = 0
	Wins.Parent = leaderstats

end)

globalLeaderboard ( Tix Script )

local ods = game:GetService("DataStoreService"):GetOrderedDataStore("Tix")
local Players = game:GetService("Players")

local primaryColor = Color3.new(1,1,1)
local secondaryColor = Color3.new(0.815686, 0.815686, 0.815686)

local function cleanBoard()
	for _,surfaceGui in pairs(script.Parent:getChildren()) do
		if surfaceGui.Name == "SurfaceGui" then
			for _,frame in pairs(surfaceGui.ScrollingFrame:GetChildren()) do
				if frame:IsA("Frame") then
					frame:Destroy()
				end
			end
		end
	end
	
end

function updateBoard(data)
	for i,v in pairs(data) do
		for _,surfaceGui in pairs(script.Parent:GetChildren()) do
			if surfaceGui.Name == "SurfaceGui" then
				local pos = i
				local userId = v.key
				local score = v.value
				local frame = script.Frame:Clone()
				frame.Parent = surfaceGui.ScrollingFrame
				pcall(function ()
					frame.name.Text = Players:GetNameFromUserIdAsync(userId)
				end)
				pcall(function ()
					frame.playerImage.Image = Players:GetUserThumbnailAsync(userId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size420x420)
				end)
				frame.value.Text = score
				frame.rank.Text = "# " .. pos
				if i % 2 == 0 then
					frame.BackgroundColor3 = primaryColor
				else
					frame.BackgroundColor3 = secondaryColor
				end
				if i == 1 then
					frame.BackgroundColor3 = Color3.new(255/255, 255/255, 179/255)
					frame.name.TextStrokeColor3 = Color3.new(255/255, 226/255, 0)
					frame.value.TextStrokeColor3 = Color3.new(255/255, 226/255, 0)
					frame.rank.TextStrokeColor3 = Color3.new(255/255, 226/255, 0)
					frame.name.TextStrokeTransparency = 0
					frame.value.TextStrokeTransparency = 0
					frame.rank.TextStrokeTransparency = 0
				end
			end
		end
	end	
end

while true do
	local success, message = pcall(function()
		local pages = ods:GetSortedAsync(false,100)
		-- get data for first board
		local data = pages:GetCurrentPage()
		cleanBoard()
		updateBoard(data)
	end)
	
	if not success then
		print(message)
	end
	wait(60)
end

globalLeaderboard ( Wins Script )

local ods = game:GetService("DataStoreService"):GetOrderedDataStore("Wins")
local Players = game:GetService("Players")

local primaryColor = Color3.new(1,1,1)
local secondaryColor = Color3.new(0.815686, 0.815686, 0.815686)

local function cleanBoard()
	for _,surfaceGui in pairs(script.Parent:getChildren()) do
		if surfaceGui.Name == "SurfaceGui" then
			for _,frame in pairs(surfaceGui.ScrollingFrame:GetChildren()) do
				if frame:IsA("Frame") then
					frame:Destroy()
				end
			end
		end
	end
	
end

function updateBoard(data)
	for i,v in pairs(data) do
		for _,surfaceGui in pairs(script.Parent:GetChildren()) do
			if surfaceGui.Name == "SurfaceGui" then
				local pos = i
				local userId = v.key
				local score = v.value
				local frame = script.Frame:Clone()
				frame.Parent = surfaceGui.ScrollingFrame
				pcall(function ()
					frame.name.Text = Players:GetNameFromUserIdAsync(userId)
				end)
				pcall(function ()
					frame.playerImage.Image = Players:GetUserThumbnailAsync(userId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size420x420)
				end)
				frame.value.Text = score
				frame.rank.Text = "# " .. pos
				if i % 2 == 0 then
					frame.BackgroundColor3 = primaryColor
				else
					frame.BackgroundColor3 = secondaryColor
				end
				if i == 1 then
					frame.BackgroundColor3 = Color3.new(255/255, 255/255, 179/255)
					frame.name.TextStrokeColor3 = Color3.new(255/255, 226/255, 0)
					frame.value.TextStrokeColor3 = Color3.new(255/255, 226/255, 0)
					frame.rank.TextStrokeColor3 = Color3.new(255/255, 226/255, 0)
					frame.name.TextStrokeTransparency = 0
					frame.value.TextStrokeTransparency = 0
					frame.rank.TextStrokeTransparency = 0
				end
			end
		end
	end	
end

while true do
	local success, message = pcall(function()
		local pages = ods:GetSortedAsync(false,100)
		-- get data for first board
		local data = pages:GetCurrentPage()
		cleanBoard()
		updateBoard(data)
	end)
	
	if not success then
		print(message)
	end
	wait(60)
end

Are you receiving errors from any of these scripts?

1 Like

can you join me so I can check the output?

sure just give me a couple minutes and Ill be there

1 Like