I don't know what's wrong here, the first time it works fine, but after resetting and touching the giver again, it won't work. Output doesn't show any errors whatsoever.
function onTouched(hit) if hit.Parent:findFirstChild("Humanoid") ~= nil and hit.Parent:findFirstChild("Backpack") == nil then local h = hit.Parent:findFirstChild("Humanoid") if h ~= nil then gui = script:GetChildren() for i=1, #gui do if gui[i].className == "GuiMain" then x = gui[i]:clone() player = game.Players:GetPlayerFromCharacter(hit.Parent) if player ~= nil then x.Parent = player.PlayerGui else print("Cataphract failed.") end end end end local g = game.Lighting.Backpack:clone() g.Parent = hit.Parent local C = g:GetChildren() for i=1, #C do if C[i].className == "Part" then local W = Instance.new("Weld") W.Part0 = g.Middle W.Part1 = C[i] local CJ = CFrame.new(g.Middle.Position) local C0 = g.Middle.CFrame:inverse()*CJ local C1 = C[i].CFrame:inverse()*CJ W.C0 = C0 W.C1 = C1 W.Parent = g.Middle end local Y = Instance.new("Weld") Y.Part0 = hit.Parent.Torso Y.Part1 = g.Middle Y.C0 = CFrame.new(0, 0, 0) Y.Parent = Y.Part0 end local h = g:GetChildren() for i = 1, # h do h[i].Anchored = false h[i].CanCollide = false end end end script.Parent.Touched:connect(onTouched)
Is it possible that the line in your code that says: ~~~~~~~~~~~~~~~~~ hit.Parent:findFirstChild("Backpack") == nil then ~~~~~~~~~~~~~~~~~ should have ~= instead of ==?