Advertisement
Guest User

Untitled

a guest
Mar 2nd, 2015
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 16.20 KB | None | 0 0
  1. os.loadAPI("button")
  2. if (not fs.exists("r")) then shell.run("rom/programs/http/pastebin", "get", "gUabrMaH", "r") end
  3. if (not fs.exists("t")) then shell.run("rom/programs/http/pastebin", "get", "uGsPbHB5", "t") end
  4. if (not fs.exists("rAPI")) then shell.run("rom/programs/http/pastebin", "get", "wqWsCHUH", "rAPI") end
  5. os.loadAPI("r")
  6. os.loadAPI("t")
  7.  
  8. --[[
  9. print("test")
  10. p = peripheral.find("tile_blockcapacitorbank_name")
  11. r = peripheral.find("BigReactors-Reactor")
  12. t = peripheral.find("BigReactors-Turbine")
  13. --]]
  14. m = peripheral.find("monitor")
  15. wm = peripheral.find("modem")
  16.  
  17. r.init(wm,66,6)
  18. t.init(wm,666,6)
  19.  
  20. local steamReactor = r.isActivelyCooled()
  21.  
  22. local menuType = "Reactor"
  23.  
  24. local numCapacitors = 0
  25. local turnOnAt = 50
  26. local turnOffAt = 90
  27.  
  28. local targetSpeed = 1840
  29.  
  30. local energy = 0
  31. local energyStored = 0
  32. local energyMax = 0
  33. local energyStoredPercent = 0
  34. local timerCode
  35. local mode = "Automatic"
  36. local RFProduction = 0
  37. local fuelUse = 0
  38. local coreTemp = 0
  39. local reactorOnline = false
  40. local rodLevel = 0
  41.  
  42. local turbineOnline = false
  43. local turbineRotorSpeed = 0
  44. local turbineRFGen = 0
  45. local turbineFluidRate = 0
  46. local turbineInductor = false
  47.  
  48. local OptFuelRodLevel = 0
  49.  
  50. function autoMenu()
  51.    m.setTextScale(1)
  52.    button.clearTable()
  53.    button.setTable("Automatic", autoMode, "", 3, 13, 6, 6)
  54.    button.setTable("Manual", manualMode, "", 15, 25, 6, 6)
  55.    
  56.    if steamReactor then
  57.       button.setTable("Reactor", reactorMenu, "", 5, 18, 19, 19)
  58.       button.setTable("Turbine", turbineMenu, "", 22, 35, 19, 19)
  59.    end
  60.    button.screen()
  61.    checkMode()
  62.    menuMode()
  63. end
  64.  
  65. function manualMenu()
  66.    m.setTextScale(1)
  67.    button.clearTable()
  68.    button.setTable("Automatic", autoMode, "", 3, 13, 6, 6)
  69.    button.setTable("Manual", manualMode, "", 15, 25, 6, 6)
  70.    button.setTable("Online", online, "", 3, 13, 8, 8)
  71.    button.setTable("Offline", offline, "", 15, 25, 8, 8)
  72.    button.setTable("0", setRods, 0, 11,14, 10, 10)
  73.    button.setTable("10", setRods, 10, 5,8, 12, 12)
  74.    button.setTable("20", setRods, 20, 11,14, 12, 12)
  75.    button.setTable("30", setRods, 30, 17,20, 12, 12)
  76.    button.setTable("40", setRods, 40, 5,8, 14, 14)
  77.    button.setTable("50", setRods, 50, 11,14, 14, 14)
  78.    button.setTable("60", setRods, 60, 17,20, 14, 14)
  79.    button.setTable("70", setRods, 70, 5,8, 16, 16)
  80.    button.setTable("80", setRods, 80, 11,14, 16, 16)
  81.    button.setTable("90", setRods, 90, 17,20, 16, 16)
  82.    button.setTable("+", rodPlus, "", 23, 25, 12, 12)
  83.    button.setTable("-", rodMinus, "", 23, 25, 16, 16)
  84.  
  85.    if steamReactor then
  86.       button.setTable("Reactor", reactorMenu, "", 5, 18, 19, 19)
  87.       button.setTable("Turbine", turbineMenu, "", 22, 35, 19, 19)
  88.      
  89.    end
  90.    button.screen()
  91.    checkMode()
  92.    reactorOnOff()
  93.    menuMode()
  94. end
  95.  
  96. function turbineAutoMenu()
  97.    m.setTextScale(1)
  98.    button.clearTable()
  99.    button.setTable("Automatic", autoMode, "", 3, 13, 6, 6)
  100.    button.setTable("Manual", manualMode, "", 15, 25, 6, 6)
  101.    button.setTable("Reactor", reactorMenu, "", 5, 18, 19, 19)
  102.    button.setTable("Turbine", turbineMenu, "", 22, 35, 19, 19)
  103.    button.screen()
  104.    checkMode()
  105.    menuMode()
  106. end
  107.  
  108. function turbineManualMenu()
  109.    m.setTextScale(1)
  110.    button.clearTable()
  111.    button.setTable("Automatic", autoMode, "", 3, 13, 6, 6)
  112.    button.setTable("Manual", manualMode, "", 15, 25, 6, 6)
  113.    button.setTable("Reactor", reactorMenu, "", 5, 18, 19, 19)
  114.    button.setTable("Turbine", turbineMenu, "", 22, 35, 19, 19)
  115.    button.setTable("Online", setTurbineOnline, "", 3, 13, 8, 8)
  116.    button.setTable("Offline", setTurbineOffline, "", 15, 25, 8, 8)
  117.    button.setTable("Coils On", coilsOn, "", 3, 13, 10, 10)
  118.    button.setTable("Coils Off", coilsOff, "", 15, 25, 10, 10)
  119.    button.screen()
  120.    checkMode()
  121.    turbineOnOff()
  122.    coilsOnOff()
  123.    menuMode()
  124. end
  125.  
  126. function reactorMenu()
  127.    menuType = "Reactor"
  128.    displayScreen()
  129. end
  130.  
  131. function turbineMenu()
  132.    menuType = "Turbine"
  133.    displayScreen()
  134. end
  135.  
  136. function online()
  137.    r.setActive(true)
  138.    --button.flash("Online")
  139. end
  140.  
  141. function offline()
  142.    r.setActive(false)
  143.    --button.flash("Offline")
  144. end
  145.  
  146. function setTurbineOnline()
  147.    t.setActive(true)
  148.    --button.flash("Online")
  149. end
  150.  
  151. function setTurbineOffline()
  152.    t.setActive(false)
  153.    --button.flash("Offline")
  154. end
  155.  
  156. function reactorOnOff()
  157.    button.setButton("Online", r.getActive())
  158.    button.setButton("Offline", not r.getActive())
  159. end
  160.  
  161. function turbineOnOff()
  162.    button.setButton("Online", t.getActive())
  163.    button.setButton("Offline", not t.getActive())
  164. end
  165.  
  166. function coilsOnOff()
  167.    button.setButton("Coils On", t.getInductorEngaged())
  168.    button.setButton("Coils Off", not t.getInductorEngaged())
  169. end
  170.  
  171. function coilsOn()
  172.    t.setInductorEngaged(true)
  173. end
  174.  
  175. function coilsOff()
  176.    t.setInductorEngaged(false)
  177. end
  178.  
  179. function menuMode()
  180.    if steamReactor then
  181.    if menuType == "Reactor" then
  182.      button.setButton("Reactor", true)
  183.      button.setButton("Turbine", false)
  184.    else
  185.      button.setButton("Reactor", false)
  186.      button.setButton("Turbine", true)
  187.    end
  188.    end
  189. end
  190.  
  191. function setRods(setLevel)
  192.    print("Setting Rod Level: "..setLevel)
  193.    button.flash(tostring(setLevel))
  194.    r.setAllControlRodLevels(setLevel)
  195.    fuelRodLevel()
  196. end
  197.  
  198. function rodPlus()
  199.    button.flash("+")
  200.    r.setAllControlRodLevels(rodLevel+1)
  201.    fuelRodLevel()
  202. end
  203.  
  204. function rodMinus()
  205.    button.flash("-")
  206.    r.setAllControlRodLevels(rodLevel-1)
  207.    fuelRodLevel()
  208. end
  209.  
  210. function checkMode()
  211.    button.toggleButton(mode)
  212. end
  213.    
  214. function manualMode()
  215.    mode = "Manual"
  216.    manualMenu()
  217. end
  218.  
  219. function autoMode()
  220.    mode = "Automatic"
  221.    displayScreen()
  222. end
  223.  
  224. function comma_value(amount)
  225.    local formatted = amount
  226.    local swap = false
  227.    if formatted < 0 then
  228.       formatted = formatted*-1
  229.       swap = true
  230.    end
  231.    while true do
  232.       formatted, k = string.gsub(formatted, "^(%d+)(%d%d%d)", '%1,%2')
  233.       if k == 0 then
  234.          break
  235.       end
  236.    end
  237.    if swap then
  238.      formatted = "-"..formatted
  239.    end
  240.    return formatted
  241. end
  242.  
  243. function displayEn()
  244.    m.clear()
  245.    m.setCursorPos(1,1)
  246.    --print("Energy Use: "..energy)
  247.    m.write("Energy Use: ")
  248.    if energy < 0 then
  249.       m.setTextColor(colors.red)
  250.    else
  251.       m.setTextColor(colors.green)
  252.    end
  253.    m.write(comma_value(math.floor(energy)).. "RF/t")
  254.    m.setTextColor(colors.white)
  255.    m.setCursorPos(1,2)
  256.    m.write("Energy Stored: "..energyStoredPercent.."%")
  257.    if menuType == "Reactor" then
  258.       m.setCursorPos(1,3)
  259.       m.write("Reactor is: ")
  260.       if reactorOnline then
  261.        m.setTextColor(colors.green)
  262.        m.write("Online")
  263.       else
  264.        m.setTextColor(colors.red)
  265.        m.write("Offline")
  266.       end
  267.       m.setTextColor(colors.white)
  268.       m.setCursorPos(22,1)
  269.       if steamReactor then
  270.          m.write("Steam: ")
  271.          m.setTextColor(colors.green)
  272.          m.write(comma_value(math.floor(RFProduction)).."MB/t")
  273.       else
  274.          m.write("RF Gen: ")
  275.          m.setTextColor(colors.green)
  276.          m.write(comma_value(math.floor(RFProduction)).."RF/t")
  277.       end
  278.       m.setTextColor(colors.white)
  279.       m.setCursorPos(22,2)
  280.       m.write("Core Temp: "..math.floor(coreTemp).."c")
  281.       m.setCursorPos(22,3)
  282.       m.write("Fuel Use: "..fuelUse.."MB/t")  
  283.   else
  284.       m.setCursorPos(1,3)
  285.       m.write("Turbine is: ")
  286.       if turbineOnline then
  287.        m.setTextColor(colors.green)
  288.        m.write("Online")
  289.       else
  290.        m.setTextColor(colors.red)
  291.        m.write("Offline")
  292.       end
  293.       m.setCursorPos(1,4)
  294.       m.setTextColor(colors.white)
  295.       m.write("Reactor is: ")
  296.       if reactorOnline then
  297.          m.setTextColor(colors.green)
  298.          m.write("Online")
  299.       else
  300.          m.setTextColor(colors.red)
  301.          m.write("Offline")
  302.       end
  303.       m.setTextColor(colors.white)
  304.       m.setCursorPos(22,1)
  305.       m.write("RFGen: ")
  306.       m.setTextColor(colors.green)
  307.       m.write(comma_value(math.floor(turbineRFGen)).."RF/t")
  308.       m.setTextColor(colors.white)
  309.       m.setCursorPos(22,2)
  310.       m.write("Rotor: "..comma_value(math.floor(turbineRotorSpeed)).." RPM")
  311.       m.setCursorPos(22,3)
  312.       m.write("Steam: "..comma_value(turbineFluidRate).."MB/t")  
  313.   end
  314.  
  315. end
  316.  
  317. function checkEn()
  318.    local tempEnergy = 0
  319.    --energyStored = p.getEnergyStored()
  320.    --energyMax = p.getMaxEnergyStored()
  321.    --energyStoredPercent = math.floor((energyStored/energyMax)*100)
  322.    RFProduction = r.getEnergyProducedLastTick()
  323.    print("RFProduction: "..RFProduction)
  324.    fuelUse = r.getFuelConsumedLastTick()
  325.    fuelUse = math.floor(fuelUse*100)
  326.    fuelUse = fuelUse/100
  327.    coreTemp = r.getFuelTemperature()
  328.    reactorOnline = r.getActive()
  329.    --tempEnergy = p.getEnergyStored()
  330.    sleep(0.1)
  331.    --energy = (p.getEnergyStored()-tempEnergy)/2
  332.    --energy = energy*numCapacitors
  333.    if steamReactor then
  334.      turbineOnline = t.getActive()
  335.      turbineRotorSpeed = t.getRotorSpeed()
  336.      turbineRFGen = t.getEnergyProducedLastTick()
  337.      turbineFluidRate = t.getFluidFlowRate()
  338.      turbineFluidRateMax = t.getFluidFlowRateMax()
  339.    end
  340. end
  341.  
  342. function fuelRodLevel()
  343.    rodLevel = r.getControlRodLevel(0)
  344.    --print(rodLevel)
  345.    m.setCursorPos(30,5)
  346.    m.write(tostring(rodLevel).."%")
  347.    m.setBackgroundColor(colors.white)
  348.    m.setCursorPos(28,6)
  349.    m.write("       ")
  350.    for i = 1,10 do
  351.       m.setCursorPos(28,i+6)
  352.       m.setBackgroundColor(colors.white)
  353.       m.write(" ")
  354.       m.setBackgroundColor(colors.yellow)
  355.       m.write(" ")
  356.       if rodLevel/10 >= i then
  357.          m.setBackgroundColor(colors.red)
  358.       else
  359.          m.setBackgroundColor(colors.yellow)
  360.       end
  361.       m.write("   ")
  362.       m.setBackgroundColor(colors.yellow)
  363.       m.write(" ")
  364.       m.setBackgroundColor(colors.white)
  365.       m.write(" ")
  366.    end
  367.    m.setCursorPos(28,17)
  368.    m.write("       ")
  369.    m.setBackgroundColor(colors.black)
  370. end
  371.  
  372. function turbineInductorDisplay()
  373.    turbineInductor = t.getInductorEngaged()
  374.    m.setCursorPos(30,5)
  375.    if turbineInductor then
  376.       m.write("On")
  377.    else
  378.       m.write("Off")
  379.    end
  380.    m.setBackgroundColor(colors.gray)
  381.    m.setCursorPos(28,6)
  382.    m.write("       ")
  383.    for i = 1,7 do
  384.       m.setCursorPos(28,i+6)
  385.       m.setBackgroundColor(colors.gray)
  386.       m.write(" ")
  387.       m.setBackgroundColor(colors.lightGray)
  388.       m.write(" ")
  389.       if i % 2 == 0 then
  390.          m.setBackgroundColor(colors.gray)
  391.       end
  392.       m.write(" ")
  393.       m.setBackgroundColor(colors.gray)
  394.       m.write(" ")
  395.       if i % 2 ~= 0 then
  396.          m.setBackgroundColor(colors.lightGray)
  397.       end
  398.       m.write(" ")
  399.       m.setBackgroundColor(colors.lightGray)
  400.       m.write(" ")
  401.       m.setBackgroundColor(colors.gray)
  402.       m.write(" ")
  403.    end
  404.    for i = 8,10 do
  405.    m.setCursorPos(28,i+6)
  406.       m.setBackgroundColor(colors.gray)
  407.       m.write(" ")
  408.       m.setBackgroundColor(colors.lightGray)
  409.       m.write(" ")
  410.       if turbineInductor then
  411.          m.setBackgroundColor(colors.red)
  412.       else
  413.          m.setBackgroundColor(colors.blue)
  414.       end
  415.       m.write(" ")
  416.       m.setBackgroundColor(colors.gray)
  417.       m.write(" ")
  418.       if turbineInductor then
  419.          m.setBackgroundColor(colors.red)
  420.       else
  421.          m.setBackgroundColor(colors.blue)
  422.       end
  423.       m.write(" ")
  424.       m.setBackgroundColor(colors.lightGray)
  425.       m.write(" ")
  426.       m.setBackgroundColor(colors.gray)
  427.       m.write(" ")
  428.    end
  429.    m.setCursorPos(28,17)
  430.    m.write("       ")
  431.    m.setBackgroundColor(colors.black)
  432. end
  433. function getClick()
  434.    local event, side, x, y = os.pullEvent("monitor_touch")
  435.    button.checkxy(x,y)
  436. end
  437.  
  438. function findOptFuelRods()
  439.    m.clear()
  440.    r.setActive(false)
  441.    checkEn()
  442.    displayEn()
  443.    fuelRodLevel()
  444.    while r.getFuelTemperature() > 99 do
  445.       for i= 1,3 do
  446.         checkEn()
  447.         displayEn()
  448.         fuelRodLevel()
  449.         m.setCursorPos(3,6)
  450.         m.write("Finding Optimal Rod Level")
  451.         m.setCursorPos(3,7)
  452.         m.write("Core Temp: "..r.getFuelTemperature())
  453.         m.setCursorPos(3,8)
  454.         m.write("Waiting for 99c")
  455.         sleep(1)
  456.       end
  457.    end
  458.    while r.getHotFluidAmount() > 10000 do
  459.      for i = 1,3 do
  460.         checkEn()
  461.         displayEn()
  462.         fuelRodLevel()
  463.         m.setCursorPos(3,6)
  464.         m.write("Finding Optimal Rod Level, please wait....")
  465.         m.setCursorPos(3,7)
  466.         m.write("Fluid Amount: "..comma_value(r.getHotFluidAmount()).."mb")
  467.         m.setCursorPos(3,8)
  468.         m.write("Waiting for 10,000mb")
  469.         sleep(1)
  470.       end
  471.    end
  472.    r.setAllControlRodLevels(99)
  473.    r.setActive(true)
  474.    
  475.    while r.getFuelTemperature() < 100 do
  476.    for i = 1,5 do
  477.      checkEn()
  478.      displayEn()
  479.      fuelRodLevel()
  480.      m.setCursorPos(3,6)
  481.      m.write("Set all rod levels to 99")
  482.      m.setCursorPos(3,7)
  483.      m.write("Waiting 5 seconds...")
  484.      sleep(1)
  485.    end
  486.    end
  487.    for i = 1,5 do
  488.      checkEn()
  489.      displayEn()
  490.      fuelRodLevel()
  491.      m.setCursorPos(3,6)
  492.      m.write("Set all rod levels to 99")
  493.      m.setCursorPos(3,7)
  494.      m.write("Waiting 5 seconds...")
  495.      sleep(1)
  496.    end
  497.    local tempMB = r.getEnergyProducedLastTick()
  498.    print(tempMB.."MB/t of steam")
  499.    local tempRodLevels = math.floor(turbineFluidRateMax/tempMB)
  500.    print(turbineFluidRateMax.."/"..tempMB.." = "..tempRodLevels)
  501.    tempRodLevels = 100-tempRodLevels+5
  502.    print("Adding 5 to Rod Levels: "..math.floor(tempRodLevels))
  503.    r.setAllControlRodLevels(math.floor(tempRodLevels))
  504.    print("Waiting 10 seconds to confirm...")
  505.    for i = 1,10 do
  506.      checkEn()
  507.      displayEn()
  508.      fuelRodLevel()
  509.      m.setCursorPos(3,6)
  510.      m.write("Estimated Level: "..tempRodLevels)
  511.      m.setCursorPos(3,7)
  512.      m.write("Waiting 10 seconds...")
  513.      sleep(1)
  514.    end
  515.    tempMB = r.getEnergyProducedLastTick()
  516.    while tempMB > turbineFluidRateMax do
  517.       tempRodLevels = tempRodLevels+1
  518.       r.setAllControlRodLevels(math.floor(tempRodLevels))
  519.       print("Setting Rod Levels to: "..tempRodLevels)
  520.       for i = 1,5 do
  521.        checkEn()
  522.        displayEn()
  523.        fuelRodLevel()
  524.        m.setCursorPos(3,6)
  525.        m.write("Getting below ".. turbineFluidRateMax .."mb/t")
  526.        m.setCursorPos(3,7)
  527.        m.write("Currently at: "..tempMB)
  528.        sleep(1)
  529.       end
  530.       tempMB = r.getEnergyProducedLastTick()
  531.    end
  532.    while tempMB < turbineFluidRateMax do
  533.       tempRodLevels = tempRodLevels -1
  534.       r.setAllControlRodLevels(math.floor(tempRodLevels))
  535.       print("Setting Rod Levels to: "..tempRodLevels)
  536.       for i = 1,5 do
  537.        checkEn()
  538.        displayEn()
  539.        fuelRodLevel()
  540.        m.setCursorPos(3,6)
  541.        m.write("Getting Above "..turbineFluidRateMaxmb.."/t")
  542.        m.setCursorPos(3,7)
  543.        m.write("Currently at: "..tempMB)
  544.        sleep(1)
  545.       end
  546.       tempMB = r.getEnergyProducedLastTick()
  547.    end
  548.    OptFuelRodLevel = tempRodLevels
  549. end
  550.    
  551.  
  552. function autoReactor()
  553.    if not steamReactor then
  554.       r.setAllControlRodLevels(0)
  555.       if energyStoredPercent < turnOnAt then
  556.        if not reactorOnline then
  557.          online()
  558.        end
  559.       end
  560.       if energyStoredPercent > turnOffAt then
  561.        if reactorOnline then
  562.          offline()
  563.        end
  564.       end
  565.     else
  566.        r.setAllControlRodLevels(OptFuelRodLevel)
  567.        if energyStoredPercent < turnOnAt then
  568.          --online()
  569.              setTurbineOnline()
  570.              coilsOn()
  571.        end
  572.        if energyStoredPercent > turnOffAt then
  573.          --if turbineRotorSpeed > 1800 then
  574.          --   offline()
  575.          --else
  576.             --   online()
  577.          --end
  578.          setTurbineOnline()
  579.          coilsOff()
  580.        end
  581.     if turbineRotorSpeed > targetSpeed then
  582.        offline()
  583.     else
  584.        online()
  585.     end
  586.     end
  587. end
  588.  
  589. function displayScreen()
  590.  --  repeat
  591.       checkEn()
  592.       displayEn()
  593.       if menuType == "Reactor" then
  594.         fuelRodLevel()
  595.         if mode == "Automatic" then
  596.            autoMenu()
  597.            autoReactor()
  598.         else
  599.            manualMenu()
  600.         end
  601.        
  602.       else
  603.         turbineInductorDisplay()
  604.         if mode == "Automatic" then
  605.            turbineAutoMenu()
  606.            autoReactor()
  607.         else
  608.            turbineManualMenu()
  609.         end
  610.        
  611.       end
  612.      
  613.       timerCode = os.startTimer(1)
  614.       local event, side, x, y
  615.       repeat
  616.         event, side, x, y = os.pullEvent()
  617.         print(event)
  618.         if event == "timer" then
  619.            print(timerCode..":"..side)
  620.            if timerCode ~= side then
  621.               print("Wrong Code")
  622.             else
  623.               print("Right Code")
  624.             end
  625.         end
  626.       until event~= "timer" or timerCode == side
  627.       if event == "monitor_touch" then
  628.             print(x..":"..y)
  629.             button.checkxy(x,y)
  630.         end
  631.  --  until event ~= "timer"
  632. end
  633.  
  634. if steamReactor then
  635.    findOptFuelRods()
  636. end
  637.  
  638. while true do
  639.    displayScreen()
  640. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement