It finds it since it prints the instance itself, which is called 0, so that leads me to believe that checkpoint 0 is already right under you probably. Select it in explorer and check if it’s already under you or somewhere else, also make sure you use the edited version of the code I replied with before, since adding the offset ensures it doesn’t cause issues.
This works, but only in a separate script, which is why I have used "1" instead of ServerData[Player.leaderstats.Level]. I did try it in the main one, it just doesn’t seem to want to work.
I just tried it some minutes ago and worked. If you don’t want to write the values one by one, you can use this one.
Put this script in LocalScript in StarterPlayerScripts.
game.ReplicatedStorage.RemoteEvent.OnClientEvent:Connect(function()
local player = game.Players.LocalPlayer
local character = player.CharacterAdded:Wait()
local hrp = character:WaitForChild("HumanoidRootPart")
local leaderstats = player:WaitForChild("leaderstats")
local level = leaderstats:WaitForChild("Level")
for i , descendants in pairs(game.Workspace.Checkpoints:GetDescendants()) do
if level.Value == tonumber(descendants.Name) then
hrp.CFrame = descendants.CFrame + Vector3.new(0, 6, 0)
end
end
end)