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