Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Sensorside = "bottom"
- PIPE_SIDE = "right"
- function ClearPages()
- sleep(0.5)
- redstone.setBundledOutput("back",colors.combine(redstone.getBundledOutput("back"), colors.black))
- sleep(0.5)
- redstone.setBundledOutput("back",colors.subtract(redstone.getBundledOutput("back"), colors.black))
- sleep(2)
- end
- function ResetSignals()
- sleep(0.5)
- redstone.setBundledOutput("back",colors.subtract(redstone.getBundledOutput("back"), colors.orange))
- sleep(0.5)
- redstone.setBundledOutput("back",colors.combine(redstone.getBundledOutput("back"), colors.blue))
- end
- function RequestItems()
- -- IMPLEMENTATION
- function convertNBT(nbt)
- local conv = {}
- if (nbt == nil) then
- return nil
- elseif (nbt["type"] == "NBTTagCompound") or (nbt["type"] == "NBTTagList") then
- for key, value in pairs(nbt["value"]) do
- conv[key] = convertNBT(value)
- end
- else
- conv = nbt["value"]
- end
- return conv
- end
- function getItems(pipe)
- pipe.getAvailableItems()
- local event, result = os.pullEvent("available_items_return")
- return result
- end
- -- Funktion inList anpassen, um Variablen zu verwenden
- function inList(item)
- local id = item.id
- local dmg = item.dmg
- local idKey = tostring(id)
- local exists, requestAmount = false, 0
- local variantKey = idKey .. ":" .. tostring(dmg)
- if REQUEST_IDS[variantKey] then
- exists = true
- requestAmount = REQUEST_IDS[variantKey]
- end
- return exists, requestAmount
- end
- -- MAIN
- local pipe = peripheral.wrap(PIPE_SIDE)
- for i, result in pairs(getItems(pipe)) do
- local iid, amount = unpack(result)
- local item = {
- id = pipe.getItemID(iid),
- dmg = pipe.getItemDamage(iid),
- nbt = convertNBT(pipe.getNBTTagCompound(iid))
- }
- local exists, requestAmount = inList(item)
- if exists then
- pipe.makeRequest(iid, requestAmount)
- sleep(0.15)
- end
- end
- end
- function ladeItems(page)
- local datei = fs.open("ItemsInPage" .. page, "r") -- Datei im Lesemodus åB6ffnen
- if not datei then
- print("Fehler: Datei nicht gefunden")
- return
- end
- local items = {
- ItemName = {},
- ItemSize = {},
- ItemID_1 = {},
- ItemID_2 = {}
- }
- -- Schleife durch jede Zeile der Datei
- MaxItems = 0
- repeat
- local zeile = datei.readLine()
- if zeile then
- local itemName, itemSize, itemID = zeile:match("([^%-]+)%-([^%-]+)%-(.+)")
- if itemName and itemSize and itemID then
- table.insert(items.ItemName, itemName)
- table.insert(items.ItemSize, tonumber(itemSize))
- table.insert(items.ItemID_1, tonumber(itemID:match("%d+")))
- table.insert(items.ItemID_2, tonumber(itemID:match(":(%d+)")))
- MaxItems = MaxItems + 1
- else
- print("Fehlerhafte Zeile in der Datei: " .. zeile)
- end
- end
- until not zeile
- datei:close() -- Datei schlieå9Fen
- return items
- end
- function RequestPage()
- local ItemsInPage = ladeItems(Page) -- Lade Items aus der Page
- for a = 1, MaxItems do
- ItemID_1 = ItemsInPage.ItemID_1[a]
- ItemID_2 = ItemsInPage.ItemID_2[a]
- ItemSize = ItemsInPage.ItemSize[a]
- io.write(ItemsInPage.ItemName[a] .. " ")
- io.write(ItemsInPage.ItemID_1[a] .. ":")
- io.write(ItemsInPage.ItemID_2[a] .. " ")
- io.write(ItemsInPage.ItemSize[a] .. " ")
- io.write("\n")
- REQUEST_IDS = {
- [tostring(ItemID_1) .. ":" .. tostring(ItemID_2)] = ItemSize,}
- RequestItems()
- sleep(sle)
- end
- end
- ------programm start------
- sle = 0.1 --Sleep zwischen jeder Request
- os.loadAPI("ocs/apis/sensor")
- sen = sensor.wrap("bottom")
- redstone.setBundledOutput("back",colors.combine(redstone.getBundledOutput("back"), colors.orange)) --orange an
- sleep(0.5)
- redstone.setBundledOutput("back",colors.subtract(redstone.getBundledOutput("back"), colors.blue)) --blau aus
- while true do
- s = sen.getTargets()
- function getS()
- for v, k in pairs(s) do
- if k.Name == "ME Wireless Access Point" then
- target = v
- end
- end
- return target
- end
- f = getS()
- s1 = sen.getTargetDetails(target)
- local Page1 = 0
- local Page2 = 0
- local Page3 = 0
- local Page4 = 0
- local Page5 = 0
- local Page6 = 0
- local Page7 = 0
- local Page8 = 0
- local Page9 = 0
- for _, item in pairs(s1.Items) do
- if item.Name == "ME Wireless Access Terminal" then
- Page1 = item.Size -- Werte ermittels und setzen
- end
- if item.Name == "Advanced Solar Panel" then
- Page2 = item.Size -- Werte ermittels und setzen
- end
- if item.Name == "Remote Orderer" then
- Page3 = item.Size -- Werte ermittels und setzen
- end
- if item.Name == "Cobblestone" then
- Page4 = item.Size -- Werte ermittels und setzen
- end
- if item.Name == "tile.machineBlock" then
- Page5 = item.Size -- Werte ermittels und setzen
- end
- if item.Name == "item.PipeItemsDiamond" then
- Page6 = item.Size -- Werte ermittels und setzen
- end
- if item.Name == "Electric Furnace" then
- Page7 = item.Size -- Werte ermittels und setzen
- end
- if item.Name == "Clay Dust" then
- Page8 = item.Size -- Werte ermittels und setzen
- end
- if item.Name == "Wooden Axe" then
- Page9 = item.Size -- Werte ermittels und setzen
- end
- if item.Size < 0 then
- os.reboot()
- end
- end
- term.setCursorPos(1,1)
- term.clear()
- print("1: "..Page1)
- print("2: "..Page2)
- print("3: "..Page3)
- print("4: "..Page4)
- print("5: "..Page5)
- print("6: "..Page6)
- print("7: "..Page7)
- print("8: "..Page8)
- print("9: "..Page9)
- reboot = 1
- if Page1 < 1 or Page2 < 1 or Page3 < 1 or Page4 < 1 or Page5 < 1 or Page6 < 1 or Page7 < 1 or Page8 < 1 or Page9 < 1 then
- ResetSignals()
- ClearPages()
- if Page1 < 1 then
- Page = 1
- elseif Page2 < 1 then
- Page = 2
- elseif Page3 < 1 then
- Page = 3
- elseif Page4 < 1 then
- Page = 4
- elseif Page4 < 1 then
- Page = 5
- elseif Page4 < 1 then
- Page = 6
- elseif Page4 < 1 then
- Page = 7
- elseif Page4 < 1 then
- Page = 8
- elseif Page4 < 1 then
- Page = 9
- end
- if Page1 < 1 or Page2 < 1 or Page3 < 1 or Page4 < 1 or Page5 < 1 or Page6 < 1 or Page7 < 1 or Page8 < 1 or Page9 < 1 then
- RequestPage()
- sleep(2)
- reboot = 0
- end
- end
- if reboot == 0 then
- os.reboot()
- end
- sleep(1)
- end
Add Comment
Please, Sign In to add comment