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

How do I fix this death script?

Asked by
Zerio920 285 Moderation Voter
10 years ago

This is in a server script:

game.Players.PlayerAdded:connect(function(player)

    repeat wait() until player:FindFirstChild("leaderstats")
    local lives = player.leaderstats.Respawns

    player.CharacterAdded:connect(function(char)
        char:FindFirstChild("Humanoid").Died:connect(function()
            lives.Value = lives.Value - 1

            player:FindFirstChild("Backpack").Death:Play()
            children = player.Backpack:GetChildren()
            for _,v in pairs(children) do
            if v:IsA("Sound") then
            v:Stop()
            v:Destroy()

            end
            end
        end)
    end)
end)

What I'm attempting to do here is two things: Remove one life from the player when he dies, as well as play a "death" sound. The problem is that this rarely works online for some reason. I tried a local script too but it doesn't seem to work. It could be a problem with the script or there might be some other way to do this that I'm not aware of. Any ideas?

0
What is it not doing that it should be doing? GoldenPhysics 474 — 10y
0
Both aspects of the script don't seem to work. No lives are removed and the sound doesn't play. Zerio920 285 — 10y

2 answers

Log in to vote
2
Answered by
acecateer 130
10 years ago

It seems to work fine when I tested it with a server, it does not seem to work as good whilst playing solo mode. I think it should work fine on online mode.

local time = 10 --How long you want the music to play, you're making it play then immediately stopping the sound.

game.Players.PlayerAdded:connect(function(player)
    repeat wait() until player:FindFirstChild("leaderstats")
    local lives = player.leaderstats.Respawns
    player.CharacterAdded:connect(function(character)
        character:FindFirstChild("Humanoid").Died:connect(function()
            wait()
            lives.Value = lives.Value - 1
            player:FindFirstChild("Backpack").Death:Play()
            wait(time)
            children = player.Backpack:GetChildren()
            for _,v in pairs(children) do
                if v:IsA("Sound") then
                    repeat --This makes sure the sound stops completely. Roblox's sound system is a bit buggy.
                        wait()
                        v:Stop()
                    until v.IsPlaying == false  
                end
            end
        end)
    end)
end)
Ad
Log in to vote
0
Answered by 10 years ago

For the sound aspect, try adding a wait of however long the sound plays for. From my beginner standpoint it appears as soon as it is told to Play it is told to Stop.

Answer this question