You are creating a new connection for each player that joins. This means that when any player touches the part, the game won’t know which player touched it, so it will change for all the players. To fix this just use the touched event and get the player from the character that touched the part.
script.Parent.Touched:Connect(function(hit)
local player = game.Players:GetPlayerFromCharacter(hit.Parent) -- get the player from the character that touched the part
player.PlayerGui.SkyScript.Disabled = false
player.PlayerGuiGui.SkyScript.Disabled = true
player.leaderstatsP.Sky.Value = 1
player.leaderstats.Stage.Value = 151
player.Character.Humanoid.Health = 0
end)
script.Parent.Touched:Connect(function(hit)
local player = game.Players:GetPlayerFromCharacter(hit.Parent) -- get the player from the character that touched the part
player.PlayerGui.SkyScript.Disabled = false
wait(10)
player.PlayerGui.SkyScript.Disabled = true
player.leaderstatsP.Sky.Value = 1
player.leaderstats.Stage.Value = 151
end)