repeat wait() until game:IsLoaded() task.wait(2) local Players = game:GetService("Players") local RunService = game:GetService("RunService") local lp = Players.LocalPlayer local function findTool(name) local char = lp.Character local backpack = lp:FindFirstChildOfClass("Backpack") return (char and char:FindFirstChild(name)) or (backpack and backpack:FindFirstChild(name)) end local function firePrompt(part) if not part then return false end local prompt = part:FindFirstChildOfClass("ProximityPrompt") if prompt then prompt.RequiresLineOfSight = false fireproximityprompt(prompt, 1, true) return true end return false end local function moveTo(part) if part and lp.Character and lp.Character:FindFirstChild("Humanoid") then lp.Character.Humanoid:MoveTo(part.Position) end end local function runDishwasherLogic() local dirtyPlate = findTool("DirtyPlate") local cleanPlate = findTool("CleanPlate") if dirtyPlate then local washPart = workspace.DishwasherJob.WashDish.WashDish if firePrompt(washPart) then moveTo(washPart) end elseif cleanPlate then local placePart = workspace.DishwasherJob.PlacePlates:FindFirstChild("Place Plate") if firePrompt(placePart) then moveTo(placePart) end else local pickupPart = workspace.DishwasherJob.PickupPlates:FindFirstChild("Pick Up Plate") if firePrompt(pickupPart) then moveTo(pickupPart) end end end while task.wait(1) do pcall(runDishwasherLogic) end