-- SKULL GAME SCANNER v2.1 | FIXED NO LAG -- Исправлено: зависание, бесконечный цикл, переполнение памяти local coreGui = game:GetService("CoreGui") local player = game:GetService("Players").LocalPlayer local workspace = game:GetService("Workspace") local rs = game:GetService("ReplicatedStorage") local runService = game:GetService("RunService") -- === СОЗДАНИЕ GUI === local screenGui = Instance.new("ScreenGui") screenGui.Name = "SKULL_Scanner_GUI" screenGui.Parent = coreGui screenGui.ResetOnSpawn = false local mainFrame = Instance.new("Frame") mainFrame.Size = UDim2.new(0, 420, 0, 350) mainFrame.Position = UDim2.new(0.5, -210, 0.5, -175) mainFrame.BackgroundColor3 = Color3.fromRGB(18, 18, 18) mainFrame.BorderSizePixel = 0 mainFrame.Active = true mainFrame.Draggable = true mainFrame.Parent = screenGui local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 10) corner.Parent = mainFrame local border = Instance.new("UIStroke") border.Thickness = 1.5 border.Color = Color3.fromRGB(200, 50, 50) border.ApplyStrokeMode = Enum.ApplyStrokeMode.Border border.Parent = mainFrame -- Заголовок local titleBar = Instance.new("Frame") titleBar.Size = UDim2.new(1, 0, 0, 35) titleBar.BackgroundColor3 = Color3.fromRGB(25, 25, 25) titleBar.BorderSizePixel = 0 titleBar.Parent = mainFrame local titleCorner = Instance.new("UICorner") titleCorner.CornerRadius = UDim.new(0, 10) titleCorner.Parent = titleBar local title = Instance.new("TextLabel") title.Size = UDim2.new(1, -40, 0, 35) title.Position = UDim2.new(0, 15, 0, 0) title.BackgroundTransparency = 1 title.Text = "SKULL SCANNER v2.1 [FIXED]" title.TextColor3 = Color3.fromRGB(255, 255, 255) title.Font = Enum.Font.GothamBlack title.TextSize = 13 title.TextXAlignment = Enum.TextXAlignment.Left title.Parent = titleBar local closeButton = Instance.new("TextButton") closeButton.Size = UDim2.new(0, 30, 0, 25) closeButton.Position = UDim2.new(1, -35, 0, 5) closeButton.BackgroundColor3 = Color3.fromRGB(200, 40, 40) closeButton.BorderSizePixel = 0 closeButton.Text = "✕" closeButton.TextColor3 = Color3.fromRGB(255, 255, 255) closeButton.Font = Enum.Font.GothamBold closeButton.TextSize = 14 closeButton.Parent = titleBar Instance.new("UICorner", closeButton).CornerRadius = UDim.new(0, 4) -- Текстовое поле local textContainer = Instance.new("ScrollingFrame") textContainer.Size = UDim2.new(1, -20, 1, -80) textContainer.Position = UDim2.new(0, 10, 0, 45) textContainer.BackgroundColor3 = Color3.fromRGB(22, 22, 22) textContainer.BorderSizePixel = 0 textContainer.ScrollBarThickness = 4 textContainer.ScrollBarImageColor3 = Color3.fromRGB(200, 50, 50) textContainer.CanvasSize = UDim2.new(0, 0, 0, 0) textContainer.Parent = mainFrame Instance.new("UICorner", textContainer).CornerRadius = UDim.new(0, 6) local outputText = Instance.new("TextLabel") outputText.Size = UDim2.new(1, -16, 0, 0) outputText.Position = UDim2.new(0, 8, 0, 5) outputText.BackgroundTransparency = 1 outputText.Text = "Нажмите SCAN для начала..." outputText.TextColor3 = Color3.fromRGB(200, 200, 200) outputText.Font = Enum.Font.Code outputText.TextSize = 12 outputText.TextXAlignment = Enum.TextXAlignment.Left outputText.TextYAlignment = Enum.TextYAlignment.Top outputText.TextWrapped = true outputText.RichText = true outputText.Parent = textContainer -- Прогресс-бар local progressBar = Instance.new("Frame") progressBar.Size = UDim2.new(1, -20, 0, 4) progressBar.Position = UDim2.new(0, 10, 1, -45) progressBar.BackgroundColor3 = Color3.fromRGB(40, 40, 40) progressBar.BorderSizePixel = 0 progressBar.Visible = false progressBar.Parent = mainFrame Instance.new("UICorner", progressBar).CornerRadius = UDim.new(0, 2) local progressFill = Instance.new("Frame") progressFill.Size = UDim2.new(0, 0, 1, 0) progressFill.BackgroundColor3 = Color3.fromRGB(200, 50, 50) progressFill.BorderSizePixel = 0 progressFill.Parent = progressBar Instance.new("UICorner", progressFill).CornerRadius = UDim.new(0, 2) -- Кнопки local scanButton = Instance.new("TextButton") scanButton.Size = UDim2.new(0, 120, 0, 35) scanButton.Position = UDim2.new(0, 10, 1, -40) scanButton.BackgroundColor3 = Color3.fromRGB(200, 50, 50) scanButton.BorderSizePixel = 0 scanButton.Text = "SCAN" scanButton.TextColor3 = Color3.fromRGB(255, 255, 255) scanButton.Font = Enum.Font.GothamBold scanButton.TextSize = 13 scanButton.Parent = mainFrame Instance.new("UICorner", scanButton).CornerRadius = UDim.new(0, 6) local clearButton = Instance.new("TextButton") clearButton.Size = UDim2.new(0, 80, 0, 35) clearButton.Position = UDim2.new(0, 140, 1, -40) clearButton.BackgroundColor3 = Color3.fromRGB(50, 50, 50) clearButton.BorderSizePixel = 0 clearButton.Text = "ОЧИСТИТЬ" clearButton.TextColor3 = Color3.fromRGB(255, 255, 255) clearButton.Font = Enum.Font.GothamBold clearButton.TextSize = 11 clearButton.Parent = mainFrame Instance.new("UICorner", clearButton).CornerRadius = UDim.new(0, 6) local copyButton = Instance.new("TextButton") copyButton.Size = UDim2.new(0, 90, 0, 35) copyButton.Position = UDim2.new(0, 230, 1, -40) copyButton.BackgroundColor3 = Color3.fromRGB(40, 100, 180) copyButton.BorderSizePixel = 0 copyButton.Text = "КОПИРОВАТЬ" copyButton.TextColor3 = Color3.fromRGB(255, 255, 255) copyButton.Font = Enum.Font.GothamBold copyButton.TextSize = 11 copyButton.Parent = mainFrame Instance.new("UICorner", copyButton).CornerRadius = UDim.new(0, 6) -- === ЛОГИКА (ИСПРАВЛЕННАЯ) === local scanResults = {} local remoteEvents = {} local remoteFunctions = {} local totalScanned = 0 local isScanning = false local function addLog(text, color) color = color or Color3.fromRGB(200, 200, 200) table.insert(scanResults, {text = tostring(text), color = color}) end local function updateOutput() local fullText = "" for _, entry in pairs(scanResults) do local hex = string.format("#%02X%02X%02X", math.floor(entry.color.R * 255), math.floor(entry.color.G * 255), math.floor(entry.color.B * 255) ) fullText = fullText .. '' .. entry.text .. '\n' end outputText.Text = fullText outputText.Size = UDim2.new(1, -16, 0, math.max(#scanResults * 16 + 10, 30)) textContainer.CanvasSize = UDim2.new(0, 0, 0, outputText.Size.Y.Offset + 10) end -- === ИСПРАВЛЕННЫЙ СКАН (без зависаний) === local MAX_SCAN = 500 -- Максимум объектов за проход local scannedCount = 0 local function safeScan(parent, depth, prefix) if not isScanning then return end if scannedCount >= MAX_SCAN then return end if depth > 4 then return end -- Ограничение глубины local children = parent:GetChildren() for _, obj in pairs(children) do if not isScanning then return end if scannedCount >= MAX_SCAN then addLog("... [СКАНИРОВАНИЕ ОСТАНОВЛЕНО: лимит " .. MAX_SCAN .. " объектов]", Color3.fromRGB(255, 150, 50)) return end scannedCount = scannedCount + 1 totalScanned = totalScanned + 1 local indent = string.rep(" ", depth) local icon = "•" local color = Color3.fromRGB(180, 180, 180) if obj:IsA("RemoteEvent") then icon = "⚡" color = Color3.fromRGB(255, 200, 50) table.insert(remoteEvents, {name = obj.Name, path = prefix .. "/" .. obj.Name}) elseif obj:IsA("RemoteFunction") then icon = "🔧" color = Color3.fromRGB(255, 150, 50) table.insert(remoteFunctions, {name = obj.Name, path = prefix .. "/" .. obj.Name}) elseif obj:IsA("Script") or obj:IsA("LocalScript") then icon = "📜" color = Color3.fromRGB(100, 180, 255) elseif obj:IsA("ModuleScript") then icon = "📦" color = Color3.fromRGB(150, 150, 255) elseif obj:IsA("Folder") or obj:IsA("Model") or obj:IsA("Configuration") then icon = "📁" color = Color3.fromRGB(200, 200, 200) end if obj:IsA("RemoteEvent") or obj:IsA("RemoteFunction") or obj:IsA("Script") or obj:IsA("LocalScript") or obj:IsA("ModuleScript") then local typeInfo = "" if obj:IsA("RemoteEvent") then typeInfo = " [REMOTE EVENT]" end if obj:IsA("RemoteFunction") then typeInfo = " [REMOTE FUNCTION]" end addLog(indent .. icon .. " " .. obj.Name .. typeInfo, color) end -- Рекурсия только если есть дети и не превышен лимит if #obj:GetChildren() > 0 and scannedCount < MAX_SCAN and depth < 4 then safeScan(obj, depth + 1, prefix .. "/" .. obj.Name) end -- Обновление прогресс-бара progressFill.Size = UDim2.new(scannedCount / MAX_SCAN, 0, 1, 0) runService.RenderStepped:Wait() -- Даём UI обновиться end end -- === ГЛАВНАЯ ФУНКЦИЯ СКАНИРОВАНИЯ === local function performScan() if isScanning then addLog("⚠ Сканирование уже выполняется!", Color3.fromRGB(255, 100, 100)) updateOutput() return end isScanning = true scannedCount = 0 totalScanned = 0 scanResults = {} remoteEvents = {} remoteFunctions = {} -- Показываем прогресс-бар progressBar.Visible = true progressFill.Size = UDim2.new(0, 0, 1, 0) addLog("══════════════════════════════", Color3.fromRGB(200, 50, 50)) addLog(" SKULL SCANNER v2.1 [FIXED]", Color3.fromRGB(255, 255, 255)) addLog(" PlaceId: " .. game.PlaceId, Color3.fromRGB(150, 150, 150)) addLog("══════════════════════════════", Color3.fromRGB(200, 50, 50)) addLog("", Color3.fromRGB(255, 255, 255)) updateOutput() -- 1. Игрок (мгновенно) addLog("👤 ИГРОК", Color3.fromRGB(100, 255, 100)) addLog(" Имя: " .. player.Name, Color3.fromRGB(200, 200, 200)) addLog(" UserId: " .. player.UserId, Color3.fromRGB(200, 200, 200)) addLog("", Color3.fromRGB(255, 255, 255)) updateOutput() -- 2. ReplicatedStorage addLog("📡 REPLICATED STORAGE (сканирую...)", Color3.fromRGB(255, 200, 50)) updateOutput() safeScan(rs, 1, "ReplicatedStorage") addLog("", Color3.fromRGB(255, 255, 255)) updateOutput() -- 3. PlayerGui local playerGui = player:FindFirstChild("PlayerGui") if playerGui then addLog("🖥 PLAYER GUI (сканирую...)", Color3.fromRGB(100, 180, 255)) updateOutput() safeScan(playerGui, 1, "PlayerGui") addLog("", Color3.fromRGB(255, 255, 255)) updateOutput() end -- 4. Workspace (только верхний уровень) addLog("🌍 WORKSPACE", Color3.fromRGB(150, 255, 150)) for _, obj in pairs(workspace:GetChildren()) do if obj:IsA("Model") or obj:IsA("Folder") then local color = Color3.fromRGB(200, 200, 200) local lower = obj.Name:lower() if lower:find("obby") or lower:find("swing") or lower:find("stage") or lower:find("checkpoint") then color = Color3.fromRGB(255, 255, 100) end addLog(" 📁 " .. obj.Name, color) end end addLog("", Color3.fromRGB(255, 255, 255)) updateOutput() -- Итоги addLog("══════════════════════════════", Color3.fromRGB(200, 50, 50)) addLog(" СКАНИРОВАНИЕ ЗАВЕРШЕНО", Color3.fromRGB(100, 255, 100)) addLog(" Объектов просканировано: " .. totalScanned, Color3.fromRGB(200, 200, 200)) addLog(" RemoteEvents: " .. #remoteEvents, Color3.fromRGB(255, 200, 50)) addLog(" RemoteFunctions: " .. #remoteFunctions, Color3.fromRGB(255, 150, 50)) addLog("══════════════════════════════", Color3.fromRGB(200, 50, 50)) updateOutput() -- Показываем найденные Remotes if #remoteEvents > 0 then addLog("", Color3.fromRGB(255, 255, 255)) addLog("⚡ REMOTE EVENTS (" .. #remoteEvents .. "):", Color3.fromRGB(255, 200, 50)) for _, re in pairs(remoteEvents) do addLog(" • " .. re.name, Color3.fromRGB(255, 230, 100)) addLog(" Путь: " .. re.path, Color3.fromRGB(180, 180, 100)) end updateOutput() end if #remoteFunctions > 0 then addLog("", Color3.fromRGB(255, 255, 255)) addLog("🔧 REMOTE FUNCTIONS (" .. #remoteFunctions .. "):", Color3.fromRGB(255, 150, 50)) for _, rf in pairs(remoteFunctions) do addLog(" • " .. rf.name, Color3.fromRGB(255, 180, 100)) addLog(" Путь: " .. rf.path, Color3.fromRGB(180, 140, 100)) end updateOutput() end -- Скрываем прогресс-бар progressBar.Visible = false isScanning = false -- Скролл вверх textContainer.CanvasPosition = Vector2.new(0, 0) end -- === ОБРАБОТЧИКИ === scanButton.MouseButton1Click:Connect(function() scanButton.Text = "СКАНИРУЮ..." scanButton.BackgroundColor3 = Color3.fromRGB(100, 100, 100) -- Запускаем через spawn чтобы UI не завис spawn(function() performScan() scanButton.Text = "SCAN" scanButton.BackgroundColor3 = Color3.fromRGB(200, 50, 50) end) end) clearButton.MouseButton1Click:Connect(function() if isScanning then return end scanResults = {} remoteEvents = {} remoteFunctions = {} totalScanned = 0 outputText.Text = "Нажмите SCAN для начала..." outputText.Size = UDim2.new(1, -16, 0, 30) textContainer.CanvasSize = UDim2.new(0, 0, 0, 30) progressBar.Visible = false end) copyButton.MouseButton1Click:Connect(function() local rawText = "" for _, entry in pairs(scanResults) do rawText = rawText .. entry.text .. "\n" end if rawText ~= "" then setclipboard(rawText) copyButton.Text = "СКОПИРОВАНО!" copyButton.BackgroundColor3 = Color3.fromRGB(40, 160, 60) wait(2) copyButton.Text = "КОПИРОВАТЬ" copyButton.BackgroundColor3 = Color3.fromRGB(40, 100, 180) end end) closeButton.MouseButton1Click:Connect(function() isScanning = false screenGui:Destroy() end) -- === АВТОСКАН === spawn(function() wait(0.5) performScan() end)