function makespring(paren, co, ci, parto, parti, name) local spring = Instance.new("SpringConstraint") spring.Name = name local atch = Instance.new("Attachment") local atch2 = Instance.new("Attachment") spring.LimitsEnabled = true spring.MaxLength = 1.4 spring.Stiffness = 500 spring.Attachment0 = atch spring.Attachment1 = atch2 atch.Parent = parto atch2.Parent = parti spring.Parent = paren end function makelimb(parent, limb, cframe) local pr = Instance.new("Part") pr.Name = "limb" pr.Size = Vector3.new(1 * nscale, 1 * nscale, 1 * nscale) pr.Transparency = 1 pr.Massless = true pr.CustomPhysicalProperties = PhysicalProperties.new(0.55, 0.3, 3,1,6) pr.CanCollide = true pr.Anchored = false pr.Parent = parent local w = Instance.new("Weld") w.Part0 = pr w.Part1 = limb w.C0 = cframe w.Parent = pr end function makejoint(paren, co, ci, parto, parti, name) local joint = Instance.new("Motor6D") joint.Name = name joint.C0 = co joint.C1 = ci joint.Part0 = parto joint.Part1 = parti joint.Parent = paren end local function ragdoll(chr) local human = chr["Humanoid"] local tors = chr.Torso local rarm = chr["Right Arm"] local larm = chr["Left Arm"] local rleg = chr["Right Leg"] local lleg = chr["Left Leg"] local hrp = chr.HumanoidRootPart local hed = chr.Head human.PlatformStand = true human.AutoRotate = false human:UnequipTools() local RightShoulderC0 = CFrame.new(1.5 * nscale, 0.5 * nscale, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0) local RightShoulderC1 = CFrame.new(0, 0.5 * nscale, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0) local LeftShoulderC0 = CFrame.new(-1.5 * nscale, 0.5 * nscale, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0) local LeftShoulderC1 = CFrame.new(0, 0.5 * nscale, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0) local RightHipC0 = CFrame.new(0.5 * nscale, -1 * nscale, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0) local RightHipC1 = CFrame.new(0, 1 * nscale, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0) local LeftHipC0 = CFrame.new(-0.5 * nscale, -1 * nscale, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0) local LeftHipC1 = CFrame.new(0 * nscale, 1 * nscale, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0) local RootJointC0 = CFrame.new(0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 1, 0) local RootJointC1 = CFrame.new(0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 1, 0) local NeckC0 = CFrame.new(0, 1 * nscale, 0, -1, 0, 0, 0, 0, 1, 0, 1, 0) local NeckC1 = CFrame.new(0, -0.5 * nscale, 0, -1, 0, 0, 0, 0, 1, 0, 1, 0) if rarm and tors:FindFirstChild("Right Shoulder") then tors:FindFirstChild("Right Shoulder"):Destroy() makespring(tors, RightShoulderC0, RightShoulderC1, tors, rarm, "Right Shoulder") makelimb(rarm, rarm, CFrame.new(0, 0.5, 0)) end if larm and tors:FindFirstChild("Left Shoulder") then tors:FindFirstChild("Left Shoulder"):Destroy() makespring(tors, LeftShoulderC0, LeftShoulderC1, tors, larm, "Left Shoulder") makelimb(larm, larm, CFrame.new(0, 0.5, 0)) end if rleg and tors:FindFirstChild("Right Hip") then tors:FindFirstChild("Right Hip"):Destroy() makespring(tors, RightHipC0, RightHipC1, tors, rleg, "Right Hip") makelimb(rleg, rleg, CFrame.new(0, 0.5, 0)) end if lleg and tors:FindFirstChild("Left Hip") then tors:FindFirstChild("Left Hip"):Destroy() makespring(tors, LeftHipC0, LeftHipC1, tors, lleg, "Left Hip") makelimb(lleg, lleg, CFrame.new(0, 0.5, 0)) end end local function getup(chr) local human = chr["Humanoid"] local tors = chr.Torso local rarm = chr["Right Arm"] local larm = chr["Left Arm"] local rleg = chr["Right Leg"] local lleg = chr["Left Leg"] local hrp = chr.HumanoidRootPart local hed = chr.Head local RSC0 = CFrame.new(1, 0.5, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0) local RSC1 = CFrame.new(-0.5, 0.5, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0) local LSC0 = CFrame.new(-1, 0.5, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0) local LSC1 = CFrame.new(0.5, 0.5, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0) local RHC0 = CFrame.new(1, -1, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0) local RHC1 = CFrame.new(0.5, 1, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0) local LHC0 = CFrame.new(-1, -1, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0) local RJC1 = CFrame.new(0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 1, 0) local LHC1 = CFrame.new(-0.5, 1, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0) local NC0 = CFrame.new(0, 1, 0, -1, 0, 0, 0, 0, 1, 0, 1, 0) local NC1 = CFrame.new(0, -0.5, 0, -1, 0, 0, 0, 0, 1, 0, 1, 0) local RJC0 = CFrame.new(0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 1, 0) human.PlatformStand = false human.AutoRotate = true if rarm and tors:FindFirstChild("Right Shoulder") then tors:FindFirstChild("Right Shoulder"):Destroy() makejoint(tors, RSC0, RSC1, tors, rarm, "Right Shoulder") rarm:FindFirstChild("touchy"):Destroy() end if larm and tors:FindFirstChild("Left Shoulder") then tors:FindFirstChild("Left Shoulder"):Destroy() makejoint(tors, LSC0, LSC1, tors, larm, "Left Shoulder") larm:FindFirstChild("touchy"):Destroy() end if rleg and tors:FindFirstChild("Right Hip") then tors:FindFirstChild("Right Hip"):Destroy() makejoint(tors, RHC0, RHC1, tors, rleg, "Right Hip") rleg:FindFirstChild("touchy"):Destroy() end if lleg and tors:FindFirstChild("Left Hip") then tors:FindFirstChild("Left Hip"):Destroy() makejoint(tors, LHC0, LHC1, tors, lleg, "Left Hip") lleg:FindFirstChild("touchy"):Destroy() end local RS = tors:FindFirstChild("Right Shoulder") local LS = tors:FindFirstChild("Left Shoulder") local RH = tors:FindFirstChild("Right Hip") local LH = tors:FindFirstChild("Left Hip") local RJ = hrp:FindFirstChild("RootJoint") local N = tors:FindFirstChild("Neck") end Misc.Ragdoll = function(Target, Duration) if Target:FindFirstChild("Ragdoll") then Target.Ragdoll.Value = true Misc.InsertDisabled(Target, Duration) ragdoll(Target) coroutine.resume(coroutine.create(function() wait(Duration) getup(Target) if Target:FindFirstChild("Ragdoll") then Target.Ragdoll.Value = false end end)) end end
sorry for the giant code block, but I want you guys to see everything so that you can help actually solve the issue, it works fine if the player that called this function doesn't die but otherwise the other player gets stuck ragdolled. This is in a module.