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

How can I fix an exploit that comes from this keep inventory after death script?

Asked by
mrcool2 75
9 years ago

This script allows you to keep your inventory even after you die, so if you pick up a weapon, you will have it when you respawn, however if you have a situation where you pick up a better weapon, and drop the previous, when you next respawn you will still have both swords in your inventory, which can lead to duping and other sorts, how can I alter this to make it not give you items that you do not have in your inventory when you die?

local wm = Instance.new("Model")
wm.Name = "Weaps"

function give(weap, player) 

    for _, w in ipairs(player.Weaps:GetChildren()) do
        if w.Name == weap.Name then return end
    end

    for _, w in ipairs(game.StarterPack:GetChildren()) do
        if w.Name == weap.Name then return end
    end

    weap:clone().Parent = player.Weaps
end

game.Players.ChildAdded:connect(function(p)
    wm:clone().Parent = p
    wait()
    p.Character.ChildAdded:connect(function(wep)
        if wep.className == "Tool" then
            give(wep, p)
        end
    end)
    p.Changed:connect(function(pr)
        if pr == "Character" then
            for _, w in ipairs(p.Weaps:GetChildren()) do
                w:clone().Parent = p.Backpack
            end
            p.Character.ChildAdded:connect(function(wep)
                if wep.className == "Tool" then
                    give(wep, p)
                end
            end)
        end
    end)
    p.Backpack.ChildAdded:connect(function(h)
        if h.className == "HopperBin" then
            give(h, p)      
        end
    end)
end)

(I did not make this script)

Answer this question