Auto collect bricks & merge V1.1 (FREE, KEYLESS, OPEN-SRC)

puts all bricks into collect area, reruns every second Haven't made a ui but feel free to take the src and make one urself

loadstring(game:HttpGet("https://pasteblox.com/raw/t4vkhkbzyp"))()
pbx pull t4vkhkbzypraw link never changes · v1 live
auto-collect-bricks-merge-v1-1-free-keyless-open.luau
local LocalPlayer = game.Players.LocalPlayer
local VoidBottom = game.Workspace:WaitForChild("CollectBits"):WaitForChild("Void"):WaitForChild("Bottom")
local Ground = game.Workspace:WaitForChild("CollectBits"):WaitForChild("Ground")
local MergePoint = Ground.CFrame + Vector3.new(0, 1, 0)


local COMPLEX_RECIPES = {
    {
        result = "Pen Pineapple Apple Pen bit",
        ingredients = {"Pen bit", "Apple bit", "Pineapple bit"}
    },
    {
        result = "Trophy bit",
        ingredients = {"Red Paintball bit", "Blue Paintball bit", "Green Paintball bit"}
    },
    {
        result = "Flat bit",
        ingredients = {"Stick bit", "Long bit"}
    },
    {
        result = "Brick^8 bit",
        ingredients = {"Flat bit", "Big bit"}
    },
    {
        result = "Witches Brew Hat bit",
        ingredients = {"Witches Brew bit", "Witches Brew bit"} -- Needs 2
    },
    {
        result = "Rust bit",
        ingredients = {"Water bit", "Metal bit"}
    }
}


_G.AutoCollect = true
_G.AutoMerge = true

task.spawn(function()
    while true do
        if _G.AutoCollect then
            local allBricks = {}
            local bricksByType = {}

            
            for _, v in ipairs(game.Workspace:GetChildren()) do
                if v:IsA("BasePart") and v:GetAttribute("Owner") == LocalPlayer.UserId then
                    table.insert(allBricks, v)
                    local name = v.Name
                    if not bricksByType[name] then
                        bricksByType[name] = {}
                    end
                    table.insert(bricksByType[name], v)
                end
            end

            local processed = {}

            
            if _G.AutoMerge then
                for _, recipe in ipairs(COMPLEX_RECIPES) do
                    
                    local canMerge = true
                    local ingredientsToUse = {}
                    
                    
                    local tempBricksByType = {}
                    for name, list in pairs(bricksByType) do
                        tempBricksByType[name] = {unpack(list)}
                    end

                    for _, ingName in ipairs(recipe.ingredients) do
                        local list = tempBricksByType[ingName]
                        if list and #list > 0 then
                            table.insert(ingredientsToUse, table.remove(list, 1))
                        else
                            canMerge = false
                            break
                        end
                    end

                    if canMerge then
                        for i, brick in ipairs(ingredientsToUse) do
                            processed[brick] = true
                            local offset = Vector3.new(math.random(-10,10)/100, 0, math.random(-10,10)/100)
                            brick.CFrame = MergePoint + offset
                            brick.AssemblyLinearVelocity = Vector3.zero
                        end
                    end
                end
            end

            
            for _, brick in ipairs(allBricks) do
                if not processed[brick] then
                    brick.CFrame = VoidBottom.CFrame
                    brick.AssemblyLinearVelocity = Vector3.new(0, -50, 0)
                end
            end
        end
        task.wait(1)
    end
end)

print("Auto-Collect & Complex-Merge loaded!")
print("Toggles: _G.AutoCollect, _G.AutoMerge")

changelog

1 version
  1. imported from rscripts

    live

    @catnba·