Ragdoll Flings When Character Try To Stand Up

The main problem is that when your character try to stand up he is getting flinged. I want to remove flings fully to make games expirience much better. I already saw tons of posts, i tried to client side the script, i tried to change the owneship of humanoid part to the server. But nothing helped.
Here one video that shows it:

Also there is script of ragdolling:

	nscale = 1

	function makesocket(paren, co, ci, parto, parti, nam)
		local socket = Instance.new("BallSocketConstraint")
	socket.Name = nam
		local a1 = Instance.new("Attachment")
		local a2 = Instance.new("Attachment")
		a1.Parent = parto
		a2.Parent = parti
	socket.Attachment0 = a1
	socket.Attachment1 = a2
		a1.CFrame = co
		a2.CFrame =	ci
	socket.Parent = paren
	socket.LimitsEnabled = true
	socket.TwistLimitsEnabled = true
	end

  function maketouchy(parent, limb, cframe)
    local pr = Instance.new("Part")
    pr.Name = "touchy"
    pr.Size = Vector3.new(1 * nscale, 1 * nscale, 1 * nscale)
    pr.Transparency = 1
	pr.Massless = true
    pr.CustomPhysicalProperties = PhysicalProperties.new(0.55, 0.3, 0.5)
    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

game:GetService("ReplicatedStorage").Knocked.OnServerEvent:Connect(function(player, stando)
	local chr = player.Character
	chr.Disabled.Value = true
	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
	
	  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()
		makesocket(tors, RightShoulderC0, RightShoulderC1, tors, rarm, "Right Shoulder")
        maketouchy(rarm, rarm, CFrame.new(0, 0.5, 0))
      end
      if larm and tors:FindFirstChild("Left Shoulder") then
        tors:FindFirstChild("Left Shoulder"):Destroy()
		makesocket(tors, LeftShoulderC0, LeftShoulderC1, tors, larm, "Left Shoulder")
        maketouchy(larm, larm, CFrame.new(0, 0.5, 0))
      end
      if rleg and tors:FindFirstChild("Right Hip") then
        tors:FindFirstChild("Right Hip"):Destroy()
		makesocket(tors, RightHipC0, RightHipC1, tors, rleg, "Right Hip")
        maketouchy(rleg, rleg, CFrame.new(0, 0.5, 0))
      end
      if lleg and tors:FindFirstChild("Left Hip") then
        tors:FindFirstChild("Left Hip"):Destroy()
		makesocket(tors, LeftHipC0, LeftHipC1, tors, lleg, "Left Hip")
        maketouchy(lleg, lleg, CFrame.new(0, 0.5, 0))
      end
end)

And there is script of getting up:

  nscale = 1

function makesocket(paren, co, ci, parto, parti, nam)
	local socket = Instance.new("BallSocketConstraint")
	socket.Name = nam
	local a1 = Instance.new("Attachment")
	local a2 = Instance.new("Attachment")
	a1.Parent = parto
	a2.Parent = parti
	socket.Attachment0 = a1
	socket.Attachment1 = a2
	a1.CFrame = co
	a2.CFrame =	ci
	socket.Parent = paren
	socket.LimitsEnabled = true
	socket.TwistLimitsEnabled = true
end

function maketouchy(parent, limb, cframe)
	local pr = Instance.new("Part")
	pr.Name = "touchy"
	pr.Size = Vector3.new(1 * nscale, 1 * nscale, 1 * nscale)
	pr.Transparency = 1
	pr.Massless = true
	pr.CustomPhysicalProperties = PhysicalProperties.new(0.55, 0.3, 0.5)
	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, nam)
	local gloo = Instance.new("Motor6D")
	gloo.Name = nam
	gloo.C0 = co
	gloo.C1 = ci
	gloo.Part0 = parto
	gloo.Part1 = parti
	gloo.Parent = paren
end

game:GetService("ReplicatedStorage").GetUp.OnServerEvent:Connect(function(player, stando)
	local chr = player.Character
	chr.Disabled.Value = false
	local human = chr:WaitForChild("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
	human.Jump = 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)

Was very glad if you helped me anyhow!

1 Like

Hey there, I’m over a year late but did you ever end up finding a solution to this?

game:GetService(“ReplicatedStorage”).KnockedStand.OnServerEvent:Connect(function(player)
local chr = player.Character
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 = false
human.AutoRotate = true

local RightShoulderC0 = CFrame.new(0.5 * nscale, 0.5 * nscale, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0)
local RightShoulderC1 = CFrame.new(0.5 * nscale, 0.5 * nscale, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0)
local LeftShoulderC0 = CFrame.new(-0.5 * nscale, 0.5 * nscale, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
local LeftShoulderC1 = CFrame.new(-0.5 * nscale, 0.5 * nscale, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
local RightHipC0 = CFrame.new(1 * nscale, 0, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0)
local RightHipC1 = CFrame.new(1 * nscale, 0, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0)
local LeftHipC0 = CFrame.new(-1 * nscale, 0, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
local LeftHipC1 = CFrame.new(-1 * nscale, 0, 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()
makesocket(tors, RightShoulderC0, RightShoulderC1, tors, rarm, “Right Shoulder”)
maketouchy(rarm, rarm, CFrame.new(0, 0.5, 0))
end
if larm and tors:FindFirstChild(“Left Shoulder”) then
tors:FindFirstChild(“Left Shoulder”):Destroy()
makesocket(tors, LeftShoulderC0, LeftShoulderC1, tors, larm, “Left Shoulder”)
maketouchy(larm, larm, CFrame.new(0, 0.5, 0))
end
if rleg and tors:FindFirstChild(“Right Hip”) then
tors:FindFirstChild(“Right Hip”):Destroy()
makesocket(tors, RightHipC0, RightHipC1, tors, rleg, “Right Hip”)
maketouchy(rleg, rleg, CFrame.new(0, 0.5, 0))
end
if lleg and tors:FindFirstChild(“Left Hip”) then
tors:FindFirstChild(“Left Hip”):Destroy()
makesocket(tors, LeftHipC0, LeftHipC1, tors, lleg, “Left Hip”)
maketouchy(lleg, lleg, CFrame