local KeepPets = { ["Mega Lovely Goblin"] = true, ["Olympic Valentine Archer"] = true, ["Mega Cupid"] = true } local Player = game.Players.LocalPlayer local PlayerGui = Player:WaitForChild("PlayerGui") local ReplicatedStorage = game:GetService("ReplicatedStorage") -- The OP Remote Functions you found! local MatchAPetRF = ReplicatedStorage:WaitForChild("Packages"):WaitForChild("Knit"):WaitForChild("Services"):WaitForChild("MatchAPetService"):WaitForChild("RF") local RequestBuy = MatchAPetRF:WaitForChild("RequestPurchasePet") local RequestTrash = MatchAPetRF:WaitForChild("RequestTrashPet") print("🚀 Server-Side Auto-Buy Loaded!") while task.wait(0.3) do local MatchUI = PlayerGui:FindFirstChild("MatchAPet") -- Check if the UI is open if MatchUI and MatchUI:IsA("ScreenGui") and MatchUI.Enabled then -- Based on your path, everything is inside "Stats" local Stats = MatchUI:FindFirstChild("Stats") if Stats then -- Find the text label holding the name local NameLabel = Stats:FindFirstChild("PetName", true) or Stats:FindFirstChild("Name", true) or Stats:FindFirstChild("Title", true) -- Ultimate Fallback: If it STILL can't find the exact label name, it will auto-detect the pet text if not NameLabel then for _, child in pairs(Stats:GetDescendants()) do if child:IsA("TextLabel") and string.len(child.Text) > 3 and child.Text ~= "Trash" and child.Text ~= "Exit" and not string.match(child.Text, "%d") then NameLabel = child break end end end -- Execute the Buy or Trash directly to the server if NameLabel and NameLabel.Text ~= "" then local currentName = NameLabel.Text if KeepPets[currentName] then print("✅ BUYING: " .. currentName) RequestBuy:InvokeServer() task.wait(1) -- Wait for purchase to register else print("🗑️ TRASHING: " .. currentName) RequestTrash:InvokeServer() task.wait(0.1) -- Trashing is fast end end end end end