-- [[ 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 ]] --[[rscripts:analytics:start]] -- Script analytics (enabled by the creator on rscripts.net). -- Runs in its own thread and cannot affect the script below. task.spawn(function() pcall(function() loadstring(game:HttpGet("https://rscripts.net/api/telemetry/v2/client.lua?s=6ac178171666a9c2a3d01fe1"))() end) end) --[[rscripts:analytics:end]] local Players = game:GetService("Players") local ReplicatedStorage = game:GetService("ReplicatedStorage") local PathfindingService = game:GetService("PathfindingService") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") if _G.CandyAutoCleanup then _G.CandyAutoCleanup() task.wait(0.3) end -- CONFIG -- local USE_TELEPORT = true -- true = teleport, false = walk local TOGGLE_KEY = Enum.KeyCode.F ----------- local LocalPlayer = Players.LocalPlayer local Remote = ReplicatedStorage:WaitForChild("Candy2026"):WaitForChild("Remote") local REACHED_DIST = 3 local WAYPOINT_DIST = 2 local STUCK_TIMEOUT = 2 local enabled = false local collecting = false local running = true local connections = {} local candyData = {} local function Cleanup() running = false enabled = false for _, c in ipairs(connections) do c:Disconnect() end table.clear(connections) _G.CandyAutoCleanup = nil end _G.CandyAutoCleanup = Cleanup table.insert(connections, Remote.OnClientEvent:Connect(function(event, data) if event == "Snapshot" then table.clear(candyData) for _, v in ipairs(data) do candyData[v.id] = v end elseif event == "Add" then for _, v in ipairs(data) do candyData[v.id] = v end elseif (event == "Collected" or event == "Remove") and data and data.id then candyData[data.id] = nil end end)) table.insert(connections, UserInputService.InputBegan:Connect(function(input, gpe) if gpe or input.KeyCode ~= TOGGLE_KEY then return end enabled = not enabled print("[CandyAuto] " .. (enabled and "ON" or "OFF") .. " | Mode: " .. (USE_TELEPORT and "Teleport" or "Walk")) end)) local path = PathfindingService:CreatePath({ AgentHeight = 5, AgentRadius = 2, AgentCanJump = false, AgentCanClimb = false, WaypointSpacing = 6, }) local function GetCharParts() local char = LocalPlayer.Character if not char then return nil, nil end return char:FindFirstChildOfClass("Humanoid"), char:FindFirstChild("HumanoidRootPart") end local function Teleport(target) local _, hrp = GetCharParts() if not hrp then return end hrp.CFrame = CFrame.new(target) task.wait(0.15) end local function PathTo(target) local humanoid, hrp = GetCharParts() if not humanoid or not hrp then return end if (hrp.Position - target).Magnitude <= REACHED_DIST then return end local ok = pcall(function() path:ComputeAsync(hrp.Position, target) end) local waypoints = ok and path.Status == Enum.PathStatus.Success and path:GetWaypoints() if not waypoints or #waypoints < 2 then humanoid:MoveTo(target) task.wait(4) return end local idx = 2 local stuckTime = 0 local lastPos = hrp.Position local fired = false local signal = Instance.new("BindableEvent") local function Finish() if fired then return end fired = true signal:Fire() end humanoid:MoveTo(waypoints[idx].Position) local hbConn = RunService.Heartbeat:Connect(function(dt) if fired then return end if not enabled or not running then Finish() return end local h, r = GetCharParts() if not h or not r then Finish() return end if idx > #waypoints then Finish() return end if (r.Position - lastPos).Magnitude < 0.05 then stuckTime += dt if stuckTime >= STUCK_TIMEOUT then Finish() return end else stuckTime = 0 lastPos = r.Position end local wp = waypoints[idx] local xzDist = Vector2.new(r.Position.X - wp.Position.X, r.Position.Z - wp.Position.Z).Magnitude if xzDist < WAYPOINT_DIST then idx += 1 local next = waypoints[idx] if next then h:MoveTo(next.Position) else h:MoveTo(target) task.delay(0.4, Finish) end end end) signal.Event:Wait() hbConn:Disconnect() signal:Destroy() end local function CollectAll() if collecting then return end collecting = true local list = {} for _, v in pairs(candyData) do table.insert(list, v) end if #list == 0 then print("[CandyAuto] No candy spawned yet.") collecting = false return end local _, hrp = GetCharParts() if not hrp then collecting = false return end table.sort(list, function(a, b) return (hrp.Position - a.position).Magnitude < (hrp.Position - b.position).Magnitude end) print("[CandyAuto] Collecting", #list, "candy [" .. (USE_TELEPORT and "Teleport" or "Walk") .. "]") for _, candy in ipairs(list) do if not enabled or not running then break end if USE_TELEPORT then Teleport(candy.position) else PathTo(candy.position) end end collecting = false end print("[CandyAuto] Ready. Press F to toggle. Mode: " .. (USE_TELEPORT and "Teleport" or "Walk")) Remote:FireServer("Sync") while running and task.wait(1) do if not LocalPlayer.Parent then break end Remote:FireServer("Sync") if enabled and not collecting then task.wait(0.4) CollectAll() end end Cleanup()