View difference between Paste ID: 2CREKsEd and 9uyAQgtv
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