R6 compatibility code :
local RagdollModule = {}
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local PhysicsService = game:GetService("PhysicsService")
local Events = ReplicatedStorage:WaitForChild("Events")
local RemoteEvent = Events.Ragdoll
local Table = {"Left Shoulder","Right Shoulder","Left Hip","Right Hip","Neck"}
function RagdollModule:Ragdoll(Character : Model, bool : boolean)
local Humanoid : Humanoid = Character.Humanoid
local Player = Players:GetPlayerFromCharacter(Character)
if Character.Humanoid.Health > 0 and (Character:FindFirstChild("Torso") and not Character.Torso.Neck.Enabled) and bool == false then
if Player then
RemoteEvent:FireClient(Player,false)
else
Character.Animate.Disabled = false
Humanoid:SetStateEnabled(Enum.HumanoidStateType.GettingUp,true)
Humanoid:ChangeState(Enum.HumanoidStateType.GettingUp)
end
for _,v : Instance in ipairs(Character:GetDescendants()) do
if v:IsA("Motor6D") then
v.Enabled = true
elseif v:IsA("BallSocketConstraint") then
v.Enabled = false
end
end
else
if Player then
RemoteEvent:FireClient(Player,true)
else
Humanoid:SetStateEnabled(Enum.HumanoidStateType.GettingUp,false)
Humanoid:ChangeState(Enum.HumanoidStateType.Ragdoll)
for _,v in ipairs(Humanoid.Animator:GetPlayingAnimationTracks())do
v:Stop(0)
end
Character.Animate.Disabled = true
end
for _,v : Instance in ipairs(Character:GetDescendants()) do
if v:IsA("Motor6D") and RagdollModule:Check(v.Name)then
v.Enabled = false
elseif v:IsA("BallSocketConstraint") then
v.Enabled = true
end
end
end
return
end
function RagdollModule:Check(Name : string)
if table.find(Table,Name) then
return true
else
return false
end
end
function RagdollModule:Joints(Character : Model)
local Humanoid : Humanoid = Character.Humanoid
Humanoid.BreakJointsOnDeath = false
Humanoid.RequiresNeck = false
for _,v : Instance in ipairs(Character:GetDescendants()) do
if v:IsA("Motor6D") and RagdollModule:Check(v.Name) then
local BallSocketConstraint = Instance.new("BallSocketConstraint")
local Attachment0 = Instance.new("Attachment")
local Attachment1 = Instance.new("Attachment")
Attachment0.CFrame = v.c0
Attachment1.CFrame = v.C1
Attachment0.Parent = v.Part0
Attachment1.Parent = v.Part1
BallSocketConstraint.Attachment0 = Attachment0
BallSocketConstraint.Attachment1 = Attachment1
BallSocketConstraint.LimitsEnabled = true
BallSocketConstraint.TwistLimitsEnabled = true
BallSocketConstraint.Enabled = false
BallSocketConstraint.Parent = v.Parent
elseif v:IsA("BasePart") then
v.CollisionGroup = "RagdollA"
if v.Name == "HumanoidRootPart" then
v.CollisionGroup = "RagdollB"
elseif v.Name == "Head"then
v.CanCollide = true
end
end
end
end
return RagdollModule