OP MONEY DUPE
Key Required

OP MONEY DUPE

WestboundCarlTheBossCarlTheBoss 18.9K views 603 executesUpdated Feb 24, 2025
4.7/ 5(18 votes)
17194% Positive
Lua Script•350 lines (11223 chars)
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
local VirtualUser = game:GetService("VirtualUser")
local StatsService = game:GetService("Stats")

local localPlayer = Players.LocalPlayer
local character = localPlayer.Character or localPlayer.CharacterAdded:Wait()
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")

local bag = localPlayer:WaitForChild("States"):WaitForChild("Bag")
local bagSizeLevel = localPlayer:WaitForChild("Stats"):WaitForChild("BagSizeLevel"):WaitForChild("CurrentAmount")
local robEvent = ReplicatedStorage:WaitForChild("GeneralEvents"):WaitForChild("Rob")
local targetPosition = CFrame.new(1636.62537, 104.349976, -1736.184)

if humanoid then
    local clonedHumanoid = humanoid:Clone()
    clonedHumanoid.Parent = character
    localPlayer.Character = nil
    clonedHumanoid:SetStateEnabled(Enum.HumanoidStateType.Dead, false)
    clonedHumanoid:SetStateEnabled(Enum.HumanoidStateType.FallingDown, false)
    clonedHumanoid:SetStateEnabled(Enum.HumanoidStateType.Physics, false)
    humanoid:Destroy()
    localPlayer.Character = character
    local camera = Workspace.CurrentCamera
    camera.CameraSubject = clonedHumanoid
    camera.CFrame = camera.CFrame
    clonedHumanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None
    local animate = character:FindFirstChild("Animate")
    if animate then
        animate.Disabled = true
        task.wait(0.07)
        animate.Disabled = false
    end
    clonedHumanoid.Health = clonedHumanoid.MaxHealth
    humanoid = clonedHumanoid
    humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
end

localPlayer.Idled:Connect(function()
    VirtualUser:CaptureController()
    VirtualUser:ClickButton2(Vector2.new())
end)

if getgenv().AntiAfkExecuted and game.CoreGui:FindFirstChild("AutoFarmUI") then
    getgenv().AntiAfkExecuted = false
    getgenv().zamanbaslaticisi = false
    game.CoreGui.AutoFarmUI:Destroy()
end

getgenv().AntiAfkExecuted = true

local AutoFarmUI = Instance.new("ScreenGui")
AutoFarmUI.Name = "AutoFarmUI"
AutoFarmUI.Parent = game.CoreGui
AutoFarmUI.ZIndexBehavior = Enum.ZIndexBehavior.Sibling

local MainFrame = Instance.new("Frame")
MainFrame.Parent = AutoFarmUI
MainFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
MainFrame.BackgroundTransparency = 0.2
MainFrame.Position = UDim2.new(0.5, -125, 0.5, -75)
MainFrame.Size = UDim2.new(0, 250, 0, 150)
MainFrame.AnchorPoint = Vector2.new(0.5, 0.5)
MainFrame.Visible = false

local UICorner = Instance.new("UICorner")
UICorner.CornerRadius = UDim.new(0, 10)
UICorner.Parent = MainFrame

local UIStroke = Instance.new("UIStroke")
UIStroke.Thickness = 2
UIStroke.Color = Color3.fromRGB(60, 60, 60)
UIStroke.Parent = MainFrame

local Title = Instance.new("TextLabel")
Title.Parent = MainFrame
Title.Text = "Money Dupe V.5"
Title.TextColor3 = Color3.fromRGB(255, 255, 255)
Title.Font = Enum.Font.GothamBold
Title.TextSize = 16
Title.Size = UDim2.new(1, 0, 0, 30)
Title.BackgroundTransparency = 1

local CloseButton = Instance.new("TextButton")
CloseButton.Parent = MainFrame
CloseButton.Text = "X"
CloseButton.Font = Enum.Font.GothamBold
CloseButton.TextSize = 16
CloseButton.TextColor3 = Color3.fromRGB(255, 0, 0)
CloseButton.BackgroundTransparency = 1
CloseButton.Size = UDim2.new(0, 25, 0, 25)
CloseButton.Position = UDim2.new(0.9, 0, 0, 5)

local StatsFrame = Instance.new("Frame")
StatsFrame.Parent = MainFrame
StatsFrame.BackgroundTransparency = 1
StatsFrame.Position = UDim2.new(0, 10, 0, 40)
StatsFrame.Size = UDim2.new(1, -20, 1, -50)

local UIListLayout = Instance.new("UIListLayout")
UIListLayout.Parent = StatsFrame
UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder
UIListLayout.Padding = UDim.new(0, 5)

local function createLabel(text, parent)
    local Label = Instance.new("TextLabel")
    Label.Parent = parent
    Label.Text = text
    Label.TextColor3 = Color3.fromRGB(255, 255, 255)
    Label.Font = Enum.Font.Gotham
    Label.TextSize = 14
    Label.Size = UDim2.new(1, 0, 0, 20)
    Label.BackgroundTransparency = 1
    Label.TextXAlignment = Enum.TextXAlignment.Left
    return Label
end

local PingLabel = createLabel("Ping: Calculating...", StatsFrame)
local CashLabel = createLabel("Earnings: $0", StatsFrame)
local FPSLabel = createLabel("FPS: Calculating...", StatsFrame)
local TimerLabel = createLabel("Time: 00:00:00", StatsFrame)

local function openUI()
    MainFrame.Visible = true
    MainFrame.Size = UDim2.new(0, 200, 0, 120)
    local fadeIn = TweenService:Create(MainFrame, TweenInfo.new(0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {
        Size = UDim2.new(0, 250, 0, 150),
        BackgroundTransparency = 0.2
    })
    fadeIn:Play()
end

local function closeUI()
    local fadeOut = TweenService:Create(MainFrame, TweenInfo.new(0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.In), {
        Size = UDim2.new(0, 200, 0, 120),
        BackgroundTransparency = 1
    })
    fadeOut:Play()
    fadeOut.Completed:Connect(function()
        AutoFarmUI:Destroy()
    end)
end

CloseButton.MouseButton1Click:Connect(closeUI)

openUI()

local dragging, dragStart, startPos
local currentTween
local function updateDrag(input)
    local delta = input.Position - dragStart
    local targetPos = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
    if currentTween then
        currentTween:Cancel()
    end
    currentTween = TweenService:Create(MainFrame, TweenInfo.new(0.05, Enum.EasingStyle.Sine, Enum.EasingDirection.Out), {Position = targetPos})
    currentTween:Play()
end

MainFrame.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)

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

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

task.spawn(function()
    while task.wait(0.7) do
        local dt = RunService.RenderStepped:Wait()
        FPSLabel.Text = "FPS: " .. tostring(math.floor(1 / dt))
    end
end)

task.spawn(function()
    while task.wait(0.7) do
        local perfStats = StatsService:FindFirstChild("PerformanceStats")
        if perfStats and perfStats:FindFirstChild("Ping") then
            PingLabel.Text = "Ping: " .. tostring(math.floor(perfStats.Ping:GetValue())) .. "ms"
        end
    end
end)

local seconds, minutes, hours = 0, 0, 0

task.spawn(function()
    while task.wait(1) do
        seconds = seconds + 1
        if seconds >= 60 then
            seconds = 0
            minutes = minutes + 1
        end
        if minutes >= 60 then
            minutes = 0
            hours = hours + 1
        end
        TimerLabel.Text = string.format("Time: %02d:%02d:%02d", hours, minutes, seconds)
    end
end)

local function formatNumber(n)
    local formatted = tostring(n)
    local k
    while true do
        formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1,%2')
        if k == 0 then break end
    end
    return formatted
end

local function moveToTarget()
    if humanoidRootPart then
        humanoidRootPart.CFrame = targetPosition
    end
end

local cashRegisters = {}

local safes = {}

local function updateCaches()
    for _, child in ipairs(Workspace:GetChildren()) do
        if child:IsA("Model") then
            if child.Name == "CashRegister" then
                table.insert(cashRegisters, child)
            elseif child.Name == "Safe" then
                table.insert(safes, child)
            end
        end
    end
end

updateCaches()

Workspace.ChildAdded:Connect(function(child)
    if child:IsA("Model") then
        if child.Name == "CashRegister" then
            table.insert(cashRegisters, child)
        elseif child.Name == "Safe" then
            table.insert(safes, child)
        end
    end
end)

Workspace.ChildRemoved:Connect(function(child)
    if child:IsA("Model") then
        if child.Name == "CashRegister" then
            for i = #cashRegisters, 1, -1 do
                if cashRegisters[i] == child then
                    table.remove(cashRegisters, i)
                end
            end
        elseif child.Name == "Safe" then
            for i = #safes, 1, -1 do
                if safes[i] == child then
                    table.remove(safes, i)
                end
            end
        end
    end
end)

local function checkCashRegister()
    if bag.Value >= bagSizeLevel.Value then
        moveToTarget()
        return false
    end
    for i = 1, #cashRegisters do
        local item = cashRegisters[i]
        local openPart = item:FindFirstChild("Open")
        if openPart then
            humanoidRootPart.CFrame = openPart.CFrame
            robEvent:FireServer("Register", {
                Part = item:FindFirstChild("Union"),
                OpenPart = openPart,
                ActiveValue = item:FindFirstChild("Active"),
                Active = true
            })
            return true
        end
    end
    return false
end

local function checkSafe()
    if bag.Value >= bagSizeLevel.Value then
        moveToTarget()
        return false
    end
    for i = 1, #safes do
        local item = safes[i]
        if item:FindFirstChild("Amount") and item.Amount.Value > 0 then
            local safePart = item:FindFirstChild("Safe")
            if safePart then
                humanoidRootPart.CFrame = safePart.CFrame
                local openFlag = item:FindFirstChild("Open")
                if openFlag and openFlag.Value then
                    robEvent:FireServer("Safe", item)
                else
                    local openSafe = item:FindFirstChild("OpenSafe")
                    if openSafe then
                        openSafe:FireServer("Completed")
                    end
                    robEvent:FireServer("Safe", item)
                end
                return true
            end
        end
    end
    return false
end

RunService.RenderStepped:Connect(function()
    if not checkCashRegister() then
        checkSafe()
    end
end)

local leaderstats = localPlayer:WaitForChild("leaderstats")
local cashStat = leaderstats:WaitForChild("$$")
local initialCash = cashStat.Value

task.spawn(function()
    while task.wait(0.7) do
        local earned = cashStat.Value - initialCash
        CashLabel.Text = "Earnings: $" .. formatNumber(earned)
    end
end)

Features & Information

🚀✨ THE ULTIMATE WESTBOUND GLITCH IS HERE! ✨🚀 🔥 BREAKING THE GAME… AND THE BANK! 🔥 💸 LIGHTNING-FAST MONEY DUPE ⚡ 🚫 ANTI-CHEAT? DELETED. 🛡️💥 🤑 GENERATE UNLIMITED CASH IN SECONDS! 🌪️ WHY WAIT? ✅ 100% UNDETECTED 👻 ✅ INSTANT MILLIONS 💰⚡ ✅ ZERO RISK, ALL REWARD 🎯 ⚠️ WARNING: YOUR WALLET MIGHT EXPLODE… 💣💥 🎯 JOIN BEFORE IT’S PATCHED! ⏳ 🔗 https://discord.gg/GHcFCNpZcy 🔗 🚨 DON’T BE LAST… BE RICH. 🚨 💎 WESTBOUND LEGENDS START HERE. 💎 🔥 SPEED OF LIGHT, POWER OF GODS. 🔥 👑 CLAIM YOUR THRONE! 👑 👉 LINK FADES AT 1000 JOINS… 👈 ⚠️ YOU’VE BEEN WARNED. ⚠️
#westbound#wildwest#op#dupe#opensource

Community Comments (32)

Bac0nH1ckOffBac0nH1ckOffadminFeb 24, 2025(edited)

W

Replying to @Bac0nH1ckOff
GGBroyGGBroyFeb 12, 2026

што надо зделот штоб софт заработал

CarlTheBossCarlTheBossFeb 24, 2025(edited)

Ty appreciated!

YaNtaResYaNtaResFeb 24, 2025(edited)

Xeno Work

CarlTheBossCarlTheBossFeb 24, 2025(edited)

Works on every!

DislikeManDislikeManFeb 24, 2025(edited)

W

6nnn6nnnFeb 24, 2025(edited)

40$$ for sec

Replying to @6nnn
GGBroyGGBroyFeb 12, 2026

what should i do to make it work

66asa66asaFeb 25, 2025(edited)

W works

Cursed_ByReaperCursed_ByReaperFeb 25, 2025(edited)

Not patched at 24/02/2025 works on luna

Cursed_ByReaperCursed_ByReaperFeb 25, 2025(edited)

side note upgrade your money bag and you will earn more cash, than the norma 40$

CarlTheBossCarlTheBossFeb 25, 2025(edited)

side note upgrade your money bag and you will earn more cash, than the normal 40$ it will be 100$ per mili seconds.

6nnn6nnnFeb 25, 2025(edited)

26k in 6:40 SUPER WWWWWWWWWWWWWWWWW

pejcicvojinpejcicvojinFeb 25, 2025(edited)

DOESNT WORK FOR ME IM ON XENO

lllullluFeb 25, 2025(edited)

not patched 25/02/25, work on xeno

Boy_KisserBoy_KisserFeb 25, 2025(edited)

Works on Solara :3

jayrfgjayrfgFeb 25, 2025(edited)

rtjty

ScriptCracksScriptCracksFeb 26, 2025(edited)

autofarm working on cryptic, not dupe.

tanbeniteztanbenitezFeb 27, 2025(edited)

w

cazzycazzyFeb 27, 2025(edited)

tuff

PineCodeRebornPineCodeRebornFeb 28, 2025(edited)

autofarm no dupe

HAzyHAzyMar 3, 2025(edited)

W Crazy Script 🔥

CarlTheBossCarlTheBossMar 4, 2025(edited)

Thanks everybody for the support! I will be keep working on on future stuff with my buddy scriptcoder!

osakaoverheavenosakaoverheavenMar 7, 2025(edited)

w

xpotioxpotioMar 7, 2025(edited)

this scrip is so badddd don't use and don't tag me *

skotth3xdskotth3xdMar 29, 2025

chatGPT ahh desc💔💔

skotth3xdskotth3xdMar 29, 2025

anyway. W script, not patched still working 3/29/25 Swift

ZephOfficialZephOfficialJan 8, 2026

Still Works, January 8 2026.

bugraaknpcbugraaknpcJan 19, 2026

How do I put the script into my Roblox? Chat me on Discord, superrarefisherman

scrugherscrugherJan 25, 2026

this shi so ahh it just kills me

GGBroyGGBroyFeb 12, 2026

на данный омент плохо работает,просто тепаешся к одной касе и застрееш на месте

oknn9oknn9Jun 4, 2026

used to be the best money grind but westbound added a anti cheat system and if teleport it will eventually kill you

More Scripts for Westbound