-- Auto Pickup/Drop & Auto Pet Cats local ReplicatedStorage = game:GetService("ReplicatedStorage") local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local Workspace = game:GetService("Workspace") local player = Players.LocalPlayer -- Get config local AnimalConfig = require(ReplicatedStorage.Config.AnimalConfig) local BaseService = ReplicatedStorage.Packages.Knit.Services.BaseService -- Create GUI local screenGui = Instance.new("ScreenGui") screenGui.Name = "AutoPickupCats" screenGui.ResetOnSpawn = false screenGui.Parent = player:WaitForChild("PlayerGui") local mainFrame = Instance.new("Frame") mainFrame.Size = UDim2.new(0, 400, 0, 600) mainFrame.Position = UDim2.new(0.5, -200, 0.5, -300) mainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 30) mainFrame.BorderSizePixel = 0 mainFrame.Parent = screenGui local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 10) corner.Parent = mainFrame -- Title bar local titleBar = Instance.new("Frame") titleBar.Size = UDim2.new(1, 0, 0, 40) titleBar.BackgroundColor3 = Color3.fromRGB(45, 45, 45) titleBar.BorderSizePixel = 0 titleBar.Parent = mainFrame local titleCorner = Instance.new("UICorner") titleCorner.CornerRadius = UDim.new(0, 10) titleCorner.Parent = titleBar local titleText = Instance.new("TextLabel") titleText.Size = UDim2.new(1, -70, 1, 0) titleText.Position = UDim2.new(0, 10, 0, 0) titleText.BackgroundTransparency = 1 titleText.Text = "Auto Cat Manager 🐱" titleText.TextColor3 = Color3.fromRGB(255, 255, 255) titleText.TextSize = 18 titleText.Font = Enum.Font.GothamBold titleText.TextXAlignment = Enum.TextXAlignment.Left titleText.Parent = titleBar -- Scan button local scanButton = Instance.new("TextButton") scanButton.Size = UDim2.new(0, 60, 0, 30) scanButton.Position = UDim2.new(1, -100, 0, 5) scanButton.BackgroundColor3 = Color3.fromRGB(100, 100, 255) scanButton.Text = "Scan" scanButton.TextColor3 = Color3.fromRGB(255, 255, 255) scanButton.TextSize = 12 scanButton.Font = Enum.Font.GothamBold scanButton.BorderSizePixel = 0 scanButton.Parent = titleBar local scanCorner = Instance.new("UICorner") scanCorner.CornerRadius = UDim.new(0, 5) scanCorner.Parent = scanButton -- Close button local closeButton = Instance.new("TextButton") closeButton.Size = UDim2.new(0, 30, 0, 30) closeButton.Position = UDim2.new(1, -35, 0, 5) closeButton.BackgroundColor3 = Color3.fromRGB(200, 50, 50) closeButton.Text = "X" closeButton.TextColor3 = Color3.fromRGB(255, 255, 255) closeButton.TextSize = 16 closeButton.Font = Enum.Font.GothamBold closeButton.BorderSizePixel = 0 closeButton.Parent = titleBar local closeCorner = Instance.new("UICorner") closeCorner.CornerRadius = UDim.new(0, 5) closeCorner.Parent = closeButton closeButton.MouseButton1Click:Connect(function() screenGui:Destroy() end) -- Content local contentFrame = Instance.new("ScrollingFrame") contentFrame.Size = UDim2.new(1, -20, 1, -60) contentFrame.Position = UDim2.new(0, 10, 0, 50) contentFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 40) contentFrame.BorderSizePixel = 0 contentFrame.ScrollBarThickness = 6 contentFrame.Parent = mainFrame local contentCorner = Instance.new("UICorner") contentCorner.CornerRadius = UDim.new(0, 5) contentCorner.Parent = contentFrame local listLayout = Instance.new("UIListLayout") listLayout.Padding = UDim.new(0, 8) listLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center listLayout.Parent = contentFrame -- Status local statusLabel = Instance.new("TextLabel") statusLabel.Size = UDim2.new(0, 360, 0, 60) statusLabel.BackgroundColor3 = Color3.fromRGB(50, 50, 50) statusLabel.Text = "Status: Ready\nYour ID: " .. player.UserId .. "\nClick 'Scan' to find cats" statusLabel.TextColor3 = Color3.fromRGB(200, 200, 200) statusLabel.TextSize = 11 statusLabel.Font = Enum.Font.Gotham statusLabel.TextYAlignment = Enum.TextYAlignment.Top statusLabel.TextWrapped = true statusLabel.Parent = contentFrame local statusCorner = Instance.new("UICorner") statusCorner.CornerRadius = UDim.new(0, 5) statusCorner.Parent = statusLabel -- Toggle Pickup button local togglePickupButton = Instance.new("TextButton") togglePickupButton.Size = UDim2.new(0, 360, 0, 45) togglePickupButton.BackgroundColor3 = Color3.fromRGB(50, 150, 50) togglePickupButton.Text = "Start Auto Pickup/Drop" togglePickupButton.TextColor3 = Color3.fromRGB(255, 255, 255) togglePickupButton.TextSize = 15 togglePickupButton.Font = Enum.Font.GothamBold togglePickupButton.Parent = contentFrame local togglePickupCorner = Instance.new("UICorner") togglePickupCorner.CornerRadius = UDim.new(0, 8) togglePickupCorner.Parent = togglePickupButton -- Toggle Pet button local togglePetButton = Instance.new("TextButton") togglePetButton.Size = UDim2.new(0, 360, 0, 45) togglePetButton.BackgroundColor3 = Color3.fromRGB(100, 50, 150) togglePetButton.Text = "Start Auto Pet" togglePetButton.TextColor3 = Color3.fromRGB(255, 255, 255) togglePetButton.TextSize = 15 togglePetButton.Font = Enum.Font.GothamBold togglePetButton.Parent = contentFrame local togglePetCorner = Instance.new("UICorner") togglePetCorner.CornerRadius = UDim.new(0, 8) togglePetCorner.Parent = togglePetButton -- Cat list label local listLabel = Instance.new("TextLabel") listLabel.Size = UDim2.new(0, 360, 0, 25) listLabel.BackgroundColor3 = Color3.fromRGB(50, 50, 70) listLabel.Text = "🐾 Select Cats" listLabel.TextColor3 = Color3.fromRGB(200, 200, 255) listLabel.TextSize = 13 listLabel.Font = Enum.Font.GothamBold listLabel.Parent = contentFrame local listCorner = Instance.new("UICorner") listCorner.CornerRadius = UDim.new(0, 5) listCorner.Parent = listLabel -- Variables local autoPickupRunning = false local autoPetRunning = false local selectedCats = {} local pickedUp = 0 local petted = 0 local catsInBase = {} local catButtons = {} -- Stats local statsLabel = Instance.new("TextLabel") statsLabel.Size = UDim2.new(0, 360, 0, 70) statsLabel.BackgroundColor3 = Color3.fromRGB(50, 50, 50) statsLabel.Text = "Picked up: 0\nPetted: 0\nLast: None\nFound: 0" statsLabel.TextColor3 = Color3.fromRGB(200, 200, 200) statsLabel.TextSize = 12 statsLabel.Font = Enum.Font.Gotham statsLabel.TextYAlignment = Enum.TextYAlignment.Top statsLabel.Parent = contentFrame local statsCorner = Instance.new("UICorner") statsCorner.CornerRadius = UDim.new(0, 5) statsCorner.Parent = statsLabel -- Function to scan for cats local function scanForCats() catsInBase = {} statusLabel.Text = "Scanning Cats folder..." statusLabel.TextColor3 = Color3.fromRGB(255, 200, 100) local playerBases = Workspace:FindFirstChild("PlayerBases") if not playerBases then statusLabel.Text = "Error: PlayerBases not found!" statusLabel.TextColor3 = Color3.fromRGB(255, 100, 100) return end local yourBase = playerBases:FindFirstChild(tostring(player.UserId)) if not yourBase then statusLabel.Text = "Error: Your base not found!\nID: " .. player.UserId statusLabel.TextColor3 = Color3.fromRGB(255, 100, 100) return end local catsFolder = yourBase:FindFirstChild("Cats") if not catsFolder then statusLabel.Text = "Error: Cats folder not found!" statusLabel.TextColor3 = Color3.fromRGB(255, 100, 100) return end for _, catModel in ipairs(catsFolder:GetChildren()) do if catModel:IsA("Model") then local animalId = catModel:GetAttribute("animalId") if animalId then local catName = catModel:GetAttribute("name") or catModel.Name local catData = AnimalConfig[catName] if catData then table.insert(catsInBase, { id = animalId, name = catName, model = catModel, rarity = catData.Rarity }) end end end end local foundCount = #catsInBase statusLabel.Text = string.format("Scan complete!\nFound: %d cats", foundCount) statusLabel.TextColor3 = foundCount > 0 and Color3.fromRGB(100, 255, 100) or Color3.fromRGB(255, 150, 50) -- Clear old buttons for _, btn in ipairs(catButtons) do btn:Destroy() end catButtons = {} if foundCount == 0 then local noCatsLabel = Instance.new("TextLabel") noCatsLabel.Size = UDim2.new(0, 360, 0, 50) noCatsLabel.BackgroundColor3 = Color3.fromRGB(60, 40, 40) noCatsLabel.Text = "No cats found!\nMake sure cats are spawned" noCatsLabel.TextColor3 = Color3.fromRGB(255, 200, 200) noCatsLabel.TextSize = 12 noCatsLabel.Font = Enum.Font.Gotham noCatsLabel.TextWrapped = true noCatsLabel.Parent = contentFrame local noCatsCorner = Instance.new("UICorner") noCatsCorner.CornerRadius = UDim.new(0, 5) noCatsCorner.Parent = noCatsLabel table.insert(catButtons, noCatsLabel) task.wait() contentFrame.CanvasSize = UDim2.new(0, 0, 0, listLayout.AbsoluteContentSize.Y + 20) return end local rarityColors = { Common = Color3.fromRGB(150, 150, 150), Rare = Color3.fromRGB(100, 150, 255), Epic = Color3.fromRGB(200, 100, 255), Legendary = Color3.fromRGB(255, 200, 0) } -- Group by name local catGroups = {} for _, cat in ipairs(catsInBase) do if not catGroups[cat.name] then catGroups[cat.name] = {count = 0, rarity = cat.rarity} end catGroups[cat.name].count = catGroups[cat.name].count + 1 end -- Sort by rarity local sortedCats = {} for name, data in pairs(catGroups) do table.insert(sortedCats, {name = name, count = data.count, rarity = data.rarity}) end table.sort(sortedCats, function(a, b) local rarityOrder = {Legendary = 1, Epic = 2, Rare = 3, Common = 4} if rarityOrder[a.rarity] ~= rarityOrder[b.rarity] then return rarityOrder[a.rarity] < rarityOrder[b.rarity] end return a.name < b.name end) for _, catData in ipairs(sortedCats) do local catButton = Instance.new("TextButton") catButton.Size = UDim2.new(0, 360, 0, 40) catButton.BackgroundColor3 = Color3.fromRGB(60, 60, 60) catButton.Text = string.format("○ %s (%d)", catData.name, catData.count) catButton.TextColor3 = rarityColors[catData.rarity] catButton.TextSize = 13 catButton.Font = Enum.Font.Gotham catButton.TextXAlignment = Enum.TextXAlignment.Left catButton.Parent = contentFrame local padding = Instance.new("UIPadding") padding.PaddingLeft = UDim.new(0, 10) padding.Parent = catButton local btnCorner = Instance.new("UICorner") btnCorner.CornerRadius = UDim.new(0, 5) btnCorner.Parent = catButton table.insert(catButtons, catButton) catButton.MouseButton1Click:Connect(function() if selectedCats[catData.name] then selectedCats[catData.name] = nil catButton.Text = string.format("○ %s (%d)", catData.name, catData.count) catButton.BackgroundColor3 = Color3.fromRGB(60, 60, 60) else selectedCats[catData.name] = true catButton.Text = string.format("● %s (%d)", catData.name, catData.count) catButton.BackgroundColor3 = Color3.fromRGB(50, 150, 50) end end) end statsLabel.Text = string.format("Picked up: %d\nPetted: %d\nLast: None\nFound: %d", pickedUp, petted, foundCount) task.wait() contentFrame.CanvasSize = UDim2.new(0, 0, 0, listLayout.AbsoluteContentSize.Y + 20) end -- Scan button scanButton.MouseButton1Click:Connect(function() scanButton.Text = "..." scanButton.BackgroundColor3 = Color3.fromRGB(150, 150, 50) scanForCats() task.wait(0.5) scanButton.Text = "Scan" scanButton.BackgroundColor3 = Color3.fromRGB(100, 100, 255) end) -- Auto Pickup Loop local function autoPickupLoop() while autoPickupRunning do pcall(function() for _, cat in ipairs(catsInBase) do if not autoPickupRunning then break end if selectedCats[cat.name] and cat.model and cat.model.Parent then -- Pickup local success1 = pcall(function() BaseService.RF.PickupAnimal:InvokeServer(cat.id) end) if success1 then pickedUp = pickedUp + 1 task.wait(0.3) -- Putdown pcall(function() BaseService.RF.PutdownAnimal:InvokeServer(cat.id) end) statsLabel.Text = string.format("Picked up: %d\nPetted: %d\nLast: %s\nFound: %d", pickedUp, petted, cat.name, #catsInBase) task.wait(0.5) break end end end scanForCats() end) task.wait(2) end end -- Auto Pet Loop local function autoPetLoop() while autoPetRunning do pcall(function() for _, cat in ipairs(catsInBase) do if not autoPetRunning then break end if selectedCats[cat.name] and cat.model and cat.model.Parent then -- Pet local success = pcall(function() BaseService.RF.PetAnimal:InvokeServer(cat.id) end) if success then petted = petted + 1 statsLabel.Text = string.format("Picked up: %d\nPetted: %d\nLast pet: %s\nFound: %d", pickedUp, petted, cat.name, #catsInBase) statsLabel.TextColor3 = Color3.fromRGB(255, 150, 255) task.wait(0.5) end end end end) task.wait(1) -- Pet all selected cats then wait end end -- Toggle Pickup togglePickupButton.MouseButton1Click:Connect(function() autoPickupRunning = not autoPickupRunning if autoPickupRunning then if next(selectedCats) == nil then autoPickupRunning = false statusLabel.Text = "Error: No cats selected!" statusLabel.TextColor3 = Color3.fromRGB(255, 100, 100) return end togglePickupButton.Text = "Stop Auto Pickup/Drop" togglePickupButton.BackgroundColor3 = Color3.fromRGB(200, 50, 50) task.spawn(autoPickupLoop) else togglePickupButton.Text = "Start Auto Pickup/Drop" togglePickupButton.BackgroundColor3 = Color3.fromRGB(50, 150, 50) end end) -- Toggle Pet togglePetButton.MouseButton1Click:Connect(function() autoPetRunning = not autoPetRunning if autoPetRunning then if next(selectedCats) == nil then autoPetRunning = false statusLabel.Text = "Error: No cats selected!" statusLabel.TextColor3 = Color3.fromRGB(255, 100, 100) return end togglePetButton.Text = "Stop Auto Pet" togglePetButton.BackgroundColor3 = Color3.fromRGB(200, 50, 50) task.spawn(autoPetLoop) else togglePetButton.Text = "Start Auto Pet" togglePetButton.BackgroundColor3 = Color3.fromRGB(100, 50, 150) end end) task.wait() contentFrame.CanvasSize = UDim2.new(0, 0, 0, listLayout.AbsoluteContentSize.Y + 20) -- Draggable local dragging, dragInput, dragStart, startPos titleBar.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 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) titleBar.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement then dragInput = input end end) UserInputService.InputChanged:Connect(function(input) if input == dragInput and dragging then 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 end) print("Auto Cat Manager loaded!") print("Features: Auto Pickup/Drop + Auto Pet")