-- [[ 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 repo = "https://raw.githubusercontent.com/deividcomsono/Obsidian/main/" local Library = loadstring(game:HttpGet(repo .. "Library.lua"))() local ThemeManager = loadstring(game:HttpGet(repo .. "addons/ThemeManager.lua"))() local SaveManager = loadstring(game:HttpGet(repo .. "addons/SaveManager.lua"))() local Options = Library.Options local Toggles = Library.Toggles local Players = game:GetService("Players") local player = Players.LocalPlayer local humanoidRootPart local isRunning = false local ConsoleLabel = nil local targets = { { CFrame = CFrame.new(226.62, 5.68, -2133.35), Prompts = {"Bank", "Rob Bank"} }, { CFrame = CFrame.new(221.53, 5.34, -3453.79), Prompts = {"Till", "Rob Till"} }, { CFrame = CFrame.new(234.37, 5.67, -2032.88), Prompts = {"Till", "Rob Till"} }, { CFrame = CFrame.new(-156.77, 5.05, -84.98), Prompts = {"Till", "Rob Till"} }, { CFrame = CFrame.new(369.42, 5.38, -3032.06), Prompts = {"Till", "Rob Till"} } } local safeLocation = CFrame.new(-571.40, 12.76, -4293.93) -- Safe hiding spot local launderLocation = CFrame.new(-178.19, 5.15, -79.07) -- Launder Point local logLines = {} local MAX_LOG_LINES = 22 local function Log(msg) local line = os.date("%H:%M:%S") .. " " .. tostring(msg) table.insert(logLines, line) if #logLines > MAX_LOG_LINES then table.remove(logLines, 1) end local text = table.concat(logLines, "\n") if ConsoleLabel then pcall(function() ConsoleLabel:SetText(text) end) end print("[AutoRob]", msg) end local function ClearLog() logLines = {} Log("Console cleared") end -- ===================================================== local function updateCharacter() local character = player.Character or player.CharacterAdded:Wait() humanoidRootPart = character:WaitForChild("HumanoidRootPart", 5) if humanoidRootPart then Log("Character ready") else Log("ERROR: No HumanoidRootPart") end end player.CharacterAdded:Connect(function() task.wait(0.8) updateCharacter() end) local function getNearbyPrompts(maxDistance) maxDistance = maxDistance or 15 local localPrompts = {} if not humanoidRootPart then return localPrompts end for _, obj in ipairs(workspace:GetDescendants()) do if obj:IsA("ProximityPrompt") and obj.Parent then local part = obj.Parent:IsA("BasePart") and obj.Parent or obj.Parent:FindFirstChildWhichIsA("BasePart") if part then local dist = (humanoidRootPart.Position - part.Position).Magnitude if dist <= maxDistance then table.insert(localPrompts, obj) end end end end return localPrompts end local function robLocation(targetCFrame, actionNames, index) Log("── Location #" .. index .. " ──") if not humanoidRootPart or not humanoidRootPart.Parent then updateCharacter() if not humanoidRootPart then Log("ERROR: No character - skipping") return end end humanoidRootPart.CFrame = targetCFrame Log("Teleported to location #" .. index) task.wait(0.5) local nearbyPrompts = getNearbyPrompts(20) local matched = 0 for _, obj in ipairs(nearbyPrompts) do if obj and obj.Parent then for _, name in ipairs(actionNames) do if obj.ObjectText == name or obj.ActionText == name then matched += 1 obj.HoldDuration = 0 obj.RequiresLineOfSight = false if fireproximityprompt then fireproximityprompt(obj) else pcall(function() obj:InputHoldBegin() obj:InputHoldEnd() end) end Log("Interacted → " .. name) end end end end if matched == 0 then Log("WARNING: No matching prompt found") else Log("Interacted with " .. matched .. " prompt(s)") end end local function runRobberySequence() Log("===== STARTING SEQUENCE =====") for i, target in ipairs(targets) do if not isRunning then break end robLocation(target.CFrame, target.Prompts, i) task.wait(0.9) end if isRunning and humanoidRootPart and humanoidRootPart.Parent then humanoidRootPart.CFrame = safeLocation Log("Teleported to Safe Hiding Spot") end Log("===== SEQUENCE FINISHED =====") end local Window = Library:CreateWindow({ Title = "Auto Rob", Footer = "Safe Mode", Center = true, AutoShow = true, }) local Tabs = { Main = Window:AddTab("Main", "dollar-sign"), ["UI Settings"] = Window:AddTab("UI Settings", "settings"), } local MainGroup = Tabs.Main:AddLeftGroupbox("Controls") MainGroup:AddToggle("AutoRob", { Text = "Enable Auto Rob", Default = false, }) MainGroup:AddSlider("Cooldown", { Text = "Cooldown (seconds)", Default = 30, Min = 1, Max = 2500, Rounding = 0, }) MainGroup:AddButton({ Text = "Run Once", Func = function() if isRunning then Library:Notify("Already running!", 3) return end task.spawn(function() isRunning = true Log("Run Once started") runRobberySequence() isRunning = false Log("Run Once finished") end) end, }) MainGroup:AddButton({ Text = "Teleport to Safe Spot", Func = function() if not humanoidRootPart or not humanoidRootPart.Parent then updateCharacter() end if humanoidRootPart then humanoidRootPart.CFrame = safeLocation Log("Teleported to Safe Hiding Spot") Library:Notify("Safe Spot", 2) end end, }) MainGroup:AddButton({ Text = "Teleport to Launder Point", Func = function() if not humanoidRootPart or not humanoidRootPart.Parent then updateCharacter() end if humanoidRootPart then humanoidRootPart.CFrame = launderLocation Log("Teleported to Launder Point") Library:Notify("Launder Point", 2) end end, }) MainGroup:AddDivider() MainGroup:AddButton({ Text = "Clear Console", Func = ClearLog, }) MainGroup:AddButton({ Text = "Force Character Update", Func = updateCharacter, }) local ConsoleGroup = Tabs.Main:AddRightGroupbox("Console") ConsoleLabel = ConsoleGroup:AddLabel("ConsoleLog", { Text = "Ready...", DoesWrap = true, }) Toggles.AutoRob:OnChanged(function(Value) if Value then if isRunning then return end isRunning = true Log("Auto Rob ENABLED") Library:Notify("Auto Rob started", 3) task.spawn(function() local cycle = 0 while Toggles.AutoRob.Value and isRunning do cycle += 1 Log("── CYCLE #" .. cycle .. " ──") runRobberySequence() if not Toggles.AutoRob.Value or not isRunning then break end local cd = Options.Cooldown.Value or 30 Log("Cooldown: " .. cd .. "s") local waited = 0 while waited < cd and Toggles.AutoRob.Value and isRunning do task.wait(1) waited += 1 end end isRunning = false Log("Auto Rob STOPPED") Library:Notify("Auto Rob stopped", 3) end) else isRunning = false Log("Auto Rob toggle OFF") end end) ThemeManager:SetLibrary(Library) SaveManager:SetLibrary(Library) SaveManager:IgnoreThemeSettings() ThemeManager:SetFolder("AutoRob") SaveManager:SetFolder("AutoRob") SaveManager:BuildConfigSection(Tabs["UI Settings"]) ThemeManager:ApplyToTab(Tabs["UI Settings"]) task.wait(0.4) updateCharacter() Log("Script loaded (Safe Mode)") Log("Safe Spot + Launder Point ready") Library:Notify("Auto Rob loaded", 4)