script for studying the structure of the place
Key RequiredUniversal

script for studying the structure of the place

Universal Scriptarteamdiskordarteamdiskord 309 views 16 executesUpdated Apr 27, 2026
Unrated
00
Lua Script•391 lines (14113 chars)
-- 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 .. '<font color="' .. hex .. '">' .. entry.text .. '</font>\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)

Features & Information

the script for the scan

Community Comments (1)

SummerTeamSummerTeamApr 27, 2026

хороший ИИ скрипт (мог бы хотя бы то что ии написал сменить на что-то другое)

More Scripts for Universal Scripts