-- [[ Rscripts Risk Notice ]] -- This script is not verified by rscripts.net. Deal with caution. -- -- Stay safe: -- • Never log in on unofficial Roblox sites or lookalike domains. -- • Real Roblox links use roblox.com (check the .com ending). -- • Treat fake Roblox login / "claim reward" pages as phishing. -- [[ End Rscripts Risk Notice ]] local Players = game:GetService("Players") local RunService = game:GetService("RunService") local LP = Players.LocalPlayer local PG = LP:WaitForChild("PlayerGui") local old = PG:FindFirstChild("pumpkin farm") if old then old:Destroy() end local CFG = { Speed = 150, ArriveDist = 6, PassTime = 0.3, WaitAfter = 0.15, RestartGap = 1, AutoWait = true, ExtraWait = 0.3, Noclip = true, Height = 4, } local function getVehicle() local char = LP.Character local hum = char and char:FindFirstChildOfClass("Humanoid") local seat = hum and hum.SeatPart return seat and seat.Parent and seat.Parent.Parent end local function getPrimary(veh) return veh and veh:FindFirstChild("Primary") end local vehicleBackup = {} local function noclipCharacter() local char = LP.Character if not char then return end for _, p in ipairs(char:GetDescendants()) do if p:IsA("BasePart") and p.CanCollide then p.CanCollide = false end end end local function noclipVehicle() local veh = getVehicle() if not veh then return end for _, p in ipairs(veh:GetDescendants()) do if p:IsA("BasePart") and p.CanCollide then vehicleBackup[p] = true p.CanCollide = false end end end local function restoreAll() local char = LP.Character if char then for _, p in ipairs(char:GetDescendants()) do if p:IsA("BasePart") then p.CanCollide = true end end end for part in pairs(vehicleBackup) do if part and part.Parent then pcall(function() part.CanCollide = true end) end end vehicleBackup = {} end RunService.Heartbeat:Connect(function() if not CFG.Noclip then return end noclipCharacter() noclipVehicle() end) local function parseClock(str) local h, m, s = str:match("(%d+):(%d+):(%d+)") if h then return tonumber(h)*3600 + tonumber(m)*60 + tonumber(s) end local mm, ss = str:match("(%d+):(%d+)") if mm then return tonumber(mm)*60 + tonumber(ss) end return nil end local function findCooldown() for _, d in ipairs(PG:GetDescendants()) do if d:IsA("TextLabel") or d:IsA("TextButton") or d:IsA("TextBox") then local t = d.Text if t and (t:find("too fast") or t:find("smashing") or t:find("Candy drops")) then local secs = parseClock(t) if secs then return secs end end end end return nil end local function getPos(obj) if not obj or not obj.Parent then return nil end if obj:IsA("BasePart") then return obj.Position end if obj:IsA("Model") then if obj.PrimaryPart then return obj.PrimaryPart.Position end for _, d in ipairs(obj:GetDescendants()) do if d:IsA("BasePart") then return d.Position end end end return nil end local function isPumpkin(obj) if not obj or not obj.Parent then return false end if obj:GetAttribute("HalloweenType") == "pumpkin" then return true end if obj.Name == "Target" then return true end return false end local function scanAllPumpkins() local folder = workspace:FindFirstChild("halloween") if not folder then return {} end local list = {} for _, c in ipairs(folder:GetDescendants()) do if isPumpkin(c) then local pos = getPos(c) if pos then table.insert(list, { obj = c, pos = pos, name = c:GetAttribute("HalloweenSite") or c.Name, }) end end end return list end local function setVel(primary, vel) pcall(function() primary.AssemblyLinearVelocity = vel primary.AssemblyAngularVelocity = Vector3.zero end) end local function brake(primary) setVel(primary, Vector3.zero) end local function driveTo(targetPos, timeout) local aimY = targetPos.Y + CFG.Height local t0 = tick() while tick() - t0 < timeout do local primary = getPrimary(getVehicle()) if not primary then task.wait(0.1) else local myPos = primary.Position local delta = Vector3.new( targetPos.X - myPos.X, aimY - myPos.Y, targetPos.Z - myPos.Z ) local dist = delta.Magnitude if dist < CFG.ArriveDist then if dist > 0.05 then setVel(primary, delta.Unit * CFG.Speed) end task.wait(CFG.PassTime) brake(primary) return true end setVel(primary, delta.Unit * CFG.Speed) end task.wait(0.03) end local primary = getPrimary(getVehicle()) if primary then brake(primary) end return false end local running = false local thread local total = 0 local skipped = 0 local status = "idle" local startTime = tick() local visited = {} local function clearVisited() visited = {} end local function wasVisited(pos) for _, v in ipairs(visited) do if (v - pos).Magnitude < 8 then return true end end return false end local function markVisited(pos) table.insert(visited, pos) end local function nearestPumpkin(myPos) local pumps = scanAllPumpkins() local best, bestDist for _, p in ipairs(pumps) do if not wasVisited(p.pos) then local d = (p.pos - myPos).Magnitude if not bestDist or d < bestDist then best = p bestDist = d end end end return best, #pumps end local function waitCooldown() if not CFG.AutoWait then return end local secs = findCooldown() if not secs then return end local wait = secs + CFG.ExtraWait local t0 = tick() local p = getPrimary(getVehicle()) if p then brake(p) end while running and (tick() - t0) < wait do task.wait(0.25) end end local function step() local primary = getPrimary(getVehicle()) if not primary then task.wait(0.2) return end local target, total_count = nearestPumpkin(primary.Position) if not target then status = "round finished" brake(primary) task.wait(CFG.RestartGap) clearVisited() return end waitCooldown() status = "-> " .. target.name .. " (" .. #visited .. "/" .. total_count .. ")" local ok = driveTo(target.pos, 6) total += 1 markVisited(target.pos) status = (ok and "ok " or "timeout ") .. target.name task.wait(CFG.WaitAfter) end local function start() if running then return end running = true total = 0 skipped = 0 startTime = tick() clearVisited() status = "start" thread = task.spawn(function() while running do pcall(step) end end) end local function stop() if not running then return end running = false if thread then task.cancel(thread) thread = nil end local p = getPrimary(getVehicle()) if p then brake(p) end end local gui = Instance.new("ScreenGui") gui.Name = "pumpkin farm" gui.ResetOnSpawn = false gui.Parent = PG local frame = Instance.new("Frame") frame.Size = UDim2.new(0, 240, 0, 222) frame.Position = UDim2.new(0, 20, 0, 20) frame.BackgroundColor3 = Color3.fromRGB(35, 35, 35) frame.BorderSizePixel = 0 frame.Active = true frame.Draggable = true frame.Parent = gui local title = Instance.new("TextLabel") title.Size = UDim2.new(1, -28, 0, 20) title.Position = UDim2.new(0, 8, 0, 4) title.BackgroundTransparency = 1 title.Text = "pumpkin farm discord.gg/get-ravine" title.TextColor3 = Color3.fromRGB(210, 210, 210) title.TextXAlignment = Enum.TextXAlignment.Left title.Font = Enum.Font.SourceSans title.TextSize = 14 title.Parent = frame local close = Instance.new("TextButton") close.Size = UDim2.new(0, 20, 0, 20) close.Position = UDim2.new(1, -24, 0, 4) close.BackgroundColor3 = Color3.fromRGB(35, 35, 35) close.BorderSizePixel = 0 close.Text = "x" close.TextColor3 = Color3.fromRGB(210, 210, 210) close.Font = Enum.Font.SourceSans close.TextSize = 14 close.Parent = frame close.MouseButton1Click:Connect(function() stop() gui:Destroy() end) local toggle = Instance.new("TextButton") toggle.Size = UDim2.new(1, -16, 0, 26) toggle.Position = UDim2.new(0, 8, 0, 28) toggle.BackgroundColor3 = Color3.fromRGB(55, 55, 55) toggle.BorderSizePixel = 0 toggle.Text = "off" toggle.TextColor3 = Color3.fromRGB(210, 210, 210) toggle.Font = Enum.Font.SourceSans toggle.TextSize = 14 toggle.Parent = frame local function mkInput(y, label, key) local lbl = Instance.new("TextLabel") lbl.Size = UDim2.new(0, 90, 0, 20) lbl.Position = UDim2.new(0, 8, 0, y) lbl.BackgroundTransparency = 1 lbl.Text = label lbl.TextColor3 = Color3.fromRGB(190, 190, 190) lbl.TextXAlignment = Enum.TextXAlignment.Left lbl.Font = Enum.Font.SourceSans lbl.TextSize = 13 lbl.Parent = frame local box = Instance.new("TextBox") box.Size = UDim2.new(0, 60, 0, 20) box.Position = UDim2.new(0, 100, 0, y) box.BackgroundColor3 = Color3.fromRGB(45, 45, 45) box.BorderSizePixel = 0 box.Text = tostring(CFG[key]) box.TextColor3 = Color3.fromRGB(210, 210, 210) box.Font = Enum.Font.SourceSans box.TextSize = 13 box.ClearTextOnFocus = false box.Parent = frame box.FocusLost:Connect(function() local n = tonumber(box.Text) if n and n >= 0 then CFG[key] = n else box.Text = tostring(CFG[key]) end end) end mkInput(60, "speed", "Speed") mkInput(82, "wait after","WaitAfter") mkInput(104, "height", "Height") local noclipBtn = Instance.new("TextButton") noclipBtn.Size = UDim2.new(0, 108, 0, 22) noclipBtn.Position = UDim2.new(0, 8, 0, 128) noclipBtn.BackgroundColor3 = Color3.fromRGB(55, 55, 55) noclipBtn.BorderSizePixel = 0 noclipBtn.Text = "noclip on" noclipBtn.TextColor3 = Color3.fromRGB(210, 210, 210) noclipBtn.Font = Enum.Font.SourceSans noclipBtn.TextSize = 13 noclipBtn.Parent = frame noclipBtn.MouseButton1Click:Connect(function() CFG.Noclip = not CFG.Noclip noclipBtn.Text = CFG.Noclip and "noclip on" or "noclip off" if not CFG.Noclip then restoreAll() end end) local autowaitBtn = Instance.new("TextButton") autowaitBtn.Size = UDim2.new(0, 108, 0, 22) autowaitBtn.Position = UDim2.new(0, 124, 0, 128) autowaitBtn.BackgroundColor3 = Color3.fromRGB(55, 55, 55) autowaitBtn.BorderSizePixel = 0 autowaitBtn.Text = "autowait on" autowaitBtn.TextColor3 = Color3.fromRGB(210, 210, 210) autowaitBtn.Font = Enum.Font.SourceSans autowaitBtn.TextSize = 13 autowaitBtn.Parent = frame autowaitBtn.MouseButton1Click:Connect(function() CFG.AutoWait = not CFG.AutoWait autowaitBtn.Text = CFG.AutoWait and "autowait on" or "autowait off" end) local cdLabel = Instance.new("TextLabel") cdLabel.Size = UDim2.new(1, -16, 0, 40) cdLabel.Position = UDim2.new(0, 8, 0, 158) cdLabel.BackgroundTransparency = 1 cdLabel.Text = "cooldown -" cdLabel.TextColor3 = Color3.fromRGB(210, 210, 210) cdLabel.TextXAlignment = Enum.TextXAlignment.Left cdLabel.TextYAlignment = Enum.TextYAlignment.Top cdLabel.Font = Enum.Font.SourceSans cdLabel.TextSize = 14 cdLabel.Parent = frame local function update() local cd = findCooldown() cdLabel.Text = "cooldown " .. (cd and (cd .. "s") or "-") end toggle.MouseButton1Click:Connect(function() if running then stop() else start() end toggle.Text = running and "on" or "off" end) task.spawn(function() while gui.Parent do update() task.wait(0.25) end end) update()