Automation tool for Dirt Inc
Key Required

Automation tool for Dirt Inc

[🎃HALLOWEEN] 💩 Dirt IncrementalAdministratorsAdministrators 2K views 64 executesUpdated Oct 14, 2025
5.0/ 5(2 votes)
20100% Positive
Lua Script•376 lines (12051 chars)
local UserInputService = game:GetService('UserInputService')
local Players = game:GetService('Players')
local ReplicatedStorage = game:GetService('ReplicatedStorage')
local RunService = game:GetService('RunService')
local player = Players.LocalPlayer
local playerGui = player:WaitForChild('PlayerGui')

-- Main GUI
local screenGui = Instance.new('ScreenGui')
screenGui.Name = 'DirtIncAutomation'
screenGui.ResetOnSpawn = false
screenGui.Parent = playerGui

local mainFrame = Instance.new('Frame')
mainFrame.Size = UDim2.new(0, 450, 0, 300)
mainFrame.Position = UDim2.new(0.5, -225, 0.5, -150)
mainFrame.BackgroundColor3 = Color3.fromRGB(255, 140, 0)
mainFrame.BorderSizePixel = 0
mainFrame.Parent = screenGui

local mainStroke = Instance.new('UIStroke')
mainStroke.Color = Color3.fromRGB(0, 0, 0)
mainStroke.Thickness = 2
mainStroke.Parent = mainFrame

-- Title Bar
local titleBar = Instance.new('Frame')
titleBar.Size = UDim2.new(1, 0, 0, 30)
titleBar.BackgroundColor3 = Color3.fromRGB(139, 90, 43)
titleBar.BorderSizePixel = 0
titleBar.Parent = mainFrame

local titleGradient = Instance.new('UIGradient')
titleGradient.Color = ColorSequence.new({
    ColorSequenceKeypoint.new(0, Color3.fromRGB(180, 120, 60)),
    ColorSequenceKeypoint.new(1, Color3.fromRGB(101, 67, 33)),
})
titleGradient.Rotation = 45
titleGradient.Parent = titleBar

local titleLabel = Instance.new('TextLabel')
titleLabel.Size = UDim2.new(1, -60, 1, 0)
titleLabel.Position = UDim2.new(0, 10, 0, 0)
titleLabel.BackgroundTransparency = 1
titleLabel.Text = 'Dirt Inc. Automation'
titleLabel.TextColor3 = Color3.fromRGB(101, 67, 33)
titleLabel.TextSize = 16
titleLabel.Font = Enum.Font.GothamBold
titleLabel.TextXAlignment = Enum.TextXAlignment.Left
titleLabel.Parent = titleBar
local titleStroke = Instance.new('UIStroke')
titleStroke.Color = Color3.fromRGB(0, 0, 0)
titleStroke.Thickness = 2
titleStroke.Parent = titleLabel

-- Minimize Button
local minimizeBtn = Instance.new('TextButton')
minimizeBtn.Size = UDim2.new(0, 40, 0, 30)
minimizeBtn.Position = UDim2.new(1, -40, 0, 0)
minimizeBtn.BackgroundColor3 = Color3.fromRGB(200, 0, 0)
minimizeBtn.BorderSizePixel = 0
minimizeBtn.Text = 'x'
minimizeBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
minimizeBtn.TextSize = 18
minimizeBtn.Font = Enum.Font.GothamBold
minimizeBtn.Parent = titleBar

-- Tabs container
local tabsContainer = Instance.new('Frame')
tabsContainer.Size = UDim2.new(0, 100, 1, -30)
tabsContainer.Position = UDim2.new(0, 0, 0, 30)
tabsContainer.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
tabsContainer.BorderSizePixel = 0
tabsContainer.Parent = mainFrame

local tabsStroke = Instance.new('UIStroke')
tabsStroke.Color = Color3.fromRGB(0, 0, 0)
tabsStroke.Thickness = 2
tabsStroke.Parent = tabsContainer

-- Content Area
local contentArea = Instance.new('Frame')
contentArea.Size = UDim2.new(1, -100, 1, -30)
contentArea.Position = UDim2.new(0, 100, 0, 30)
contentArea.BackgroundColor3 = Color3.fromRGB(255, 140, 0)
contentArea.BorderSizePixel = 0
contentArea.Parent = mainFrame

-- Dragging main frame
local dragging, dragStart, startPos = false, nil, nil
titleBar.InputBegan:Connect(function(input, gp)
    if gp then
        return
    end
    if input.UserInputType == Enum.UserInputType.MouseButton1 then
        dragging = true
        dragStart = input.Position
        startPos = mainFrame.Position
    end
end)
titleBar.InputEnded:Connect(function(input, gp)
    if input.UserInputType == Enum.UserInputType.MouseButton1 then
        dragging = false
    end
end)
UserInputService.InputChanged:Connect(function(input, gp)
    if dragging and dragStart then
        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
end)

-- Tabs data
local tabs = {
    {
        id = 'clicks',
        name = 'clicks farm',
        textColor = Color3.fromRGB(220, 220, 220),
        bgColor = Color3.fromRGB(180, 180, 180),
    },
    {
        id = 'flesh',
        name = 'flesh/passives farm',
        textColor = Color3.fromRGB(255, 230, 0),
        bgColor = Color3.fromRGB(255, 140, 0),
    },
    {
        id = 'bone',
        name = 'bone farm',
        textColor = Color3.fromRGB(255, 255, 255),
        bgColor = Color3.fromRGB(255, 255, 255),
    },
}
local tabButtons, tabContents, currentTab = {}, {}, 'flesh'

-- Helpers
local function makeTabLabel(parent, text, color)
    local label = Instance.new('TextLabel')
    label.Size = UDim2.new(1, 0, 0, 30)
    label.Position = UDim2.new(0, 0, 0, 0)
    label.BackgroundTransparency = 1
    label.Text = text
    label.Font = Enum.Font.GothamBold
    label.TextSize = 20
    label.TextColor3 = color
    label.Parent = parent
    local stroke = Instance.new('UIStroke')
    stroke.Color = Color3.fromRGB(0, 0, 0)
    stroke.Thickness = 2
    stroke.Parent = label
    return label
end

local function makeStartStop(frame, tabId, fireFunc, textColor)
    local btn = Instance.new('TextButton')
    btn.Size = UDim2.new(0, 200, 0, 60)
    btn.Position = UDim2.new(0.5, -100, 0.5, -30)
    btn.BackgroundColor3 = Color3.fromRGB(50, 200, 50)
    btn.Text = 'start'
    btn.Font = Enum.Font.GothamBold
    btn.TextSize = 18
    btn.TextColor3 = Color3.fromRGB(0, 255, 0)
    btn.Parent = frame
    local stroke = Instance.new('UIStroke')
    stroke.Color = Color3.fromRGB(0, 0, 0)
    stroke.Thickness = 1.5
    stroke.Parent = btn
    local running = false
    local conn
    btn.MouseButton1Click:Connect(function()
        running = not running
        if running then
            btn.Text = 'stop'
            btn.TextColor3 = Color3.fromRGB(255, 0, 0)
            btn.BackgroundColor3 = Color3.fromRGB(200, 50, 50)
            tabButtons[tabId].TextColor3 = Color3.fromRGB(0, 255, 0)
            conn = RunService.Heartbeat:Connect(fireFunc)
        else
            btn.Text = 'start'
            btn.TextColor3 = Color3.fromRGB(0, 255, 0)
            btn.BackgroundColor3 = Color3.fromRGB(50, 200, 50)
            tabButtons[tabId].TextColor3 = textColor
            if conn then
                conn:Disconnect()
                conn = nil
            end
        end
    end)
end

local function switchTab(tabId)
    for id, frame in pairs(tabContents) do
        frame.Visible = false
    end
    tabContents[tabId].Visible = true
    currentTab = tabId
    for _, t in ipairs(tabs) do
        if t.id == tabId then
            contentArea.BackgroundColor3 = t.bgColor
        end
    end
end

-- Create tabs
for i, t in ipairs(tabs) do
    local btn = Instance.new('TextButton')
    btn.Size = UDim2.new(1, 0, 0, 60)
    btn.Position = UDim2.new(0, 0, 0, (i - 1) * 60)
    btn.BackgroundColor3 = t.bgColor
    btn.BorderSizePixel = 0
    btn.Text = t.name
    btn.Font = Enum.Font.GothamBold
    btn.TextSize = 13
    btn.TextColor3 = t.textColor
    btn.TextWrapped = true
    btn.Parent = tabsContainer
    local stroke = Instance.new('UIStroke')
    stroke.Color = Color3.fromRGB(0, 0, 0)
    stroke.Thickness = 2
    stroke.Parent = btn
    tabButtons[t.id] = btn

    -- Separator
    if i < #tabs then
        local sep = Instance.new('Frame')
        sep.Size = UDim2.new(1, 0, 0, 2)
        sep.Position = UDim2.new(0, 0, 0, (i * 60))
        sep.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
        sep.BorderSizePixel = 0
        sep.Parent = tabsContainer
    end

    local frame = Instance.new('Frame')
    frame.Size = UDim2.new(1, 0, 1, 0)
    frame.BackgroundTransparency = 1
    frame.BorderSizePixel = 2
    frame.BorderColor3 = Color3.fromRGB(0, 0, 0)
    frame.Parent = contentArea
    frame.Visible = i == 2
    tabContents[t.id] = frame
    makeTabLabel(frame, t.name, t.textColor)

    btn.MouseButton1Click:Connect(function()
        switchTab(t.id)
    end)
end

-- Scripts
local function fleshFunc()
    pcall(function()
        ReplicatedStorage:WaitForChild('Remotes')
            :WaitForChild('BossReward')
            :FireServer(5)
    end)
end
local function clicksFunc()
    pcall(function()
        ReplicatedStorage:WaitForChild('Remotes')
            :WaitForChild('Clicks')
            :FireServer()
    end)
end
local function boneFunc()
    pcall(function()
        ReplicatedStorage:WaitForChild('Remotes')
            :WaitForChild('Bone')
            :FireServer()
    end)
end

-- Start/Stop buttons
makeStartStop(tabContents.clicks, 'clicks', clicksFunc, tabs[1].textColor)
makeStartStop(tabContents.flesh, 'flesh', fleshFunc, tabs[2].textColor)
makeStartStop(tabContents.bone, 'bone', boneFunc, tabs[3].textColor)

-- Bone instruction text
local boneText = Instance.new('TextLabel')
boneText.Size = UDim2.new(1, 0, 0, 40)
boneText.Position = UDim2.new(0, 0, 0, 40)
boneText.BackgroundTransparency = 1
boneText.Text = 'stand on the button for best effect! both work simultaneously.'
boneText.Font = Enum.Font.GothamBold
boneText.TextSize = 16
boneText.TextColor3 = Color3.fromRGB(255, 255, 255)
boneText.Parent = tabContents.bone
local boneStroke = Instance.new('UIStroke')
boneStroke.Color = Color3.fromRGB(0, 0, 0)
boneStroke.Thickness = 1.5
boneStroke.Parent = boneText

-- Minimize/Restore
local isMinimized = false
local minimizedBtnPosition = UDim2.new(0, 10, 0, 10)
local minimizedBtn
local function minimizeGUI()
    isMinimized = true
    mainFrame.Visible = false
    minimizedBtn = Instance.new('TextButton')
    minimizedBtn.Size = UDim2.new(0, 200, 0, 50)
    minimizedBtn.Position = minimizedBtnPosition
    minimizedBtn.BackgroundColor3 = Color3.fromRGB(139, 90, 43)
    minimizedBtn.BorderSizePixel = 3
    minimizedBtn.BorderColor3 = Color3.fromRGB(0, 0, 0)
    minimizedBtn.Text = 'Dirt Inc. Automation'
    minimizedBtn.TextColor3 = Color3.fromRGB(101, 67, 33)
    minimizedBtn.TextSize = 16
    minimizedBtn.Font = Enum.Font.GothamBold
    minimizedBtn.Parent = screenGui
    local stroke = Instance.new('UIStroke')
    stroke.Color = Color3.fromRGB(0, 0, 0)
    stroke.Thickness = 2
    stroke.Parent = minimizedBtn
    local grad = Instance.new('UIGradient')
    grad.Color = ColorSequence.new({
        ColorSequenceKeypoint.new(0, Color3.fromRGB(180, 120, 60)),
        ColorSequenceKeypoint.new(1, Color3.fromRGB(101, 67, 33)),
    })
    grad.Rotation = 45
    grad.Parent = minimizedBtn

    local minDragging = false
    local minDragStart = nil
    local minStartPos = nil
    local dragDistance = 0
    local dragThreshold = 5
    local minConn
    minimizedBtn.InputBegan:Connect(function(input, gp)
        if gp then
            return
        end
        if input.UserInputType == Enum.UserInputType.MouseButton1 then
            minDragging = true
            minDragStart = input.Position
            minStartPos = minimizedBtn.Position
            dragDistance = 0
        end
    end)
    minimizedBtn.InputEnded:Connect(function(input, gp)
        if input.UserInputType == Enum.UserInputType.MouseButton1 then
            minDragging = false
        end
    end)
    minConn = UserInputService.InputChanged:Connect(function(input, gp)
        if minDragging and minDragStart then
            local delta = input.Position - minDragStart
            dragDistance = math.sqrt(delta.X ^ 2 + delta.Y ^ 2)
            if dragDistance > dragThreshold then
                minimizedBtn.Position = UDim2.new(
                    minStartPos.X.Scale,
                    minStartPos.X.Offset + delta.X,
                    minStartPos.Y.Scale,
                    minStartPos.Y.Offset + delta.Y
                )
                minimizedBtnPosition = minimizedBtn.Position
            end
        end
    end)
    minimizedBtn.MouseButton1Click:Connect(function()
        if dragDistance < dragThreshold then
            mainFrame.Visible = true
            isMinimized = false
            minConn:Disconnect()
            minimizedBtn:Destroy()
        end
    end)
end
minimizeBtn.MouseButton1Click:Connect(function()
    if not isMinimized then
        minimizeGUI()
    end
end)

Features & Information

*Automatically generates clicks for the main world[Even before you unlock it, you get the boost lol] *Automatically generates flesh/passive rolls, as if you slayed the T5 opponent ten times a second[You can stand on it to do more, same as bone] *Automatically trades flesh to bone[Again, stand on the button to make it more effective] *Not really a big fan of this game, not sure what else I could do but there wasn't a whole lot. Beat it most of the way in a couple hours, wasn't too great. Any other features that you request I may add , as I didn't get far enough to explore every avenue. *Have fun!
#opensource#free#incremental#popular#trending

Community Comments (3)

AdministratorsAdministratorsOct 14, 2025

Commenting preemptively for engagement and boosting views!

blackhole1578blackhole1578Oct 16, 2025

Please make script for [4x] Crop incremental

Replying to @blackhole1578
AdministratorsAdministratorsNov 8, 2025

@blackhole1578 working on it now. tough nut to crack though, but i'll give it some time

More Scripts for [🎃HALLOWEEN] 💩 Dirt Incremental