Guest User

export

a guest
Jun 28th, 2014
38
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.53 KB | None | 0 0
  1. cntID = 24
  2. outID = 51
  3.  
  4. offset = 1000
  5.  
  6. trSide = "front"
  7. bufferSide = "back"
  8. bellowSide = "left"
  9. modemSide = "top"
  10. valveSide = "bottom"
  11.  
  12. jarType = "tilejar"
  13. voidType = "tilejarvoid"
  14.  
  15. trans = peripheral.wrap(trSide)
  16. buff = peripheral.wrap(bufferSide)
  17. rednet.open(modemSide)
  18.  
  19. source = {}
  20.  
  21. function mapJars()
  22.   pers = peripheral.getNames()
  23.   for i, v in pairs(pers) do
  24.     pType = peripheral.getType(v)
  25.     if (pType == voidType) then
  26.       if (string.sub(v, string.find(v, "_[^_]*$") + 1, -1) ~= outID) then
  27.         asp = peripheral.call(v, "getAspects")[1]
  28.         if (asp ~= nil) then
  29.           source[asp.name] = tonumber(string.sub(v, string.find(v, "_[^_]*$") + 1, -1))
  30.         end
  31.       end
  32.     end
  33.   end
  34. end
  35.  
  36. function getFill(per)
  37.   aspInfo = per.getAspects()[1]
  38.   if (aspInfo == nil) then
  39.     return 0
  40.   end
  41.   return aspInfo.quantity
  42. end
  43.  
  44. function push(ess, amount)
  45.   rs.setOutput(valveSide, false)
  46.   jar = peripheral.wrap(voidType .. "_" .. source[ess])
  47.   targetJar = peripheral.wrap(jarType .. "_" .. outID)
  48.   if (targetJar == nil) then
  49.     targetJar = peripheral.wrap(voidType .. "_" .. outID)
  50.   end    
  51.   targetInitAmount = getFill(targetJar)
  52.   trans.setFreq(offset + source[ess])
  53.   initAmount = getFill(jar)
  54.   target = initAmount - amount
  55.   complete = false
  56.   print("Target: " .. target)
  57.  
  58.   rs.setOutput(trSide, true)
  59.   while ((getFill(jar) >= target) and (getFill(jar) > 0)) do
  60.     buffFill = getFill(buff)
  61.     if (buffFill == 0) then
  62.       rs.setOutput(bellowSide, false)
  63.     elseif (buffFill == 8) then
  64.       rs.setOutput(bellowSide, true)
  65.     end
  66.   end
  67.   sleep(0.5)
  68.   rs.setOutput(trSide, false)
  69.   sleep(1)
  70.   rs.setOutput(bellowSide, false)
  71.   sleep(1)
  72.  
  73.   newTarget = targetInitAmount + amount
  74.   print("New target: " .. newTarget)
  75.   while (getFill(targetJar) < newTarget) do
  76.     buffFill = getFill(buff)
  77.     if (buffFill == 0) then
  78.       if (not complete) then
  79.         rs.setOutput(bellowSide, false)
  80.       else
  81.         sleep(2)
  82.         if (getFill(targetJar) < newTarget) then
  83.           rs.setOutput(valveSide, false)
  84.           complete = false
  85.         else
  86.           rs.setOutput(trSide, true)
  87.           while (getFill(jar) < target) do
  88.           end
  89.           rs.setOutput(trSide, false)
  90.        end
  91.       end
  92.     elseif (buffFill == 8) then
  93.       rs.setOutput(bellowSide, true)
  94.     end
  95.     if ((buffFill >= (newTarget - getFill(targetJar)) - 1) and (buffFill > 0)) then
  96.       rs.setOutput(bellowSide, true)
  97.       complete = true
  98.       rs.setOutput(valveSide, true)
  99.     end
  100.   end
  101. end
  102.  
  103. function push1(ess)
  104.   jar = peripheral.wrap(voidType .. "_" .. source[ess])
  105.   targetJar = peripheral.wrap(jarType .. "_" .. outID)
  106.   if (targetJar == nil) then
  107.     targetJar = peripheral.wrap(voidType .. "_" .. outID)
  108.   end
  109.   initAmount = getFill(jar)
  110.   initTarget = getFill(targetJar)
  111.   trans.setFreq(offset + source[ess])
  112.   rs.setOutput(bellowSide, false)
  113.   while (getFill(jar) >= initAmount) do
  114.     rs.setOutput(trSide, true)
  115.     sleep(0.25)
  116.     rs.setOutput(trSide, false)
  117.     sleep(0.25)
  118.   end
  119.   while (getFill(buff) == 0) do
  120.   end
  121.  
  122.   rs.setOutput(bellowSide, true)
  123.   while (getFill(targetJar) == initTarget) do
  124.   end
  125. end
  126.      
  127. mapJars()
  128. rs.setOutput(trSide, false)
  129. rs.setOutput(valveSide, false)
  130. rs.setOutput(bellowSide, true)
  131. while true do
  132.   id, msg = rednet.receive()
  133.   if (id == cntID) then
  134.     t = textutils.unserialize(msg)
  135.     if (t.amount > 1) then
  136.       push(t.ess, t.amount)
  137.     else
  138.       push1(t.ess)
  139.     end
  140.     rednet.send(cntID, "OK")
  141.   end
  142. end
Advertisement
Add Comment
Please, Sign In to add comment