Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

For some reason it doesn't work?

I made a local script to do a ragdoll script. But when you get killed it makes your character in the same position but you can't move it or remove it. Here's the local script tell me how to make it disappear after a while or help me make it work.

local t = script.Parent.Torso

local n =   {"Right Arm"                                          ,"Left Arm"                                            ,"Right Leg"                                         ,"Left Leg"                                           }
local rel = {CFrame.new(1.5, 0, 0)                                ,CFrame.new(-1.5, 0, 0)                                ,CFrame.new(0.5, -2, 0)                              ,CFrame.new(-0.5, -2, 0)                              }
local C0 =  {CFrame.new(1.5, 0.5, 0, 0, 0, 1, 0, 1, 0, -1, -0, -0),CFrame.new(-1.5, 0.5, 0, -0, -0, -1, 0, 1, 0, 1, 0, 0),CFrame.new(0.5, -1, 0, 0, 0, 1, 0, 1, 0, -1, -0, -0),CFrame.new(-0.5, -1, 0, -0, -0, -1, 0, 1, 0, 1, 0, 0)}
local C1 =  {CFrame.new(-0, 0.5, 0, 0, 0, 1, 0, 1, 0, -1, -0, -0) ,CFrame.new(0, 0.5, 0, -0, -0, -1, 0, 1, 0, 1, 0, 0)   ,CFrame.new(0, 1, 0, 0, 0, 1, 0, 1, 0, -1, -0, -0)   ,CFrame.new(-0, 1, 0, -0, -0, -1, 0, 1, 0, 1, 0, 0)   }

function weightPart(part)
	local p = Instance.new("Part")
	p.FormFactor = "Custom"
	p.Size = Vector3.new(0.4,0.4,0.4)
	p.Parent = script.Parent
	p.Transparency = 1
	p.CFrame = part.CFrame*CFrame.new(0,-0.5,0)
	local w = Instance.new("Weld")
	w.Part0 = part
	w.Part1 = p
	w.C0 = CFrame.new(0,-0.5,0)
	w.Parent = p
end

script.Parent:WaitForChild("Humanoid")

script.Parent.Humanoid.Died:connect(function()
	local tCfr = script.Parent.Torso.CFrame
	
	script.Parent:BreakJoints()
	
	if script.Parent.Humanoid:FindFirstChild("Cop")~=nil then
		local g = game.ReplicatedStorage.GunDrop:Clone()
		g.Position = script.Parent.Torso.Position
		g.Parent = workspace.Map
	end
	
	local m = Instance.new("Model")
	m.Parent = workspace
	for i,p in ipairs(script.Parent:GetChildren()) do
		if p.className=="Tool" then
			p:Remove()
		else
			if p.Name~="Humanoid" then
				p.Parent = m
				if p.className=="Part" then
					if p.Velocity.magnitude>50 then
						p.Velocity = p.Velocity.Unit*50
					end
					p.RotVelocity = Vector3.new(0,0,0)
					p:BreakJoints()
					p.CanCollide = false
				end
			end
		end
	end
	
	local hw = Instance.new("Weld")
	hw.Part0 = t
	hw.Part1 = script.Parent.Head
	hw.C0 = CFrame.new(0,1.5,0)
	hw.Parent = t
	hw = Instance.new("Weld")
	hw.Part0 = script.Parent.Head2
	hw.Part1 = script.Parent.Head
	hw.Parent = script.Parent.Head
	script.Parent.HumanoidRootPart.Size = Vector3.new(0.2,0.2,0.2)
	hw = Instance.new("Weld")
	hw.Part0 = script.Parent.Torso
	hw.Part1 = script.Parent.HumanoidRootPart
	hw.Parent = script.Parent.Torso
	
	--script.Parent.Torso.CFrame = script.Parent.Head.CFrame*CFrame.new(0,-1.5,0)
	local h = Instance.new("Humanoid")
	h.Name = "Dead"
	h.PlatformStand = true
	h.MaxHealth = 0
	h.Health = 0
	h.Parent = script.Parent
	
	for i=1,#n do
		local part = script.Parent:FindFirstChild(n[i])
		if part~=nil then
			part.CFrame = t.CFrame*rel[i]
			local g = Instance.new("Glue")
			g.Part0 = t
			g.Part1 = part
			g.C0 = C0[i]
			g.C1 = C1[i]
			g.Parent = t
			g.Name = part.Name
			weightPart(part)
		end
	end
	
	local hs = script.Parent:GetChildren()
	for i=1,#hs do
		if hs[i].className == "Hat" then
			local han = hs[i].Handle
			han.Parent = script.Parent
			local hW = Instance.new("Weld")
			hW.Part0 = script.Parent.Head
			hW.Part1 = han
			hW.C0 = CFrame.new(0, 0.5, 0) * hs[i].AttachmentPoint:inverse()
			hW.Parent = han
		end
	end
	
	t.ChildRemoved:connect(function(c)
		print("removed:",c)
		for i=1,#n do
			if c.Name==n[i] and script.Parent:FindFirstChild(n[i])~=nil then
				local part = script.Parent[n[i]]
				for _,p in ipairs(script.Parent:GetChildren()) do
					if p.className=="Part" then
						p.Velocity = Vector3.new(0,0,0)
						p.RotVelocity = Vector3.new(0,0,0)
						p.Anchored = true
					end
				end
				if part~=nil then
					print("attaching part:",part)
					part.CFrame = t.CFrame*rel[i]
					local g = Instance.new("Glue")
					g.Part0 = t
					g.Part1 = part
					g.C0 = C0[i]
					g.C1 = C1[i]
					g.Parent = t
					g.Name = part.Name
				end
			end
		end
	end)
	
	local runServ = game:GetService("RunService")
	
	while game.Players.LocalPlayer.Character==nil or game.Players.LocalPlayer.Character:FindFirstChild("Head")==nil do
		workspace.CurrentCamera.CoordinateFrame = m.Head.CFrame
		workspace.CurrentCamera.Focus = m.Head.CFrame*CFrame.new(0,0,-1)
		runServ.RenderStepped:wait()
	end 
end)

2 comments

0

Is this a localscript?

0

Yes @Awesomespyhacker12

1 answer

Doing you have FilteringEnabled set to true? Because if so, you might not be able to use a LocalScript to remove the ragdoll.

This discussion is preserved as it was. New answers, comments, and votes are closed.