SHOW:
|
|
- or go back to the newest paste.
| 1 | rednet.open("top")
| |
| 2 | local queue = {}
| |
| 3 | while true do | |
| 4 | local sender, message = rednet.receive("printer")
| |
| 5 | if message == "ping" then | |
| 6 | print("Received ping from "..sender)
| |
| 7 | rednet.send(sender,"Hydro's Office","printer") | |
| 8 | elseif message == "print" then | |
| 9 | print("Received print from "..sender)
| |
| 10 | while true do | |
| 11 | local sender2, message2 = rednet.receive("printer",2)
| |
| 12 | ||
| 13 | if sender2 == sender then | |
| 14 | print("Executing print")
| |
| 15 | local points = {message2:find(" ")}
| |
| 16 | local words = {}
| |
| 17 | if #points == 0 then | |
| 18 | words = {message2}
| |
| 19 | elseif #points == 1 then | |
| 20 | words = {message2:sub(1,points[1]-1),message2:sub(points[1]+1)}
| |
| 21 | else | |
| 22 | words = {message2:sub(1,points[1]-1)}
| |
| 23 | for i = 2,#points-1 do | |
| 24 | table.insert(words,message2:sub(points[i]+1,points[i+1]-1)) | |
| 25 | end | |
| 26 | table.insert(words,message2:sub(points[#points])) | |
| 27 | end | |
| 28 | print("Established words ("..#words.." found)")
| |
| 29 | local line = "" | |
| 30 | local lines = {}
| |
| 31 | local pages = {}
| |
| 32 | line = words[1] | |
| 33 | table.remove(words,1) | |
| 34 | for each,word in pairs(words) do | |
| 35 | if #line + #word + 1 > 25 then | |
| 36 | if #lines > 21 then | |
| 37 | print("New page")
| |
| 38 | table.insert(pages,lines) | |
| 39 | lines = {line}
| |
| 40 | line = word | |
| 41 | else | |
| 42 | print("New line")
| |
| 43 | table.insert(lines,line) | |
| 44 | line = word | |
| 45 | end | |
| 46 | else | |
| 47 | line = line.." "..word | |
| 48 | end | |
| 49 | end | |
| 50 | table.insert(lines,line) | |
| 51 | table.insert(pages,lines) | |
| 52 | print("Constructed Pages")
| |
| 53 | local printer = peripheral.wrap("left")
| |
| 54 | if printer.getInkLevel() < #pages then | |
| 55 | rednet.send(sender,"ink","printer") | |
| 56 | print("Not enough ink")
| |
| 57 | elseif printer.getPaperLevel() < #pages then | |
| 58 | rednet.send(sender,"paper","printer") | |
| 59 | print("Not enough paper")
| |
| 60 | else | |
| 61 | print("Has sufficient resources")
| |
| 62 | print("Todo: "..#pages.." pages")
| |
| 63 | for each,page in pairs(pages) do | |
| 64 | print("Starting page "..each.."/"..#pages)
| |
| 65 | printer.newPage() | |
| 66 | for any,line in pairs(page) do | |
| 67 | printer.write(line.."\n") | |
| 68 | end | |
| 69 | printer.endPage() | |
| 70 | print("Print finished")
| |
| 71 | end | |
| 72 | end | |
| 73 | break | |
| 74 | else | |
| 75 | local tab = {sender2,message2}
| |
| 76 | table.insert(queue,tab) | |
| 77 | end | |
| 78 | end | |
| 79 | end | |
| 80 | end |