--// Ragdoll Penis FE V2.0
local model = Instance.new("Model", workspace)
local m = game.Players.LocalPlayer:GetMouse()
local togglerot = false
local down = false
local up = false
m.KeyDown:Connect(
function(key)
if key == "z" then
up = true
end
if key == "x" then
down = true
end
end
)
m.KeyUp:Connect(
function(key)
if key == "z" then
up = false
end
if key == "x" then
down = false
end
end
)
local a = Instance.new("Part", model)
a.Size = Vector3.new(1.1, 2.1, 1.1)
local a2 = Instance.new("Part", model)
a2.Size = Vector3.new(1.1, 2.1, 1.1)
local a3 = Instance.new("Part", model)
a3.Size = Vector3.new(1.1, 2.1, 1.1)
local a4 = Instance.new("Part", model)
a4.Size = Vector3.new(1.1, 2.1, 1.1)
a4.Position = Vector3.new(0, 5, 0)
a.Anchored = true
a.Rotation = Vector3.new(90, 0, 0)
a.Position = Vector3.new(-0.5, 0.5, 0)
a3.Position = Vector3.new(0, 3.15, 0)
a2.Position = Vector3.new(0, 1.3, 0)
a.CanQuery = false
a2.CanQuery = false
a3.CanQuery = false
a4.CanQuery = false
a.Transparency = 0.6
a2.Transparency = 0.6
a3.Transparency = 0.6
a4.Transparency = 0.6
a.Anchored = true
a.CanCollide = false
a2.CanCollide = false
a3.CanCollide = false
a4.CanCollide = false
local function recreateModel()
model:Destroy()
model = Instance.new("Model", workspace)
a = Instance.new("Part", model)
a.Size = Vector3.new(1.1, 2.1, 1.1)
a2 = Instance.new("Part", model)
a2.Size = Vector3.new(1.1, 2.1, 1.1)
a3 = Instance.new("Part", model)
a3.Size = Vector3.new(1.1, 2.1, 1.1)
a4 = Instance.new("Part", model)
a4.Size = Vector3.new(1.1, 2.1, 1.1)
a4.Position = Vector3.new(0, 5, 0)
a.Anchored = true
a.Rotation = Vector3.new(90, 0, 0)
a.Position = Vector3.new(-0.5, 0.5, 0)
a3.Position = Vector3.new(0, 3.15, 0)
a2.Position = Vector3.new(0, 1.3, 0)
a.CanQuery = false
a2.CanQuery = false
a3.CanQuery = false
a4.CanQuery = false
a.Transparency = 0.6
a2.Transparency = 0.6
a3.Transparency = 0.6
a4.Transparency = 0.6
a.Anchored = true
a.CanCollide = false
a2.CanCollide = false
a3.CanCollide = false
a4.CanCollide = false
spawn(
function()
local last = nil
for i, v in pairs(model:GetChildren()) do
if last == nil then
last = v
else
local a = Instance.new("WeldConstraint", model)
a.Part0 = last
a.Part1 = v
last = v
end
end
end
)
model:MoveTo(game.Players.LocalPlayer.Character.HumanoidRootPart.Position)
end
game.Players.LocalPlayer.CharacterAdded:Connect(function(character)
character:WaitForChild("Humanoid").Died:Connect(function()
task.wait()
recreateModel()
end)
end)
spawn(
function()
local last = nil
for i, v in pairs(model:GetChildren()) do
if last == nil then
last = v
else
local a = Instance.new("WeldConstraint", model)
a.Part0 = last
a.Part1 = v
last = v
end
end
end
)
local cameraLoop
spawn(
function()
cameraLoop = true
while cameraLoop do
task.wait()
workspace.CurrentCamera.CameraSubject = model
end
end
)
model:MoveTo(game.Players.LocalPlayer.Character.HumanoidRootPart.Position)
local movementLoop
spawn(
function()
movementLoop = true
while movementLoop do
task.wait()
if not togglerot then
model:PivotTo(model.WorldPivot + game.Players.LocalPlayer.Character.Humanoid.MoveDirection / 3)
a.CFrame =
CFrame.new(
a.Position,
a.Position +
Vector3.new(
workspace.CurrentCamera.CFrame.LookVector.X,
a.Position,
workspace.CurrentCamera.CFrame.LookVector.Z
)
) * CFrame.Angles(0, 0, math.rad(90))
end
if up then
model:PivotTo(model.WorldPivot + Vector3.new(0, 0.2, 0))
end
if down then
model:PivotTo(model.WorldPivot + Vector3.new(0, -0.2, 0))
end
end
end
)
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "ControlGUI"
screenGui.Parent = game:GetService("CoreGui")
local frame = Instance.new("Frame")
frame.Size = UDim2.new(0, 150, 0, 50)
frame.Position = UDim2.new(0.8, -75, 0.1, 0)
frame.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
frame.BackgroundTransparency = 0.3
frame.Parent = screenGui
local UICorner = Instance.new("UICorner")
UICorner.CornerRadius = UDim.new(0, 8)
UICorner.Parent = frame
local toggleBtn = Instance.new("TextButton")
toggleBtn.Size = UDim2.new(0.9, 0, 0.8, 0)
toggleBtn.Position = UDim2.new(0.05, 0, 0.1, 0)
toggleBtn.BackgroundColor3 = Color3.fromRGB(20, 80, 20)
toggleBtn.Text = "ON"
toggleBtn.TextColor3 = Color3.new(1, 1, 1)
toggleBtn.Parent = frame
local btnCorner = Instance.new("UICorner")
btnCorner.CornerRadius = UDim.new(0, 6)
btnCorner.Parent = toggleBtn
local originalPositions = {}
local character = game.Players.LocalPlayer.Character
local function saveOriginalPositions()
for _, part in pairs(character:GetDescendants()) do
if part:IsA("BasePart") then
originalPositions[part] = {
CFrame = part.CFrame,
Velocity = part.Velocity,
AssemblyLinearVelocity = part.AssemblyLinearVelocity,
AssemblyAngularVelocity = part.AssemblyAngularVelocity
}
end
end
end
saveOriginalPositions()
local function restoreOriginalPositions()
for part, data in pairs(originalPositions) do
if part and part.Parent then
part.CFrame = data.CFrame
part.Velocity = data.Velocity
part.AssemblyLinearVelocity = data.AssemblyLinearVelocity
part.AssemblyAngularVelocity = data.AssemblyAngularVelocity
end
end
end
local function toggleScript()
if toggleBtn.Text == "ON" then
toggleBtn.Text = "OFF"
toggleBtn.BackgroundColor3 = Color3.fromRGB(80, 20, 20)
cameraLoop = false
movementLoop = false
restoreOriginalPositions()
local speaker = game.Players.LocalPlayer
workspace.CurrentCamera:remove()
task.wait(.1)
repeat task.wait() until speaker.Character ~= nil
workspace.CurrentCamera.CameraSubject = speaker.Character:FindFirstChildWhichIsA('Humanoid')
workspace.CurrentCamera.CameraType = "Custom"
speaker.CameraMinZoomDistance = 0.5
speaker.CameraMaxZoomDistance = 400
speaker.CameraMode = "Classic"
speaker.Character.Head.Anchored = false
else
toggleBtn.Text = "ON"
toggleBtn.BackgroundColor3 = Color3.fromRGB(20, 80, 20)
saveOriginalPositions()
spawn(function()
cameraLoop = true
while cameraLoop do
task.wait()
workspace.CurrentCamera.CameraSubject = model
end
end)
spawn(function()
movementLoop = true
while movementLoop do
task.wait()
if not togglerot then
model:PivotTo(model.WorldPivot + game.Players.LocalPlayer.Character.Humanoid.MoveDirection / 3)
a.CFrame =
CFrame.new(
a.Position,
a.Position +
Vector3.new(
workspace.CurrentCamera.CFrame.LookVector.X,
a.Position,
workspace.CurrentCamera.CFrame.LookVector.Z
)
) * CFrame.Angles(0, 0, math.rad(90))
end
if up then
model:PivotTo(model.WorldPivot + Vector3.new(0, 0.2, 0))
end
if down then
model:PivotTo(model.WorldPivot + Vector3.new(0, -0.2, 0))
end
end
end)
end
end
toggleBtn.MouseButton1Click:Connect(toggleScript)
local function connectBodyParts()
for i, v in pairs(game.Players.LocalPlayer.Character:GetDescendants()) do
if v.Name == "Left Leg" then
game:GetService("RunService").PostSimulation:Connect(
function()
if toggleBtn.Text == "OFF" then return end
v.CFrame = a.CFrame -- Чётко к позиции части "a"
v.Velocity = Vector3.new(0, 4, 0)
v.AssemblyLinearVelocity = Vector3.new(0, 4, 0)
v.AssemblyAngularVelocity = Vector3.new(5, 0, 0)
end
)
elseif v.Name == "Right Leg" then
game:GetService("RunService").PostSimulation:Connect(
function()
if toggleBtn.Text == "OFF" then return end
v.CFrame = a2.CFrame * CFrame.Angles(math.rad(180), 0, 0) -- Чётко к "a2" + поворот
v.Velocity = Vector3.new(0, 4, 0)
v.AssemblyLinearVelocity = Vector3.new(0, 4, 0)
v.AssemblyAngularVelocity = Vector3.new(5, 0, 0)
end
)
elseif v.Name == "Right Arm" then
game:GetService("RunService").PostSimulation:Connect(
function()
if toggleBtn.Text == "OFF" then return end
v.CFrame = a4.CFrame * CFrame.Angles(math.rad(180), math.rad(-90), 0) -- Чётко к "a4" + поворот
v.Velocity = Vector3.new(0, 4, 0)
v.AssemblyLinearVelocity = Vector3.new(0, 4, 0)
v.AssemblyAngularVelocity = Vector3.new(5, 0, 0)
end
)
elseif v.Name == "Left Arm" then
game:GetService("RunService").PostSimulation:Connect(
function()
if toggleBtn.Text == "OFF" then return end
v.CFrame = a3.CFrame -- Чётко к позиции части "a3"
v.Velocity = Vector3.new(0, 4, 0)
v.AssemblyLinearVelocity = Vector3.new(0, 4, 0)
v.AssemblyAngularVelocity = Vector3.new(5, 0, 0)
end
)
elseif v:IsA("BasePart") and (v.Name ~= "Left Leg" or v.Name ~= "Right Leg") then
game:GetService("RunService").PostSimulation:Connect(
function()
if toggleBtn.Text == "OFF" then
return
end
v.CFrame = CFrame.new(model.WorldPivot.Position + Vector3.new(0, 600, 0))
v.Velocity = Vector3.new(0, 0, 0)
v.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
v.AssemblyAngularVelocity = Vector3.new(0, 0, 0)
end
)
end
end
end
connectBodyParts()
game.Players.LocalPlayer.CharacterAdded:Connect(function(character)
connectBodyParts()
end)