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

Ragdoll script removes legs to arms from character?

Asked by 5 years ago

Hello. I have a faulty ragdoll script that doesn't return any errors, but does not do what it's intended to do. Every time I activate it, it always seems to remove the player's arms and legs instead, and I have no idea on why this is happening. I am using ball socket constraints. This ragdoll script is for R6, and all of the ball socket constraints are enabled at all times btw.

local function returnMotor(joint, part, motors)
    if motors:FindFirstChild(joint) then
        motors[joint].Parent = part
    end
end

script.Ragdoll.Event:Connect(function(bool)
    if tick() - LAST_RAG < 2 then
        return
    end
    LAST_RAG = tick()

    local torso = character:WaitForChild("Torso")
    local motors = ReplicatedStorage.Motors:FindFirstChild(player.Name, true)

    if bool then
        if knocked then
            return
        end

        dis = create("Disable", nil, character)

        humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
        humanoid:SetStateEnabled(Enum.HumanoidStateType.GettingUp, false)

        humanoid:ChangeState(Enum.HumanoidStateType.Physics)
        root.CanCollide = false
        root.Massless = true

        for _, bodyPart in pairs(character:GetChildren()) do
            if bodyPart:IsA("BasePart") then
                for _, motor in pairs(bodyPart:GetChildren()) do
                    if motor:IsA("Motor6D") and motor.Name ~= "Neck" then
                        motor.Parent = motors
                    end
                end
            end
        end

        humanoid.PlatformStand = true

        root.OOF:Play()
        root.OOF.TimePosition = .5

        humanoid.AutoRotate = false
        humanoid:UnequipTools()

        con2 = character.ChildAdded:Connect(function(child)
            if child:IsA("Tool") then
                humanoid:UnequipTools()
            end
        end)

        knocked = true
    elseif not bool then
        if not knocked then
            return
        end

        if con2 then
            con2:Disconnect()
        end

        if dis then
            dis:Destroy()
        end

        humanoid.PlatformStand = false
        humanoid.Jump = true
        humanoid.AutoRotate = true
        humanoid:ChangeState(Enum.HumanoidStateType.GettingUp)

        root.CanCollide = true
        root.Massless = false

        local rightArm = character["Right Arm"]
        local leftArm = character["Left Arm"]
        local rightLeg = character["Right Leg"]
        local leftLeg = character["Left Leg"]

        returnMotor("RootJoint", root, motors)
        returnMotor("Left Shoulder", leftArm, motors)
        returnMotor("Right Shoulder", rightArm, motors)
        returnMotor("Left Hip", leftLeg, motors)
        returnMotor("Right Hip", rightLeg, motors)

        knocked = false
    end
end)

Answer this question