
KeylessUniversal

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()



W, this will help a lot.
@9871 no problème