Why does my Server Script Service script do this?

My goal is to make an obby level and respawn system, the problem is when i enter the game(in studio) my level gets set to different numbers based on my Total spawnLocations as checkpoints(20). Although if my level at the start is 0 as it should be it works perfectly fine. I added enabling and disabling to the spawnlocations to see if that would fix it but it didnt, all help is appreciated:

local DCS = workspace.DifficultyChartSpawns

for _, spawner in pairs(DCS:GetChildren()) do
	
	--//Player touching spawner\\--
	spawner.Touched:Connect(function(object)
		if object.Parent:FindFirstChild("Humanoid") then
			local humanoid = object.Parent:FindFirstChild("Humanoid")
			local player = game:GetService("Players"):GetPlayerFromCharacter(humanoid.Parent)
			
			if tonumber(spawner.Name) >= player.leaderstats.Level.Value then
				spawner.Enabled = true
				player.leaderstats.Level.Value = tonumber(spawner.Name)
				
				--Turning it green
				script.Completed:Play()
				spawner.Color = Color3.fromRGB(0, 255, 0)
				player.RespawnLocation = spawner
			else
				spawner.Enabled = false
			end
		end
	end)
end

There’s a few issues with this, seeing as it is a server script. Since you are enabling and disabling these based on if the player has a certain level, those enabled values will apply to everyone in the server. Now, the reason you are sent to a random spot, is because your check is wrong. You’re checking if the spawn level is greater than the player level, you have it backwards. In my opinion, for a custom leveling system, I would not use Roblox’s spawn locations at all, I would suggest making your own.

Thats what i did but then i could do the respawning right so i replaced everything

And its greater than the players value because i dont want them going backwards and it changes going DOWN im trying to make sure their going the right way