OP Farm Open Source
Key Required

OP Farm Open Source

untitled drill game ⚙️icmpicmp 5.3K views 54 executesUpdated May 25, 2025
5.0/ 5(3 votes)
30100% Positive
Lua Script•452 lines (11946 chars)
local plrs = game.Players
local plr = plrs.LocalPlayer
local char = plr.Character
local drilling = false 
local selling = false
local collecting = false
local storage = false
local rebirthing = false
local selectedDrill = nil
local selectedHandDrill = nil
local selectedPlayer = nil

local function drill()
    if char:FindFirstChildOfClass("Tool") and string.match(char:FindFirstChildOfClass("Tool").Name, "Hand") then
        game:GetService("ReplicatedStorage").Packages.Knit.Services.OreService.RE.RequestRandomOre:FireServer()
    else
        for _,v in ipairs(plr.Backpack:GetChildren()) do
            if string.match(v.Name, "Hand") then
                char.Humanoid:EquipTool(v)
                game:GetService("ReplicatedStorage").Packages.Knit.Services.OreService.RE.RequestRandomOre:FireServer()
                break
            end
        end
    end
end

local function sell()
    for _,v in next, plr.Backpack:GetChildren() do
        if not string.match(v.Name, "Drill") then
            if v:IsA("Tool") and v:FindFirstChild("Handle") then
                local old = char:GetPivot()
                char:PivotTo(workspace["Sell Shop"]:GetPivot())
                task.wait(0.1)
                game:GetService("ReplicatedStorage").Packages.Knit.Services.OreService.RE.SellAll:FireServer()
                task.wait(0.1)
                char:PivotTo(old)
            end
        end
    end
end

local function getPlot()
    for _,v in next, workspace.Plots:GetChildren() do
        if v:FindFirstChild("Owner") and v:FindFirstChild("Owner").Value == plr then
            return v
        end
    end
end

local function collectDrills()
    for _,v in next, getPlot():FindFirstChild("Drills"):GetChildren() do
        if v:FindFirstChild("Ores") and v:FindFirstChild("Ores"):FindFirstChild("TotalQuantity") and v:FindFirstChild("Ores"):FindFirstChild("TotalQuantity").Value > 0 then
            game:GetService("ReplicatedStorage").Packages.Knit.Services.PlotService.RE.CollectDrill:FireServer(v)
        end
    end
end

local function collectStorage()
    for _,v in next, getPlot():FindFirstChild("Storage"):GetChildren() do
        if v:FindFirstChild("Ores") and v:FindFirstChild("Ores"):FindFirstChild("TotalQuantity") and v:FindFirstChild("Ores"):FindFirstChild("TotalQuantity").Value > 0 then
            game:GetService("ReplicatedStorage").Packages.Knit.Services.PlotService.RE.CollectDrill:FireServer(v)
        end
    end
end

local function pickupAll()
    for _,v in next, getPlot():FindFirstChild("Drills"):GetChildren() do
		if v then
			game:GetService("ReplicatedStorage").Packages.Knit.Services.PlotService.RE.PickupDrill(v)
		end
	end
    for _,v in next, getPlot():FindFirstChild("Storage"):GetChildren() do
		if v then
			game:GetService("ReplicatedStorage").Packages.Knit.Services.PlotService.RE.PickupDrill(v)
		end
	end
end



local function rebirth()
    local reb = plr.PlayerGui.Menu.CanvasGroup.Rebirth.Background
    local progress = reb.Progress.Checkmark.Image == "rbxassetid://131015443699741"
    local ores = reb.RequiredOres:GetChildren()
    
    if #ores >= 2 then
        local ore1 = ores[1]:FindFirstChild("Checkmark")
        local ore2 = ores[2]:FindFirstChild("Checkmark")

        if progress
        and ore1 and ore1.Image == "rbxassetid://131015443699741"
        and ore2 and ore2.Image == "rbxassetid://131015443699741" then
            game:GetService("ReplicatedStorage").Packages.Knit.Services.RebirthService.RE.RebirthRequest:FireServer()
        end
    end
end

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

local function getDrillsSortedByPrice()
    local drills = {}

    for _, frame in pairs(plr.PlayerGui.Menu.CanvasGroup.Buy.Background.DrillList:GetChildren()) do
        if frame:IsA("Frame") then
            local priceLabel = frame:FindFirstChild("Buy")
                and frame.Buy:FindFirstChild("TextLabel")
            local titleLabel = frame:FindFirstChild("Title")

            if priceLabel and titleLabel then
                local priceText = priceLabel.Text

                local cleanPriceText = priceText:gsub("[%$,]", "")
                local price = tonumber(cleanPriceText)

                if price then
                    table.insert(drills, {
                        name = titleLabel.Text,
                        price = price,
                        frame = frame
                    })
                end
            end
        end
    end

    table.sort(drills, function(a, b)
        return a.price < b.price
    end)

    return drills
end

local sortedDrills = getDrillsSortedByPrice()

local drillNames = {}
for _, drill in ipairs(sortedDrills) do
    table.insert(drillNames, drill.name)
end


local function getHandDrillsSortedByPrice()
    local drills = {}

    for _, frame in pairs(plr.PlayerGui.Menu.CanvasGroup.HandDrills.Background.HandDrillList:GetChildren()) do
        if frame:IsA("Frame") then
            local priceLabel = frame:FindFirstChild("Buy")
                and frame.Buy:FindFirstChild("TextLabel")
            local titleLabel = frame:FindFirstChild("Title")

            if priceLabel and titleLabel then
                local priceText = priceLabel.Text

                local cleanPriceText = priceText:gsub("[%$,]", "")
                local price = tonumber(cleanPriceText)

                if price then
                    table.insert(drills, {
                        name = titleLabel.Text,
                        price = price,
                        frame = frame
                    })
                end
            end
        end
    end

    table.sort(drills, function(a, b)
        return a.price < b.price
    end)

    return drills
end

local sortedHandDrills = getHandDrillsSortedByPrice()

local handDrillNames = {}
for _, drill in ipairs(sortedHandDrills) do
    table.insert(handDrillNames, drill.name)
end

local function getDrillPrice()
    if not selectedDrill then return end
    for _,v in next, plr.PlayerGui.Menu.CanvasGroup.Buy.Background.DrillList:GetDescendants() do
        if v:IsA("TextLabel") and v.Name == "Title" and v.Text == selectedDrill then
            return v.Parent:FindFirstChild("Buy").TextLabel.Text
        end
    end
end

local function getHandDrillPrice()
    if not selectedHandDrill then return end
    for _,v in next, plr.PlayerGui.Menu.CanvasGroup.HandDrills.Background.HandDrillList:GetDescendants() do
        if v:IsA("TextLabel") and v.Name == "Title" and v.Text == selectedHandDrill then
            return v.Parent:FindFirstChild("Buy").TextLabel.Text
        end
    end
end

local function get()
	local t = {}
	for _, p in ipairs(plrs:GetPlayers()) do
        if p == plr then continue end
		t[#t + 1] = p.Name
	end
	return t
end



local ui = loadstring(game:HttpGet("https://github.com/Footagesus/WindUI/releases/latest/download/main.lua"))()

local win = ui:CreateWindow({
    Title = "Untitled Drill Game",
    Icon = "terminal",
    Folder = nil,
    Size = UDim2.fromOffset(580, 460),
    Transparent = true,
    Theme = "Dark",
    SideBarWidth = 200,
    Background = "",
})

local tab = win:Tab({
    Title = "Main",
    Icon = "pickaxe",
})

tab:Section({
    Title = "Farming",
    TextXAlignment = "Left",
    TextSize = 17,
})

tab:Toggle({
    Title = "Drill Ores",
    Type = "Toggle",
    Default = false,
    Callback = function(state)
        drilling = state
        if drilling then
            task.spawn(function()
                while drilling do
                    drill()
                    task.wait()
                end
            end)
        end
    end
})

tab:Toggle({
    Title = "Sell Ores",
    Type = "Toggle",
    Default = false,
    Callback = function(state)
        selling = state
        if selling then
            task.spawn(function()
                while selling do
                    sell()
                    task.wait()
                end
            end)
        end
    end
})

tab:Toggle({
    Title = "Collect Ores From Drills",
    Type = "Toggle",
    Default = false,
    Callback = function(state)
        collecting = state
        if collecting then
            task.spawn(function()
                while collecting do
                    collectDrills()
                    task.wait()
                end
            end)
        end
    end
})

tab:Toggle({
    Title = "Collect Ores From Storage",
    Type = "Toggle",
    Default = false,
    Callback = function(state)
        storage = state
        if storage then
            task.spawn(function()
                while storage do
                    collectStorage()
                    task.wait()
                end
            end)
        end
    end
})

tab:Toggle({
    Title = "Rebirth",
    Type = "Toggle",
    Default = false,
    Callback = function(state)
        rebirthing = state
        if rebirthing then
            task.spawn(function()
                while rebirthing do
                    rebirth()
                    task.wait(1)
                end
            end)
        end
    end
})

tab:Button({
    Title = "Pick Up Everything",
    Locked = false,
    Callback = function()
        pickupAll()
    end
})

tab:Section({
    Title = "Buying",
    TextXAlignment = "Left",
    TextSize = 17,
})

local Paragraph = tab:Paragraph({
    Title = "Selected Drill Price: N/A",
    Locked = false,
})

local Dropdown = tab:Dropdown({
    Title = "Drill List",
    Values = drillNames,
    Value = nil,
    Callback = function(option)
        selectedDrill = option
        local price = getDrillPrice() or "N/A"
        Paragraph:SetTitle("Selected Drill Price: " .. price)
    end
})


tab:Button({
    Title = "Buy Drill",
    Locked = false,
    Callback = function()
        if selectedDrill then
            game:GetService("ReplicatedStorage").Packages.Knit.Services.OreService.RE.BuyDrill:FireServer(selectedDrill)
        end
    end
})

local Paragraph2 = tab:Paragraph({
    Title = "Selected Hand Drill Price: N/A",
    Locked = false,
})

local Dropdown = tab:Dropdown({
    Title = "Hand Drill List",
    Values = handDrillNames,
    Value = nil,
    Callback = function(option)
        selectedHandDrill = option
        local price = getHandDrillPrice() or "N/A"
        Paragraph2:SetTitle("Selected Hand Drill Price: " .. price)
    end
})


tab:Button({
    Title = "Buy Hand Drill",
    Locked = false,
    Callback = function()
        if selectedHandDrill then
            game:GetService("ReplicatedStorage").Packages.Knit.Services.OreService.RE.BuyHandDrill:FireServer(selectedHandDrill)
        end
    end
})


local tab = win:Tab({
    Title = "Miscellaneous",
    Icon = "person-standing",
})

tab:Section({
    Title = "Player",
    TextXAlignment = "Left",
    TextSize = 17,
})

local Slider = tab:Slider({
    Title = "WalkSpeed",
    Step = 1,
    Value = {
        Min = 0,
        Max = 500,
        Default = plr.Character.Humanoid.WalkSpeed,
    },
    Callback = function(value)
        plr.Character.Humanoid.WalkSpeed = value
    end
})

local Slider = tab:Slider({
    Title = "JumpPower",
    Step = 1,
    Value = {
        Min = 0,
        Max = 500,
        Default = plr.Character.Humanoid.JumpPower,
    },
    Callback = function(value)
        plr.Character.Humanoid.JumpPower = value
    end
})

local Dropdown = tab:Dropdown({
    Title = "Select Player",
    Values = get(),
    Value = nil,
    Callback = function(option)
        selectedPlayer = option
    end
})

plrs.PlayerAdded:Connect(function()
    Dropdown:Refresh(get())
end)

local Button = tab:Button({
    Title = "Teleport To Player",
    Locked = false,
    Callback = function()
        char:PivotTo(plrs[selectedPlayer].Character:GetPivot())
    end
})

Features & Information

- Auto Drill - Auto Sell - Auto collect ores (drills, storage) - Auto rebirth (with checks) - Pick up everything from plot - Buy drills and hand drills - TP to players
#mommy asmr#un*led drill game#drill#farm#open source

Community Comments (0)

No comments yet for this script.

More Scripts for untitled drill game ⚙️