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

If the player that called this dies the person will get stuck ragdolled. why?

Asked by 2 years ago
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.

0
I think the getup function just never gets called but idk why please help. I have pinpointed the issue but i dont know why ILoveMemes9005 16 — 2y

Answer this question