local ts = game:GetService("TweenService") local uis = game:GetService("UserInputService") local sc = game:GetService("ScriptContext") local icons = loadstring(game:HttpGetAsync("https://raw.githubusercontent.com/Footagesus/Icons/main/Main-v2.lua"))() icons.SetIconsType("lucide") local cg = game:GetService("CoreGui") pcall(function() cg:FindFirstChild("rbxconsole"):Destroy() end) local vp = workspace.CurrentCamera.ViewportSize local scale = vp.X < 600 and 0.78 or (vp.X < 1000 and 0.9 or 1) local W = math.floor(640*scale) local H = math.floor(520*scale) local function f(n) return math.max(8, math.floor(n*scale)) end local theme = { bg = Color3.fromRGB(6,10,22), card = Color3.fromRGB(9,15,32), deep = Color3.fromRGB(4,7,16), bar = Color3.fromRGB(7,12,28), blu = Color3.fromRGB(40,120,255), bluLt = Color3.fromRGB(100,170,255), bluDk = Color3.fromRGB(20,70,180), txt = Color3.fromRGB(210,230,255), txtDim = Color3.fromRGB(100,140,200), txtMut = Color3.fromRGB(55,85,140), stroke = Color3.fromRGB(30,80,200), warn = Color3.fromRGB(255,200,60), warnBg = Color3.fromRGB(28,22,4), err = Color3.fromRGB(255,80,80), errBg = Color3.fromRGB(28,5,5), info = Color3.fromRGB(80,190,255), infoBg = Color3.fromRGB(4,18,34), log = Color3.fromRGB(160,210,255), logBg = Color3.fromRGB(8,14,30), fix = Color3.fromRGB(80,230,140), fixBg = Color3.fromRGB(4,24,12), } local t = theme local logs, conns, expanded = {}, {}, {} local filterOn = {warn=true,error=true,info=true,print=true} local search = "" local fixes = { {"attempt to index nil", "Variable is nil — check if FindFirstChild() returns nil before indexing it."}, {"attempt to call nil", "Calling a nil value — function doesn't exist or hasn't been defined yet."}, {"attempt to perform arithmetic", "Arithmetic on nil — use 'value = x or 0' as a fallback."}, {"attempt to concatenate", "Concatenating nil — wrap with tostring(val) first."}, {"stack overflow", "Infinite recursion — your function is calling itself with no exit condition."}, {"Script timeout", "Infinite loop with no wait — add task.wait() inside the loop."}, {"invalid argument", "Wrong argument type passed to a function — check expected types."}, {"is not a valid member", "Typo in property/child name — use :GetChildren() to check what exists."}, {"Infinite yield possible", "WaitForChild is waiting forever — add a timeout: WaitForChild('x', 5)"}, {"bad argument", "Wrong type passed — check the error message for expected vs got."}, } local function getSolution(msg) for _,v in ipairs(fixes) do if msg:lower():find(v[1]:lower()) then return v[2] end end end local function getLine(msg) local l = msg:match(":(%d+):") or msg:match("line (%d+)") return l and "line "..l end -- gui setup local gui = Instance.new("ScreenGui") gui.Name = "rbxconsole" gui.ResetOnSpawn = false gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling gui.IgnoreGuiInset = true gui.DisplayOrder = 999 gui.Parent = cg local win = Instance.new("Frame", gui) win.Size = UDim2.new(0,W,0,0) win.Position = UDim2.new(0.5,-W/2,0.5,-H/2) win.BackgroundColor3 = t.bg win.BorderSizePixel = 0 win.ClipsDescendants = true Instance.new("UICorner", win).CornerRadius = UDim.new(0,14) do local s = Instance.new("UIStroke", win) s.Color = t.blu; s.Thickness = 1.5; s.Transparency = 0.3 ts:Create(s, TweenInfo.new(2,Enum.EasingStyle.Sine,Enum.EasingDirection.InOut,-1,true), { Transparency=0.72, Color=t.bluLt }):Play() local g = Instance.new("UIGradient", win) g.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromRGB(8,14,32)), ColorSequenceKeypoint.new(0.5, Color3.fromRGB(5,9,20)), ColorSequenceKeypoint.new(1, Color3.fromRGB(3,5,12)), }) g.Rotation = 135 end ts:Create(win, TweenInfo.new(0.4,Enum.EasingStyle.Back,Enum.EasingDirection.Out), { Size=UDim2.new(0,W,0,H) }):Play() -- titlebar local th = f(44) local tbar = Instance.new("Frame", win) tbar.Size = UDim2.new(1,0,0,th) tbar.BackgroundColor3 = t.bar tbar.BorderSizePixel = 0 Instance.new("UICorner", tbar).CornerRadius = UDim.new(0,14) local fix = Instance.new("Frame", tbar) fix.Size = UDim2.new(1,0,0,14); fix.Position = UDim2.new(0,0,1,-14) fix.BackgroundColor3 = t.bar; fix.BorderSizePixel = 0 local tline = Instance.new("Frame", tbar) tline.Size = UDim2.new(1,0,0,1); tline.Position = UDim2.new(0,0,1,-1) tline.BackgroundColor3 = t.blu; tline.BackgroundTransparency = 0.35; tline.BorderSizePixel = 0 ts:Create(tline, TweenInfo.new(2,Enum.EasingStyle.Sine,Enum.EasingDirection.InOut,-1,true), { BackgroundColor3=t.bluLt }):Play() local tic = Instance.new("ImageLabel", tbar) tic.Size = UDim2.new(0,f(15),0,f(15)); tic.Position = UDim2.new(0,f(12),0.5,-f(8)) tic.BackgroundTransparency = 1; tic.Image = icons.GetIcon("terminal") tic.ImageColor3 = t.bluLt local ttl = Instance.new("TextLabel", tbar) ttl.Size = UDim2.new(1,-f(95),1,0); ttl.Position = UDim2.new(0,f(32),0,0) ttl.BackgroundTransparency = 1; ttl.Text = "roblox console" ttl.TextColor3 = t.txtDim; ttl.TextSize = f(11); ttl.Font = Enum.Font.GothamBold ttl.TextXAlignment = Enum.TextXAlignment.Left local xbtn = Instance.new("ImageButton", tbar) xbtn.Size = UDim2.new(0,f(22),0,f(22)); xbtn.Position = UDim2.new(1,-f(30),0.5,-f(11)) xbtn.BackgroundColor3 = Color3.fromRGB(150,25,25); xbtn.BackgroundTransparency = 0.25 xbtn.BorderSizePixel = 0; xbtn.Image = icons.GetIcon("x"); xbtn.ImageColor3 = Color3.fromRGB(255,190,190) Instance.new("UICorner", xbtn).CornerRadius = UDim.new(0,6) xbtn.MouseButton1Click:Connect(function() ts:Create(win, TweenInfo.new(0.22,Enum.EasingStyle.Quart,Enum.EasingDirection.In), { Size=UDim2.new(0,W,0,0), Position=UDim2.new(0.5,-W/2,0.5,0) }):Play() for _,c in ipairs(conns) do c:Disconnect() end task.delay(0.25, function() gui:Destroy() end) end) local minbtn = Instance.new("ImageButton", tbar) minbtn.Size = UDim2.new(0,f(22),0,f(22)); minbtn.Position = UDim2.new(1,-f(58),0.5,-f(11)) minbtn.BackgroundColor3 = t.bluDk; minbtn.BackgroundTransparency = 0.35 minbtn.BorderSizePixel = 0; minbtn.Image = icons.GetIcon("minus"); minbtn.ImageColor3 = t.bluLt Instance.new("UICorner", minbtn).CornerRadius = UDim.new(0,6) local isMin = false minbtn.MouseButton1Click:Connect(function() isMin = not isMin ts:Create(win, TweenInfo.new(0.25,Enum.EasingStyle.Quart), { Size = isMin and UDim2.new(0,W,0,th) or UDim2.new(0,W,0,H) }):Play() minbtn.Image = icons.GetIcon(isMin and "plus" or "minus") end) -- drag local dragging, dstart, wstart = false, nil, nil tbar.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then dragging = true; dstart = i.Position; wstart = win.Position end end) tbar.InputEnded:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then dragging = false end end) uis.InputChanged:Connect(function(i) if dragging and (i.UserInputType == Enum.UserInputType.MouseMovement or i.UserInputType == Enum.UserInputType.Touch) then local d = i.Position - dstart win.Position = UDim2.new(wstart.X.Scale, wstart.X.Offset+d.X, wstart.Y.Scale, wstart.Y.Offset+d.Y) end end) local body = Instance.new("Frame", win) body.Size = UDim2.new(1,0,1,-th); body.Position = UDim2.new(0,0,0,th) body.BackgroundTransparency = 1 -- toolbar row local tbh = f(40) local toolbar = Instance.new("Frame", body) toolbar.Size = UDim2.new(1,-f(24),0,tbh); toolbar.Position = UDim2.new(0,f(12),0,f(10)) toolbar.BackgroundColor3 = t.card; toolbar.BorderSizePixel = 0 Instance.new("UICorner", toolbar).CornerRadius = UDim.new(0,10) local tbs = Instance.new("UIStroke", toolbar) tbs.Color = t.stroke; tbs.Thickness = 1; tbs.Transparency = 0.55 local sic = Instance.new("ImageLabel", toolbar) sic.Size = UDim2.new(0,f(13),0,f(13)); sic.Position = UDim2.new(0,f(10),0.5,-f(7)) sic.BackgroundTransparency = 1; sic.Image = icons.GetIcon("search"); sic.ImageColor3 = t.txtMut local sbox = Instance.new("TextBox", toolbar) sbox.Size = UDim2.new(0,f(148),1,-f(10)); sbox.Position = UDim2.new(0,f(27),0,f(5)) sbox.BackgroundTransparency = 1; sbox.BorderSizePixel = 0 sbox.PlaceholderText = "search..."; sbox.PlaceholderColor3 = t.txtMut sbox.TextColor3 = t.txt; sbox.TextSize = f(11); sbox.Font = Enum.Font.Gotham sbox.ClearTextOnFocus = false; sbox.Text = "" sbox.TextXAlignment = Enum.TextXAlignment.Left Instance.new("UIPadding", sbox).PaddingLeft = UDim.new(0,4) local divider = Instance.new("Frame", toolbar) divider.Size = UDim2.new(0,1,0,f(18)); divider.Position = UDim2.new(0,f(182),0.5,-f(9)) divider.BackgroundColor3 = t.stroke; divider.BackgroundTransparency = 0.55; divider.BorderSizePixel = 0 local fdefs = { {k="warn", ico="triangle-alert", lbl="Warn", col=t.warn}, {k="error", ico="circle-x", lbl="Error", col=t.err}, {k="info", ico="info", lbl="Info", col=t.info}, {k="print", ico="square-terminal", lbl="Print", col=t.log}, } local fx = f(190) for _,fd in ipairs(fdefs) do local btn = Instance.new("TextButton", toolbar) btn.Size = UDim2.new(0,f(54),0,tbh-f(10)); btn.Position = UDim2.new(0,fx,0,f(5)) btn.BackgroundColor3 = t.deep; btn.BackgroundTransparency = 0.15 btn.BorderSizePixel = 0; btn.Text = "" Instance.new("UICorner", btn).CornerRadius = UDim.new(0,6) local bs = Instance.new("UIStroke", btn); bs.Color = fd.col; bs.Thickness = 1; bs.Transparency = 0.5 local bi = Instance.new("ImageLabel", btn) bi.Size = UDim2.new(0,f(11),0,f(11)); bi.Position = UDim2.new(0,f(6),0.5,-f(6)) bi.BackgroundTransparency = 1; bi.Image = icons.GetIcon(fd.ico); bi.ImageColor3 = fd.col local bl = Instance.new("TextLabel", btn) bl.Size = UDim2.new(1,-f(19),1,0); bl.Position = UDim2.new(0,f(19),0,0) bl.BackgroundTransparency = 1; bl.Text = fd.lbl bl.TextColor3 = fd.col; bl.TextSize = f(10); bl.Font = Enum.Font.GothamBold bl.TextXAlignment = Enum.TextXAlignment.Left fx = fx + f(58) local k,br,bss,bic,blbl = fd.k,btn,bs,bi,bl btn.MouseButton1Click:Connect(function() filterOn[k] = not filterOn[k] local on = filterOn[k] br.BackgroundTransparency = on and 0.15 or 0.78 bss.Transparency = on and 0.5 or 0.9 bic.ImageTransparency = on and 0 or 0.7 blbl.TextTransparency = on and 0 or 0.7 _G._rbxconsole_rebuild() end) end local clr = Instance.new("TextButton", toolbar) clr.Size = UDim2.new(0,f(56),0,tbh-f(10)); clr.Position = UDim2.new(1,-f(62),0,f(5)) clr.BackgroundColor3 = Color3.fromRGB(26,5,5); clr.BackgroundTransparency = 0.15 clr.BorderSizePixel = 0; clr.Text = "" Instance.new("UICorner", clr).CornerRadius = UDim.new(0,6) Instance.new("UIStroke", clr).Color = Color3.fromRGB(180,35,35) local ci = Instance.new("ImageLabel", clr) ci.Size = UDim2.new(0,f(12),0,f(12)); ci.Position = UDim2.new(0,f(7),0.5,-f(6)) ci.BackgroundTransparency = 1; ci.Image = icons.GetIcon("trash-2"); ci.ImageColor3 = Color3.fromRGB(255,80,80) local cl = Instance.new("TextLabel", clr) cl.Size = UDim2.new(1,-f(21),1,0); cl.Position = UDim2.new(0,f(21),0,0) cl.BackgroundTransparency = 1; cl.Text = "clear" cl.TextColor3 = Color3.fromRGB(255,80,80); cl.TextSize = f(10); cl.Font = Enum.Font.GothamBold cl.TextXAlignment = Enum.TextXAlignment.Left clr.MouseButton1Click:Connect(function() logs={}; expanded={}; _G._rbxconsole_rebuild() end) -- stat row local sy = tbh+f(16) local statbar = Instance.new("Frame", body) statbar.Size = UDim2.new(1,-f(24),0,f(22)); statbar.Position = UDim2.new(0,f(12),0,sy) statbar.BackgroundTransparency = 1 local slbls = {} local sdefs = { {k="error",ico="circle-x",col=t.err}, {k="warn",ico="triangle-alert",col=t.warn}, {k="info",ico="info",col=t.info}, {k="print",ico="square-terminal",col=t.log}, } local sx = 0 for _,sd in ipairs(sdefs) do local sf = Instance.new("Frame", statbar) sf.Size = UDim2.new(0,f(70),1,0); sf.Position = UDim2.new(0,sx,0,0); sf.BackgroundTransparency = 1 local si = Instance.new("ImageLabel", sf) si.Size = UDim2.new(0,f(12),0,f(12)); si.Position = UDim2.new(0,0,0.5,-f(6)) si.BackgroundTransparency = 1; si.Image = icons.GetIcon(sd.ico); si.ImageColor3 = sd.col local slbl = Instance.new("TextLabel", sf) slbl.Size = UDim2.new(1,-f(15),1,0); slbl.Position = UDim2.new(0,f(15),0,0) slbl.BackgroundTransparency = 1; slbl.Text = "0" slbl.TextColor3 = sd.col; slbl.TextSize = f(11); slbl.Font = Enum.Font.GothamBold slbl.TextXAlignment = Enum.TextXAlignment.Left slbls[sd.k] = slbl; sx = sx+f(74) end -- log list local ly = sy+f(28) local lh = H-th-ly-f(12) local list = Instance.new("ScrollingFrame", body) list.Size = UDim2.new(1,-f(24),0,lh); list.Position = UDim2.new(0,f(12),0,ly) list.BackgroundColor3 = t.deep; list.BorderSizePixel = 0 list.ScrollBarThickness = 3; list.ScrollBarImageColor3 = t.blu list.CanvasSize = UDim2.new(0,0,0,0); list.AutomaticCanvasSize = Enum.AutomaticSize.Y Instance.new("UICorner", list).CornerRadius = UDim.new(0,10) local ls = Instance.new("UIStroke", list); ls.Color = t.stroke; ls.Thickness = 1; ls.Transparency = 0.5 local ll = Instance.new("UIListLayout", list) ll.Padding = UDim.new(0,f(3)); ll.SortOrder = Enum.SortOrder.LayoutOrder local lp = Instance.new("UIPadding", list) lp.PaddingTop = UDim.new(0,f(5)); lp.PaddingLeft = UDim.new(0,f(5)) lp.PaddingRight = UDim.new(0,f(5)); lp.PaddingBottom = UDim.new(0,f(5)) local empty = Instance.new("TextLabel", list) empty.Size = UDim2.new(1,0,0,f(45)); empty.BackgroundTransparency = 1 empty.Text = "waiting for output..."; empty.TextColor3 = t.txtMut empty.TextSize = f(11); empty.Font = Enum.Font.Gotham; empty.LayoutOrder = 0 -- toast for copy feedback local function toast(msg) local old = gui:FindFirstChild("_toast") if old then old:Destroy() end local lbl = Instance.new("TextLabel", gui) lbl.Name = "_toast" lbl.Size = UDim2.new(0,f(170),0,f(28)) lbl.Position = UDim2.new(0.5,-f(85),0,f(18)) lbl.BackgroundColor3 = t.bluDk; lbl.BackgroundTransparency = 0.1 lbl.BorderSizePixel = 0; lbl.Text = "copied!" lbl.TextColor3 = t.bluLt; lbl.TextSize = f(10); lbl.Font = Enum.Font.GothamBold; lbl.ZIndex = 50 Instance.new("UICorner", lbl).CornerRadius = UDim.new(0,7) ts:Create(lbl, TweenInfo.new(0.4,Enum.EasingStyle.Quart,Enum.EasingDirection.Out,0,false,1), { BackgroundTransparency=1, TextTransparency=1 }):Play() task.delay(1.5, function() if lbl and lbl.Parent then lbl:Destroy() end end) end -- build row local order = 0 local function buildRow(entry, idx) order = order+1 local tc, bg, ico, tag if entry.t == "error" then tc=t.err; bg=t.errBg; ico="circle-x"; tag="ERR" elseif entry.t == "warn" then tc=t.warn; bg=t.warnBg; ico="triangle-alert"; tag="WRN" elseif entry.t == "info" then tc=t.info; bg=t.infoBg; ico="info"; tag="INF" else tc=t.log; bg=t.logBg; ico="square-terminal"; tag="LOG" end local sol = getSolution(entry.m) local line = getLine(entry.m) local exp = expanded[idx] or false local CH = f(46) local MH = f(38) local SH = sol and f(30) or 0 local EH = f(12)+MH+SH+f(10) local rh = exp and EH or CH local row = Instance.new("Frame", list) row.Size = UDim2.new(1,0,0,rh); row.BackgroundColor3 = bg row.BorderSizePixel = 0; row.LayoutOrder = order; row.ClipsDescendants = true Instance.new("UICorner", row).CornerRadius = UDim.new(0,8) local rs = Instance.new("UIStroke", row); rs.Color = tc; rs.Thickness = 1; rs.Transparency = 0.75 local acbar = Instance.new("Frame", row) acbar.Size = UDim2.new(0,3,1,-f(8)); acbar.Position = UDim2.new(0,0,0,f(4)) acbar.BackgroundColor3 = tc; acbar.BorderSizePixel = 0 Instance.new("UICorner", acbar).CornerRadius = UDim.new(1,0) local ric = Instance.new("ImageLabel", row) ric.Size = UDim2.new(0,f(13),0,f(13)); ric.Position = UDim2.new(0,f(9),0,f(9)) ric.BackgroundTransparency = 1; ric.Image = icons.GetIcon(ico); ric.ImageColor3 = tc local taglbl = Instance.new("TextLabel", row) taglbl.Size = UDim2.new(0,f(30),0,f(15)); taglbl.Position = UDim2.new(0,f(26),0,f(7)) taglbl.BackgroundColor3 = tc; taglbl.BackgroundTransparency = 0.8; taglbl.BorderSizePixel = 0 taglbl.Text = tag; taglbl.TextColor3 = tc; taglbl.TextSize = f(7); taglbl.Font = Enum.Font.GothamBold Instance.new("UICorner", taglbl).CornerRadius = UDim.new(0,3) if line then local ll2 = Instance.new("TextLabel", row) ll2.Size = UDim2.new(0,f(52),0,f(15)); ll2.Position = UDim2.new(0,f(60),0,f(7)) ll2.BackgroundTransparency = 1; ll2.Text = line ll2.TextColor3 = t.txtMut; ll2.TextSize = f(7); ll2.Font = Enum.Font.Gotham ll2.TextXAlignment = Enum.TextXAlignment.Left end local chev = Instance.new("ImageLabel", row) chev.Size = UDim2.new(0,f(12),0,f(12)); chev.Position = UDim2.new(1,-f(30),0,f(8)) chev.BackgroundTransparency = 1 chev.Image = icons.GetIcon(exp and "chevron-up" or "chevron-down") chev.ImageColor3 = t.txtMut local tslbl = Instance.new("TextLabel", row) tslbl.Size = UDim2.new(0,f(60),0,f(15)); tslbl.Position = UDim2.new(1,-f(82),0,f(8)) tslbl.BackgroundTransparency = 1; tslbl.Text = entry.ts tslbl.TextColor3 = t.txtMut; tslbl.TextSize = f(7); tslbl.Font = Enum.Font.Gotham tslbl.TextXAlignment = Enum.TextXAlignment.Right local mlbl = Instance.new("TextLabel", row) mlbl.BackgroundTransparency = 1; mlbl.Text = entry.m mlbl.TextColor3 = tc; mlbl.TextSize = f(11); mlbl.Font = Enum.Font.Gotham mlbl.TextXAlignment = Enum.TextXAlignment.Left if exp then mlbl.Size = UDim2.new(1,-f(14),0,MH); mlbl.Position = UDim2.new(0,f(9),0,f(26)) mlbl.TextWrapped = true; mlbl.TextTruncate = Enum.TextTruncate.None else mlbl.Size = UDim2.new(1,-f(100),0,f(18)); mlbl.Position = UDim2.new(0,f(9),0,f(25)) mlbl.TextWrapped = false; mlbl.TextTruncate = Enum.TextTruncate.AtEnd end if exp and sol then local sb = Instance.new("Frame", row) sb.Size = UDim2.new(1,-f(12),0,SH); sb.Position = UDim2.new(0,f(6),0,f(26)+MH+f(4)) sb.BackgroundColor3 = t.fixBg; sb.BorderSizePixel = 0 Instance.new("UICorner", sb).CornerRadius = UDim.new(0,6) local sbs = Instance.new("UIStroke", sb); sbs.Color = t.fix; sbs.Thickness = 1; sbs.Transparency = 0.45 local sbi = Instance.new("ImageLabel", sb) sbi.Size = UDim2.new(0,f(11),0,f(11)); sbi.Position = UDim2.new(0,f(6),0.5,-f(6)) sbi.BackgroundTransparency = 1; sbi.Image = icons.GetIcon("lightbulb"); sbi.ImageColor3 = t.fix local sbl = Instance.new("TextLabel", sb) sbl.Size = UDim2.new(1,-f(22),1,0); sbl.Position = UDim2.new(0,f(20),0,0) sbl.BackgroundTransparency = 1; sbl.Text = sol sbl.TextColor3 = t.fix; sbl.TextSize = f(8); sbl.Font = Enum.Font.Gotham sbl.TextXAlignment = Enum.TextXAlignment.Left; sbl.TextWrapped = true end local cbtn = Instance.new("TextButton", row) cbtn.Size = UDim2.new(1,0,1,0); cbtn.BackgroundTransparency = 1; cbtn.Text = ""; cbtn.ZIndex = 5 local msg = entry.m cbtn.MouseButton1Click:Connect(function() if setclipboard then setclipboard(msg) elseif Clipboard then Clipboard.set(msg) end toast("copied!") ts:Create(row, TweenInfo.new(0.08), {BackgroundTransparency=0.45}):Play() task.delay(0.1, function() if row and row.Parent then ts:Create(row, TweenInfo.new(0.18), {BackgroundTransparency=0}):Play() end end) expanded[idx] = not expanded[idx] _G._rbxconsole_rebuild() end) end local function updateStats() local c = {warn=0,error=0,info=0,print=0} for _,l in ipairs(logs) do if c[l.t] then c[l.t]=c[l.t]+1 end end -- remap slbls.warn.Text = tostring(c.warn) slbls.error.Text = tostring(c.error) slbls.info.Text = tostring(c.info) slbls.print.Text = tostring(c.print) end _G._rbxconsole_rebuild = function() for _,c in ipairs(list:GetChildren()) do if c:IsA("Frame") then c:Destroy() end end order = 0 local q = search:lower() local n = 0 for i,l in ipairs(logs) do if filterOn[l.t] then if q=="" or l.m:lower():find(q,1,true) then buildRow(l,i); n=n+1 end end end empty.Visible = (n==0); empty.Parent = list updateStats() task.defer(function() list.CanvasPosition = Vector2.new(0,math.huge) end) end sbox:GetPropertyChangedSignal("Text"):Connect(function() search = sbox.Text _G._rbxconsole_rebuild() end) local function addLog(msg, lt) table.insert(logs, {m=tostring(msg), t=lt, ts=os.date("%H:%M:%S")}) if #logs > 300 then table.remove(logs,1) end _G._rbxconsole_rebuild() end local ok, ls2 = pcall(function() return game:GetService("LogService") end) if ok and ls2 then local c = ls2.MessageOut:Connect(function(msg, mt) if mt==Enum.MessageType.MessageWarning then addLog(msg,"warn") elseif mt==Enum.MessageType.MessageError then addLog(msg,"error") elseif mt==Enum.MessageType.MessageInfo then addLog(msg,"info") else addLog(msg,"print") end end) table.insert(conns,c) end local c2 = sc.Error:Connect(function(msg) addLog(msg,"error") end) table.insert(conns,c2) _G._rbxconsole_rebuild()