
KeylessUniversal

--// Reality Bender GUI
--// Put this LocalScript in StarterPlayerScripts or StarterGui
--// Local visual effect GUI
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local player = Players.LocalPlayer
local rng = Random.new()
--========================
-- EDIT HERE
--========================
local guiTitle = "Reality Bender"
local mainButtonText = "BEND!"
local smallButtonText = "Open"
local bendSpeed = 4
local bendStrength = 0.25
local bendRange = 80
local defaultAxis = "Y" -- Y, X, Z
--========================
local axisList = {"Y", "X", "Z"}
local axisIndex = 1
for i, v in ipairs(axisList) do
if v == defaultAxis then
axisIndex = i
break
end
end
local bendOn = false
local chaosOn = false
local maxChaosOn = false
local bendToken = 0
local chaosToken = 0
local originalState = {} -- [part] = {CFrame=, Size=, Color=, Material=, Transparency=}
local affectedParts = {}
local materialList = {
Enum.Material.Plastic,
Enum.Material.SmoothPlastic,
Enum.Material.Neon,
Enum.Material.Wood,
Enum.Material.WoodPlanks,
Enum.Material.Glass,
Enum.Material.Concrete,
Enum.Material.Granite,
Enum.Material.Slate,
Enum.Material.Metal,
Enum.Material.CorrodedMetal,
Enum.Material.DiamondPlate,
Enum.Material.Foil,
Enum.Material.Ice,
Enum.Material.Fabric,
Enum.Material.Grass,
Enum.Material.Pebble,
Enum.Material.ForceField,
}
local character = player.Character or player.CharacterAdded:Wait()
local humanoidRootPart = character:WaitForChild("HumanoidRootPart")
local function updateCharacter()
character = player.Character or player.CharacterAdded:Wait()
humanoidRootPart = character:WaitForChild("HumanoidRootPart")
end
player.CharacterAdded:Connect(function()
task.wait(1)
updateCharacter()
end)
local function trimText(s)
return (tostring(s or ""):gsub("^%s+", ""):gsub("%s+$", ""))
end
local function parseNumber(text, fallback, minValue, maxValue)
local n = tonumber(trimText(text))
if not n then
return fallback
end
if minValue then
n = math.max(minValue, n)
end
if maxValue then
n = math.min(maxValue, n)
end
return n
end
local function getAxisCFrame(axis, amount)
if axis == "X" then
return CFrame.Angles(amount, 0, 0)
elseif axis == "Z" then
return CFrame.Angles(0, 0, amount)
else
return CFrame.Angles(0, amount, 0)
end
end
local function getAllParts()
local parts = {}
for _, obj in ipairs(workspace:GetDescendants()) do
if obj:IsA("BasePart") then
parts[#parts + 1] = obj
end
end
return parts
end
local function saveOriginal(part)
if originalState[part] or not part or not part.Parent then
return
end
originalState[part] = {
CFrame = part.CFrame,
Size = part.Size,
Color = part.Color,
Material = part.Material,
Transparency = part.Transparency,
}
end
local function restorePart(part)
local old = originalState[part]
if not old or not part or not part.Parent then
return
end
part.CFrame = old.CFrame
part.Size = old.Size
part.Color = old.Color
part.Material = old.Material
part.Transparency = old.Transparency
originalState[part] = nil
end
local function restoreAll()
bendOn = false
chaosOn = false
maxChaosOn = false
bendToken += 1
chaosToken += 1
for part, _ in pairs(originalState) do
restorePart(part)
end
table.clear(affectedParts)
end
local function getPartsInRange(centerPos, range)
local list = {}
for _, part in ipairs(getAllParts()) do
if part.Parent and (part.Position - centerPos).Magnitude <= range then
list[#list + 1] = part
end
end
return list
end
local function applyBendStep()
if chaosOn or maxChaosOn then
return
end
if not humanoidRootPart or not humanoidRootPart.Parent then
return
end
local parts = getPartsInRange(humanoidRootPart.Position, bendRange)
local t = os.clock()
local speed = math.max(bendSpeed, 0.1)
local strength = math.max(bendStrength, 0)
for _, part in ipairs(parts) do
if part:IsDescendantOf(player.Character) then
continue
end
saveOriginal(part)
local old = originalState[part]
if old then
local wave = math.sin((t * speed) + (part.Position.X * 0.07) + (part.Position.Z * 0.07))
local spin = wave * strength * 2
local bendOffset = Vector3.new(
math.sin(t * speed + part.Position.Y) * strength,
math.cos(t * speed + part.Position.X) * strength,
math.sin(t * speed + part.Position.Z) * strength
)
local axis = axisList[axisIndex]
local newCFrame = old.CFrame
* CFrame.new(bendOffset)
* getAxisCFrame(axis, spin)
part.CFrame = newCFrame
part.Size = old.Size * (1 + (wave * strength * 0.35))
part.Color = old.Color
part.Material = old.Material
end
end
end
local function applyChaosStep(multiplier)
if not humanoidRootPart or not humanoidRootPart.Parent then
return
end
local parts = getPartsInRange(humanoidRootPart.Position, bendRange * multiplier)
local t = os.clock()
local speed = math.max(bendSpeed * multiplier, 0.1)
local strength = math.max(bendStrength * multiplier, 0)
for _, part in ipairs(parts) do
if part:IsDescendantOf(player.Character) then
continue
end
saveOriginal(part)
local old = originalState[part]
if old then
local wave = math.sin((t * speed) + (part.Position.X * 0.11) + (part.Position.Z * 0.11))
local spin = rng:NextNumber(-1, 1) * strength * 6 * multiplier
local chaosOffset = Vector3.new(
rng:NextNumber(-strength, strength),
rng:NextNumber(-strength, strength),
rng:NextNumber(-strength, strength)
)
part.CFrame = old.CFrame
* CFrame.new(chaosOffset)
* getAxisCFrame(axisList[axisIndex], spin)
part.Size = old.Size * (1 + (wave * strength * 0.45))
part.Color = Color3.fromRGB(
rng:NextInteger(0, 255),
rng:NextInteger(0, 255),
rng:NextInteger(0, 255)
)
part.Material = materialList[rng:NextInteger(1, #materialList)]
end
end
end
-- GUI
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "RealityBenderGui"
screenGui.ResetOnSpawn = false
screenGui.IgnoreGuiInset = true
screenGui.Parent = player:WaitForChild("PlayerGui")
local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 300, 0, 330)
mainFrame.Position = UDim2.new(0.5, -150, 0.5, -165)
mainFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
mainFrame.BorderSizePixel = 0
mainFrame.Active = true
mainFrame.ClipsDescendants = true
mainFrame.Parent = screenGui
local mainCorner = Instance.new("UICorner")
mainCorner.CornerRadius = UDim.new(0, 12)
mainCorner.Parent = mainFrame
local titleBar = Instance.new("TextLabel")
titleBar.Size = UDim2.new(1, 0, 0, 34)
titleBar.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
titleBar.BorderSizePixel = 0
titleBar.Text = guiTitle
titleBar.TextColor3 = Color3.fromRGB(255, 255, 255)
titleBar.TextScaled = true
titleBar.Font = Enum.Font.GothamBold
titleBar.Active = true
titleBar.Parent = mainFrame
local titleCorner = Instance.new("UICorner")
titleCorner.CornerRadius = UDim.new(0, 12)
titleCorner.Parent = titleBar
local hideButton = Instance.new("TextButton")
hideButton.Size = UDim2.new(0, 60, 0, 24)
hideButton.Position = UDim2.new(1, -65, 0, 5)
hideButton.BackgroundColor3 = Color3.fromRGB(70, 70, 70)
hideButton.Text = "Hide"
hideButton.TextColor3 = Color3.fromRGB(255, 255, 255)
hideButton.TextScaled = true
hideButton.Font = Enum.Font.Gotham
hideButton.BorderSizePixel = 0
hideButton.Parent = mainFrame
local hideCorner = Instance.new("UICorner")
hideCorner.CornerRadius = UDim.new(0, 8)
hideCorner.Parent = hideButton
local closeButton = Instance.new("TextButton")
closeButton.Size = UDim2.new(0, 24, 0, 24)
closeButton.Position = UDim2.new(1, -30, 0, 5)
closeButton.BackgroundColor3 = Color3.fromRGB(170, 50, 50)
closeButton.Text = "X"
closeButton.TextColor3 = Color3.fromRGB(255, 255, 255)
closeButton.TextScaled = true
closeButton.Font = Enum.Font.GothamBold
closeButton.BorderSizePixel = 0
closeButton.Parent = mainFrame
local closeCorner = Instance.new("UICorner")
closeCorner.CornerRadius = UDim.new(0, 8)
closeCorner.Parent = closeButton
local scrollFrame = Instance.new("ScrollingFrame")
scrollFrame.Size = UDim2.new(1, 0, 1, -34)
scrollFrame.Position = UDim2.new(0, 0, 0, 34)
scrollFrame.BackgroundTransparency = 1
scrollFrame.BorderSizePixel = 0
scrollFrame.ScrollBarThickness = 5
scrollFrame.CanvasSize = UDim2.new(0, 0, 0, 0)
scrollFrame.Parent = mainFrame
local content = Instance.new("Frame")
content.Size = UDim2.new(1, -10, 0, 0)
content.Position = UDim2.new(0, 5, 0, 5)
content.BackgroundTransparency = 1
content.BorderSizePixel = 0
content.Parent = scrollFrame
local layout = Instance.new("UIListLayout")
layout.Padding = UDim.new(0, 6)
layout.SortOrder = Enum.SortOrder.LayoutOrder
layout.Parent = content
layout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
content.Size = UDim2.new(1, -10, 0, layout.AbsoluteContentSize.Y)
scrollFrame.CanvasSize = UDim2.new(0, 0, 0, layout.AbsoluteContentSize.Y + 10)
end)
local function roundify(obj, radius)
local c = Instance.new("UICorner")
c.CornerRadius = UDim.new(0, radius)
c.Parent = obj
return c
end
local function makeLabel(text, height)
local lbl = Instance.new("TextLabel")
lbl.Size = UDim2.new(1, 0, 0, height or 22)
lbl.BackgroundTransparency = 1
lbl.Text = text
lbl.TextColor3 = Color3.fromRGB(255, 255, 255)
lbl.TextScaled = true
lbl.Font = Enum.Font.Gotham
lbl.Parent = content
return lbl
end
local function makeBox(labelText, defaultText)
local row = Instance.new("Frame")
row.Size = UDim2.new(1, 0, 0, 50)
row.BackgroundColor3 = Color3.fromRGB(32, 32, 32)
row.BorderSizePixel = 0
row.Parent = content
roundify(row, 10)
local lbl = Instance.new("TextLabel")
lbl.Size = UDim2.new(1, -12, 0, 17)
lbl.Position = UDim2.new(0, 6, 0, 3)
lbl.BackgroundTransparency = 1
lbl.Text = labelText
lbl.TextColor3 = Color3.fromRGB(255, 255, 255)
lbl.TextScaled = true
lbl.Font = Enum.Font.Gotham
lbl.Parent = row
local box = Instance.new("TextBox")
box.Size = UDim2.new(1, -12, 0, 22)
box.Position = UDim2.new(0, 6, 0, 24)
box.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
box.Text = defaultText
box.TextColor3 = Color3.fromRGB(255, 255, 255)
box.TextScaled = true
box.Font = Enum.Font.Gotham
box.BorderSizePixel = 0
box.ClearTextOnFocus = false
box.Parent = row
roundify(box, 8)
return box
end
local function makeButton(text, color, height)
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, 0, 0, height or 30)
btn.BackgroundColor3 = color
btn.Text = text
btn.TextColor3 = Color3.fromRGB(255, 255, 255)
btn.TextScaled = true
btn.Font = Enum.Font.GothamBold
btn.BorderSizePixel = 0
btn.Parent = content
roundify(btn, 10)
return btn
end
makeLabel("Reality bending controls", 22)
local speedBox = makeBox("Speed", tostring(bendSpeed))
local strengthBox = makeBox("Strength", tostring(bendStrength))
local rangeBox = makeBox("Range", tostring(bendRange))
local nameBox = makeBox("Button Name", mainButtonText)
local axisButton = makeButton("Axis: " .. axisList[axisIndex], Color3.fromRGB(80, 80, 140), 30)
local bendButton = makeButton(mainButtonText, Color3.fromRGB(50, 120, 50), 34)
local chaosButton = makeButton("CHAOS! : OFF", Color3.fromRGB(150, 90, 40), 34)
local maxChaosButton = makeButton("MAX CHAOS! : OFF", Color3.fromRGB(170, 40, 40), 34)
local resetButton = makeButton("Reset", Color3.fromRGB(120, 60, 60), 34)
local applyNameButton = makeButton("Apply Name", Color3.fromRGB(90, 90, 150), 30)
local statusLabel = makeLabel("Status: Ready", 22)
local smallButton = Instance.new("TextButton")
smallButton.Size = UDim2.new(0, 70, 0, 30)
smallButton.Position = UDim2.new(0, 10, 0.5, -15)
smallButton.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
smallButton.Text = smallButtonText
smallButton.TextColor3 = Color3.fromRGB(255, 255, 255)
smallButton.TextScaled = true
smallButton.Font = Enum.Font.GothamBold
smallButton.BorderSizePixel = 0
smallButton.Visible = false
smallButton.Active = true
smallButton.Parent = screenGui
local smallCorner = Instance.new("UICorner")
smallCorner.CornerRadius = UDim.new(0, 10)
smallCorner.Parent = smallButton
local function updateStatus(text)
statusLabel.Text = "Status: " .. text
end
local function refreshTexts()
bendButton.Text = mainButtonText
axisButton.Text = "Axis: " .. axisList[axisIndex]
smallButton.Text = smallButtonText
end
axisButton.MouseButton1Click:Connect(function()
axisIndex += 1
if axisIndex > #axisList then
axisIndex = 1
end
axisButton.Text = "Axis: " .. axisList[axisIndex]
updateStatus("Axis changed to " .. axisList[axisIndex])
end)
applyNameButton.MouseButton1Click:Connect(function()
if nameBox.Text ~= "" then
mainButtonText = nameBox.Text
bendButton.Text = mainButtonText
updateStatus("Button name updated")
end
end)
bendButton.MouseButton1Click:Connect(function()
bendOn = not bendOn
bendToken += 1
local myToken = bendToken
if bendOn then
bendButton.Text = "STOP"
bendButton.BackgroundColor3 = Color3.fromRGB(170, 60, 60)
updateStatus("Reality bending")
task.spawn(function()
while bendOn and bendToken == myToken and screenGui.Parent do
updateCharacter()
bendSpeed = parseNumber(speedBox.Text, bendSpeed, 0.1, 100)
bendStrength = parseNumber(strengthBox.Text, bendStrength, 0, 10)
bendRange = parseNumber(rangeBox.Text, bendRange, 1, 500)
applyBendStep()
RunService.RenderStepped:Wait()
end
end)
else
restoreAll()
bendButton.Text = mainButtonText
bendButton.BackgroundColor3 = Color3.fromRGB(50, 120, 50)
updateStatus("Stopped and restored")
end
end)
chaosButton.MouseButton1Click:Connect(function()
chaosOn = not chaosOn
maxChaosOn = false
chaosToken += 1
local myToken = chaosToken
if chaosOn then
chaosButton.Text = "CHAOS! : ON"
chaosButton.BackgroundColor3 = Color3.fromRGB(170, 60, 60)
maxChaosButton.Text = "MAX CHAOS! : OFF"
maxChaosButton.BackgroundColor3 = Color3.fromRGB(170, 40, 40)
updateStatus("Chaos active")
task.spawn(function()
while chaosOn and chaosToken == myToken and screenGui.Parent do
updateCharacter()
bendSpeed = parseNumber(speedBox.Text, bendSpeed, 0.1, 100)
bendStrength = parseNumber(strengthBox.Text, bendStrength, 0, 10)
bendRange = parseNumber(rangeBox.Text, bendRange, 1, 500)
applyChaosStep(1)
RunService.RenderStepped:Wait()
end
end)
else
chaosButton.Text = "CHAOS! : OFF"
chaosButton.BackgroundColor3 = Color3.fromRGB(150, 90, 40)
if not bendOn and not maxChaosOn then
restoreAll()
updateStatus("Chaos off")
else
updateStatus("Chaos off")
end
end
end)
maxChaosButton.MouseButton1Click:Connect(function()
maxChaosOn = not maxChaosOn
chaosOn = false
chaosToken += 1
local myToken = chaosToken
if maxChaosOn then
maxChaosButton.Text = "MAX CHAOS! : ON"
maxChaosButton.BackgroundColor3 = Color3.fromRGB(255, 70, 70)
chaosButton.Text = "CHAOS! : OFF"
chaosButton.BackgroundColor3 = Color3.fromRGB(150, 90, 40)
updateStatus("MAX CHAOS active")
task.spawn(function()
while maxChaosOn and chaosToken == myToken and screenGui.Parent do
updateCharacter()
bendSpeed = parseNumber(speedBox.Text, bendSpeed, 0.1, 100)
bendStrength = parseNumber(strengthBox.Text, bendStrength, 0, 10)
bendRange = parseNumber(rangeBox.Text, bendRange, 1, 500)
applyChaosStep(2)
RunService.RenderStepped:Wait()
end
end)
else
maxChaosButton.Text = "MAX CHAOS! : OFF"
maxChaosButton.BackgroundColor3 = Color3.fromRGB(170, 40, 40)
if not bendOn and not chaosOn then
restoreAll()
updateStatus("MAX CHAOS off")
else
updateStatus("MAX CHAOS off")
end
end
end)
resetButton.MouseButton1Click:Connect(function()
restoreAll()
bendButton.Text = mainButtonText
bendButton.BackgroundColor3 = Color3.fromRGB(50, 120, 50)
chaosButton.Text = "CHAOS! : OFF"
chaosButton.BackgroundColor3 = Color3.fromRGB(150, 90, 40)
maxChaosButton.Text = "MAX CHAOS! : OFF"
maxChaosButton.BackgroundColor3 = Color3.fromRGB(170, 40, 40)
updateStatus("Reset")
end)
hideButton.MouseButton1Click:Connect(function()
mainFrame.Visible = false
smallButton.Visible = true
end)
smallButton.MouseButton1Click:Connect(function()
mainFrame.Visible = true
smallButton.Visible = false
end)
closeButton.MouseButton1Click:Connect(function()
restoreAll()
screenGui:Destroy()
end)
local function makeDraggable(handle, target)
local dragging = false
local dragInput
local dragStart
local startPos
handle.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = target.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
dragging = false
end
end)
end
end)
handle.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement
or input.UserInputType == Enum.UserInputType.Touch then
dragInput = input
end
end)
UserInputService.InputChanged:Connect(function(input)
if input == dragInput and dragging then
local delta = input.Position - dragStart
target.Position = UDim2.new(
startPos.X.Scale,
startPos.X.Offset + delta.X,
startPos.Y.Scale,
startPos.Y.Offset + delta.Y
)
end
end)
end
makeDraggable(titleBar, mainFrame)
makeDraggable(smallButton, smallButton)
refreshTexts()
updateStatus("Ready")No comments yet for this script.



