I would’ve created this in engine bugs if I were a regular, because I’ve never seen this happen before.
Let me explain.
I have a R6 ragdoll system in my game, and I’ve tried everything, even network ownership.
Whenever the player stands still, nothing happens. But, whenever I go in first person and slightly rotate my camera, it then fires.
Here’s my script (it’s in ServerScriptService)
local plrs = game:GetService("Players") plrs.PlayerAdded:Connect(function(plr) plr.CharacterAdded:Connect(function(char) local hum = char:WaitForChild("Humanoid") local hrp = char:WaitForChild("HumanoidRootPart") local head = char:WaitForChild("Head") hum.BreakJointsOnDeath = false hum.Died:Connect(function() local chance = math.random(3) local vector = (chance == 1 and Vector3.new(1, 0, 0)) or (chance == 2 and Vector3.new(0, 0, 1)) or (chance == 3 and Vector3.new(1, 0, 1)) hrp:ApplyImpulse(vector * math.random(100, 150)) for _, joint in pairs(char:GetDescendants()) do if joint:IsA("Motor6D") then local a1 = Instance.new("Attachment") local a2 = Instance.new("Attachment") a1.CFrame = joint.C0 a2.CFrame = joint.C1 a1.Parent = joint.Part0 a2.Parent = joint.Part1 local socket = Instance.new("BallSocketConstraint") socket.Attachment0 = a1 socket.Attachment1 = a2 socket.Parent = joint.Parent joint:Destroy() end end hrp.CanCollide = false head.CanCollide = true end) end) end) I’ve also tried a ragdoll script from anotther game (this is in StarterCharacterScripts):
local char = script.Parent local hum = char:WaitForChild("Humanoid") local torso = char:WaitForChild("Torso") hum.BreakJointsOnDeath = false hum.Died:Connect(function() for _, obj in pairs(char:GetDescendants()) do if obj:IsA("Motor6D") then local socket = Instance.new("BallSocketConstraint", obj.Parent) local att0 = Instance.new("Attachment", obj.Part0) local att1 = Instance.new("Attachment", obj.Part1) if att0 and att1 then att0.CFrame = obj.C0 att1.CFrame = obj.C1 socket.Attachment0 = att0 socket.Attachment1 = att1 socket.LimitsEnabled = true socket.TwistLimitsEnabled = true obj:Destroy() end end end torso:ApplyImpulse(Vector3.new( (math.random(1, 2) == 1 and -100) or 100, 0, (math.random(1, 2) == 1 and -100) or 100 )) end)