CCCPaste

distributor

local ratioA = 3
local ratioB = 320

local function getError()
    local file = fs.open("error", "r")
    if not file then
        return 0
    end
    local error = tonumber(file.read())
    file.close()
    return error
end

local function setError(error)
    local file = fs.open("error", "w")
    file.write(error)
    file.close()
end

local function selectItem()
    for slot = 1, 16, 1 do
        if turtle.getItemCount(slot) > 0 then
            turtle.select(slot)
            return true
        end
    end
    return false
end

local function main()
    if turtle.getItemCount() == 0 then
        local res = selectItem()
        if not res then
            os.pullEvent("turtle_inventory")
        else
            local error = getError()
            error = error + ratioA
            if error >= ratioA + ratioB then
                turtle.dropUp(1)
                error = error - (ratioA + ratioB)
            else
                turtle.drop(1)
            end
            setError(error)
        end
    end
end

while true do
    main()
end