Advertisement
Guest User

test.lua

a guest
Jun 26th, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.19 KB | None | 0 0
  1. component = require("component")
  2. os = require("os")
  3. sides = require("sides")
  4. event = require("event")
  5.  
  6. local silo = sides.east
  7. local comp = sides.south
  8. local silos = {}
  9. local timerId = nil
  10.  
  11. local function sleepTicks(ticks)
  12.   os.sleep(ticks / 20)
  13. end
  14.  
  15. local function requestItem()
  16.   local isDone = true
  17.   for address, data in pairs(silos) do
  18.     if data.count > 0 then  
  19.       isDone = false
  20.       local rs = component.proxy(address)
  21.       rs.setOutput(silo, 15)
  22.       sleepTicks(1)
  23.       rs.setOutput(silo, 0)
  24.       sleepTicks(1)
  25.     end
  26.   end
  27.  
  28.   if isDone == true then
  29.     event.cancel(timerId)
  30.     event.ignore("redstone_changed", handle)
  31.   end
  32. end
  33.  
  34. local function handle(eventName, address, side)
  35.   if address == nil then
  36.     return
  37.   end
  38.  
  39.   data = silos[address]
  40.   if side == comp then
  41.     if data.compOn == false then
  42.       data.compOn = true
  43.       data.count = data.count - 1
  44.       silos[address] = data
  45.     else
  46.       data.compOn = false
  47.     end
  48.   end
  49. end
  50.  
  51. function getItems(address, count)
  52.   if timerId == nil then
  53.     timerId = event.timer(1, requestItem, math.huge)
  54.   end
  55.   event.listen("redstone_changed", handle)
  56.  
  57.   local data = {}
  58.   data.count = count
  59.   data.compOn = false
  60.   silos[address] = data
  61. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement