-- 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")