Image finder open source  scripteur2bz
Key RequiredUniversal

Image finder open source scripteur2bz

Universal ScriptScripteur2bzScripteur2bz 1.1K views 138 executesUpdated Jun 1, 2026
5.0/ 5(2 votes)
20100% Positive
Lua Script•259 lines (9406 chars)
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local ContentProvider = game:GetService("ContentProvider")
local LogService = game:GetService("LogService")

-- Création de l'interface principale
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "UniversalAssetFinder"
ScreenGui.ResetOnSpawn = false
-- Utilisation de CoreGui si disponible (pour les exécuteurs), sinon PlayerGui
local parentGui = game:GetService("CoreGui") or game:GetService("Players").LocalPlayer:WaitForChild("PlayerGui")
ScreenGui.Parent = parentGui

-- Fenêtre principale
local MainFrame = Instance.new("Frame")
MainFrame.Name = "MainFrame"
MainFrame.Size = UDim2.new(0, 360, 0, 420)
MainFrame.Position = UDim2.new(0.5, -180, 0.5, -210)
MainFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
MainFrame.BorderSizePixel = 0
MainFrame.Parent = ScreenGui

local MainCorner = Instance.new("UICorner")
MainCorner.CornerRadius = UDim.new(0, 14)
MainCorner.Parent = MainFrame

-- Barre de titre (TopBar)
local TopBar = Instance.new("Frame")
TopBar.Name = "TopBar"
TopBar.Size = UDim2.new(1, 0, 0, 45)
TopBar.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
TopBar.BorderSizePixel = 0
TopBar.Parent = MainFrame

local TopCorner = Instance.new("UICorner")
TopCorner.CornerRadius = UDim.new(0, 14)
TopCorner.Parent = TopBar

local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(0.6, 0, 1, 0)
Title.Position = UDim2.new(0, 15, 0, 0)
Title.Text = "Universal Image Finder"
Title.TextColor3 = Color3.fromRGB(255, 255, 255)
Title.TextXAlignment = Enum.TextXAlignment.Left
Title.Font = Enum.Font.SourceSansBold
Title.TextSize = 16
Title.BackgroundTransparency = 1
Title.Parent = TopBar

-- Bouton Réduire (Minimize)
local MinBtn = Instance.new("TextButton")
MinBtn.Size = UDim2.new(0, 32, 0, 32)
MinBtn.Position = UDim2.new(1, -42, 0, 6)
MinBtn.Text = "-"
MinBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
MinBtn.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
MinBtn.Font = Enum.Font.SourceSansBold
MinBtn.TextSize = 18
MinBtn.Parent = TopBar

local MinCorner = Instance.new("UICorner")
MinCorner.CornerRadius = UDim.new(0, 8)
MinCorner.Parent = MinBtn

-- Menu Déroulant (ScrollingFrame)
local ScrollContainer = Instance.new("ScrollingFrame")
ScrollContainer.Name = "ScrollContainer"
ScrollContainer.Size = UDim2.new(1, -20, 1, -65)
ScrollContainer.Position = UDim2.new(0, 10, 0, 55)
ScrollContainer.BackgroundTransparency = 1
ScrollContainer.ScrollBarThickness = 6
ScrollContainer.CanvasSize = UDim2.new(0, 0, 0, 0)
ScrollContainer.Parent = MainFrame

local Layout = Instance.new("UIListLayout")
Layout.Padding = UDim.new(0, 8)
Layout.SortOrder = Enum.SortOrder.LayoutOrder
Layout.Parent = ScrollContainer

-- Ajustement auto de la taille du menu de défilement
Layout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
    ScrollContainer.CanvasSize = UDim2.new(0, 0, 0, Layout.AbsoluteContentSize.Y + 15)
end)

-- Nettoyage des chaînes pour extraire proprement l'ID de l'image
local function cleanAssetId(str)
    if not str then return nil end
    local id = string.match(str, "rbxassetid://%d+") or string.match(str, "http[s]?://%S+%d+") or string.match(str, "%d+")
    if id and tonumber(string.match(id, "%d+")) then
        if not string.find(id, "rbxassetid://") and tonumber(id) then
            return "rbxassetid://" .. id
        end
        return id
    end
    return nil
end

-- Fonction pour ajouter une image à la liste du menu
local function addImageRow(assetId)
    local cleanId = cleanAssetId(assetId)
    if not cleanId then return end
    
    -- Empêche les doublons dans le menu
    local safeName = string.gsub(cleanId, "%D", "")
    if ScrollContainer:FindFirstChild(safeName) then return end

    local Row = Instance.new("Frame")
    Row.Name = safeName
    Row.Size = UDim2.new(1, -10, 0, 65)
    Row.BackgroundColor3 = Color3.fromRGB(38, 38, 38)
    Row.Parent = ScrollContainer

    local RowCorner = Instance.new("UICorner")
    RowCorner.CornerRadius = UDim.new(0, 10)
    RowCorner.Parent = Row

    -- Aperçu Visuel
    local ImgPreview = Instance.new("ImageLabel")
    ImgPreview.Size = UDim2.new(0, 55, 0, 55)
    ImgPreview.Position = UDim2.new(0, 5, 0, 5)
    ImgPreview.Image = cleanId
    ImgPreview.BackgroundColor3 = Color3.fromRGB(15, 15, 15)
    ImgPreview.Parent = Row

    local ImgCorner = Instance.new("UICorner")
    ImgCorner.CornerRadius = UDim.new(0, 8)
    ImgCorner.Parent = ImgPreview

    -- Bouton "Copy"
    local CopyBtn = Instance.new("TextButton")
    CopyBtn.Size = UDim2.new(0, 75, 0, 32)
    CopyBtn.Position = UDim2.new(1, -85, 0, 16)
    CopyBtn.Text = "Copy"
    CopyBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
    CopyBtn.BackgroundColor3 = Color3.fromRGB(0, 140, 255)
    CopyBtn.Font = Enum.Font.SourceSansBold
    CopyBtn.TextSize = 14
    CopyBtn.Parent = Row

    local CopyCorner = Instance.new("UICorner")
    CopyCorner.CornerRadius = UDim.new(0, 8)
    CopyCorner.Parent = CopyBtn

    -- Affichage du lien / ID au centre
    local IdLabel = Instance.new("TextLabel")
    IdLabel.Size = UDim2.new(1, -180, 1, 0)
    IdLabel.Position = UDim2.new(0, 70, 0, 0)
    IdLabel.Text = cleanId
    IdLabel.TextColor3 = Color3.fromRGB(220, 220, 220)
    IdLabel.Font = Enum.Font.SourceSans
    IdLabel.TextSize = 13
    IdLabel.TextWrapped = true
    IdLabel.BackgroundTransparency = 1
    IdLabel.TextXAlignment = Enum.TextXAlignment.Left
    IdLabel.Parent = Row

    -- Script du Clic de copie
    CopyBtn.MouseButton1Click:Connect(function()
        if setclipboard then
            setclipboard(cleanId)
            CopyBtn.Text = "Copied!"
            CopyBtn.BackgroundColor3 = Color3.fromRGB(46, 204, 113)
            task.wait(1.2)
            CopyBtn.Text = "Copy"
            CopyBtn.BackgroundColor3 = Color3.fromRGB(0, 140, 255)
        else
            CopyBtn.Text = "No Exec"
            task.wait(1.2)
            CopyBtn.Text = "Copy"
        end
    end)
end

-- Système de Drag (Glisser/Déplacer le menu avec la TopBar)
local dragging, dragInput, dragStart, startPos
local function update(input)
    local delta = input.Position - dragStart
    MainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end

TopBar.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
        dragging = true
        dragStart = input.Position
        startPos = MainFrame.Position
        input.Changed:Connect(function()
            if input.UserInputState == Enum.UserInputState.End then dragging = false end
        end)
    end
end)

TopBar.InputChanged:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseBehavior 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)

-- Système de réduction Toggle (Minimiser l'interface)
local minimized = false
MinBtn.MouseButton1Click:Connect(function()
    minimized = not minimized
    if minimized then
        ScrollContainer.Visible = false
        TweenService:Create(MainFrame, TweenInfo.new(0.25), {Size = UDim2.new(0, 360, 0, 45)}):Play()
        MinBtn.Text = "+"
    else
        TweenService:Create(MainFrame, TweenInfo.new(0.25), {Size = UDim2.new(0, 360, 0, 420)}):Play()
        task.wait(0.25)
        ScrollContainer.Visible = true
        MinBtn.Text = "-"
    end
end)

-- METHODE 1 : Scan classique de la structure du jeu
local function scanAllObjects()
    for _, object in pairs(game:GetDescendants()) do
        pcall(function()
            if object:IsA("ImageLabel") or object:IsA("ImageButton") or object:IsA("Decal") or object:IsA("Texture") then
                if object.Image and object.Image ~= "" then
                    addImageRow(object.Image)
                end
            elseif object:IsA("MeshPart") and object.TextureID ~= "" then
                addImageRow(object.TextureID)
            end
        end)
    end
end

-- METHODE 2 : Capture en temps réel de TOUTES les images chargées à l'écran
-- Cette fonction intercepte les requêtes réseau du moteur de rendu dès qu'un menu s'ouvre
local function setupRealtimeTracker()
    -- Analyse ce qui s'ajoute dynamiquement dans le jeu
    game.DescendantAdded:Connect(function(object)
        pcall(function()
            if object:IsA("ImageLabel") or object:IsA("ImageButton") or object:IsA("Decal") or object:IsA("Texture") then
                if object.Image ~= "" then addImageRow(object.Image) end
                object:GetPropertyChangedSignal("Image"):Connect(function()
                    if object.Image ~= "" then addImageRow(object.Image) end
                end)
            end
        end)
    end)
    
    -- Interception des logs de chargement d'assets (idéal pour choper les images des scripts tiers/menus externes)
    LogService.MessageReceived:Connect(function(message, messageType)
        if string.find(message, "asset") or string.find(message, "rbxassetid") then
            local potentialId = cleanAssetId(message)
            if potentialId then addImageRow(potentialId) end
        end
    end)
end

-- Exécution
scanAllObjects()
setupRealtimeTracker()

Features & Information

You can copy image

Community Comments (2)

98719871Jun 2, 2026

W, this will help a lot.

Replying to @9871
Scripteur2bzScripteur2bzJun 2, 2026

@9871 no problème

More Scripts for Universal Scripts