skypop

TicketWriter

Sep 20th, 2016
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local wi = peripheral.find("WorldInterface")
  2.  
  3. local function printerCount()
  4.   local h = wi.getBlockDatatags(-584,29,123)
  5.   if h.datatags.id~="ccprinter" then
  6.     error("Missing printer in coords -584,29,123",0)
  7.     exit()
  8.   end
  9.   if #h.datatags.Items>=13 then
  10.     --tous les slots sont occupés
  11.     return 6
  12.   elseif #h.datatags.Items==0 then
  13.     --tous les slots sont vides
  14.     return 0
  15.   else
  16.     local count,_,s = 0
  17.     for _,s in pairs(h.datatags.Items) do
  18.       if s.Slot >= 7 then
  19.         count = count+1
  20.       end
  21.     end
  22.     return count
  23.   end
  24. end
  25.  
  26. local function hopperCount()
  27.   local h = wi.getBlockDatatags(-584,28,123)
  28.   if h.datatags.id~="Hopper" then
  29.     error("Missing hopper in coords -584,28,123",0)
  30.     exit()
  31.   end
  32.   return #h.datatags.Items
  33. end
  34.  
  35. local function printTickets()
  36.   local count,i = 0
  37.   while count < 5 do
  38.     count = hopperCount()
  39.     if count < 5 then
  40.       for i=1,5-count do
  41.         shell.run("/ticket")
  42.       end
  43.     end
  44.   end
  45. end
  46.  
  47. local e,p
  48. local countdown = 0
  49. local batch = os.startTimer(.1)
  50. local tick = os.startTimer(1)
  51. while true do
  52.   term.setCursorPos(1,1)
  53.   term.clear()
  54.   term.write("Countdown: "..countdown)
  55.  
  56.   e,p = os.pullEvent("timer")
  57.   if e=="timer" and p==batch then
  58.     os.cancelTimer(tick)
  59.     if printerCount()<6 then
  60.       printTickets()
  61.       countdown = 10
  62.     else
  63.       countdown = 40
  64.     end
  65.     batch = os.startTimer(countdown)
  66.     tick = os.startTimer(1)
  67.   elseif e=="timer" and p==tick then
  68.     countdown = math.max(0,countdown-1)
  69.     tick = os.startTimer(1)
  70.   end
  71. end
Add Comment
Please, Sign In to add comment