Advertisement
mrkarp

ReactorControl With Bars

Nov 29th, 2014
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.34 KB | None | 0 0
  1. print('ReactorControl Engaged. View Monitor.')
  2.  
  3.  
  4. -- Vars
  5. emptyflag = 0
  6. offlineflag = 0
  7. flashflag = 0
  8. local reactorName = ""
  9. local monitorWrap = ""
  10.  
  11. write("Name of reactor, e.g. BigReactors-Reactor_x")
  12. reactorName = io.read()
  13. write("Where is monitor located?")
  14. monitorWrap = io.read()
  15.  
  16. -- Peripherals
  17. reactor = peripheral.wrap(reactorName )
  18. monitor = peripheral.wrap(monitorWrap )
  19.  
  20. -- Monitor Settings
  21. monitor.setTextScale(1)
  22. monitor.setBackgroundColor(colors.black)
  23.  
  24. if fs.exists("ProgressBar") then
  25. write("You have the API")
  26. else
  27. write("Downloading API")
  28. shell.run("pastebin get Rzxj0KKM ProgressBar")
  29. end
  30.  
  31. --Load ProgressBar API
  32. os.loadAPI('ProgressBar')
  33. ProgressBar.SetPeripheral(monitorWrap )
  34.  
  35.  
  36. -- Main Function
  37. while true do
  38. monitor.clear()
  39. monitor.setCursorPos(1,1)
  40. monitor.setTextColor(colors.white)
  41. monitor.write('Fuel Level:')
  42. monitor.setCursorPos(1,2)
  43. monitor.setTextColor(colors.yellow)
  44.  
  45. -- Fuel Bar
  46. fuelMax = reactor.getFuelAmountMax()
  47. fuelAmount = reactor.getFuelAmount()
  48. fuelAmountText = math.floor(((reactor.getFuelAmount()/reactor.getFuelAmountMax())*100)+0.5)
  49. ProgressBar.SetTable("Fuel", fuelMax, fuelAmount, 2,17,2)
  50. --ProgressBar.DrawToPeripheral()
  51. monitor.setCursorPos(20, 2)
  52. monitor.setTextColor(colors.yellow)
  53. monitor.write(fuelAmountText..' % Fuel')
  54. --------------------------------------------------
  55.  
  56. monitor.setCursorPos(1,3)
  57.  
  58. -- Waste Bar
  59. monitor.setTextColor(colors.lightBlue)
  60. wasteMax = reactor.getFuelAmountMax()
  61. wasteAmount = reactor.getWasteAmount()
  62. wasteAmountText = math.floor(((reactor.getWasteAmount()/reactor.getFuelAmountMax())*100)+0.5)
  63. ProgressBar.SetTable("Waste", wasteMax, wasteAmount, 2,17,3)
  64. --ProgressBar.DrawToPeripheral()
  65. monitor.setCursorPos(20, 3)
  66. monitor.setTextColor(colors.cyan)
  67. monitor.write(wasteAmountText..' % Waste')
  68. --------------------------------------------------
  69.  
  70. monitor.setCursorPos(1,5)
  71.  
  72. -- Control Rod %
  73. monitor.setTextColor(colors.white)
  74. monitor.write('Control Rod Levels:')
  75. --------------------------------------------------
  76. monitor.setTextColor(colors.green)
  77. monitor.setCursorPos(1,6)
  78. monitor.write('R1: ')
  79. monitor.setCursorPos(20,6)
  80. monitor.write(' '..(100-(reactor.getControlRodLevel(0)))..'% Depth')
  81. r1 = (100-(reactor.getControlRodLevel(0)))
  82. ProgressBar.SetTable("R1", 100, r1, 4,15,6)
  83. --ProgressBar.DrawToPeripheral()
  84. --------------------------------------------------
  85. monitor.setCursorPos(1,7)
  86. monitor.write('R2: ')
  87. monitor.setCursorPos(20,7)
  88. monitor.write(' '..(100-(reactor.getControlRodLevel(1)))..'% Depth')
  89. r2 = (100-(reactor.getControlRodLevel(1)))
  90. ProgressBar.SetTable("R2", 100, r2, 4,15,7)
  91. --ProgressBar.DrawToPeripheral()
  92. --------------------------------------------------
  93. monitor.setCursorPos(1,8)
  94. monitor.write('R3: ')
  95. monitor.setCursorPos(20,8)
  96. monitor.write(' '..(100-(reactor.getControlRodLevel(2)))..'% Depth')
  97. r3 = (100-(reactor.getControlRodLevel(2)))
  98. ProgressBar.SetTable("R3", 100, r3, 4,15,8)
  99. --ProgressBar.DrawToPeripheral()
  100. --------------------------------------------------
  101. monitor.setCursorPos(1,9)
  102. monitor.write('R4: ')
  103. monitor.setCursorPos(20,9)
  104. monitor.write(' '..(100-(reactor.getControlRodLevel(3)))..'% Depth')
  105. r4 = (100-(reactor.getControlRodLevel(3)))
  106. ProgressBar.SetTable("R4", 100, r4, 4,15,9)
  107. --ProgressBar.DrawToPeripheral()
  108. --------------------------------------------------
  109.  
  110. monitor.setCursorPos(1,11)
  111.  
  112. -- Temps and Heat
  113. monitor.setTextColor(colors.white)
  114. monitor.write('Temperature:')
  115. monitor.setCursorPos(1,12)
  116. monitor.setTextColor(colors.lightGray)
  117. monitor.write('Casing: ')
  118. if reactor.getCasingTemperature()>=650 then
  119. monitor.setTextColor(colors.purple)
  120. else if reactor.getCasingTemperature()>=950 then
  121. monitor.setTextColor(colors.red)
  122. else
  123. monitor.setTextColor(colors.green)
  124. end
  125. end
  126. casingTemp = math.floor(reactor.getCasingTemperature()*100)+0.5
  127. ProgressBar.SetTable("CasingTemp", 10000, casingTemp, 9,20,12)
  128. --ProgressBar.DrawToPeripheral()
  129. monitor.setCursorPos(26,12)
  130. monitor.write(casingTemp..' C')
  131. --------------------------------------------------
  132. monitor.setCursorPos(1,13)
  133. monitor.setTextColor(colors.yellow)
  134. monitor.write('Fuel: ')
  135. if reactor.getFuelTemperature()>=650 then
  136. monitor.setTextColor(colors.purple)
  137. else if reactor.getFuelTemperature()>=950 then
  138. monitor.setTextColor(colors.red)
  139. else
  140. monitor.setTextColor(colors.green)
  141. end
  142. end
  143. --monitor.write(reactor.getFuelTemperature()..'C')
  144. fuelTemp = reactor.getFuelTemperature()
  145. ProgressBar.SetTable("FuelTemp", 10000, fuelTemp, 9,20,13)
  146. --ProgressBar.DrawToPeripheral()
  147. monitor.setCursorPos(26,12)
  148. monitor.write(fuelTemp..' C')
  149. --------------------------------------------------
  150.  
  151. monitor.setCursorPos(1,15)
  152.  
  153. -- Flux Information
  154. monitor.setTextColor(colors.white)
  155. -- Title
  156. monitor.write('Flux:')
  157. monitor.setCursorPos(1,16)
  158. monitor.setTextColor(colors.green)
  159. -- RF Stored
  160. rfStored = reactor.getEnergyStored()
  161. rfStoredFormat = rfStored / 1000
  162. if reactor.getEnergyProducedLastTick()>=500 and reactor.getEnergyProducedLastTick()<2000 then
  163. monitor.setTextColor(colors.orange)
  164. end
  165.  
  166. if reactor.getEnergyProducedLastTick()>=2000 then
  167. monitor.setTextColor(colors.red)
  168. end
  169. ProgressBar.SetTable("RFStored", 10000000, rfStored, 2,20,16)
  170. --ProgressBar.DrawToPeripheral()
  171. monitor.setCursorPos(15,16)
  172. monitor.write(rfStoredFormat..'K Stored')
  173. --------------------------------------------------
  174. -- RF Per Tick
  175. monitor.setCursorPos(1,17)
  176. monitor.setTextColor(colors.orange)
  177. rfPerTick = reactor.getEnergyProducedLastTick()
  178. ProgressBar.SetTable("RFPerTick", 10000000, rfPerTick, 2,20,17)
  179. monitor.setCursorPos(22,17)
  180. monitor.write((math.floor(reactor.getEnergyProducedLastTick()+0.5))..' RF/t')
  181. --------------------------------------------------
  182. ProgressBar.DrawToPeripheral()
  183. monitor.setCursorPos(1,18)
  184.  
  185. if flashflag==0 then
  186. flashflag=1
  187. if offlineflag==1 then
  188. monitor.setCursorPos(1,19)
  189. monitor.setTextColor(colors.lightGray)
  190. monitor.write('OFFLINE - Manual Override')
  191. end
  192. if emptyflag==1 then
  193. monitor.setCursorPos(1,19)
  194. monitor.setTextColor(colors.pink)
  195. monitor.write('OFFLINE - Fuel Exhausted')
  196. end
  197. if emptyflag==0 and offlineflag==0 and reactor.getControlRodLevel(0)>75 then
  198. monitor.setCursorPos(1,19)
  199. monitor.setTextColor(colors.yellow)
  200. monitor.write('ONLINE - Low Power Mode')
  201. end
  202. if emptyflag==0 and offlineflag==0 and reactor.getControlRodLevel(0)<=75 then
  203. monitor.setCursorPos(1,19)
  204. monitor.setTextColor(colors.orange)
  205. monitor.write('ONLINE - High Power Mode')
  206. end
  207. else
  208. flashflag=0
  209. monitor.setCursorPos(1,19)
  210. monitor.clearLine()
  211. end
  212.  
  213. if reactor.getEnergyStored()<=10000000 and reactor.getEnergyStored()>100 then
  214. reactor.setAllControlRodLevels(0+(math.floor(reactor.getEnergyStored()/100000)))
  215. else
  216. reactor.setAllControlRodLevels(0)
  217. end
  218.  
  219. if reactor.getFuelAmount()<=100 and offlineflag==0 then
  220. reactor.setAllControlRodLevels(100)
  221. reactor.setActive(false)
  222. emptyflag=1
  223. else
  224. emptyflag=0
  225. end
  226.  
  227. if rs.getInput('bottom')==false and emptyflag==0 then
  228. reactor.setActive(true)
  229. offlineflag=0
  230. end
  231.  
  232. if rs.getInput('bottom')==true and emptyflag==0 then
  233. reactor.setActive(false)
  234. reactor.setAllControlRodLevels(100)
  235. offlineflag=1
  236. end
  237. sleep(1)
  238. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement