
KeylessUniversal

-- AUTO TOOL GRABBER + SEARCH BAR
-- 1 SOLO SCRIPT | SOLO TOOLS AGARRABLES
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- ================= GUI =================
local gui = Instance.new("ScreenGui", player.PlayerGui)
gui.Name = "ToolItemGrabber"
gui.ResetOnSpawn = false
-- BOTÓN OPEN
local toggle = Instance.new("TextButton", gui)
toggle.Size = UDim2.fromScale(0.08,0.08)
toggle.Position = UDim2.fromScale(0.01,0.45)
toggle.Text = "OPEN"
toggle.TextScaled = true
toggle.Font = Enum.Font.GothamBold
toggle.BackgroundColor3 = Color3.fromRGB(0,255,200)
toggle.TextColor3 = Color3.new(0,0,0)
toggle.BorderSizePixel = 0
Instance.new("UIStroke", toggle).Thickness = 3
-- FRAME
local frame = Instance.new("Frame", gui)
frame.Size = UDim2.fromScale(0.45,0.6)
frame.Position = UDim2.fromScale(0.275,0.2)
frame.BackgroundColor3 = Color3.fromRGB(15,15,20)
frame.Visible = false
frame.BorderSizePixel = 0
Instance.new("UIStroke", frame).Thickness = 3
-- TITULO
local title = Instance.new("TextLabel", frame)
title.Size = UDim2.fromScale(1,0.1)
title.BackgroundTransparency = 1
title.Text = "TOOL GRABBER"
title.TextScaled = true
title.Font = Enum.Font.GothamBold
title.TextColor3 = Color3.fromRGB(0,255,200)
-- SEARCH BAR
local searchBox = Instance.new("TextBox", frame)
searchBox.Size = UDim2.fromScale(0.9,0.08)
searchBox.Position = UDim2.fromScale(0.05,0.11)
searchBox.PlaceholderText = "Buscar Tool..."
searchBox.Text = ""
searchBox.TextScaled = true
searchBox.Font = Enum.Font.Gotham
searchBox.BackgroundColor3 = Color3.fromRGB(25,25,30)
searchBox.TextColor3 = Color3.new(1,1,1)
searchBox.BorderSizePixel = 0
-- LISTA
local listFrame = Instance.new("ScrollingFrame", frame)
listFrame.Position = UDim2.fromScale(0.05,0.21)
listFrame.Size = UDim2.fromScale(0.9,0.48)
listFrame.CanvasSize = UDim2.new()
listFrame.ScrollBarImageTransparency = 0.3
listFrame.BackgroundColor3 = Color3.fromRGB(20,20,25)
listFrame.BorderSizePixel = 0
local layout = Instance.new("UIListLayout", listFrame)
layout.Padding = UDim.new(0,6)
-- BOTONES
local grabBtn = Instance.new("TextButton", frame)
grabBtn.Size = UDim2.fromScale(0.45,0.12)
grabBtn.Position = UDim2.fromScale(0.05,0.72)
grabBtn.Text = "GRABBER (TP)"
grabBtn.TextScaled = true
grabBtn.Font = Enum.Font.GothamBold
grabBtn.BackgroundColor3 = Color3.fromRGB(0,200,150)
grabBtn.TextColor3 = Color3.new(0,0,0)
grabBtn.BorderSizePixel = 0
local resetBtn = Instance.new("TextButton", frame)
resetBtn.Size = UDim2.fromScale(0.45,0.12)
resetBtn.Position = UDim2.fromScale(0.5,0.72)
resetBtn.Text = "RESET"
resetBtn.TextScaled = true
resetBtn.Font = Enum.Font.GothamBold
resetBtn.BackgroundColor3 = Color3.fromRGB(200,80,80)
resetBtn.TextColor3 = Color3.new(1,1,1)
resetBtn.BorderSizePixel = 0
-- ================= LOGICA =================
local detectedTools = {} -- [tool] = button
local selectedTool = nil
local TP_OFFSET = Vector3.new(0,4,0)
local function isValidTool(tool)
return tool:IsA("Tool")
and tool:FindFirstChild("Handle")
and tool.Parent == workspace
end
local function refreshFilter()
local query = string.lower(searchBox.Text)
for tool, button in pairs(detectedTools) do
button.Visible = (query == "" or string.find(string.lower(tool.Name), query))
end
task.wait()
listFrame.CanvasSize = UDim2.new(0,0,0,layout.AbsoluteContentSize.Y + 10)
end
local function addTool(tool)
if detectedTools[tool] or not isValidTool(tool) then return end
local btn = Instance.new("TextButton", listFrame)
btn.Size = UDim2.new(1,-10,0,40)
btn.Text = tool.Name
btn.TextScaled = true
btn.Font = Enum.Font.Gotham
btn.BackgroundColor3 = Color3.fromRGB(30,30,35)
btn.TextColor3 = Color3.fromRGB(0,255,200)
btn.BorderSizePixel = 0
btn.MouseButton1Click:Connect(function()
selectedTool = tool
end)
detectedTools[tool] = btn
refreshFilter()
end
local function removeTool(tool)
if detectedTools[tool] then
detectedTools[tool]:Destroy()
detectedTools[tool] = nil
if selectedTool == tool then
selectedTool = nil
end
end
end
local function fullScan()
for tool in pairs(detectedTools) do
removeTool(tool)
end
selectedTool = nil
for _, obj in pairs(workspace:GetChildren()) do
if obj:IsA("Tool") then
addTool(obj)
end
end
end
-- AUTO DETECCIÓN
workspace.ChildAdded:Connect(function(obj)
if obj:IsA("Tool") then
task.wait(0.1)
addTool(obj)
end
end)
workspace.ChildRemoved:Connect(removeTool)
-- SEARCH
searchBox:GetPropertyChangedSignal("Text"):Connect(refreshFilter)
-- BOTONES
grabBtn.MouseButton1Click:Connect(function()
if not selectedTool then return end
if not player.Character or not player.Character:FindFirstChild("HumanoidRootPart") then return end
local handle = selectedTool:FindFirstChild("Handle")
if handle then
player.Character.HumanoidRootPart.CFrame =
CFrame.new(handle.Position + TP_OFFSET)
end
end)
resetBtn.MouseButton1Click:Connect(fullScan)
toggle.MouseButton1Click:Connect(function()
frame.Visible = not frame.Visible
toggle.Text = frame.Visible and "CLOSE" or "OPEN"
if frame.Visible then
fullScan()
end
end)
![[KEYLESS] Moondiety Script | 17+ supported Games](https://scriptblox.com/images/sb/0-1753093706828.png)


I found it useful.
How does this work? I mean the search tab.
@pinkblownephia It only detects grabable objects. The search tab works if it detects too many objects; to make things easier, it searches for the object. Can you tell me which game you tested it on so I can update the script?
@Veldran It was my mistake; the script works perfectly.
@pinkblownephia Oh, okay, if any errors occur in the script, let me know and I'll fix them.
Não seria mais fácil o script já mostrar os itens
Onde estão