local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local TweenService = game:GetService("TweenService") local player = Players.LocalPlayer local playerGui = player:WaitForChild("PlayerGui") -- UI helper local function new(class, props) local obj = Instance.new(class) for k,v in pairs(props or {}) do obj[k] = v end return obj end -- Create UI local screenGui = new("ScreenGui", {Name = "ClientSideScriptExecutor", ResetOnSpawn = false, Parent = playerGui}) local panel = new("Frame", { Parent = screenGui, Size = UDim2.new(0, 640, 0, 420), Position = UDim2.new(0, 24, 0, 24), BackgroundColor3 = Color3.fromRGB(28,28,30), BorderSizePixel = 0, Active = true }) local title = new("TextLabel", { Parent = panel, Size = UDim2.new(1, -12, 0, 28), Position = UDim2.new(0, 6, 0, 6), BackgroundTransparency = 1, Text = "Client-Side Script Executor", TextColor3 = Color3.fromRGB(235,235,235), Font = Enum.Font.GothamBold, TextSize = 16, TextXAlignment = Enum.TextXAlignment.Left }) local closeBtn = new("TextButton", { Parent = panel, Size = UDim2.new(0, 28, 0, 24), Position = UDim2.new(1, -34, 0, 4), BackgroundColor3 = Color3.fromRGB(60,60,60), Text = "X", TextColor3 = Color3.fromRGB(255,255,255), Font = Enum.Font.GothamBold, TextSize = 14 }) local editor = new("TextBox", { Parent = panel, Name = "Editor", Size = UDim2.new(1, -12, 1, -120), Position = UDim2.new(0, 6, 0, 36), BackgroundColor3 = Color3.fromRGB(18,18,18), TextColor3 = Color3.fromRGB(220,220,220), Font = Enum.Font.Code, TextSize = 14, ClearTextOnFocus = false, MultiLine = true, TextWrapped = false, TextXAlignment = Enum.TextXAlignment.Left, TextYAlignment = Enum.TextYAlignment.Top, Text = "-- Client-Side Script Executor\n-- Paste Lua here and press Run\n" }) local btnRun = new("TextButton", { Parent = panel, Size = UDim2.new(0, 96, 0, 36), Position = UDim2.new(0, 6, 1, -68), BackgroundColor3 = Color3.fromRGB(70,130,70), Text = "Run", TextColor3 = Color3.fromRGB(255,255,255), Font = Enum.Font.GothamSemibold, TextSize = 14 }) local status = new("TextLabel", { Parent = panel, Size = UDim2.new(0, 300, 0, 20), Position = UDim2.new(0, 110, 1, -64), BackgroundTransparency = 1, Text = "Status: Idle", TextColor3 = Color3.fromRGB(200,200,200), Font = Enum.Font.Gotham, TextSize = 12, TextXAlignment = Enum.TextXAlignment.Left }) -- Draggable helper local function makeDraggable(frame) frame.Active = true local dragging, dragStart, startPos, dragInput local function update(input) local delta = input.Position - dragStart frame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end frame.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true; dragStart = input.Position; startPos = frame.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) frame.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 update(input) end end) end makeDraggable(panel) -- Run logic (client-side only) local function setStatus(text, color) status.Text = "Status: " .. text if color then TweenService:Create(status, TweenInfo.new(0.18), {TextColor3 = color}):Play() end end btnRun.MouseButton1Click:Connect(function() local code = editor.Text if not code:match("%S") then setStatus("No code to run", Color3.fromRGB(200,120,120)) return end setStatus("Loading...", Color3.fromRGB(200,200,120)) local fn, loadErr = loadstring(code) if not fn then editor.Text = "-- Load error: " .. tostring(loadErr) .. "\n" .. editor.Text setStatus("Load error", Color3.fromRGB(200,120,120)) return end local ok, result = pcall(fn) if not ok then editor.Text = "-- Runtime error: " .. tostring(result) .. "\n" .. editor.Text setStatus("Runtime error", Color3.fromRGB(200,120,120)) else setStatus("Ran successfully", Color3.fromRGB(120,200,120)) end end) -- Close button closeBtn.MouseButton1Click:Connect(function() screenGui.Enabled = false end) -- Toggle visibility with RightControl UserInputService.InputBegan:Connect(function(input, gp) if gp then return end if input.KeyCode == Enum.KeyCode.RightControl then screenGui.Enabled = not screenGui.Enabled end end) -- Initialize screenGui.Enabled = true setStatus("Idle", Color3.fromRGB(200,200,200))