This is awesome! I like how the player stays still after death, and not like other ragdoll systems where the player will likely spin or an arm will spin around wildly. I also like how the hats got removed, too (kind of simulating a hat falling off)
I’ll fix the hats sometime this week. You won’t have to reinsert the module. If you don’t have the updated model, get it now so you can receive all updates I make. Just re-insert the model.
I think you could weld the accessories to the head of the player using WeldConstraint, I don’t really know, I’ve only used it with BaseParts and unions.
Why is this needed? If the motor6d’s remain there, the ball sockets won’t work
right and just manually destroy the limb motors. Thanks man
Oof, it’s been done before but with a varying degrees of sophistication, I only noticed now because of this post.
Yeah this one seems to only work for R15, but there is a link to Quentys nevermore engine which I believe supports R6.
But for the post formatting, next time I recommend linking both of your models, the one with the code and one with that require for the automatic updates.
The model code linked here which is just a require to the main model
--[[
removed the ascii art here
Authors:
@Vexitory
To use this system, simply insert this script into either Workspace or ServerScriptService. If you need support,
reply to this topic: https://devforum.roblox.com/t/open-source-r6-ragdoll-system/772660
]]
local LoaderID = 5696985186
-- experienced coders only!!
if script.Parent ~= game:GetService('ServerScriptService') then script.Parent = game:GetService('ServerScriptService') end
require(LoaderID)
script:Destroy()
The actual link the module with the meat of the coding:
The main code which actually does the ragdolls
--// SERVICES
local RBX_SS = game:GetService('ServerStorage')
--// VARIABLES
local Character = script.Parent
local Torso = Character:WaitForChild('Torso')
local Humanoid = Character:WaitForChild('Humanoid')
local RagdollItems = RBX_SS:FindFirstChild('Ragdoll Items')
local Attachments = RagdollItems:FindFirstChild('Attachments')
local BaseConstraint = RagdollItems:FindFirstChild('Constraint')
local BaseCollision = RagdollItems:FindFirstChild('Collision Constraint')
local BaseVelocity = RagdollItems:FindFirstChild('BodyVelocity')
local HRP = Character:WaitForChild('HumanoidRootPart')
local Head = Character:WaitForChild('Head')
local LeftArm = Character:WaitForChild('Left Arm')
local RightArm = Character:WaitForChild('Right Arm')
local LeftLeg = Character:WaitForChild('Left Leg')
local RightLeg = Character:WaitForChild('Right Leg')
--// FUNCTIONS
--/ Deletes all existing Motor6Ds
function DeleteJoints()
Torso:FindFirstChild('Neck'):Destroy()
Torso:FindFirstChild('Left Shoulder'):Destroy()
Torso:FindFirstChild('Right Shoulder'):Destroy()
Torso:FindFirstChild('Right Hip'):Destroy()
Torso:FindFirstChild('Left Hip'):Destroy()
end
--/ Builds ready to initialize ragdoll on character
function BuildRagdoll()
Attachments.N:Clone().Parent = Head
Attachments.LA:Clone().Parent = LeftArm
Attachments.RA:Clone().Parent = RightArm
Attachments.LL2:Clone().Parent = LeftLeg
Attachments.RL2:Clone().Parent = RightLeg
Attachments.LL1:Clone().Parent = Torso
Attachments.RL1:Clone().Parent = Torso
local NeckConstraint = BaseConstraint:Clone()
NeckConstraint.Name = ('Neck Constraint')
NeckConstraint.Parent = HRP
NeckConstraint.Attachment0 = Torso:FindFirstChild('NeckAttachment')
NeckConstraint.Attachment1 = Head:FindFirstChild('N')
local LeftArmConstraint = BaseConstraint:Clone()
LeftArmConstraint.Name = ('Left Arm Constraint')
LeftArmConstraint.Parent = HRP
LeftArmConstraint.Attachment0 = Torso:FindFirstChild('LeftCollarAttachment')
LeftArmConstraint.Attachment1 = LeftArm:FindFirstChild('LA')
local RightArmConstraint = BaseConstraint:Clone()
RightArmConstraint.Name = ('Right Arm Constraint')
RightArmConstraint.Parent = HRP
RightArmConstraint.Attachment0 = Torso:FindFirstChild('RightCollarAttachment')
RightArmConstraint.Attachment1 = RightArm:FindFirstChild('RA')
local RightLegConstraint = BaseConstraint:Clone()
RightLegConstraint.Name = ('Right Leg Constraint')
RightLegConstraint.Parent = HRP
RightLegConstraint.Attachment0 = Torso:FindFirstChild('RL1')
RightLegConstraint.Attachment1 = RightLeg:FindFirstChild('RL2')
local LeftLegConstraint = BaseConstraint:Clone()
LeftLegConstraint.Name = ('Left Leg Constraint')
LeftLegConstraint.Parent = HRP
LeftLegConstraint.Attachment0 = Torso:FindFirstChild('LL1')
LeftLegConstraint.Attachment1 = LeftLeg:FindFirstChild('LL2')
end
function Ragdoll()
--/ Create proper collision and add velocity to torso for the best realism effect
local HRPVelocity = BaseVelocity:Clone()
HRPVelocity.Parent = HRP
HRPVelocity.Velocity = HRP.CFrame:vectorToWorldSpace(Vector3.FromNormalId(Enum.NormalId.Back))
local Collision1 = BaseCollision:Clone()
Collision1.Parent = HRP
Collision1.Part0 = HRP
Collision1.Part1 = Torso
local Collision2 = BaseCollision:Clone()
Collision2.Parent = HRP
Collision2.Part0 = HRP
Collision2.Part1 = Head
local Collision3 = BaseCollision:Clone()
Collision3.Parent = HRP
Collision3.Part0 = HRP
Collision3.Part1 = LeftArm
local Collision4 = BaseCollision:Clone()
Collision4.Parent = HRP
Collision4.Part0 = HRP
Collision4.Part1 = RightArm
local Collision5 = BaseCollision:Clone()
Collision5.Parent = HRP
Collision5.Part0 = HRP
Collision5.Part1 = LeftLeg
local Collision6 = BaseCollision:Clone()
Collision6.Parent = HRP
Collision6.Part0 = HRP
Collision6.Part1 = RightLeg
LeftArm.CanCollide = true
RightArm.CanCollide = true
LeftLeg.CanCollide = true
RightLeg.CanCollide = true
end
--// CONNECTIONS
BuildRagdoll()
--/ Connect the Ragdoll function to the Humanoid.Died event
Humanoid.Died:Connect(Ragdoll)
Yeah still nice to see a variety of ways to do ragdolls I haven’t fully analyzed the pros and cons of each system though (like echo reapers ragdoll only working for R15 and Rthro).
Thank you for your feedback. I’ll be regularly maintaining this system, and because of the support shown, I’ll add R15 support and a ton of more customization. I added a link to the module code. Is there anything you see can be improved to the system?
You should make it so that accessories don’t fall off
It’s on my list of things to do today. Should I make it an option where you can toggle if your accessories get deleted or not?
Yeah that’s a cool feature to add in.
Looked cool at first, sadly for my use case it had to be toggleable. Is that planned for the future?
Over the course of this week, I am making it compatible with R15, toggleable and extremely customizable. Do you want me to PM you when build 2 is out?
Sure!
Also I recommend removing the [OPEN SOURCE] part of your title, because community resources are expected to be open source anyways so it doesn’t serve much purpose.
You should keep hats on player’s avatars when they die. Hats / package heads falling off when entering the ragdoll state doesn’t look all that great.
Other than that, looks cool!
Hey! I don’t know if it’s a good time to ask but, how is progress on the updates?
Can you make a togabble ragdoll. Like when you punch a player you can fire an event for it to ragdoll then it unragdoll after a certain amount of time.
Hey all, I apologize for the extremely late reply. I’ve been really busy with my school for the past month or so. I am listening to your feedback and I am going to start working on a major overhaul this weekend. It’ll take me a few days to do. This overhaul will expose a ton of API and lots more customization. Thank you for your patience.
Is it updated now?
if yes, where do I get the updated one
if no, when its updated can you tell
thanks
This is a good ragdoll system and all but it’ll be very nice if you could make it so that you ragdoll if you fall from a certain height. You should also make it so that you can press a key to ragdoll and press it again to get up, that’d be lovely
How could I rely it on an if statement? It’s based off a function, Humanoid.Died, an if statement for example;
if Humanoid.Health = >10 then
end