local player = game.Players.LocalPlayer local checkpointsFolder = workspace:WaitForChild("Checkpoints") local function teleportTo(part) local character = player.Character or player.CharacterAdded:Wait() local hrp = character:WaitForChild("HumanoidRootPart") hrp.CFrame = part.CFrame + Vector3.new(0, 3, 0) end local maxCheckpoint = 0 for _, checkpoint in ipairs(checkpointsFolder:GetChildren()) do local num = tonumber(checkpoint.Name) if num and num > maxCheckpoint then maxCheckpoint = num end end local startStage = 1 local stageStat = player:FindFirstChild("leaderstats") if stageStat and stageStat:FindFirstChild("Stage") then local value = stageStat.Stage.Value if typeof(value) == "number" then startStage = value end end for i = startStage, maxCheckpoint do local checkpointModel = checkpointsFolder:FindFirstChild(tostring(i)) if checkpointModel then local primaryP = checkpointModel:FindFirstChild("PrimaryP") local part = checkpointModel:FindFirstChild("Part") local spawn = checkpointModel:FindFirstChild("Spawn") local target = (primaryP and primaryP:IsA("BasePart")) and primaryP or (part and part:IsA("BasePart")) and part or (spawn and spawn:IsA("BasePart")) and spawn if target then teleportTo(target) end end task.wait(0.1) end