-- ===================================================== -- TWISTED PROBE - OWNER PANEL SCRIPT -- Place this in: ServerScriptService (Script) -- Or as a LocalScript under StarterPlayerScripts -- ===================================================== -- CONFIG: Add your Roblox User ID(s) here local OWNER_IDS = { 123456789, -- Replace with your Roblox User ID } -- ===================================================== -- SERVICES -- ===================================================== local Players = game:GetService("Players") local RunService = game:GetService("RunService") local TweenService = game:GetService("TweenService") local UserInputService = game:GetService("UserInputService") local LocalPlayer = Players.LocalPlayer local PlayerGui = LocalPlayer:WaitForChild("PlayerGui") -- ===================================================== -- OWNER CHECK -- ===================================================== local function isOwner(player) for _, id in ipairs(OWNER_IDS) do if player.UserId == id then return true end end return false end if not isOwner(LocalPlayer) then return -- Not the owner, stop script end -- ===================================================== -- AUTO FARM STATE -- ===================================================== local farmState = { autoFarm = false, autoCollect = false, autoRespawn = false, farmSpeed = 1, -- Multiplier farmTarget = "All", -- "All", "Probes", "Resources" totalFarmed = 0, sessionTime = 0, } -- ===================================================== -- BUILD GUI -- ===================================================== local screenGui = Instance.new("ScreenGui") screenGui.Name = "OwnerPanel" 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, 320, 0, 480) mainFrame.Position = UDim2.new(0, 20, 0.5, -240) mainFrame.BackgroundColor3 = Color3.fromRGB(15, 15, 25) mainFrame.BorderSizePixel = 0 mainFrame.Active = true mainFrame.Draggable = true mainFrame.Parent = screenGui -- Rounded corners local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 10) corner.Parent = mainFrame -- Glow stroke local stroke = Instance.new("UIStroke") stroke.Color = Color3.fromRGB(120, 80, 255) stroke.Thickness = 1.5 stroke.Parent = mainFrame -- ── Title Bar ─────────────────────────────────────── local titleBar = Instance.new("Frame") titleBar.Name = "TitleBar" titleBar.Size = UDim2.new(1, 0, 0, 44) titleBar.BackgroundColor3 = Color3.fromRGB(30, 20, 55) titleBar.BorderSizePixel = 0 titleBar.Parent = mainFrame local titleCorner = Instance.new("UICorner") titleCorner.CornerRadius = UDim.new(0, 10) titleCorner.Parent = titleBar -- Fix bottom corners of title bar local titleFix = Instance.new("Frame") titleFix.Size = UDim2.new(1, 0, 0.5, 0) titleFix.Position = UDim2.new(0, 0, 0.5, 0) titleFix.BackgroundColor3 = Color3.fromRGB(30, 20, 55) titleFix.BorderSizePixel = 0 titleFix.Parent = titleBar local titleLabel = Instance.new("TextLabel") titleLabel.Text = "⚡ TWISTED PROBE — OWNER PANEL" titleLabel.Font = Enum.Font.GothamBold titleLabel.TextSize = 13 titleLabel.TextColor3 = Color3.fromRGB(200, 170, 255) titleLabel.BackgroundTransparency = 1 titleLabel.Size = UDim2.new(1, -10, 1, 0) titleLabel.Position = UDim2.new(0, 10, 0, 0) titleLabel.TextXAlignment = Enum.TextXAlignment.Left titleLabel.Parent = titleBar -- Minimize button local minBtn = Instance.new("TextButton") minBtn.Text = "—" minBtn.Font = Enum.Font.GothamBold minBtn.TextSize = 14 minBtn.TextColor3 = Color3.fromRGB(200, 170, 255) minBtn.BackgroundColor3 = Color3.fromRGB(60, 40, 100) minBtn.Size = UDim2.new(0, 28, 0, 22) minBtn.Position = UDim2.new(1, -34, 0.5, -11) minBtn.BorderSizePixel = 0 minBtn.Parent = titleBar local minCorner = Instance.new("UICorner") minCorner.CornerRadius = UDim.new(0, 5) minCorner.Parent = minBtn -- ── Content Frame ─────────────────────────────────── local content = Instance.new("ScrollingFrame") content.Name = "Content" content.Size = UDim2.new(1, -10, 1, -54) content.Position = UDim2.new(0, 5, 0, 49) content.BackgroundTransparency = 1 content.ScrollBarThickness = 3 content.ScrollBarImageColor3 = Color3.fromRGB(120, 80, 255) content.CanvasSize = UDim2.new(0, 0, 0, 600) content.Parent = mainFrame local listLayout = Instance.new("UIListLayout") listLayout.Padding = UDim.new(0, 6) listLayout.SortOrder = Enum.SortOrder.LayoutOrder listLayout.Parent = content local padding = Instance.new("UIPadding") padding.PaddingTop = UDim.new(0, 6) padding.PaddingLeft = UDim.new(0, 6) padding.PaddingRight = UDim.new(0, 6) padding.Parent = content -- ===================================================== -- HELPER: Create a section label -- ===================================================== local function makeSection(text) local lbl = Instance.new("TextLabel") lbl.Text = " " .. text lbl.Font = Enum.Font.GothamBold lbl.TextSize = 11 lbl.TextColor3 = Color3.fromRGB(120, 80, 255) lbl.BackgroundColor3 = Color3.fromRGB(25, 15, 45) lbl.Size = UDim2.new(1, 0, 0, 24) lbl.TextXAlignment = Enum.TextXAlignment.Left lbl.BorderSizePixel = 0 lbl.Parent = content local c = Instance.new("UICorner") c.CornerRadius = UDim.new(0, 6) c.Parent = lbl return lbl end -- ===================================================== -- HELPER: Create a toggle button -- ===================================================== local function makeToggle(labelText, default, callback) local row = Instance.new("Frame") row.Size = UDim2.new(1, 0, 0, 36) row.BackgroundColor3 = Color3.fromRGB(22, 22, 38) row.BorderSizePixel = 0 row.Parent = content local rc = Instance.new("UICorner") rc.CornerRadius = UDim.new(0, 8) rc.Parent = row local lbl = Instance.new("TextLabel") lbl.Text = labelText lbl.Font = Enum.Font.Gotham lbl.TextSize = 13 lbl.TextColor3 = Color3.fromRGB(220, 220, 240) lbl.BackgroundTransparency = 1 lbl.Size = UDim2.new(1, -60, 1, 0) lbl.Position = UDim2.new(0, 10, 0, 0) lbl.TextXAlignment = Enum.TextXAlignment.Left lbl.Parent = row local btn = Instance.new("TextButton") btn.Size = UDim2.new(0, 46, 0, 22) btn.Position = UDim2.new(1, -52, 0.5, -11) btn.Font = Enum.Font.GothamBold btn.TextSize = 10 btn.BorderSizePixel = 0 btn.Parent = row local bc = Instance.new("UICorner") bc.CornerRadius = UDim.new(1, 0) bc.Parent = btn local state = default or false local function refresh() if state then btn.Text = "ON" btn.BackgroundColor3 = Color3.fromRGB(80, 200, 120) btn.TextColor3 = Color3.fromRGB(255, 255, 255) else btn.Text = "OFF" btn.BackgroundColor3 = Color3.fromRGB(80, 40, 40) btn.TextColor3 = Color3.fromRGB(180, 100, 100) end end refresh() btn.MouseButton1Click:Connect(function() state = not state refresh() if callback then callback(state) end end) return row, function() return state end end -- ===================================================== -- HELPER: Create a button -- ===================================================== local function makeButton(labelText, callback) local btn = Instance.new("TextButton") btn.Text = labelText btn.Font = Enum.Font.GothamBold btn.TextSize = 13 btn.TextColor3 = Color3.fromRGB(255, 255, 255) btn.BackgroundColor3 = Color3.fromRGB(80, 50, 160) btn.Size = UDim2.new(1, 0, 0, 34) btn.BorderSizePixel = 0 btn.Parent = content local bc = Instance.new("UICorner") bc.CornerRadius = UDim.new(0, 8) bc.Parent = btn btn.MouseButton1Click:Connect(function() TweenService:Create(btn, TweenInfo.new(0.1), { BackgroundColor3 = Color3.fromRGB(120, 80, 220) }):Play() task.delay(0.15, function() TweenService:Create(btn, TweenInfo.new(0.1), { BackgroundColor3 = Color3.fromRGB(80, 50, 160) }):Play() end) if callback then callback() end end) return btn end -- ===================================================== -- HELPER: Status label -- ===================================================== local function makeStatusLabel() local lbl = Instance.new("TextLabel") lbl.Text = "Status: Idle" lbl.Font = Enum.Font.Gotham lbl.TextSize = 12 lbl.TextColor3 = Color3.fromRGB(160, 160, 180) lbl.BackgroundColor3 = Color3.fromRGB(18, 18, 30) lbl.Size = UDim2.new(1, 0, 0, 28) lbl.TextXAlignment = Enum.TextXAlignment.Center lbl.BorderSizePixel = 0 lbl.Parent = content local c = Instance.new("UICorner") c.CornerRadius = UDim.new(0, 6) c.Parent = lbl return lbl end -- ===================================================== -- BUILD PANEL CONTENTS -- ===================================================== -- §1 AUTO FARM makeSection("🌾 AUTO FARM") local statusLabel = makeStatusLabel() makeToggle("Auto Farm", false, function(on) farmState.autoFarm = on statusLabel.Text = on and "Status: ✅ Farming Active" or "Status: Idle" statusLabel.TextColor3 = on and Color3.fromRGB(100, 220, 130) or Color3.fromRGB(160, 160, 180) end) makeToggle("Auto Collect Items", false, function(on) farmState.autoCollect = on end) makeToggle("Auto Respawn on Death", false, function(on) farmState.autoRespawn = on end) -- §2 FARM SETTINGS makeSection("⚙️ FARM SETTINGS") -- Speed display local speedLabel = Instance.new("TextLabel") speedLabel.Text = "Farm Speed: x1" speedLabel.Font = Enum.Font.Gotham speedLabel.TextSize = 12 speedLabel.TextColor3 = Color3.fromRGB(200, 170, 255) speedLabel.BackgroundTransparency = 1 speedLabel.Size = UDim2.new(1, 0, 0, 22) speedLabel.TextXAlignment = Enum.TextXAlignment.Center speedLabel.Parent = content -- Speed buttons row local speedRow = Instance.new("Frame") speedRow.Size = UDim2.new(1, 0, 0, 34) speedRow.BackgroundTransparency = 1 speedRow.Parent = content local speedRowLayout = Instance.new("UIListLayout") speedRowLayout.FillDirection = Enum.FillDirection.Horizontal speedRowLayout.Padding = UDim.new(0, 4) speedRowLayout.Parent = speedRow local speeds = {"x1", "x2", "x5", "x10"} for i, spd in ipairs(speeds) do local b = Instance.new("TextButton") b.Text = spd b.Font = Enum.Font.GothamBold b.TextSize = 12 b.TextColor3 = Color3.fromRGB(220, 220, 255) b.BackgroundColor3 = i == 1 and Color3.fromRGB(80, 50, 160) or Color3.fromRGB(35, 30, 55) b.Size = UDim2.new(0.23, -3, 1, 0) b.BorderSizePixel = 0 b.Parent = speedRow local bc2 = Instance.new("UICorner") bc2.CornerRadius = UDim.new(0, 6) bc2.Parent = b b.MouseButton1Click:Connect(function() farmState.farmSpeed = tonumber(spd:sub(2)) or 1 speedLabel.Text = "Farm Speed: " .. spd -- Reset all button colors for _, child in ipairs(speedRow:GetChildren()) do if child:IsA("TextButton") then child.BackgroundColor3 = Color3.fromRGB(35, 30, 55) end end b.BackgroundColor3 = Color3.fromRGB(80, 50, 160) end) end -- Farm target local targetLabel = Instance.new("TextLabel") targetLabel.Text = "Target: All" targetLabel.Font = Enum.Font.Gotham targetLabel.TextSize = 12 targetLabel.TextColor3 = Color3.fromRGB(200, 170, 255) targetLabel.BackgroundTransparency = 1 targetLabel.Size = UDim2.new(1, 0, 0, 22) targetLabel.TextXAlignment = Enum.TextXAlignment.Center targetLabel.Parent = content local targetRow = Instance.new("Frame") targetRow.Size = UDim2.new(1, 0, 0, 34) targetRow.BackgroundTransparency = 1 targetRow.Parent = content local targetRowLayout = Instance.new("UIListLayout") targetRowLayout.FillDirection = Enum.FillDirection.Horizontal targetRowLayout.Padding = UDim.new(0, 4) targetRowLayout.Parent = targetRow local targets = {"All", "Probes", "Resources"} for i, tgt in ipairs(targets) do local b = Instance.new("TextButton") b.Text = tgt b.Font = Enum.Font.GothamBold b.TextSize = 11 b.TextColor3 = Color3.fromRGB(220, 220, 255) b.BackgroundColor3 = i == 1 and Color3.fromRGB(80, 50, 160) or Color3.fromRGB(35, 30, 55) b.Size = UDim2.new(0.31, -3, 1, 0) b.BorderSizePixel = 0 b.Parent = targetRow local bc3 = Instance.new("UICorner") bc3.CornerRadius = UDim.new(0, 6) bc3.Parent = b b.MouseButton1Click:Connect(function() farmState.farmTarget = tgt targetLabel.Text = "Target: " .. tgt for _, child in ipairs(targetRow:GetChildren()) do if child:IsA("TextButton") then child.BackgroundColor3 = Color3.fromRGB(35, 30, 55) end end b.BackgroundColor3 = Color3.fromRGB(80, 50, 160) end) end -- §3 ADMIN ACTIONS makeSection("🛡️ ADMIN ACTIONS") makeButton("💰 Give Max Currency", function() -- Fire a RemoteEvent to the server to give currency -- Example: game.ReplicatedStorage.AdminEvents.GiveCurrency:FireServer(LocalPlayer, 999999) print("[OwnerPanel] Give Max Currency triggered") end) makeButton("⚡ Set Walk Speed (Server)", function() -- Example: game.ReplicatedStorage.AdminEvents.SetSpeed:FireServer(LocalPlayer, 100) print("[OwnerPanel] Set Walk Speed triggered") end) makeButton("🧹 Clear All Probes", function() -- Example: game.ReplicatedStorage.AdminEvents.ClearProbes:FireServer() print("[OwnerPanel] Clear All Probes triggered") end) makeButton("♻️ Reset All Players", function() -- Example: game.ReplicatedStorage.AdminEvents.ResetAll:FireServer() print("[OwnerPanel] Reset All Players triggered") end) -- §4 STATS makeSection("📊 SESSION STATS") local statsLabel = Instance.new("TextLabel") statsLabel.Text = "Farmed: 0 | Time: 0s" statsLabel.Font = Enum.Font.Gotham statsLabel.TextSize = 12 statsLabel.TextColor3 = Color3.fromRGB(170, 200, 255) statsLabel.BackgroundColor3 = Color3.fromRGB(18, 18, 30) statsLabel.Size = UDim2.new(1, 0, 0, 28) statsLabel.TextXAlignment = Enum.TextXAlignment.Center statsLabel.BorderSizePixel = 0 statsLabel.Parent = content local statCorner = Instance.new("UICorner") statCorner.CornerRadius = UDim.new(0, 6) statCorner.Parent = statsLabel -- ===================================================== -- AUTO-RESIZE CANVAS -- ===================================================== listLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function() content.CanvasSize = UDim2.new(0, 0, 0, listLayout.AbsoluteContentSize.Y + 12) end) -- ===================================================== -- MINIMIZE / EXPAND -- ===================================================== local minimized = false minBtn.MouseButton1Click:Connect(function() minimized = not minimized content.Visible = not minimized mainFrame.Size = minimized and UDim2.new(0, 320, 0, 44) or UDim2.new(0, 320, 0, 480) minBtn.Text = minimized and "□" or "—" end) -- ===================================================== -- HEARTBEAT: Auto Farm Loop + Stats Timer -- ===================================================== local elapsed = 0 RunService.Heartbeat:Connect(function(dt) -- Session timer if farmState.autoFarm then elapsed += dt farmState.sessionTime = math.floor(elapsed) -- ── YOUR CUSTOM FARM LOGIC GOES HERE ────────────── -- This loop fires every frame while autoFarm is ON. -- Connect this to your game's actual farming mechanic. -- Example: -- local char = LocalPlayer.Character -- if char then -- -- move character toward nearest probe, collect it, etc. -- end -- ──────────────────────────────────────────────── statsLabel.Text = string.format( "Farmed: %d | Time: %ds | Speed: x%d", farmState.totalFarmed, farmState.sessionTime, farmState.farmSpeed ) end -- Auto Respawn if farmState.autoRespawn then local char = LocalPlayer.Character if char then local hum = char:FindFirstChild("Humanoid") if hum and hum.Health <= 0 then task.wait(1) LocalPlayer:LoadCharacter() end end end end) -- ===================================================== -- KEYBOARD SHORTCUT: RightShift to toggle panel -- ===================================================== UserInputService.InputBegan:Connect(function(input, gameProcessed) if gameProcessed then return end if input.KeyCode == Enum.KeyCode.RightShift then mainFrame.Visible = not mainFrame.Visible end end) print("[OwnerPanel] Twisted Probe Owner Panel loaded for: " .. LocalPlayer.Name)