
Keyless Verified

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local VirtualInputManager = game:GetService("VirtualInputManager")
local CoreGui = game:GetService("CoreGui")
local player = Players.LocalPlayer
local Config = {
Enabled = false,
Speed = 100
}
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "PatientFarmerUI"
screenGui.ResetOnSpawn = false
pcall(function()
screenGui.Parent = CoreGui
end)
if not screenGui.Parent then
screenGui.Parent = player:WaitForChild("PlayerGui")
end
local mainFrame = Instance.new("Frame")
mainFrame.Name = "MainFrame"
mainFrame.Size = UDim2.new(0, 160, 0, 95)
mainFrame.Position = UDim2.new(0.02, 0, 0.4, 0)
mainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
mainFrame.BorderSizePixel = 0
mainFrame.Active = true
mainFrame.Draggable = true
mainFrame.Parent = screenGui
local uiCorner = Instance.new("UICorner")
uiCorner.CornerRadius = UDim.new(0, 8)
uiCorner.Parent = mainFrame
local titleLabel = Instance.new("TextLabel")
titleLabel.Size = UDim2.new(1, 0, 0, 25)
titleLabel.BackgroundTransparency = 1
titleLabel.Text = "Farm UI"
titleLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
titleLabel.TextSize = 11
titleLabel.Font = Enum.Font.GothamBold
titleLabel.Parent = mainFrame
local toggleButton = Instance.new("TextButton")
toggleButton.Size = UDim2.new(0.9, 0, 0, 25)
toggleButton.Position = UDim2.new(0.05, 0, 0.3, 0)
toggleButton.BackgroundColor3 = Color3.fromRGB(200, 50, 50)
toggleButton.Text = "Status: OFF"
toggleButton.TextColor3 = Color3.fromRGB(255, 255, 255)
toggleButton.TextSize = 11
toggleButton.Font = Enum.Font.GothamSemibold
toggleButton.Parent = mainFrame
local tCorner = Instance.new("UICorner")
tCorner.CornerRadius = UDim.new(0, 6)
tCorner.Parent = toggleButton
local speedBox = Instance.new("TextBox")
speedBox.Size = UDim2.new(0.9, 0, 0, 25)
speedBox.Position = UDim2.new(0.05, 0, 0.65, 0)
speedBox.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
speedBox.Text = tostring(Config.Speed)
speedBox.PlaceholderText = "Speed"
speedBox.TextColor3 = Color3.fromRGB(255, 255, 255)
speedBox.TextSize = 11
speedBox.Font = Enum.Font.Gotham
speedBox.ClearTextOnFocus = false
speedBox.Parent = mainFrame
local sCorner = Instance.new("UICorner")
sCorner.CornerRadius = UDim.new(0, 6)
sCorner.Parent = speedBox
local shiftTaken = false
local savedMakimaCFrame = nil
speedBox.FocusLost:Connect(function()
local val = tonumber(speedBox.Text)
if val and val > 0 then
Config.Speed = val
else
speedBox.Text = tostring(Config.Speed)
end
end)
toggleButton.MouseButton1Click:Connect(function()
Config.Enabled = not Config.Enabled
if Config.Enabled then
toggleButton.Text = "Status: ON"
toggleButton.BackgroundColor3 = Color3.fromRGB(50, 200, 50)
shiftTaken = false
else
toggleButton.Text = "Status: OFF"
toggleButton.BackgroundColor3 = Color3.fromRGB(200, 50, 50)
if player.Character then
for _, part in ipairs(player.Character:GetDescendants()) do
if part:IsA("BasePart") then
part.CanCollide = true
end
end
end
end
end)
local function getBalance()
local success, cashObj = pcall(function()
return player.PlayerGui.HUD.Bars.MainHUD.Cash
end)
if success and cashObj then
local rawText = cashObj.Text or ""
local cleanDigits = rawText:gsub("[^%d]", "")
return tonumber(cleanDigits) or 0
end
return 0
end
local function triggerInteraction(targetNpc)
if not targetNpc then return end
local prompt = targetNpc:FindFirstChildWhichIsA("ProximityPrompt", true)
if prompt then
pcall(function()
fireproximityprompt(prompt)
end)
else
VirtualInputManager:SendKeyEvent(true, Enum.KeyCode.E, false, game)
task.wait(0.1)
VirtualInputManager:SendKeyEvent(false, Enum.KeyCode.E, false, game)
end
end
local function forceClickDialogueOption(optionName)
optionName = tostring(optionName or 1)
local success, optionsFolder = pcall(function()
return player.PlayerGui.HUD.Main.Dialogue.Options
end)
if not success or not optionsFolder then return false end
local rawOption = optionsFolder:FindFirstChild(optionName)
if not rawOption then return false end
local clickable = rawOption:IsA("TextButton") or rawOption:IsA("ImageButton")
and rawOption
or rawOption:FindFirstChildWhichIsA("TextButton", true)
or rawOption:FindFirstChildWhichIsA("ImageButton", true)
or rawOption
if firesignal then
pcall(function()
firesignal(clickable.MouseButton1Click)
firesignal(clickable.MouseButton1Down)
firesignal(clickable.Activated)
end)
end
local pos = clickable.AbsolutePosition
local size = clickable.AbsoluteSize
local centerX = pos.X + (size.X / 2)
local centerY = pos.Y + (size.Y / 2)
VirtualInputManager:SendMouseButtonEvent(centerX, centerY, 0, true, game, 0)
task.wait(0.02)
VirtualInputManager:SendMouseButtonEvent(centerX, centerY, 0, false, game, 0)
VirtualInputManager:SendMouseButtonEvent(centerX, centerY + 36, 0, true, game, 0)
task.wait(0.02)
VirtualInputManager:SendMouseButtonEvent(centerX, centerY + 36, 0, false, game, 0)
return true
end
local function depositToATM()
local success, amountBox = pcall(function()
return player.PlayerGui.HUD.Tabs.ATM.AmountBox
end)
if not success or not amountBox then return false end
local pos = amountBox.AbsolutePosition
local size = amountBox.AbsoluteSize
local centerX = pos.X + (size.X / 2)
local centerY = pos.Y + (size.Y / 2)
VirtualInputManager:SendMouseButtonEvent(centerX, centerY + 36, 0, true, game, 0)
task.wait(0.05)
VirtualInputManager:SendMouseButtonEvent(centerX, centerY + 36, 0, false, game, 0)
task.wait(0.1)
amountBox.Text = "1000000"
pcall(function()
if amountBox:IsA("TextBox") then
amountBox:CaptureFocus()
task.wait(0.05)
amountBox.Text = "1000000"
task.wait(0.05)
amountBox:ReleaseFocus(true)
end
end)
local atmTab = amountBox.Parent
local depositBtn = atmTab:FindFirstChild("Deposit")
or atmTab:FindFirstChild("DepositButton")
or atmTab:FindFirstChild("Submit")
if not depositBtn then
for _, child in ipairs(atmTab:GetDescendants()) do
if child:IsA("TextButton") and string.find(child.Text:lower(), "dep") then
depositBtn = child
break
end
end
end
if depositBtn then
task.wait(0.2)
if firesignal then
pcall(function()
firesignal(depositBtn.MouseButton1Click)
firesignal(depositBtn.MouseButton1Down)
firesignal(depositBtn.Activated)
end)
end
local dPos = depositBtn.AbsolutePosition
local dSize = depositBtn.AbsoluteSize
local dCenterX = dPos.X + (dSize.X / 2)
local dCenterY = dPos.Y + (dSize.Y / 2)
VirtualInputManager:SendMouseButtonEvent(dCenterX, dCenterY + 36, 0, true, game, 0)
task.wait(0.05)
VirtualInputManager:SendMouseButtonEvent(dCenterX, dCenterY + 36, 0, false, game, 0)
return true
end
return false
end
local function getMakimaInstance()
return workspace:FindFirstChild("Ignore")
and workspace.Ignore:FindFirstChild("NPCs")
and workspace.Ignore.NPCs:FindFirstChild("Important NPCs")
and workspace.Ignore.NPCs["Important NPCs"]:FindFirstChild("Makima")
end
local function strictFlyTo(targetPos)
local char = player.Character
if not char or not char:FindFirstChild("HumanoidRootPart") then return end
local hrp = char.HumanoidRootPart
local startPos = hrp.Position
local distance = (targetPos - startPos).Magnitude
if distance < 1 then return end
local travelTime = distance / Config.Speed
local startTime = tick()
while Config.Enabled do
local elapsed = tick() - startTime
local alpha = math.clamp(elapsed / travelTime, 0, 1)
local currentTargetPos = startPos:Lerp(targetPos, alpha)
hrp.AssemblyLinearVelocity = Vector3.zero
hrp.AssemblyAngularVelocity = Vector3.zero
hrp.CFrame = CFrame.new(currentTargetPos)
if alpha >= 1 then break end
RunService.RenderStepped:Wait()
end
hrp.AssemblyLinearVelocity = Vector3.zero
hrp.AssemblyAngularVelocity = Vector3.zero
end
task.spawn(function()
local skippedPatients = {}
RunService.Stepped:Connect(function()
if Config.Enabled and player.Character then
for _, part in ipairs(player.Character:GetDescendants()) do
if part:IsA("BasePart") then
part.CanCollide = false
part.AssemblyLinearVelocity = Vector3.zero
part.AssemblyAngularVelocity = Vector3.zero
end
end
end
end)
while true do
task.wait(0.1)
if Config.Enabled then
local char = player.Character
if char and char:FindFirstChild("HumanoidRootPart") then
local hrp = char.HumanoidRootPart
local makimaObj = getMakimaInstance()
if makimaObj then
local mPart = makimaObj:IsA("Model") and (makimaObj.PrimaryPart or makimaObj:FindFirstChild("HumanoidRootPart") or makimaObj:FindFirstChildOfClass("BasePart")) or makimaObj
if mPart then
savedMakimaCFrame = mPart.CFrame
end
end
local currentMoney = getBalance()
if currentMoney >= 1000000 then
local atmTarget = workspace:FindFirstChild("Interactables")
and workspace.Interactables:FindFirstChild("ATMs")
and workspace.Interactables.ATMs:GetChildren()[20]
if atmTarget then
local atmPart = atmTarget:IsA("Model") and (atmTarget.PrimaryPart or atmTarget:FindFirstChildOfClass("BasePart")) or atmTarget
if atmPart and atmPart:IsA("BasePart") then
local targetPos = atmPart.Position
local flightPos = targetPos - Vector3.new(0, 3.5, 0)
strictFlyTo(flightPos)
if Config.Enabled then
local risePos = targetPos + Vector3.new(0, 1, 0)
hrp.CFrame = CFrame.new(risePos)
task.wait(0.2)
triggerInteraction(atmTarget)
task.wait(1.0)
depositToATM()
task.wait(0.5)
shiftTaken = false
end
end
end
end
if Config.Enabled and not shiftTaken and getBalance() < 1000000 then
local targetCFrame = savedMakimaCFrame
if makimaObj then
local mPart = makimaObj:IsA("Model") and (makimaObj.PrimaryPart or makimaObj:FindFirstChild("HumanoidRootPart") or makimaObj:FindFirstChildOfClass("BasePart")) or makimaObj
if mPart then targetCFrame = mPart.CFrame end
end
if targetCFrame then
local targetPos = targetCFrame.Position
local flightPos = targetPos - Vector3.new(0, 3.5, 0)
strictFlyTo(flightPos)
if Config.Enabled then
local risePos = targetPos + Vector3.new(0, 1.5, 0)
hrp.CFrame = CFrame.new(risePos)
local waitStart = tick()
while not makimaObj and (tick() - waitStart < 3) do
task.wait(0.2)
makimaObj = getMakimaInstance()
end
task.wait(0.2)
triggerInteraction(makimaObj)
local dStart = tick()
local jobSuccessfullyTaken = false
while tick() - dStart < 4 and Config.Enabled do
hrp.CFrame = CFrame.new(risePos)
if forceClickDialogueOption(1) then
jobSuccessfullyTaken = true
task.wait(0.3)
break
else
triggerInteraction(makimaObj)
end
task.wait(0.3)
end
hrp.CFrame = CFrame.new(flightPos)
if jobSuccessfullyTaken then
shiftTaken = true
else
task.wait(0.5)
end
end
end
end
if Config.Enabled and shiftTaken and getBalance() < 1000000 then
local success, npcsFolder = pcall(function()
return game:GetService("Workspace").Ignore.NPCs.Miscs
end)
if success and npcsFolder then
local children = npcsFolder:GetChildren()
local validPatients = {}
for _, child in ipairs(children) do
if child.Name ~= "Fuji Katou" and not skippedPatients[child] then
table.insert(validPatients, child)
end
end
if #validPatients == 0 then
skippedPatients = {}
for _, child in ipairs(children) do
if child.Name ~= "Fuji Katou" then
table.insert(validPatients, child)
end
end
end
local targetPatient = validPatients[1]
if targetPatient then
local patientPart = targetPatient:IsA("Model") and (targetPatient.PrimaryPart or targetPatient:FindFirstChild("HumanoidRootPart") or targetPatient:FindFirstChildOfClass("BasePart")) or targetPatient
if patientPart and patientPart:IsA("BasePart") then
local targetPos = patientPart.Position
local flightPos = targetPos - Vector3.new(0, 3.5, 0)
strictFlyTo(flightPos)
if Config.Enabled then
local risePos = targetPos - Vector3.new(0, 8, 0)
hrp.CFrame = CFrame.new(risePos)
task.wait(0.1)
if Config.Enabled then
triggerInteraction(targetPatient)
local startTime = tick()
local collected = false
while Config.Enabled and targetPatient.Parent ~= nil and (tick() - startTime < 2) do
hrp.CFrame = CFrame.new(risePos)
if not targetPatient:IsDescendantOf(npcsFolder) then
collected = true
break
end
RunService.RenderStepped:Wait()
end
if not collected and targetPatient.Parent ~= nil then
skippedPatients[targetPatient] = true
end
hrp.CFrame = CFrame.new(flightPos)
end
end
end
end
end
end
end
end
end
end)No comments yet for this script.
