Skip to content
RoRoScripts
RAGDOLL ENGINE preview
UnknownUniversal

RAGDOLL ENGINE

Script
Views
311
Likes
1
Dislikes
0
Added
Script
-- ONE SCRIPT: MOVABLE REALISTIC RAGDOLL GUI
-- Client-side ragdoll attempt

local Players = game:GetService("Players")
local UIS = game:GetService("UserInputService")

local player = Players.LocalPlayer
local ragdolled = false
local saved = {}

local gui = Instance.new("ScreenGui")
gui.Name = "RagdollGUI"
gui.ResetOnSpawn = false
gui.Parent = game:GetService("CoreGui")

local bar = Instance.new("Frame")
bar.Size = UDim2.fromOffset(220, 115)
bar.Position = UDim2.new(0.5, -110, 0.5, -57)
bar.BackgroundColor3 = Color3.fromRGB(30, 30, 40)
bar.Active = true
bar.Parent = gui

Instance.new("UICorner", bar).CornerRadius =
    UDim.new(0, 12)

local title = Instance.new("TextButton")
title.Size = UDim2.new(1, 0, 0, 35)
title.BackgroundColor3 = Color3.fromRGB(60, 60, 80)
title.Text = "DRAG HERE"
title.TextColor3 = Color3.new(1, 1, 1)
title.Parent = bar

local button = Instance.new("TextButton")
button.Size = UDim2.new(1, -20, 0, 55)
button.Position = UDim2.new(0, 10, 0, 48)
button.BackgroundColor3 = Color3.fromRGB(210, 55, 55)
button.Text = "RAGDOLL"
button.TextColor3 = Color3.new(1, 1, 1)
button.TextSize = 18
button.Parent = bar

Instance.new("UICorner", button).CornerRadius =
    UDim.new(0, 8)

-- Drag the bar with mouse or touch
local dragging = false
local dragStart, startPos

title.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1
        or input.UserInputType == Enum.UserInputType.Touch then
        dragging = true
        dragStart = input.Position
        startPos = bar.Position
    end
end)

UIS.InputChanged:Connect(function(input)
    if dragging and (
        input.UserInputType == Enum.UserInputType.MouseMovement
        or input.UserInputType == Enum.UserInputType.Touch
    ) then
        local delta = input.Position - dragStart
        bar.Position = UDim2.new(
            startPos.X.Scale, startPos.X.Offset + delta.X,
            startPos.Y.Scale, startPos.Y.Offset + delta.Y
        )
    end
end)

UIS.InputEnded:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1
        or input.UserInputType == Enum.UserInputType.Touch then
        dragging = false
    end
end)

local function setRagdoll(enable)
    local char = player.Character
    if not char then return end

    local hum = char:FindFirstChildOfClass("Humanoid")
    if not hum then return end

    if enable then
        saved = {}

        hum.RequiresNeck = false
        hum.AutoRotate = false
        hum.PlatformStand = true

        for _, motor in ipairs(char:GetDescendants()) do
            if motor:IsA("Motor6D")
                and motor.Name ~= "RootJoint"
                and motor.Part0 and motor.Part1 then

                local a0 = Instance.new("Attachment")
                a0.CFrame = motor.C0
                a0.Parent = motor.Part0

                local a1 = Instance.new("Attachment")
                a1.CFrame = motor.C1
                a1.Parent = motor.Part1

                local socket = Instance.new("BallSocketConstraint")
                socket.Attachment0 = a0
                socket.Attachment1 = a1
                socket.LimitsEnabled = true
                socket.UpperAngle = 50
                socket.Parent = motor.Part0

                table.insert(saved, {
                    motor = motor,
                    a0 = a0,
                    a1 = a1,
                    socket = socket
                })

                motor.Enabled = false
            end
        end

        hum:ChangeState(Enum.HumanoidStateType.Physics)
    else
        for _, item in ipairs(saved) do
            if item.motor and item.motor.Parent then
                item.motor.Enabled = true
            end
            item.socket:Destroy()
            item.a0:Destroy()
            item.a1:Destroy()
        end

        saved = {}
        hum.PlatformStand = false
        hum.AutoRotate = true
        hum:ChangeState(Enum.HumanoidStateType.GettingUp)
    end
end

button.Activated:Connect(function()
    ragdolled = not ragdolled
    setRagdoll(ragdolled)

    button.Text = ragdolled and "STAND UP" or "RAGDOLL"
    button.BackgroundColor3 = ragdolled
        and Color3.fromRGB(50, 170, 90)
        or Color3.fromRGB(210, 55, 55)
end)

player.CharacterAdded:Connect(function()
    ragdolled = false
    saved = {}
    button.Text = "RAGDOLL"
    button.BackgroundColor3 = Color3.fromRGB(210, 55, 55)
end)

Features

  • Ragdoll Feature
RAGDOLL ENGINE · RoScripts