Open source auto farm
Key Required

Open source auto farm

El Paso, Texas: Border RoleplayBlackholesun12Blackholesun12 8.5K views 682 executesUpdated Feb 22, 2026
2.1/ 5(14 votes)
6843% Positive
Lua Script•512 lines (16893 chars)
-- // Anti-Teleport System
local players = game:GetService('Players')
local runService = game:GetService('RunService')
local tweenService = game:GetService('TweenService')
local lplr = players.LocalPlayer
local lastCF, stop, heartbeatConnection, cfConnection
local enabled = false

local function cleanup()
    if heartbeatConnection then heartbeatConnection:Disconnect() heartbeatConnection = nil end
    if cfConnection then cfConnection:Disconnect() cfConnection = nil end
end

local function start()
    if not lplr.Character or not lplr.Character:FindFirstChildOfClass('Humanoid') or not lplr.Character:FindFirstChildOfClass('Humanoid').RootPart then return end
    cleanup()
    heartbeatConnection = runService.Heartbeat:Connect(function()
        if stop or not enabled then return end
        lastCF = lplr.Character:FindFirstChildOfClass('Humanoid').RootPart.CFrame
    end)
    cfConnection = lplr.Character:FindFirstChildOfClass('Humanoid').RootPart:GetPropertyChangedSignal('CFrame'):Connect(function()
        if not enabled then return end
        stop = true
        lplr.Character:FindFirstChildOfClass('Humanoid').RootPart.CFrame = lastCF
        runService.Heartbeat:Wait()
        stop = false
    end)
    lplr.Character:FindFirstChildOfClass('Humanoid').Died:Connect(function()
        cleanup()
    end)
end

local function enableAntiTeleport()
    enabled = true
end

local function disableAntiTeleport()
    enabled = false
    stop = false
end

lplr.CharacterAdded:Connect(function(character)
    repeat runService.Heartbeat:Wait() until character:FindFirstChildOfClass('Humanoid')
    repeat runService.Heartbeat:Wait() until character:FindFirstChildOfClass('Humanoid').RootPart
    start()
end)

lplr.CharacterRemoving:Connect(function()
    cleanup()
end)

enableAntiTeleport()
start()

local function teleportTo(position)
    disableAntiTeleport()
    runService.Heartbeat:Wait()
    lplr.Character:FindFirstChildOfClass('Humanoid').RootPart.CFrame = CFrame.new(position)
    runService.Heartbeat:Wait()
    enableAntiTeleport()
end

-- // Inventory Helpers
local function countInBackpack(itemName)
    local count = 0
    for _, item in ipairs(lplr.Backpack:GetChildren()) do
        if item.Name == itemName then
            count += 1
        end
    end
    if lplr.Character then
        for _, item in ipairs(lplr.Character:GetChildren()) do
            if item:IsA('Tool') and item.Name == itemName then
                count += 1
            end
        end
    end
    return count
end

local function hasInBackpack(itemName)
    return countInBackpack(itemName) > 0
end

-- // Main Script Loop
local looping = false
local loopThread = nil

local function mainScript()
    local watch = workspace.Smuggling.Items["Fake Watch"].Main.PromptAtt.BasePurchasePrompt
    local sar = workspace.Smuggling.Items.Sarsaparilla.Main.PromptAtt.BasePurchasePrompt
    local bag = workspace.Smuggling.Items["Fake Designer Bag"].Main.PromptAtt.BasePurchasePrompt
    local wash = workspace.Smuggling.Laundering:GetChildren()[4].LaundryPrompt

    local function totalItems()
        return countInBackpack("Fake Watch") + countInBackpack("Sarsaparilla") + countInBackpack("Fake Designer Bag")
    end

    --1 teleport once, re-teleport if stuck 7s, until 3 Fake Watch or total = 10
    local function runPart1()
        teleportTo(Vector3.new(-1845, 3, 0))
        local t = tick()
        repeat
            if tick() - t >= 7 then
                teleportTo(Vector3.new(-1845, 3, 0))
                t = tick()
            end
            fireproximityprompt(watch) task.wait(0.1)
            fireproximityprompt(watch) task.wait(0.1)
            fireproximityprompt(watch) task.wait(0.1)
            runService.Heartbeat:Wait()
        until countInBackpack("Fake Watch") >= 3 or totalItems() >= 10
    end
    runPart1()

    --3 teleport once, re-teleport if stuck 7s, until 3 Fake Designer Bag or total = 10
    if totalItems() < 10 then
        local function runPart3()
            teleportTo(Vector3.new(-1831, 3, -2))
            local t = tick()
            repeat
                if tick() - t >= 7 then
                    teleportTo(Vector3.new(-1831, 3, -2))
                    t = tick()
                end
                fireproximityprompt(bag) task.wait(0.1)
                fireproximityprompt(bag) task.wait(0.1)
                fireproximityprompt(bag) task.wait(0.1)
                runService.Heartbeat:Wait()
            until countInBackpack("Fake Designer Bag") >= 3 or totalItems() >= 10
        end
        runPart3()
    end

    --2 teleport once, re-teleport if stuck 7s, until 4 Sarsaparilla or total = 10
    if totalItems() < 10 then
        local function runPart2()
            teleportTo(Vector3.new(-1840, 3, 1))
            local t = tick()
            repeat
                if tick() - t >= 7 then
                    teleportTo(Vector3.new(-1840, 3, 1))
                    t = tick()
                end
                fireproximityprompt(sar) task.wait(0.1)
                fireproximityprompt(sar) task.wait(0.1)
                fireproximityprompt(sar) task.wait(0.1)
                fireproximityprompt(sar) task.wait(0.1)
                runService.Heartbeat:Wait()
            until countInBackpack("Sarsaparilla") >= 4 or totalItems() >= 10
        end
        runPart2()
    end

    -- if total is still not 10, keep cycling parts 1-3-2 until it is
    while totalItems() < 10 do
        if countInBackpack("Fake Watch") < 3 then
            teleportTo(Vector3.new(-1845, 3, 0))
            local t = tick()
            repeat
                if tick() - t >= 7 then
                    teleportTo(Vector3.new(-1845, 3, 0))
                    t = tick()
                end
                fireproximityprompt(watch) task.wait(0.1)
                runService.Heartbeat:Wait()
            until countInBackpack("Fake Watch") >= 3 or totalItems() >= 10
        end
        if totalItems() >= 10 then break end

        if countInBackpack("Fake Designer Bag") < 3 then
            teleportTo(Vector3.new(-1831, 3, -2))
            local t = tick()
            repeat
                if tick() - t >= 7 then
                    teleportTo(Vector3.new(-1831, 3, -2))
                    t = tick()
                end
                fireproximityprompt(bag) task.wait(0.1)
                runService.Heartbeat:Wait()
            until countInBackpack("Fake Designer Bag") >= 3 or totalItems() >= 10
        end
        if totalItems() >= 10 then break end

        if countInBackpack("Sarsaparilla") < 4 then
            teleportTo(Vector3.new(-1840, 3, 1))
            local t = tick()
            repeat
                if tick() - t >= 7 then
                    teleportTo(Vector3.new(-1840, 3, 1))
                    t = tick()
                end
                fireproximityprompt(sar) task.wait(0.1)
                runService.Heartbeat:Wait()
            until countInBackpack("Sarsaparilla") >= 4 or totalItems() >= 10
        end
    end

    --4 re-teleport if stuck 7s, until Briefcase appears
    teleportTo(Vector3.new(3147, 0, -184))
    task.wait(1.75)
    local t4 = tick()
    repeat
        if tick() - t4 >= 7 then
            teleportTo(Vector3.new(3147, 0, -184))
            task.wait(1.75)
            t4 = tick()
        end
        local sell = workspace.Smuggling.Sell.Prompt.SellSmugglePrompt
        fireproximityprompt(sell) task.wait(0.1)
        runService.Heartbeat:Wait()
    until hasInBackpack("Briefcase")

    --5 re-teleport if stuck 7s, until Briefcase is gone
    teleportTo(Vector3.new(-1834, 3, -8))
    local t5 = tick()
    repeat
        if tick() - t5 >= 7 then
            teleportTo(Vector3.new(-1834, 3, -8))
            t5 = tick()
        end
        fireproximityprompt(wash) task.wait(0.1)
        runService.Heartbeat:Wait()
    until not hasInBackpack("Briefcase")

    -- always ensure anti-teleport is re-enabled after each cycle
    enableAntiTeleport()
end

-- // UI
local screenGui = Instance.new('ScreenGui')
screenGui.Name = 'SmugglingUI'
screenGui.ResetOnSpawn = false
screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
screenGui.Parent = lplr.PlayerGui

-- Main Frame
local mainFrame = Instance.new('Frame')
mainFrame.Name = 'MainFrame'
mainFrame.Size = UDim2.new(0, 220, 0, 185)
mainFrame.Position = UDim2.new(0.5, -110, 0.05, 0)
mainFrame.BackgroundColor3 = Color3.fromRGB(15, 15, 20)
mainFrame.BorderSizePixel = 0
mainFrame.Active = true
mainFrame.Parent = screenGui

local mainCorner = Instance.new('UICorner')
mainCorner.CornerRadius = UDim.new(0, 10)
mainCorner.Parent = mainFrame

local mainStroke = Instance.new('UIStroke')
mainStroke.Color = Color3.fromRGB(80, 80, 120)
mainStroke.Thickness = 1.2
mainStroke.Parent = mainFrame

-- Top Bar (drag handle)
local topBar = Instance.new('Frame')
topBar.Name = 'TopBar'
topBar.Size = UDim2.new(1, 0, 0, 36)
topBar.BackgroundColor3 = Color3.fromRGB(25, 25, 38)
topBar.BorderSizePixel = 0
topBar.Parent = mainFrame

local topCorner = Instance.new('UICorner')
topCorner.CornerRadius = UDim.new(0, 10)
topCorner.Parent = topBar

-- fix bottom corners of topbar
local topBarFix = Instance.new('Frame')
topBarFix.Size = UDim2.new(1, 0, 0.5, 0)
topBarFix.Position = UDim2.new(0, 0, 0.5, 0)
topBarFix.BackgroundColor3 = Color3.fromRGB(25, 25, 38)
topBarFix.BorderSizePixel = 0
topBarFix.Parent = topBar

-- Title
local title = Instance.new('TextLabel')
title.Size = UDim2.new(1, -70, 1, 0)
title.Position = UDim2.new(0, 12, 0, 0)
title.BackgroundTransparency = 1
title.Text = 'El Paso'
title.TextColor3 = Color3.fromRGB(200, 200, 255)
title.TextSize = 15
title.Font = Enum.Font.GothamBold
title.TextXAlignment = Enum.TextXAlignment.Left
title.Parent = topBar

-- Minimize Button
local minimizeBtn = Instance.new('TextButton')
minimizeBtn.Size = UDim2.new(0, 28, 0, 28)
minimizeBtn.Position = UDim2.new(1, -62, 0.5, -14)
minimizeBtn.BackgroundColor3 = Color3.fromRGB(50, 50, 75)
minimizeBtn.BorderSizePixel = 0
minimizeBtn.Text = '-'
minimizeBtn.TextColor3 = Color3.fromRGB(180, 180, 220)
minimizeBtn.TextSize = 14
minimizeBtn.Font = Enum.Font.GothamBold
minimizeBtn.Parent = topBar

local minCorner = Instance.new('UICorner')
minCorner.CornerRadius = UDim.new(0, 6)
minCorner.Parent = minimizeBtn

-- Close Button
local closeBtn = Instance.new('TextButton')
closeBtn.Size = UDim2.new(0, 28, 0, 28)
closeBtn.Position = UDim2.new(1, -30, 0.5, -14)
closeBtn.BackgroundColor3 = Color3.fromRGB(180, 50, 60)
closeBtn.BorderSizePixel = 0
closeBtn.Text = 'X'
closeBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
closeBtn.TextSize = 13
closeBtn.Font = Enum.Font.GothamBold
closeBtn.Parent = topBar

local closeCorner = Instance.new('UICorner')
closeCorner.CornerRadius = UDim.new(0, 6)
closeCorner.Parent = closeBtn

-- Content Frame
local content = Instance.new('Frame')
content.Name = 'Content'
content.Size = UDim2.new(1, 0, 1, -36)
content.Position = UDim2.new(0, 0, 0, 36)
content.BackgroundTransparency = 1
content.Parent = mainFrame

-- Status Label
local statusLabel = Instance.new('TextLabel')
statusLabel.Size = UDim2.new(1, -20, 0, 22)
statusLabel.Position = UDim2.new(0, 10, 0, 10)
statusLabel.BackgroundTransparency = 1
statusLabel.Text = 'Status: Idle'
statusLabel.TextColor3 = Color3.fromRGB(130, 130, 160)
statusLabel.TextSize = 13
statusLabel.Font = Enum.Font.Gotham
statusLabel.TextXAlignment = Enum.TextXAlignment.Left
statusLabel.Parent = content

-- Start/Stop Button
local toggleBtn = Instance.new('TextButton')
toggleBtn.Size = UDim2.new(1, -20, 0, 40)
toggleBtn.Position = UDim2.new(0, 10, 0, 40)
toggleBtn.BackgroundColor3 = Color3.fromRGB(50, 160, 90)
toggleBtn.BorderSizePixel = 0
toggleBtn.Text = 'START'
toggleBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
toggleBtn.TextSize = 15
toggleBtn.Font = Enum.Font.GothamBold
toggleBtn.Parent = content

local toggleCorner = Instance.new('UICorner')
toggleCorner.CornerRadius = UDim.new(0, 8)
toggleCorner.Parent = toggleBtn

-- Loop counter
local loopCount = 0
local loopCountLabel = Instance.new('TextLabel')
loopCountLabel.Size = UDim2.new(1, -20, 0, 18)
loopCountLabel.Position = UDim2.new(0, 10, 0, 95)
loopCountLabel.BackgroundTransparency = 1
loopCountLabel.Text = 'Loops: 0'
loopCountLabel.TextColor3 = Color3.fromRGB(90, 90, 120)
loopCountLabel.TextSize = 12
loopCountLabel.Font = Enum.Font.Gotham
loopCountLabel.TextXAlignment = Enum.TextXAlignment.Left
loopCountLabel.Parent = content

-- Money earned label
local moneyLabel = Instance.new('TextLabel')
moneyLabel.Size = UDim2.new(1, -20, 0, 18)
moneyLabel.Position = UDim2.new(0, 10, 0, 114)
moneyLabel.BackgroundTransparency = 1
moneyLabel.Text = 'Earned: $0'
moneyLabel.TextColor3 = Color3.fromRGB(80, 200, 100)
moneyLabel.TextSize = 12
moneyLabel.Font = Enum.Font.Gotham
moneyLabel.TextXAlignment = Enum.TextXAlignment.Left
moneyLabel.Parent = content

-- Time elapsed label
local timeLabel = Instance.new('TextLabel')
timeLabel.Size = UDim2.new(1, -20, 0, 18)
timeLabel.Position = UDim2.new(0, 10, 0, 133)
timeLabel.BackgroundTransparency = 1
timeLabel.Text = 'Time: 00:00:00'
timeLabel.TextColor3 = Color3.fromRGB(130, 130, 200)
timeLabel.TextSize = 12
timeLabel.Font = Enum.Font.Gotham
timeLabel.TextXAlignment = Enum.TextXAlignment.Left
timeLabel.Parent = content

-- // Timer logic
local elapsedTime = 0
local timerConnection = nil

local function formatTime(seconds)
    local h = math.floor(seconds / 3600)
    local m = math.floor((seconds % 3600) / 60)
    local s = math.floor(seconds % 60)
    return string.format('%02d:%02d:%02d', h, m, s)
end

local function startTimer()
    if timerConnection then timerConnection:Disconnect() end
    timerConnection = runService.Heartbeat:Connect(function(dt)
        elapsedTime += dt
        timeLabel.Text = 'Time: ' .. formatTime(elapsedTime)
    end)
end

local function stopTimer()
    if timerConnection then
        timerConnection:Disconnect()
        timerConnection = nil
    end
end

-- // Toggle Logic
local function setRunning(state)
    looping = state
    if state then
        statusLabel.Text = 'Status: Running...'
        statusLabel.TextColor3 = Color3.fromRGB(80, 220, 120)
        toggleBtn.Text = 'STOP'
        toggleBtn.BackgroundColor3 = Color3.fromRGB(180, 50, 60)
        startTimer()
        loopThread = task.spawn(function()
            while looping do
                mainScript()
                if looping then
                    loopCount += 1
                    loopCountLabel.Text = 'Loops: ' .. loopCount
                    moneyLabel.Text = 'Earned: $' .. (loopCount * 3250)
                end
            end
            enableAntiTeleport()
        end)
    else
        statusLabel.Text = 'Status: Stopped'
        statusLabel.TextColor3 = Color3.fromRGB(220, 80, 80)
        toggleBtn.Text = '▶  START'
        toggleBtn.BackgroundColor3 = Color3.fromRGB(50, 160, 90)
        stopTimer()
        loopThread = nil
    end
end

toggleBtn.MouseButton1Click:Connect(function()
    setRunning(not looping)
end)

-- // Minimize Logic
local minimized = false
local fullSize = UDim2.new(0, 220, 0, 185)
local miniSize = UDim2.new(0, 220, 0, 36)

minimizeBtn.MouseButton1Click:Connect(function()
    minimized = not minimized
    local tween = tweenService:Create(mainFrame, TweenInfo.new(0.25, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {
        Size = minimized and miniSize or fullSize
    })
    tween:Play()
    content.Visible = not minimized
    minimizeBtn.Text = minimized and '□' or '—'
end)

-- // Close Logic
closeBtn.MouseButton1Click:Connect(function()
    setRunning(false)
    screenGui:Destroy()
end)

-- // Drag Logic (PC & Mobile)
local dragging = false
local dragStart = nil
local startPos = nil

local function updateDrag(input)
    local delta = input.Position - dragStart
    mainFrame.Position = UDim2.new(
        startPos.X.Scale,
        startPos.X.Offset + delta.X,
        startPos.Y.Scale,
        startPos.Y.Offset + delta.Y
    )
end

topBar.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
        dragging = true
        dragStart = input.Position
        startPos = mainFrame.Position
        input.Changed:Connect(function()
            if input.UserInputState == Enum.UserInputState.End then
                dragging = false
            end
        end)
    end
end)

topBar.InputChanged:Connect(function(input)
    if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
        updateDrag(input)
    end
end)

game:GetService('UserInputService').InputChanged:Connect(function(input)
    if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
        updateDrag(input)
    end
end)

Features & Information

The dev just put a sever side 1min minimum time requirement for each smuggling cycle. Yea so 1 min and 3250 $ profits, if u can wait that long then enjoy this script lol
#El paso

Community Comments (40)

Blackholesun12Blackholesun12Feb 22, 2026

Yo i need feedback

Replying to @Blackholesun12
razzzzrazzzzFeb 22, 2026

@Blackholesun12 no work

Replying to @razzzz
Blackholesun12Blackholesun12Feb 22, 2026

@razzzz wdym no work

Replying to @Blackholesun12
itzlaritzlarFeb 23, 2026

@Blackholesun12 its amazing ive used it for days made millions but they started cracking down on autofarms and released a new update with content and an "anticheat" the autofarm is kinda broken rn can you make a new update? please boss

Replying to @Blackholesun12
dadsd56dadsd56Feb 24, 2026

@Blackholesun12 Awesome, works great, thank you for uploading

Replying to @dadsd56
dadsd56dadsd56Feb 24, 2026

could use a feature where it cycles between sell points though, I noticed the cooldowns are separate while using a fly script before finding this

Replying to @dadsd56
Blackholesun12Blackholesun12Feb 24, 2026

@dadsd56 could you elaborate more on this?

austinmcaustinmcFeb 22, 2026

it works but for the last step it wont tap e by it self

Replying to @austinmc
austinmcaustinmcFeb 22, 2026

well it works but u have to angle the camera manualy for a specific washing machine

Blackholesun12Blackholesun12Feb 22, 2026

@Shadow69 i only use it for the gui

pr7251441pr7251441Feb 22, 2026

10/10 script

adrnimadrnimFeb 22, 2026

WORK!

ts dont work bru

T7HR4XT7HR4XFeb 22, 2026

pretty good just fix E problem you have to mess with cam

Replying to @T7HR4X
T7HR4XT7HR4XFeb 22, 2026

also doesnt stop when u stop it.

yagoumarinsyagoumarinsFeb 23, 2026

W

gandonzalup*gandonzalup*Feb 23, 2026

Works hella good made uh 120k in 5 minutes the only way to make it better is i guess make it buy and sell faster but overall works very well

VruzxVruzxFeb 23, 2026

It work for me, im using free executor.

VruzxVruzxFeb 23, 2026

actually 100k in 4mins.

1478axdf1478axdfFeb 23, 2026

Why is it not working?

ThunderModsThunderModsownerFeb 24, 2026

W script, been using it LOL

Replying to @ThunderMods
Blackholesun12Blackholesun12Feb 24, 2026

@ThunderMods appreciate it man, btw im i tweaking or u actually the owner of scriptblox cuz i see that badge on u lol

Blackholesun12Blackholesun12Feb 24, 2026

@DiegoRRQ didn't even touch a single code of ur script, tween and teleport are different, and the fireproximityprompt are just basic thing

Blackholesun12Blackholesun12Feb 24, 2026

@DiegoRRQ the teleport thing still working, they proly make a minimum time required for each smuggling cycle, like 30 sec or so

tester_scriptertester_scripterFeb 24, 2026

if i sell it takes so long

yagoumarinsyagoumarinsFeb 25, 2026

devs added a cooldown for washing money and selling products, pls fix

FeeyyyFeeyyyFeb 27, 2026

dont work anymore since when at the washing money step, it just flick E button.

T7HR4XT7HR4XFeb 28, 2026

@DiegoRRQ maybe dont add bs key system to all your scripts

Replying to @T7HR4X
tk6z1tk6z1Mar 1, 2026

@T7HR4X does it still works?

tk6z1tk6z1Mar 1, 2026

does the script still works?

s2442s2442Mar 3, 2026

ts aint even teleporting its just staying in place doesnt do anything when u click start dislike im using xeno

easyokapi2732easyokapi2732Mar 4, 2026

good

ProjectLProjectLMar 4, 2026

trash

Kxxw12Kxxw12Mar 6, 2026

it doesnt work how do i make it work it only glitches my car do i just start it and it does its thing on its own? becuase when i start it nothing happens even when i wait 1-2 min

f1233df1233dMar 8, 2026

inf mon ey doesnt work at all

zuzu8zuzu8Mar 9, 2026

not working

IgetBannedQuick007IgetBannedQuick007Mar 21, 2026

I would mark this as patched... Doesn't work after the new update

adrielacayadrielacayApr 1, 2026

how do i use it

dodeno122dodeno122Jun 6, 2026

not working

dodeno122dodeno122Jun 6, 2026

not working

More Scripts for El Paso, Texas: Border Roleplay