
Key RequiredUniversal

-- Roblox Script Runner V3 By Ai - Client Sided
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local TextService = game:GetService("TextService")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
-- Create ScreenGui
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "ScriptRunnerGUI"
screenGui.ResetOnSpawn = false
screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
screenGui.Parent = playerGui
-- Main Frame
local mainFrame = Instance.new("Frame")
mainFrame.Name = "MainFrame"
mainFrame.Size = UDim2.new(0, 800, 0, 550)
mainFrame.Position = UDim2.new(0.5, -400, 0.5, -275)
mainFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 25)
mainFrame.BorderSizePixel = 0
mainFrame.ClipsDescendants = true
mainFrame.Parent = screenGui
local mainCorner = Instance.new("UICorner")
mainCorner.CornerRadius = UDim.new(0, 14)
mainCorner.Parent = mainFrame
-- Glow effect
local glow = Instance.new("ImageLabel")
glow.Name = "Glow"
glow.Size = UDim2.new(1, 40, 1, 40)
glow.Position = UDim2.new(0, -20, 0, -20)
glow.BackgroundTransparency = 1
glow.Image = "rbxasset://textures/ui/GuiImagePlaceholder.png"
glow.ImageColor3 = Color3.fromRGB(88, 101, 242)
glow.ImageTransparency = 0.5
glow.ScaleType = Enum.ScaleType.Slice
glow.SliceCenter = Rect.new(10, 10, 118, 118)
glow.ZIndex = 0
glow.Parent = mainFrame
-- Title Bar
local titleBar = Instance.new("Frame")
titleBar.Name = "TitleBar"
titleBar.Size = UDim2.new(1, 0, 0, 45)
titleBar.BackgroundColor3 = Color3.fromRGB(30, 30, 38)
titleBar.BorderSizePixel = 0
titleBar.Parent = mainFrame
local titleCorner = Instance.new("UICorner")
titleCorner.CornerRadius = UDim.new(0, 14)
titleCorner.Parent = titleBar
local titleCover = Instance.new("Frame")
titleCover.Size = UDim2.new(1, 0, 0, 14)
titleCover.Position = UDim2.new(0, 0, 1, -14)
titleCover.BackgroundColor3 = Color3.fromRGB(30, 30, 38)
titleCover.BorderSizePixel = 0
titleCover.Parent = titleBar
local titleGradient = Instance.new("UIGradient")
titleGradient.Color = ColorSequence.new{
ColorSequenceKeypoint.new(0, Color3.fromRGB(88, 101, 242)),
ColorSequenceKeypoint.new(0.5, Color3.fromRGB(114, 137, 218)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(88, 101, 242))
}
titleGradient.Rotation = 90
titleGradient.Parent = titleBar
-- Animated gradient
spawn(function()
while titleBar.Parent do
for i = 0, 360, 2 do
if not titleBar.Parent then break end
titleGradient.Rotation = i
wait(0.05)
end
end
end)
-- Title Label
local titleLabel = Instance.new("TextLabel")
titleLabel.Size = UDim2.new(1, -120, 1, 0)
titleLabel.Position = UDim2.new(0, 15, 0, 0)
titleLabel.BackgroundTransparency = 1
titleLabel.Text = "Script Runner V3"
titleLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
titleLabel.Font = Enum.Font.GothamBold
titleLabel.TextSize = 20
titleLabel.TextXAlignment = Enum.TextXAlignment.Left
titleLabel.Parent = titleBar
-- Version badge
local versionBadge = Instance.new("TextLabel")
versionBadge.Size = UDim2.new(0, 50, 0, 18)
versionBadge.Position = UDim2.new(0, 185, 0, 14)
versionBadge.BackgroundColor3 = Color3.fromRGB(87, 242, 135)
versionBadge.Text = "v3.0"
versionBadge.TextColor3 = Color3.fromRGB(20, 20, 25)
versionBadge.Font = Enum.Font.GothamBold
versionBadge.TextSize = 11
versionBadge.Parent = titleBar
local badgeCorner = Instance.new("UICorner")
badgeCorner.CornerRadius = UDim.new(0, 4)
badgeCorner.Parent = versionBadge
-- Client sided badge
local clientBadge = Instance.new("TextLabel")
clientBadge.Size = UDim2.new(0, 100, 0, 18)
clientBadge.Position = UDim2.new(0, 245, 0, 14)
clientBadge.BackgroundColor3 = Color3.fromRGB(255, 163, 72)
clientBadge.Text = "Client Sided"
clientBadge.TextColor3 = Color3.fromRGB(20, 20, 25)
clientBadge.Font = Enum.Font.GothamBold
clientBadge.TextSize = 10
clientBadge.Parent = titleBar
local clientCorner = Instance.new("UICorner")
clientCorner.CornerRadius = UDim.new(0, 4)
clientCorner.Parent = clientBadge
-- Minimize Button
local minimizeButton = Instance.new("TextButton")
minimizeButton.Size = UDim2.new(0, 38, 0, 38)
minimizeButton.Position = UDim2.new(1, -84, 0, 3.5)
minimizeButton.BackgroundColor3 = Color3.fromRGB(50, 50, 60)
minimizeButton.BorderSizePixel = 0
minimizeButton.Text = "−"
minimizeButton.TextColor3 = Color3.fromRGB(255, 255, 255)
minimizeButton.Font = Enum.Font.GothamBold
minimizeButton.TextSize = 22
minimizeButton.AutoButtonColor = false
minimizeButton.Parent = titleBar
local minCorner = Instance.new("UICorner")
minCorner.CornerRadius = UDim.new(0, 8)
minCorner.Parent = minimizeButton
-- Close Button
local closeButton = Instance.new("TextButton")
closeButton.Size = UDim2.new(0, 38, 0, 38)
closeButton.Position = UDim2.new(1, -42, 0, 3.5)
closeButton.BackgroundColor3 = Color3.fromRGB(237, 66, 69)
closeButton.BorderSizePixel = 0
closeButton.Text = "×"
closeButton.TextColor3 = Color3.fromRGB(255, 255, 255)
closeButton.Font = Enum.Font.GothamBold
closeButton.TextSize = 26
closeButton.AutoButtonColor = false
closeButton.Parent = titleBar
local closeCorner = Instance.new("UICorner")
closeCorner.CornerRadius = UDim.new(0, 8)
closeCorner.Parent = closeButton
-- Toolbar
local toolbar = Instance.new("Frame")
toolbar.Name = "Toolbar"
toolbar.Size = UDim2.new(1, -20, 0, 35)
toolbar.Position = UDim2.new(0, 10, 0, 55)
toolbar.BackgroundColor3 = Color3.fromRGB(28, 28, 35)
toolbar.BorderSizePixel = 0
toolbar.Parent = mainFrame
local toolCorner = Instance.new("UICorner")
toolCorner.CornerRadius = UDim.new(0, 8)
toolCorner.Parent = toolbar
-- Font Size Label
local fontLabel = Instance.new("TextLabel")
fontLabel.Size = UDim2.new(0, 80, 1, 0)
fontLabel.Position = UDim2.new(0, 10, 0, 0)
fontLabel.BackgroundTransparency = 1
fontLabel.Text = "Font Size:"
fontLabel.TextColor3 = Color3.fromRGB(180, 180, 190)
fontLabel.Font = Enum.Font.GothamMedium
fontLabel.TextSize = 13
fontLabel.TextXAlignment = Enum.TextXAlignment.Left
fontLabel.Parent = toolbar
-- Font Size Decrease
local fontDecrease = Instance.new("TextButton")
fontDecrease.Size = UDim2.new(0, 30, 0, 25)
fontDecrease.Position = UDim2.new(0, 95, 0, 5)
fontDecrease.BackgroundColor3 = Color3.fromRGB(50, 50, 60)
fontDecrease.Text = "−"
fontDecrease.TextColor3 = Color3.fromRGB(255, 255, 255)
fontDecrease.Font = Enum.Font.GothamBold
fontDecrease.TextSize = 16
fontDecrease.AutoButtonColor = false
fontDecrease.Parent = toolbar
local fontDecCorner = Instance.new("UICorner")
fontDecCorner.CornerRadius = UDim.new(0, 5)
fontDecCorner.Parent = fontDecrease
-- Font Size Display
local fontSizeDisplay = Instance.new("TextLabel")
fontSizeDisplay.Size = UDim2.new(0, 40, 0, 25)
fontSizeDisplay.Position = UDim2.new(0, 130, 0, 5)
fontSizeDisplay.BackgroundColor3 = Color3.fromRGB(35, 35, 45)
fontSizeDisplay.Text = "15"
fontSizeDisplay.TextColor3 = Color3.fromRGB(255, 255, 255)
fontSizeDisplay.Font = Enum.Font.GothamBold
fontSizeDisplay.TextSize = 13
fontSizeDisplay.Parent = toolbar
local fontSizeCorner = Instance.new("UICorner")
fontSizeCorner.CornerRadius = UDim.new(0, 5)
fontSizeCorner.Parent = fontSizeDisplay
-- Font Size Increase
local fontIncrease = Instance.new("TextButton")
fontIncrease.Size = UDim2.new(0, 30, 0, 25)
fontIncrease.Position = UDim2.new(0, 175, 0, 5)
fontIncrease.BackgroundColor3 = Color3.fromRGB(50, 50, 60)
fontIncrease.Text = "+"
fontIncrease.TextColor3 = Color3.fromRGB(255, 255, 255)
fontIncrease.Font = Enum.Font.GothamBold
fontIncrease.TextSize = 16
fontIncrease.AutoButtonColor = false
fontIncrease.Parent = toolbar
local fontIncCorner = Instance.new("UICorner")
fontIncCorner.CornerRadius = UDim.new(0, 5)
fontIncCorner.Parent = fontIncrease
-- Line count display
local lineCountLabel = Instance.new("TextLabel")
lineCountLabel.Size = UDim2.new(0, 150, 1, 0)
lineCountLabel.Position = UDim2.new(1, -160, 0, 0)
lineCountLabel.BackgroundTransparency = 1
lineCountLabel.Text = "Lines: 0 | Chars: 0"
lineCountLabel.TextColor3 = Color3.fromRGB(150, 150, 160)
lineCountLabel.Font = Enum.Font.GothamMedium
lineCountLabel.TextSize = 12
lineCountLabel.TextXAlignment = Enum.TextXAlignment.Right
lineCountLabel.Parent = toolbar
-- Editor Container
local editorContainer = Instance.new("Frame")
editorContainer.Name = "EditorContainer"
editorContainer.Size = UDim2.new(1, -20, 1, -245)
editorContainer.Position = UDim2.new(0, 10, 0, 100)
editorContainer.BackgroundColor3 = Color3.fromRGB(25, 25, 32)
editorContainer.BorderSizePixel = 0
editorContainer.Parent = mainFrame
local editorCorner = Instance.new("UICorner")
editorCorner.CornerRadius = UDim.new(0, 10)
editorCorner.Parent = editorContainer
-- Editor Header
local editorHeader = Instance.new("Frame")
editorHeader.Size = UDim2.new(1, 0, 0, 30)
editorHeader.BackgroundColor3 = Color3.fromRGB(30, 30, 38)
editorHeader.BorderSizePixel = 0
editorHeader.Parent = editorContainer
local headerCorner = Instance.new("UICorner")
headerCorner.CornerRadius = UDim.new(0, 10)
headerCorner.Parent = editorHeader
local headerCover = Instance.new("Frame")
headerCover.Size = UDim2.new(1, 0, 0, 10)
headerCover.Position = UDim2.new(0, 0, 1, -10)
headerCover.BackgroundColor3 = Color3.fromRGB(30, 30, 38)
headerCover.BorderSizePixel = 0
headerCover.Parent = editorHeader
local editorLabel = Instance.new("TextLabel")
editorLabel.Size = UDim2.new(1, -10, 1, 0)
editorLabel.Position = UDim2.new(0, 10, 0, 0)
editorLabel.BackgroundTransparency = 1
editorLabel.Text = "Code Editor"
editorLabel.TextColor3 = Color3.fromRGB(180, 180, 190)
editorLabel.Font = Enum.Font.GothamBold
editorLabel.TextSize = 13
editorLabel.TextXAlignment = Enum.TextXAlignment.Left
editorLabel.Parent = editorHeader
-- Line numbers frame
local lineNumbersFrame = Instance.new("Frame")
lineNumbersFrame.Size = UDim2.new(0, 45, 1, -30)
lineNumbersFrame.Position = UDim2.new(0, 0, 0, 30)
lineNumbersFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 26)
lineNumbersFrame.BorderSizePixel = 0
lineNumbersFrame.Parent = editorContainer
-- Line numbers ScrollingFrame
local lineNumbersScroll = Instance.new("ScrollingFrame")
lineNumbersScroll.Size = UDim2.new(1, 0, 1, 0)
lineNumbersScroll.BackgroundTransparency = 1
lineNumbersScroll.BorderSizePixel = 0
lineNumbersScroll.ScrollBarThickness = 0
lineNumbersScroll.CanvasSize = UDim2.new(0, 0, 0, 0)
lineNumbersScroll.ScrollingEnabled = false
lineNumbersScroll.Parent = lineNumbersFrame
-- Line numbers TextLabel
local lineNumbers = Instance.new("TextLabel")
lineNumbers.Size = UDim2.new(1, -5, 1, 0)
lineNumbers.Position = UDim2.new(0, 0, 0, 0)
lineNumbers.BackgroundTransparency = 1
lineNumbers.Text = "1"
lineNumbers.TextColor3 = Color3.fromRGB(100, 100, 120)
lineNumbers.Font = Enum.Font.Code
lineNumbers.TextSize = 15
lineNumbers.TextXAlignment = Enum.TextXAlignment.Right
lineNumbers.TextYAlignment = Enum.TextYAlignment.Top
lineNumbers.Parent = lineNumbersScroll
-- Script ScrollingFrame
local scriptScrollFrame = Instance.new("ScrollingFrame")
scriptScrollFrame.Name = "ScriptScrollFrame"
scriptScrollFrame.Size = UDim2.new(1, -55, 1, -30)
scriptScrollFrame.Position = UDim2.new(0, 50, 0, 30)
scriptScrollFrame.BackgroundColor3 = Color3.fromRGB(18, 18, 24)
scriptScrollFrame.BorderSizePixel = 0
scriptScrollFrame.ScrollBarThickness = 10
scriptScrollFrame.ScrollBarImageColor3 = Color3.fromRGB(88, 101, 242)
scriptScrollFrame.CanvasSize = UDim2.new(0, 0, 0, 0)
scriptScrollFrame.Parent = editorContainer
-- Custom scrollbar style
local scrollbarBg = Instance.new("Frame")
scrollbarBg.Size = UDim2.new(0, 10, 1, 0)
scrollbarBg.Position = UDim2.new(1, -10, 0, 0)
scrollbarBg.BackgroundColor3 = Color3.fromRGB(25, 25, 32)
scrollbarBg.BorderSizePixel = 0
scrollbarBg.ZIndex = 10
scrollbarBg.Parent = scriptScrollFrame
-- Script TextBox
local scriptBox = Instance.new("TextBox")
scriptBox.Name = "ScriptBox"
scriptBox.Size = UDim2.new(1, -15, 1, 0)
scriptBox.Position = UDim2.new(0, 10, 0, 0)
scriptBox.BackgroundTransparency = 1
scriptBox.TextColor3 = Color3.fromRGB(230, 230, 240)
scriptBox.Font = Enum.Font.Code
scriptBox.TextSize = 15
scriptBox.Text = '-- Script Runner V3 - CLIENT SIDED ONLY\n-- This executor runs on the client and cannot access server-side features\n\nprint("Hello from Script Runner V3")\n\nlocal part = Instance.new("Part")\npart.Parent = workspace\npart.Position = Vector3.new(0, 10, 0)\npart.Size = Vector3.new(5, 1, 3)\npart.BrickColor = BrickColor.new("Bright blue")\npart.Material = Enum.Material.Neon\npart.Anchored = true'
scriptBox.TextXAlignment = Enum.TextXAlignment.Left
scriptBox.TextYAlignment = Enum.TextYAlignment.Top
scriptBox.TextWrapped = true
scriptBox.ClearTextOnFocus = false
scriptBox.MultiLine = true
scriptBox.PlaceholderText = "-- Enter your Lua code here..."
scriptBox.PlaceholderColor3 = Color3.fromRGB(80, 80, 100)
scriptBox.Parent = scriptScrollFrame
-- Code assistance system
local lastText = scriptBox.Text
local cursorPosition = 0
-- Auto-complete pairs
local pairs = {
["("] = ")",
["["] = "]",
["{"] = "}",
['"'] = '"',
["'"] = "'"
}
-- Auto-indent keywords
local indentKeywords = {
"function", "if", "for", "while", "repeat", "do", "then"
}
-- Code snippets
local snippets = {
["func"] = "function NAME()\n -- code here\nend",
["ife"] = "if CONDITION then\n -- code here\nend",
["ifel"] = "if CONDITION then\n -- code here\nelse\n -- code here\nend",
["fori"] = "for i = 1, 10 do\n -- code here\nend",
["forv"] = "for i, v in pairs(TABLE) do\n -- code here\nend",
["whi"] = "while CONDITION do\n -- code here\nend",
["rep"] = "repeat\n -- code here\nuntil CONDITION",
["part"] = 'local part = Instance.new("Part")\npart.Parent = workspace\npart.Position = Vector3.new(0, 10, 0)\npart.Anchored = true',
["wait"] = "wait(1)",
["print"] = 'print("MESSAGE")',
["tween"] = 'local TweenService = game:GetService("TweenService")\nlocal tween = TweenService:Create(OBJECT, TweenInfo.new(1), {Property = Value})\ntween:Play()',
}
-- Handle text changes for smart features
scriptBox:GetPropertyChangedSignal("Text"):Connect(function()
local currentText = scriptBox.Text
-- Detect snippet triggers
for trigger, snippet in pairs(snippets) do
if currentText:match(trigger .. "$") and not lastText:match(trigger .. "$") then
local newText = currentText:gsub(trigger .. "$", snippet)
scriptBox.Text = newText
outputBox.TextColor3 = Color3.fromRGB(138, 173, 244)
outputBox.Text = "[INFO] Code snippet inserted"
updateOutputSize()
break
end
end
lastText = currentText
end)
-- Handle special key inputs
local UserInputService = game:GetService("UserInputService")
scriptBox.Focused:Connect(function()
local connection
connection = UserInputService.InputBegan:Connect(function(input, gameProcessed)
if not scriptBox:IsFocused() then
connection:Disconnect()
return
end
-- Tab for indentation
if input.KeyCode == Enum.KeyCode.Tab then
local text = scriptBox.Text
local cursorPos = scriptBox.CursorPosition
local newText = text:sub(1, cursorPos - 1) .. " " .. text:sub(cursorPos)
scriptBox.Text = newText
scriptBox.CursorPosition = cursorPos + 4
end
-- Auto-close brackets and quotes
for open, close in pairs(pairs) do
if input.KeyCode == Enum.KeyCode.Unknown then
local text = scriptBox.Text
local cursorPos = scriptBox.CursorPosition
if text:sub(cursorPos - 1, cursorPos - 1) == open then
if (open == '"' or open == "'") and text:sub(cursorPos - 2, cursorPos - 2) == open then
return
end
task.wait(0.01)
local currentText = scriptBox.Text
local currentPos = scriptBox.CursorPosition
scriptBox.Text = currentText:sub(1, currentPos - 1) .. close .. currentText:sub(currentPos)
scriptBox.CursorPosition = currentPos
end
end
end
-- Auto-indent on Enter after keywords
if input.KeyCode == Enum.KeyCode.Return then
task.wait(0.01)
local text = scriptBox.Text
local cursorPos = scriptBox.CursorPosition
local beforeCursor = text:sub(1, cursorPos - 1)
local lastLine = beforeCursor:match("([^\n]*)$")
for _, keyword in ipairs(indentKeywords) do
if lastLine:match("%f[%w]" .. keyword .. "%f[%W]") then
local newText = text:sub(1, cursorPos - 1) .. " " .. text:sub(cursorPos)
scriptBox.Text = newText
scriptBox.CursorPosition = cursorPos + 4
break
end
end
end
end)
end)
-- Update canvas and line numbers
local function updateEditor()
local text = scriptBox.Text
local lines = 1
for _ in text:gmatch("\n") do
lines = lines + 1
end
-- Update line numbers
local lineNumberText = ""
for i = 1, lines do
lineNumberText = lineNumberText .. i .. "\n"
end
lineNumbers.Text = lineNumberText
-- Update canvas sizes
local textSize = TextService:GetTextSize(
text,
scriptBox.TextSize,
scriptBox.Font,
Vector2.new(scriptBox.AbsoluteSize.X, math.huge)
)
scriptScrollFrame.CanvasSize = UDim2.new(0, 0, 0, textSize.Y + 30)
lineNumbersScroll.CanvasSize = UDim2.new(0, 0, 0, textSize.Y + 30)
-- Update line count
lineCountLabel.Text = string.format("Lines: %d | Chars: %d", lines, #text)
end
scriptBox:GetPropertyChangedSignal("Text"):Connect(updateEditor)
-- Sync scrolling
scriptScrollFrame:GetPropertyChangedSignal("CanvasPosition"):Connect(function()
lineNumbersScroll.CanvasPosition = Vector2.new(0, scriptScrollFrame.CanvasPosition.Y)
end)
-- Output Container
local outputContainer = Instance.new("Frame")
outputContainer.Name = "OutputContainer"
outputContainer.Size = UDim2.new(1, -20, 0, 110)
outputContainer.Position = UDim2.new(0, 10, 1, -165)
outputContainer.BackgroundColor3 = Color3.fromRGB(25, 25, 32)
outputContainer.BorderSizePixel = 0
outputContainer.Parent = mainFrame
local outputCorner = Instance.new("UICorner")
outputCorner.CornerRadius = UDim.new(0, 10)
outputCorner.Parent = outputContainer
-- Output Header
local outputHeader = Instance.new("Frame")
outputHeader.Size = UDim2.new(1, 0, 0, 30)
outputHeader.BackgroundColor3 = Color3.fromRGB(30, 30, 38)
outputHeader.BorderSizePixel = 0
outputHeader.Parent = outputContainer
local outHeaderCorner = Instance.new("UICorner")
outHeaderCorner.CornerRadius = UDim.new(0, 10)
outHeaderCorner.Parent = outputHeader
local outHeaderCover = Instance.new("Frame")
outHeaderCover.Size = UDim2.new(1, 0, 0, 10)
outHeaderCover.Position = UDim2.new(0, 0, 1, -10)
outHeaderCover.BackgroundColor3 = Color3.fromRGB(30, 30, 38)
outHeaderCover.BorderSizePixel = 0
outHeaderCover.Parent = outputHeader
local outputLabel = Instance.new("TextLabel")
outputLabel.Size = UDim2.new(1, -10, 1, 0)
outputLabel.Position = UDim2.new(0, 10, 0, 0)
outputLabel.BackgroundTransparency = 1
outputLabel.Text = "Output Console"
outputLabel.TextColor3 = Color3.fromRGB(180, 180, 190)
outputLabel.Font = Enum.Font.GothamBold
outputLabel.TextSize = 13
outputLabel.TextXAlignment = Enum.TextXAlignment.Left
outputLabel.Parent = outputHeader
-- Clear output button
local clearOutputButton = Instance.new("TextButton")
clearOutputButton.Size = UDim2.new(0, 60, 0, 20)
clearOutputButton.Position = UDim2.new(1, -70, 0, 5)
clearOutputButton.BackgroundColor3 = Color3.fromRGB(50, 50, 60)
clearOutputButton.BorderSizePixel = 0
clearOutputButton.Text = "Clear"
clearOutputButton.TextColor3 = Color3.fromRGB(200, 200, 210)
clearOutputButton.Font = Enum.Font.GothamMedium
clearOutputButton.TextSize = 11
clearOutputButton.AutoButtonColor = false
clearOutputButton.Parent = outputHeader
local clearOutCorner = Instance.new("UICorner")
clearOutCorner.CornerRadius = UDim.new(0, 5)
clearOutCorner.Parent = clearOutputButton
-- Output ScrollingFrame
local outputScrollFrame = Instance.new("ScrollingFrame")
outputScrollFrame.Name = "OutputScrollFrame"
outputScrollFrame.Size = UDim2.new(1, -10, 1, -35)
outputScrollFrame.Position = UDim2.new(0, 5, 0, 32)
outputScrollFrame.BackgroundColor3 = Color3.fromRGB(18, 18, 24)
outputScrollFrame.BorderSizePixel = 0
outputScrollFrame.ScrollBarThickness = 10
outputScrollFrame.ScrollBarImageColor3 = Color3.fromRGB(87, 242, 135)
outputScrollFrame.CanvasSize = UDim2.new(0, 0, 0, 0)
outputScrollFrame.Parent = outputContainer
local outScrollCorner = Instance.new("UICorner")
outScrollCorner.CornerRadius = UDim.new(0, 6)
outScrollCorner.Parent = outputScrollFrame
-- Output TextLabel
local outputBox = Instance.new("TextLabel")
outputBox.Name = "OutputBox"
outputBox.Size = UDim2.new(1, -15, 1, 0)
outputBox.Position = UDim2.new(0, 10, 0, 0)
outputBox.BackgroundTransparency = 1
outputBox.TextColor3 = Color3.fromRGB(150, 150, 160)
outputBox.Font = Enum.Font.Code
outputBox.TextSize = 14
outputBox.Text = "[READY] Waiting for execution..."
outputBox.TextXAlignment = Enum.TextXAlignment.Left
outputBox.TextYAlignment = Enum.TextYAlignment.Top
outputBox.TextWrapped = true
outputBox.Parent = outputScrollFrame
-- Update output size
local function updateOutputSize()
local textSize = TextService:GetTextSize(
outputBox.Text,
outputBox.TextSize,
outputBox.Font,
Vector2.new(outputBox.AbsoluteSize.X, math.huge)
)
outputScrollFrame.CanvasSize = UDim2.new(0, 0, 0, math.max(textSize.Y + 20, 110))
outputScrollFrame.CanvasPosition = Vector2.new(0, math.max(0, textSize.Y - outputScrollFrame.AbsoluteSize.Y))
end
-- Clear output button action
clearOutputButton.MouseButton1Click:Connect(function()
outputBox.Text = "[READY] Output cleared"
outputBox.TextColor3 = Color3.fromRGB(150, 150, 160)
updateOutputSize()
end)
-- Button Container
local buttonContainer = Instance.new("Frame")
buttonContainer.Size = UDim2.new(1, -20, 0, 45)
buttonContainer.Position = UDim2.new(0, 10, 1, -50)
buttonContainer.BackgroundTransparency = 1
buttonContainer.Parent = mainFrame
-- Execute Button
local executeButton = Instance.new("TextButton")
executeButton.Name = "ExecuteButton"
executeButton.Size = UDim2.new(0, 170, 1, 0)
executeButton.Position = UDim2.new(0, 0, 0, 0)
executeButton.BackgroundColor3 = Color3.fromRGB(87, 242, 135)
executeButton.BorderSizePixel = 0
executeButton.Text = "Execute"
executeButton.TextColor3 = Color3.fromRGB(20, 20, 25)
executeButton.Font = Enum.Font.GothamBold
executeButton.TextSize = 16
executeButton.AutoButtonColor = false
executeButton.Parent = buttonContainer
local execCorner = Instance.new("UICorner")
execCorner.CornerRadius = UDim.new(0, 10)
execCorner.Parent = executeButton
-- Clear Button
local clearButton = Instance.new("TextButton")
clearButton.Size = UDim2.new(0, 130, 1, 0)
clearButton.Position = UDim2.new(0, 180, 0, 0)
clearButton.BackgroundColor3 = Color3.fromRGB(255, 163, 72)
clearButton.BorderSizePixel = 0
clearButton.Text = "Clear Editor"
clearButton.TextColor3 = Color3.fromRGB(20, 20, 25)
clearButton.Font = Enum.Font.GothamBold
clearButton.TextSize = 15
clearButton.AutoButtonColor = false
clearButton.Parent = buttonContainer
local clearCorner = Instance.new("UICorner")
clearCorner.CornerRadius = UDim.new(0, 10)
clearCorner.Parent = clearButton
-- Copy Button
local copyButton = Instance.new("TextButton")
copyButton.Size = UDim2.new(0, 140, 1, 0)
copyButton.Position = UDim2.new(0, 320, 0, 0)
copyButton.BackgroundColor3 = Color3.fromRGB(114, 137, 218)
copyButton.BorderSizePixel = 0
copyButton.Text = "Copy Code"
copyButton.TextColor3 = Color3.fromRGB(255, 255, 255)
copyButton.Font = Enum.Font.GothamBold
copyButton.TextSize = 15
copyButton.AutoButtonColor = false
copyButton.Parent = buttonContainer
local copyCorner = Instance.new("UICorner")
copyCorner.CornerRadius = UDim.new(0, 10)
copyCorner.Parent = copyButton
-- Save Button
local saveButton = Instance.new("TextButton")
saveButton.Size = UDim2.new(0, 110, 1, 0)
saveButton.Position = UDim2.new(0, 470, 0, 0)
saveButton.BackgroundColor3 = Color3.fromRGB(255, 184, 108)
saveButton.BorderSizePixel = 0
saveButton.Text = "Save"
saveButton.TextColor3 = Color3.fromRGB(20, 20, 25)
saveButton.Font = Enum.Font.GothamBold
saveButton.TextSize = 15
saveButton.AutoButtonColor = false
saveButton.Parent = buttonContainer
local saveCorner = Instance.new("UICorner")
saveCorner.CornerRadius = UDim.new(0, 10)
saveCorner.Parent = saveButton
-- Snippets Button
local snippetsButton = Instance.new("TextButton")
snippetsButton.Size = UDim2.new(0, 100, 1, 0)
snippetsButton.Position = UDim2.new(0, 590, 0, 0)
snippetsButton.BackgroundColor3 = Color3.fromRGB(186, 147, 216)
snippetsButton.BorderSizePixel = 0
snippetsButton.Text = "Snippets"
snippetsButton.TextColor3 = Color3.fromRGB(255, 255, 255)
snippetsButton.Font = Enum.Font.GothamBold
snippetsButton.TextSize = 14
snippetsButton.AutoButtonColor = false
snippetsButton.Parent = buttonContainer
local snippetsCorner = Instance.new("UICorner")
snippetsCorner.CornerRadius = UDim.new(0, 10)
snippetsCorner.Parent = snippetsButton
-- Load Button
local loadButton = Instance.new("TextButton")
loadButton.Size = UDim2.new(0, 90, 1, 0)
loadButton.Position = UDim2.new(1, -90, 0, 0)
loadButton.BackgroundColor3 = Color3.fromRGB(138, 173, 244)
loadButton.BorderSizePixel = 0
loadButton.Text = "Load"
loadButton.TextColor3 = Color3.fromRGB(255, 255, 255)
loadButton.Font = Enum.Font.GothamBold
loadButton.TextSize = 15
loadButton.AutoButtonColor = false
loadButton.Parent = buttonContainer
local loadCorner = Instance.new("UICorner")
loadCorner.CornerRadius = UDim.new(0, 10)
loadCorner.Parent = loadButton
-- Hover Effects
local function addHoverEffect(button, normalColor, hoverColor)
button.MouseEnter:Connect(function()
TweenService:Create(button, TweenInfo.new(0.2), {BackgroundColor3 = hoverColor}):Play()
TweenService:Create(button, TweenInfo.new(0.2), {Size = button.Size + UDim2.new(0, 0, 0, 2)}):Play()
end)
button.MouseLeave:Connect(function()
TweenService:Create(button, TweenInfo.new(0.2), {BackgroundColor3 = normalColor}):Play()
TweenService:Create(button, TweenInfo.new(0.2), {Size = button.Size - UDim2.new(0, 0, 0, 2)}):Play()
end)
end
addHoverEffect(executeButton, Color3.fromRGB(87, 242, 135), Color3.fromRGB(107, 255, 155))
addHoverEffect(clearButton, Color3.fromRGB(255, 163, 72), Color3.fromRGB(255, 183, 102))
addHoverEffect(copyButton, Color3.fromRGB(114, 137, 218), Color3.fromRGB(134, 157, 238))
addHoverEffect(saveButton, Color3.fromRGB(255, 184, 108), Color3.fromRGB(255, 204, 138))
addHoverEffect(snippetsButton, Color3.fromRGB(186, 147, 216), Color3.fromRGB(206, 167, 236))
addHoverEffect(loadButton, Color3.fromRGB(138, 173, 244), Color3.fromRGB(158, 193, 255))
addHoverEffect(closeButton, Color3.fromRGB(237, 66, 69), Color3.fromRGB(255, 86, 89))
addHoverEffect(minimizeButton, Color3.fromRGB(50, 50, 60), Color3.fromRGB(70, 70, 80))
addHoverEffect(fontDecrease, Color3.fromRGB(50, 50, 60), Color3.fromRGB(70, 70, 80))
addHoverEffect(fontIncrease, Color3.fromRGB(50, 50, 60), Color3.fromRGB(70, 70, 80))
addHoverEffect(clearOutputButton, Color3.fromRGB(50, 50, 60), Color3.fromRGB(70, 70, 80))
-- Font size controls
fontDecrease.MouseButton1Click:Connect(function()
local currentSize = scriptBox.TextSize
if currentSize > 10 then
scriptBox.TextSize = currentSize - 1
lineNumbers.TextSize = currentSize - 1
outputBox.TextSize = currentSize - 1
fontSizeDisplay.Text = tostring(currentSize - 1)
updateEditor()
updateOutputSize()
end
end)
fontIncrease.MouseButton1Click:Connect(function()
local currentSize = scriptBox.TextSize
if currentSize < 30 then
scriptBox.TextSize = currentSize + 1
lineNumbers.TextSize = currentSize + 1
outputBox.TextSize = currentSize + 1
fontSizeDisplay.Text = tostring(currentSize + 1)
updateEditor()
updateOutputSize()
end
end)
-- Dragging
local dragging = false
local dragStart = nil
local startPos = nil
titleBar.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = true
dragStart = input.Position
startPos = mainFrame.Position
end
end)
titleBar.InputChanged:Connect(function(input)
if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then
local delta = input.Position - dragStart
mainFrame.Position = UDim2.new(
startPos.X.Scale,
startPos.X.Offset + delta.X,
startPos.Y.Scale,
startPos.Y.Offset + delta.Y
)
end
end)
titleBar.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = false
end
end)
-- Minimize
local minimized = false
local originalSize = mainFrame.Size
minimizeButton.MouseButton1Click:Connect(function()
minimized = not minimized
local tweenInfo = TweenInfo.new(0.3, Enum.EasingStyle.Quint, Enum.EasingDirection.Out)
if minimized then
toolbar.Visible = false
editorContainer.Visible = false
outputContainer.Visible = false
buttonContainer.Visible = false
TweenService:Create(mainFrame, tweenInfo, {Size = UDim2.new(0, 800, 0, 45)}):Play()
minimizeButton.Text = "□"
else
toolbar.Visible = true
editorContainer.Visible = true
outputContainer.Visible = true
buttonContainer.Visible = true
TweenService:Create(mainFrame, tweenInfo, {Size = originalSize}):Play()
minimizeButton.Text = "−"
end
end)
-- Close
closeButton.MouseButton1Click:Connect(function()
local tweenInfo = TweenInfo.new(0.3, Enum.EasingStyle.Back, Enum.EasingDirection.In)
local tween = TweenService:Create(mainFrame, tweenInfo, {
Size = UDim2.new(0, 0, 0, 0),
Position = UDim2.new(0.5, 0, 0.5, 0)
})
tween:Play()
tween.Completed:Wait()
screenGui:Destroy()
end)
-- Clear
clearButton.MouseButton1Click:Connect(function()
scriptBox.Text = ""
outputBox.Text = "[INFO] Editor cleared"
outputBox.TextColor3 = Color3.fromRGB(150, 150, 160)
updateOutputSize()
end)
-- Copy
copyButton.MouseButton1Click:Connect(function()
setclipboard(scriptBox.Text)
local originalText = copyButton.Text
copyButton.Text = "Copied"
wait(2)
copyButton.Text = originalText
end)
-- Save
local savedScripts = {}
saveButton.MouseButton1Click:Connect(function()
table.insert(savedScripts, scriptBox.Text)
outputBox.TextColor3 = Color3.fromRGB(255, 184, 108)
outputBox.Text = string.format("[SAVE] Script saved (%d total)", #savedScripts)
updateOutputSize()
end)
-- Load
loadButton.MouseButton1Click:Connect(function()
if #savedScripts == 0 then
outputBox.TextColor3 = Color3.fromRGB(255, 163, 72)
outputBox.Text = "[ERROR] No saved scripts found"
updateOutputSize()
return
end
scriptBox.Text = savedScripts[#savedScripts]
outputBox.TextColor3 = Color3.fromRGB(138, 173, 244)
outputBox.Text = string.format("[LOAD] Script loaded (%d/%d)", #savedScripts, #savedScripts)
updateOutputSize()
updateEditor()
end)
-- Snippets
snippetsButton.MouseButton1Click:Connect(function()
outputBox.TextColor3 = Color3.fromRGB(186, 147, 216)
outputBox.Text = [[[SNIPPETS] Available code shortcuts:
CONTROL STRUCTURES:
func - Function template
ife - If statement
ifel - If-else statement
fori - For loop (numeric)
forv - For loop (pairs/ipairs)
whi - While loop
rep - Repeat-until loop
ROBLOX SPECIFIC:
part - Create a Part
tween - TweenService template
wait - Wait function
print - Print statement
Type the keyword and it will auto-expand. Edit UPPERCASE placeholders.]]
updateOutputSize()
end)
-- Execute
executeButton.MouseButton1Click:Connect(function()
local originalSize = executeButton.Size
local smallerSize = UDim2.new(originalSize.X.Scale * 0.95, originalSize.X.Offset * 0.95, originalSize.Y.Scale * 0.95, originalSize.Y.Offset * 0.95)
TweenService:Create(executeButton, TweenInfo.new(0.1), {Size = smallerSize}):Play()
wait(0.1)
TweenService:Create(executeButton, TweenInfo.new(0.1), {Size = originalSize}):Play()
local success, err = pcall(function()
local scriptText = scriptBox.Text
if scriptText == "" or scriptText:match("^%s*$") then
outputBox.TextColor3 = Color3.fromRGB(255, 163, 72)
outputBox.Text = "[ERROR] No code to execute"
updateOutputSize()
return
end
local output = {}
local oldPrint = print
local oldWarn = warn
-- Capture print
print = function(...)
local args = {...}
local str = ""
for i, v in ipairs(args) do
str = str .. tostring(v)
if i < #args then
str = str .. " "
end
end
table.insert(output, "[PRINT] " .. str)
oldPrint(...)
end
-- Capture warn
warn = function(...)
local args = {...}
local str = ""
for i, v in ipairs(args) do
str = str .. tostring(v)
if i < #args then
str = str .. " "
end
end
table.insert(output, "[WARN] " .. str)
oldWarn(...)
end
local func, loadErr = loadstring(scriptText)
if func then
local execSuccess, execErr = pcall(func)
if execSuccess then
outputBox.TextColor3 = Color3.fromRGB(100, 255, 150)
local result = "[SUCCESS] Execution completed"
if #output > 0 then
result = result .. "\n" .. string.rep("-", 60) .. "\n" .. table.concat(output, "\n")
end
outputBox.Text = result
else
outputBox.TextColor3 = Color3.fromRGB(255, 100, 100)
outputBox.Text = "[ERROR] Runtime error:\n" .. string.rep("-", 60) .. "\n" .. tostring(execErr)
end
else
outputBox.TextColor3 = Color3.fromRGB(255, 100, 100)
outputBox.Text = "[ERROR] Syntax error:\n" .. string.rep("-", 60) .. "\n" .. tostring(loadErr)
end
print = oldPrint
warn = oldWarn
updateOutputSize()
end)
if not success then
outputBox.TextColor3 = Color3.fromRGB(255, 100, 100)
outputBox.Text = "[ERROR] Fatal error:\n" .. string.rep("-", 60) .. "\n" .. tostring(err)
updateOutputSize()
end
end)
-- Opening animation
mainFrame.Size = UDim2.new(0, 0, 0, 0)
mainFrame.Position = UDim2.new(0.5, 0, 0.5, 0)
wait(0.1)
local openTween = TweenService:Create(mainFrame, TweenInfo.new(0.6, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {
Size = UDim2.new(0, 800, 0, 550),
Position = UDim2.new(0.5, -400, 0.5, -275)
})
openTween:Play()
updateEditor()
print("Script Runner V3 loaded - Client Sided")No comments yet for this script.

![Sir Meme Hub | [16 GAMES] [$14.99 LIFETIME] | FARM/AIM/ESP](https://scriptblox.com/images/sb/-1-1791044877945.webp)

