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

Why it spawns me on a wrong location when I spawned in?

Asked by 7 years ago
Edited 7 years ago

https://gyazo.com/25936ae2ba1c6fe39f9b8d8846768bd2

local DataStore = game:GetService("DataStoreService")
local ds = DataStore:GetDataStore("StageSaveSystem")

game.Players.PlayerAdded:connect(function(player)
    local leader = Instance.new("Folder",player)
    leader.Name = "leaderstats"
    local Stage = Instance.new("IntValue",leader)
    Stage.Name = "Stage"
    Stage.Value = ds:GetAsync(player.UserId)
    if Stage.Value == nil then Stage.Value = 0 end
    player.CharacterAdded:Connect(function(character)
        local spaw = workspace:FindFirstChild(tostring(Stage.Value))
        spaw.Enabled = true 
        wait()
        spaw.Enabled = false
    end)

    ds:SetAsync(player.UserId, Stage.Value)

    Stage.Changed:connect(function()
        ds:SetAsync(player.UserId, Stage.Value)
    end)

end)

game.Players.PlayerRemoving:connect(function(player)
    ds:SetAsync(player.UserId, player.leaderstats.Stage.Value)
end)

local stage = 10


function ot(hit)
    if hit.Parent ~= nil then
    local player = game.Players:playerFromCharacter(hit.Parent)
        if player ~= nil then
            if player.leaderstats.Stage.Value == stage - 1  then
                local h = hit.Parent:FindFirstChild("Humanoid")
                if h ~= nil then
                    if h.Health ~= 0 then
                        player.leaderstats.Stage.Value = stage
                    end 
                end
            end
        end
    end
end

script.Parent.Touched:connect(ot)

1 answer

Log in to vote
0
Answered by
mattscy 3725 Moderation Voter Community Moderator
7 years ago

You are probably better off changing the player’s RespawnLocation when their Stage changes instead of changing the Enabled property of the spawns.

local DataStore = game:GetService("DataStoreService")
local ds = DataStore:GetDataStore("StageSaveSystem")

game.Players.PlayerAdded:connect(function(player)
    local leader = Instance.new("Folder",player)
    leader.Name = "leaderstats"
    local Stage = Instance.new("IntValue",leader)
    Stage.Name = "Stage"
    Stage.Value = ds:GetAsync(player.UserId)
    if Stage.Value == nil then Stage.Value = 0 end
    player.RespawnLocation = workspace:FindFirstChild(tostring(Stage.Value))


    ds:SetAsync(player.UserId, Stage.Value)

    Stage.Changed:connect(function()
        ds:SetAsync(player.UserId, Stage.Value)
    player.RespawnLocation = workspace:FindFirstChild(tostring(Stage.Value))
    end)

end)

game.Players.PlayerRemoving:connect(function(player)
    ds:SetAsync(player.UserId, player.leaderstats.Stage.Value)
end)

This is assuming you have the script to change the leaderstat when you touch the part, and that the spawns are named after the appropriate Stage numbers.

Ad

Answer this question