Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Checkpoint system unreliable, please help?

Asked by 4 years ago

I am using the Obby checkpoint script made by Roblox (with some minor tweaks.) I find that when I die, the script is very unreliable. Sometimes, I will spawn at the SpawnLocation, and sometimes I will spawn at the correct checkpoint. Plz help.

Script:

local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")

local checkpoint = script.Parent

function onTouched(hit)
    wait()
    if hit and hit.Parent and hit.Parent:FindFirstChildOfClass("Humanoid") then
        local player = Players:GetPlayerFromCharacter(hit.Parent)
        local checkpointData = ServerStorage:FindFirstChild("CheckpointData")
        if not checkpointData then
            checkpointData = Instance.new("Folder")
            checkpointData.Name = "CheckpointData"
            checkpointData.Parent = ServerStorage
        end

        local userIdString = tostring(player.UserId)
        local checkpointValue = checkpointData:FindFirstChild(userIdString)
        if not checkpointValue then
            checkpointValue = Instance.new("ObjectValue")
            checkpointValue.Name = userIdString
            checkpointValue.Parent = checkpointData

            player.CharacterAdded:connect(function(character)
                wait()
                local storedCheckpoint = ServerStorage.CheckpointData[userIdString].Value
                character:MoveTo(storedCheckpoint.Position + Vector3.new(math.random(-2, 2), 2, math.random(-2, 2)))
            end)
        end

        checkpointValue.Value = checkpoint
    end
end

checkpoint.Touched:Connect(onTouched)

I am losing players on my game because of this. How can I make it more reliable, making the player spawn at the correct checkpoint 100% of the time?

Answer this question