Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- component = require("component")
- os = require("os")
- sides = require("sides")
- event = require("event")
- local silo = sides.east
- local comp = sides.south
- local silos = {}
- local timerId = nil
- local function sleepTicks(ticks)
- os.sleep(ticks / 20)
- end
- local function requestItem()
- local isDone = true
- for address, data in pairs(silos) do
- if data.count > 0 then
- isDone = false
- local rs = component.proxy(address)
- rs.setOutput(silo, 15)
- sleepTicks(1)
- rs.setOutput(silo, 0)
- sleepTicks(1)
- end
- end
- if isDone == true then
- event.cancel(timerId)
- event.ignore("redstone_changed", handle)
- end
- end
- local function handle(eventName, address, side)
- if address == nil then
- return
- end
- data = silos[address]
- if side == comp then
- if data.compOn == false then
- data.compOn = true
- data.count = data.count - 1
- silos[address] = data
- else
- data.compOn = false
- end
- end
- end
- function getItems(address, count)
- if timerId == nil then
- timerId = event.timer(1, requestItem, math.huge)
- end
- event.listen("redstone_changed", handle)
- local data = {}
- data.count = count
- data.compOn = false
- silos[address] = data
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement