-- [Rayfield Loader] loadstring(game:HttpGet("https://sirius.menu/rayfield"))() local Rayfield = loadstring(game:HttpGet("https://sirius.menu/rayfield"))() local autofarmEnabled = false -- UI Setup local Window = Rayfield:CreateWindow({ Name = "🍄 Evo Puffball Autofarm", LoadingTitle = "Evo Suite", LoadingSubtitle = "by EvoOnStandby", ConfigurationSaving = { Enabled = false }, Discord = { Enabled = false }, KeySystem = true, KeySettings = { Title = "Evo Autofarm Key", Subtitle = "Protected Access", Note = "Mrskully39 is cool but I'm cooler like... Frozen H2O don't search it up", FileName = "EvoPuffKey", SaveKey = false, GrabKeyFromSite = false, Key = {"Evo is just better"} } }) local MainTab = Window:CreateTab("Autofarm", 4483362458) MainTab:CreateToggle({ Name = "Enable Puffball Autofarm", CurrentValue = false, Flag = "PuffballFarmToggle", Callback = function(Value) autofarmEnabled = Value end, }) -- Autofarm Logic local Players = game:GetService("Players") local Workspace = game:GetService("Workspace") local LocalPlayer = Players.LocalPlayer local ActionText = "Harvest PuffBall" local GrabAction = "Grab" local DeliverAction = "Deliver Package" local CHECK_RADIUS = 20 local WAIT_BETWEEN_TARGETS = 2.5 local Character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait() local HRP = Character:WaitForChild("HumanoidRootPart") local Humanoid = Character:WaitForChild("Humanoid") -- Handle respawn LocalPlayer.CharacterAdded:Connect(function(char) Character = char HRP = char:WaitForChild("HumanoidRootPart") Humanoid = char:WaitForChild("Humanoid") end) -- Utilities local function teleportAbove(pos) if HRP then HRP.CFrame = CFrame.new(pos + Vector3.new(0, 4, 0)) end end local function getNearbyBoxes(pos, radius) local boxes = {} for _, obj in ipairs(Workspace:GetDescendants()) do if obj:IsA("BasePart") and obj.Name == "Box" and (obj.Position - pos).Magnitude <= radius then table.insert(boxes, obj) end end return boxes end local function getAllPuffballs() local list = {} for _, prompt in ipairs(Workspace:GetDescendants()) do if prompt:IsA("ProximityPrompt") and prompt.ActionText == ActionText then local part = prompt.Parent if part:IsA("BasePart") then table.insert(list, {part = part, prompt = prompt}) end end end return list end local function findGrabPromptNear(pos) for _, prompt in ipairs(Workspace:GetDescendants()) do if prompt:IsA("ProximityPrompt") and prompt.ActionText == GrabAction then local part = prompt.Parent if part:IsA("BasePart") and (part.Position - pos).Magnitude <= CHECK_RADIUS then return prompt end end end end local function findDeliveryPrompt() for _, prompt in ipairs(Workspace:GetDescendants()) do if prompt:IsA("ProximityPrompt") and prompt.ActionText == "Deliver Package" then return prompt end end end -- Main Loop task.spawn(function() while true do if autofarmEnabled then pcall(function() local targets = getAllPuffballs() for _, entry in ipairs(targets) do if not autofarmEnabled then break end if not Character or not HRP or not Humanoid then break end local part = entry.part local prompt = entry.prompt if not part or not prompt then continue end local beforeBoxes = getNearbyBoxes(part.Position, CHECK_RADIUS) teleportAbove(part.Position) task.wait(0.2) fireproximityprompt(prompt) task.wait(1.5) local afterBoxes = getNearbyBoxes(part.Position, CHECK_RADIUS) if #afterBoxes > #beforeBoxes then print("✅ Ripe Puffball harvested!") local grabPrompt = findGrabPromptNear(part.Position) if grabPrompt then local boxPart = grabPrompt.Parent if boxPart:IsA("BasePart") then teleportAbove(boxPart.Position) task.wait(0.3) fireproximityprompt(grabPrompt) task.wait(0.5) local deliverPrompt = findDeliveryPrompt() if deliverPrompt and deliverPrompt.Parent:IsA("BasePart") then teleportAbove(deliverPrompt.Parent.Position) task.wait(0.4) fireproximityprompt(deliverPrompt) print("📦 Delivered!") else warn("⚠️ Deliver prompt not found.") end end else warn("⚠️ Grab prompt not found.") end else warn("❌ Unripe Puffball, no box.") end task.wait(WAIT_BETWEEN_TARGETS) end end) end task.wait(1) end end)