Advertisement
praetorianer777

BigReactor+DraconicEnergyStorage

Mar 21st, 2016
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.52 KB | None | 0 0
  1. --Variablen
  2. local reactor = peripheral.wrap("BigReactors-Reactor_0")
  3. local monitor = peripheral.wrap("right")
  4. local energyStorage = peripheral.wrap("draconic_rf_storage_0")
  5. local energystored = 0
  6. local maxEnergy = 0
  7. local maxEnergyOutput = 43000
  8.  
  9. local i = 0
  10. local zeile = 1
  11. local x = 0
  12. local y = 0
  13. local barLength = 82
  14.  
  15. --Funktionen
  16. function round(num, idp)
  17.   local mult = 10^(idp or 0)
  18.   return math.floor(num * mult + 0.5) / mult
  19. end
  20.  
  21. function drawLine(x, y, length, color, colorBG)
  22.   term.setBackgroundColor(colorBG)
  23.   for i = 1, barLength, 1 do
  24.     term.write(" ")
  25.   end
  26.   term.setCursorPos(1, y)
  27.   term.setBackgroundColor(color)
  28.   for i = 1, barLength/100*round(length,0), 1 do
  29.     term.write(" ")
  30.   end
  31.   term.setBackgroundColor(colors.white)
  32. end
  33.  
  34. --Init
  35. monitor.clear()
  36. monitor.setTextScale(1)
  37. monitor.setTextColor(colors.black)
  38. monitor.setBackgroundColor(colors.white)
  39. term.redirect(monitor)
  40. maxEnergy = energyStorage.getMaxEnergyStored()
  41.  
  42. --Programm
  43. if reactor.getConnected() == true then
  44.   while true do
  45.     zeile = 1
  46.     sleep(0.5)
  47.     monitor.clear()
  48.     monitor.setCursorPos(1,zeile)
  49.     zeile = zeile + 1
  50.     if reactor.getActive() then
  51.       monitor.setTextColor(colors.black)
  52.       monitor.write("Reaktor aktiv     RF/Tick: ")
  53.       monitor.write(round(reactor.getEnergyProducedLastTick(),0))
  54.       monitor.setCursorPos(1,zeile)  
  55.       drawLine(1, zeile, (round(reactor.getEnergyProducedLastTick() / maxEnergyOutput * 100,0)), colors.red, colors.blue)
  56.     else
  57.       monitor.setTextColor(colors.red)
  58.       monitor.write("Reaktor inaktiv")
  59.     end
  60.     zeile = zeile + 1  
  61.     monitor.setCursorPos(1,zeile)
  62.     monitor.setTextColor(colors.black)
  63.    
  64.     monitor.setCursorPos(1,zeile)
  65.     zeile = zeile + 1
  66.    
  67.     if (energystored / maxEnergy * 10) > 9 then
  68.       reactor.setActive(false)
  69.     end
  70.    
  71.     if (energystored / maxEnergy * 10) < 2 then
  72.       reactor.setActive(true)
  73.     end
  74.    
  75.     if redstone.getInput("bottom") then
  76.       reactor.setAllControlRodLevels(100)
  77.       reactor.setActive(false)
  78.     end
  79.    
  80.     monitor.setCursorPos(1, zeile)
  81.     monitor.write("Energiespeicher:")
  82.     zeile = zeile + 1
  83.     monitor.setCursorPos(1, zeile)
  84.     monitor.write(round(energyStorage.getEnergyStored() / 1000000, 2))
  85.     monitor.write(" MIO | ")
  86.     monitor.write(round(energystored / maxEnergy * 100,2))
  87.     monitor.write("%")
  88.     zeile = zeile + 1
  89.     monitor.setCursorPos(1, zeile)
  90.  
  91.     if (energystored / maxEnergy * 10) > 7 then
  92.           drawLine(1, zeile, (energystored / maxEnergy * 100), colors.green, colors.blue)
  93.     end
  94.    
  95.     if ((energystored / maxEnergy * 10) > 3) and ((energystored / maxEnergy * 10) < 7) then
  96.           drawLine(1, zeile, (energystored / maxEnergy * 100), colors.yellow, colors.blue)
  97.     end
  98.  
  99.     if (energystored / maxEnergy * 10) < 3 then
  100.           drawLine(1, zeile, (energystored / maxEnergy * 100), colors.red, colors.blue)
  101.     end
  102.     energystored = energyStorage.getEnergyStored()
  103.     zeile = zeile + 2
  104.     monitor.setCursorPos(1, zeile)
  105.     monitor.write("Gruen:Fuellstand (" .. round((reactor.getFuelAmount() / reactor.getFuelAmountMax() * 100),2) .."%) | Rot:Abfall (" .. round((reactor.getWasteAmount() / reactor.getFuelAmountMax() * 100),2) .."%)")
  106.     zeile = zeile + 1
  107.     monitor.setCursorPos(1, zeile) 
  108.     drawLine(1, zeile, round((reactor.getFuelAmount() / reactor.getFuelAmountMax() * 100),2), colors.green, colors.blue)
  109.     zeile = zeile + 1
  110.     monitor.setCursorPos(1, zeile)
  111.     drawLine(1, zeile, round((reactor.getWasteAmount() / reactor.getFuelAmountMax() * 100),2), colors.red, colors.blue)
  112.    
  113.   end
  114. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement