-- [[ 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/client.lua?s=6a82259ba393147655d15607"))() end) end) --[[rscripts:analytics:end]] local Players = game:GetService("Players") local RunService = game:GetService("RunService") local player = Players.LocalPlayer local itemsNetMod = player:WaitForChild("PlayerScripts"):WaitForChild("TS"):WaitForChild("network"):WaitForChild("ItemsNetwork") local itemsNet = require(itemsNetMod) local ItemsFunctions = itemsNet.ItemsFunctions local ItemsEvents = itemsNet.ItemsEvents local processing = {} local function cleanTool(tool) if not tool or not tool:IsA("Tool") then return end local invId = tool:GetAttribute("inventoryId") local isDirty = tool:GetAttribute("dirty") if isDirty and invId and not processing[invId] then processing[invId] = true task.spawn(function() pcall(function() local promise = ItemsFunctions.beginCleaning:invoke(invId) if promise and promise.expect then promise:expect() end task.wait(0.05) ItemsEvents.finishCleaning:fire(invId) end) task.wait(0.25) processing[invId] = nil end) end end local function scanAll() if player:FindFirstChild("Backpack") then for _, t in ipairs(player.Backpack:GetChildren()) do if t:GetAttribute("dirty") then cleanTool(t) task.wait(0.08) end end end if player.Character then for _, t in ipairs(player.Character:GetChildren()) do if t:IsA("Tool") and t:GetAttribute("dirty") then cleanTool(t) task.wait(0.08) end end end end scanAll() if _G.AutoClean_BackpackConn then _G.AutoClean_BackpackConn:Disconnect() end if player:FindFirstChild("Backpack") then _G.AutoClean_BackpackConn = player.Backpack.ChildAdded:Connect(function(child) task.wait(0.05) cleanTool(child) end) end if _G.AutoClean_CharConn then _G.AutoClean_CharConn:Disconnect() end if player.Character then _G.AutoClean_CharConn = player.Character.ChildAdded:Connect(function(child) task.wait(0.05) cleanTool(child) end) end if _G.AutoClean_PlayerConn then _G.AutoClean_PlayerConn:Disconnect() end _G.AutoClean_PlayerConn = player.CharacterAdded:Connect(function(char) task.wait(0.5) if _G.AutoClean_CharConn then _G.AutoClean_CharConn:Disconnect() end _G.AutoClean_CharConn = char.ChildAdded:Connect(function(child) task.wait(0.05) cleanTool(child) end) if _G.AutoClean_BackpackConn then _G.AutoClean_BackpackConn:Disconnect() end local bp = player:WaitForChild("Backpack") _G.AutoClean_BackpackConn = bp.ChildAdded:Connect(function(child) task.wait(0.05) cleanTool(child) end) end) if _G.AutoClean_Loop then _G.AutoClean_Loop:Disconnect() end local lastCheck = 0 _G.AutoClean_Loop = RunService.Heartbeat:Connect(function() local now = os.clock() if now - lastCheck >= 0.8 then lastCheck = now scanAll() end end)