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!