-- [[ 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=6aeb81e5d070345a899cb096"))() end) end) --[[rscripts:analytics:end]] -- AXIOM | DRIVING EMPIRE CANDY FARM -- Standalone implementation using integration paths identified in: -- https://github.com/Mirai1i/script/blob/main/DRIVING%20EMPIRE -- Targets Spookfest2026Candy. -- Live Delta/game compatibility is untested. -- Visits are not confirmed rewards. local Players = game:GetService("Players") local Storage = game:GetService("ReplicatedStorage") local Input = game:GetService("UserInputService") local Me = Players.LocalPlayer assert(Me, "Run this in the Roblox client") local ENV = (type(getgenv) == "function" and getgenv()) or _G if type(ENV.AxiomDECandyStop) == "function" then pcall(ENV.AxiomDECandyStop) end local EVENT = "Spookfest2026Candy" local CONTROLLER = "Modules/Client/CollectibleSpawner/CollectibleSpawnerController" local CURRENCY = "Modules/Shared/DataManager/Data/CurrencyData" local alive, running, repeatPass = true, false, false local delaySeconds, visited, passNumber = 0.5, 0, 0 local message = "Press START to check the event" local route, total = {}, 0 local baseline, balance, nextBalance = nil, nil, 0 local pendingNearest, worker, revision = false, nil, 0 local connections, jobs, modules = {}, {}, {} local gui, startButton, status, stats, delayLabel, repeatButton local function connect(signal, callback) local connection = signal:Connect(callback) connections[#connections + 1] = connection return connection end local function stop() if not alive then return end alive, running, pendingNearest = false, false, false revision = revision + 1 for _, connection in ipairs(connections) do connection:Disconnect() end for thread in pairs(jobs) do pcall(task.cancel, thread) end if worker and worker ~= coroutine.running() then pcall(task.cancel, worker) end if gui then gui:Destroy() end if ENV.AxiomDECandyStop == stop then ENV.AxiomDECandyStop = nil end end ENV.AxiomDECandyStop = stop local function loadModule(path) if modules[path] then return modules[path] end local object = Storage for name in path:gmatch("[^/]+") do object = object:FindFirstChild(name) if not object then error("Missing game module: " .. path, 0) end end if not object:IsA("ModuleScript") then error("Game module changed: " .. path, 0) end local done, succeeded, value = false, false, nil local thread = task.spawn(function() succeeded, value = pcall(require, object) done = true end) if not done then jobs[thread] = true end local deadline = os.clock() + 8 while alive and not done and os.clock() < deadline do task.wait(0.05) end jobs[thread] = nil if not done then pcall(task.cancel, thread) error("Game module load timed out", 0) end if not succeeded or type(value) ~= "table" then error("Cannot load game module: " .. path, 0) end modules[path] = value return value end local function positionsFrom(value) if type(value) ~= "table" then return end local event = rawget(value, EVENT) if type(event) == "table" and type(rawget(event, "positions")) == "table" then return event.positions end end local function readPositions() local controller = loadModule(CONTROLLER) local nearest = controller.GetNearestAvailable if type(nearest) ~= "function" then error("Collectible controller API changed", 0) end local all = getupvalues or (debug and debug.getupvalues) if type(all) == "function" then local ok, values = pcall(all, nearest) if ok and type(values) == "table" then for _, value in pairs(values) do local positions = positionsFrom(value) if positions then return positions end end end end local one = getupvalue or (debug and debug.getupvalue) if type(one) == "function" then for index = 1, 64 do -- Handles value-only and name,value conventions. local ok, first, second = pcall(one, nearest, index) if not ok then break end local positions = positionsFrom(second) or positionsFrom(first) if positions then return positions end end end error( "Candy state unavailable: event inactive, game changed, " .. "or executor API unsupported", 0 ) end local function finite(value) return type(value) == "number" and value == value and math.abs(value) < math.huge end local function snapshot() local positions = readPositions() local result, seen = {}, {} for _, position in pairs(positions) do if typeof(position) == "Vector3" and finite(position.X) and finite(position.Y) and finite(position.Z) then local id = string.format( "%.3f/%.3f/%.3f", position.X, position.Y, position.Z ) if not seen[id] then seen[id] = true result[#result + 1] = position end end end return result end local function updateBalance() if os.clock() < nextBalance then return end nextBalance = os.clock() + 2 local ok, value = pcall(function() local data = loadModule(CURRENCY) if type(data.GetCurrency) ~= "function" then error("Currency API changed") end return data.GetCurrency(Me, EVENT) end) if ok and finite(value) then balance = value if baseline == nil then baseline = value end else balance = nil end end local function character() local model = Me.Character local humanoid = model and model:FindFirstChildOfClass("Humanoid") local root = model and model:FindFirstChild("HumanoidRootPart") if humanoid and root and humanoid.Health > 0 then return model, humanoid, root end end local function nearestIndex(points, origin) local index, best = nil, math.huge for i, point in ipairs(points) do local distance = (point - origin).Magnitude if distance < best then index, best = i, distance end end return index end local function visit(point) local model, humanoid, root = character() if not model then return false, "Waiting for your character" end local destination = point + Vector3.new(0, 3, 0) local seat = humanoid.SeatPart if seat then if not seat:IsA("VehicleSeat") or seat.Occupant ~= humanoid then return false, "Exit this seat before farming" end local vehicles = workspace:FindFirstChild("Vehicles") if not vehicles or not seat:IsDescendantOf(vehicles) then return false, "Vehicle container changed; exit the car and retry" end -- Resolve the entire occupied car, including nested seat models. local vehicle = seat while vehicle.Parent and vehicle.Parent ~= vehicles do vehicle = vehicle.Parent end if not vehicle:IsA("Model") then return false, "Cannot resolve your vehicle model" end local body = vehicle.PrimaryPart or seat if body.Anchored then return false, "Vehicle is anchored" end body.AssemblyLinearVelocity = Vector3.zero body.AssemblyAngularVelocity = Vector3.zero -- Align the seat while preserving vehicle rotation. vehicle:PivotTo( vehicle:GetPivot() + (destination - seat.Position) ) else if root.Anchored then return false, "Character is anchored" end root.AssemblyLinearVelocity = Vector3.zero root.AssemblyAngularVelocity = Vector3.zero model:PivotTo( model:GetPivot() + (destination - root.Position) ) end return true end -- Native mobile GUI; no external UI download. local function make(class, properties, parent) local object = Instance.new(class) for name, value in pairs(properties) do object[name] = value end object.Parent = parent return object end local accent = Color3.fromRGB(255, 161, 67) local function rounded(object) make("UICorner", { CornerRadius = UDim.new(0, 9) }, object) end local function paint() if not alive or not startButton then return end startButton.Text = running and "STOP FARM" or "START FARM" startButton.BackgroundColor3 = running and Color3.fromRGB(190, 65, 75) or accent repeatButton.Text = "Repeat route: " .. (repeatPass and "ON" or "OFF") delayLabel.Text = string.format("Delay: %.2f seconds", delaySeconds) status.Text = message local money = balance ~= nil and tostring(balance) or "unavailable" local delta = balance ~= nil and baseline ~= nil and string.format(" (%+g)", balance - baseline) or "" stats.Text = string.format( "Pass %d | Visits %d/%d\nCandy balance: %s%s", passNumber, visited, total, money, delta ) end local function buildUI() gui = make("ScreenGui", { Name = "AxiomDECandy", ResetOnSpawn = false, IgnoreGuiInset = true, DisplayOrder = 1000 }, nil) local attached = pcall(function() gui.Parent = type(gethui) == "function" and gethui() or game:GetService("CoreGui") end) if not attached or not gui.Parent then gui.Parent = Me:WaitForChild("PlayerGui", 10) end assert(gui.Parent, "No GUI container available") local panel = make("Frame", { Position = UDim2.fromOffset(16, 65), Size = UDim2.fromOffset(300, 315), BackgroundColor3 = Color3.fromRGB(20, 23, 31), BorderSizePixel = 0, Active = true }, gui) rounded(panel) local function label(text, y, height) return make("TextLabel", { Position = UDim2.fromOffset(12, y), Size = UDim2.new(1, -24, 0, height), BackgroundTransparency = 1, Text = text, TextColor3 = Color3.fromRGB(240, 240, 245), TextSize = 13, Font = Enum.Font.Gotham, TextWrapped = true, TextXAlignment = Enum.TextXAlignment.Left }, panel) end local function button(text, x, y, width, callback) local b = make("TextButton", { Position = UDim2.fromOffset(x, y), Size = UDim2.fromOffset(width, 34), Text = text, BackgroundColor3 = Color3.fromRGB(49, 53, 66), TextColor3 = Color3.new(1, 1, 1), BorderSizePixel = 0, Font = Enum.Font.GothamBold, TextSize = 12 }, panel) rounded(b) connect(b.Activated, callback) return b end local title = label("AXIOM | DE CANDY", 4, 38) title.Size = UDim2.fromOffset(205, 38) title.TextColor3 = accent title.Active = true local mini = make("TextButton", { Position = UDim2.fromOffset(16, 65), Size = UDim2.fromOffset(64, 40), Text = "CANDY", Visible = false, BackgroundColor3 = accent, TextColor3 = Color3.fromRGB(20, 23, 31), Font = Enum.Font.GothamBold, TextSize = 12 }, gui) rounded(mini) button("-", 220, 7, 30, function() panel.Visible = false mini.Visible = true end) button("X", 258, 7, 30, stop) connect(mini.Activated, function() panel.Visible = true mini.Visible = false end) status = label("", 48, 54) stats = label("", 105, 44) startButton = button("START FARM", 12, 155, 276, function() revision = revision + 1 running = not running pendingNearest = false message = running and "Checking event / continuing route..." or "Stopped" paint() end) delayLabel = label("", 194, 26) delayLabel.Size = UDim2.fromOffset(190, 26) button("-", 214, 190, 34, function() delaySeconds = math.max( 0.2, math.floor((delaySeconds - 0.05) * 100 + 0.5) / 100 ) paint() end) button("+", 254, 190, 34, function() delaySeconds = math.min( 2, math.floor((delaySeconds + 0.05) * 100 + 0.5) / 100 ) paint() end) repeatButton = button("", 12, 230, 174, function() repeatPass = not repeatPass paint() end) button("NEAREST", 194, 230, 94, function() revision = revision + 1 running, pendingNearest = false, true message = "Finding nearest candy location..." paint() end) button("RESET ROUTE", 12, 270, 276, function() revision = revision + 1 running, pendingNearest, route = false, false, {} visited, total, passNumber, baseline = 0, 0, 0, nil message = "Route reset; press START" paint() end) -- Follow only the finger that started dragging. local drag, dragStart, panelStart connect(title.InputBegan, function(input) if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then drag = input dragStart = input.Position panelStart = panel.AbsolutePosition end end) connect(Input.InputChanged, function(input) if drag and ( input == drag or ( drag.UserInputType == Enum.UserInputType.MouseButton1 and input.UserInputType == Enum.UserInputType.MouseMovement ) ) then local delta = input.Position - dragStart local camera = workspace.CurrentCamera local size = camera and camera.ViewportSize or Vector2.new(800, 600) panel.Position = UDim2.fromOffset( math.clamp( panelStart.X + delta.X, 0, math.max(0, size.X - 300) ), math.clamp( panelStart.Y + delta.Y, 0, math.max(0, size.Y - 315) ) ) end end) connect(Input.InputEnded, function(input) if input == drag then drag = nil end end) paint() end local ok, err = pcall(buildUI) if not ok then stop() warn("[AXIOM DE] " .. tostring(err)) return end local function tickFarm() if not running and not pendingNearest then if modules[CURRENCY] then updateBalance() end return 0.2 end local token = revision local _, _, root = character() if not root then message = "Waiting for respawn..." return 0.5 end updateBalance() -- Module loading can yield. Honor STOP/RESET before moving. if not alive or revision ~= token or (not running and not pendingNearest) then return 0.2 end if pendingNearest then local points = snapshot() if not alive or revision ~= token or not pendingNearest then return 0.2 end local index = nearestIndex(points, root.Position) pendingNearest = false if not index then message = "No candy positions are available" return 0.5 end local moved, reason = visit(points[index]) message = moved and "Visited nearest location; reward unconfirmed" or reason return delaySeconds end if #route == 0 then if total > 0 and not repeatPass then running = false message = "Pass finished. Visits do not guarantee candy rewards." return 0.2 end local fresh = snapshot() if not alive or revision ~= token or not running then return 0.2 end route = fresh total, visited = #route, 0 if total == 0 then running = false message = "No candy positions: event empty or inactive" return 0.5 end passNumber = passNumber + 1 end local index = nearestIndex(route, root.Position) local moved, reason = visit(route[index]) if not moved then message = reason return 0.5 end table.remove(route, index) visited = visited + 1 message = "Visiting candy locations..." return delaySeconds end worker = task.spawn(function() while alive do local token = revision local succeeded, pause = pcall(tickFarm) if not succeeded and revision == token then running, pendingNearest = false, false message = tostring(pause) warn("[AXIOM DE] " .. message) pause = 0.5 elseif not succeeded then pause = 0.2 end paint() task.wait(pause or 0.2) end end) print("[AXIOM] Driving Empire Candy Farm ready")