Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --Dieses Programm 'startup' nennen!
- sle = 0.1 --Sleep zwischen jeder Request
- BundledCableSide = "back"
- Sensorside = "bottom"
- PIPE_SIDE = "right"
- function ClearPages()
- sleep(0.5)
- rs.setOutput("back", true)
- sleep(0.5)
- rs.setOutput("back",false)
- sleep(1)
- 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(sle)
- end
- end
- end
- function ladeItems(page)
- local datei = fs.open("ItemsInPage" .. page, "r") -- Datei im Lesemodus öffnen
- if not datei then
- print("Datei nicht gefunden, oder Inhalt nicht erstellt!")
- 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 = tonumber(MaxItems) + 1
- else
- print("Fehlerhafte Zeile in der Datei: " .. zeile)
- end
- end
- until not zeile
- datei:close() -- Datei schließen
- return items
- end
- function RequestPage()
- local ItemsInPage = ladeItems(Page) -- Lade Items aus der Page
- MaxItems = tonumber(MaxItems)
- 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------
- os.loadAPI("ocs/apis/sensor")
- sen = sensor.wrap(Sensorside)
- 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
- file = fs.open("Menu-Item-1" , "r")
- local MenuItem1 = file.readLine()
- file.close()
- if item.Name == MenuItem1 then
- Page1 = item.Size -- Werte ermittels und setzen
- end
- file = fs.open("Menu-Item-2" , "r")
- local MenuItem2 = file.readLine()
- file.close()
- if item.Name == MenuItem2 then
- Page2 = item.Size -- Werte ermittels und setzen
- end
- file = fs.open("Menu-Item-3" , "r")
- local MenuItem3 = file.readLine()
- file.close()
- if item.Name == MenuItem3 then
- Page3 = item.Size -- Werte ermittels und setzen
- end
- file = fs.open("Menu-Item-4" , "r")
- local MenuItem4 = file.readLine()
- file.close()
- if item.Name == MenuItem4 then
- Page4 = item.Size -- Werte ermittels und setzen
- end
- file = fs.open("Menu-Item-5" , "r")
- local MenuItem5 = file.readLine()
- file.close()
- if item.Name == MenuItem5 then
- Page5 = item.Size -- Werte ermittels und setzen
- end
- file = fs.open("Menu-Item-6" , "r")
- local MenuItem6 = file.readLine()
- file.close()
- if item.Name == MenuItem6 then
- Page6 = item.Size -- Werte ermittels und setzen
- end
- file = fs.open("Menu-Item-7" , "r")
- local MenuItem7 = file.readLine()
- file.close()
- if item.Name == MenuItem7 then
- Page7 = item.Size -- Werte ermittels und setzen
- end
- file = fs.open("Menu-Item-8" , "r")
- local MenuItem8 = file.readLine()
- file.close()
- if item.Name == MenuItem8 then
- Page8 = item.Size -- Werte ermittels und setzen
- end
- file = fs.open("Menu-Item-9" , "r")
- local MenuItem9 = file.readLine()
- file.close()
- if item.Name == MenuItem9 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)
- 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
- os.reboot() --reboot wenn ME-Dark Cable bugt
- end
- local zeroCount = 0 --abschalten wenn mehr als 1 Menu Item entnommen wird
- if Page1 == 0 then zeroCount = zeroCount + 1 end
- if Page2 == 0 then zeroCount = zeroCount + 1 end
- if Page3 == 0 then zeroCount = zeroCount + 1 end
- if Page4 == 0 then zeroCount = zeroCount + 1 end
- if Page5 == 0 then zeroCount = zeroCount + 1 end
- if Page6 == 0 then zeroCount = zeroCount + 1 end
- if Page7 == 0 then zeroCount = zeroCount + 1 end
- if Page8 == 0 then zeroCount = zeroCount + 1 end
- if Page9 == 0 then zeroCount = zeroCount + 1 end
- if zeroCount >= 2 then
- error("FEHLER: Bitte erst die Menu Items in die erste Zeile einlegen. Dann Strg + r halten zum rebooten")
- end
- 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
- 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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement