Advertisement
Freeazzy

[Draconic Evolution] Draconic reactor control

Aug 13th, 2019
574
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 7.29 KB | None | 0 0
  1. --конфигурация (можно изменять)
  2.  
  3. local red_edge = 7895 -- после этой температуры, термометр станет красного цвета
  4. local green_edge = 7780 -- до этой температуры, термометр будет зеленого цвета
  5. -- все, что между этими цифрами, будет голубого цвета
  6. --____________________________________________________________________________
  7. --ниже лучше ничего не менять
  8.  
  9.  
  10. local cpt = require("component")
  11. local io = require("io")
  12. local term = require("term")
  13. local event = require("event")
  14. local fs = require("filesystem")
  15. --local color = require("colors")
  16. local gpu = cpt.gpu
  17. local fileName = "/home/gtadrs15.txt"
  18. local fileWrite
  19. local fileRead
  20. local crash
  21.  
  22. local color = { }
  23. color["red"]   = 0xFF0000
  24. color["green"] = 0x00FF00
  25. color["yellow"] = 0xFFFF00
  26. color["goodtmp"] = 0x00FFFF
  27.  
  28. local rForeground = gpu.getForeground()
  29. gpu.setForeground(0x00F000)
  30. --fromgtadrs15 = true
  31. if not cpt.isAvailable("draconic_reactor") then
  32. print ("подключите адаптер к стабилизатору реактора")
  33. term.read()
  34. return
  35. end
  36. local react = cpt.draconic_reactor
  37.  
  38. printf = function (s,...)
  39. return io.write(s:format(...))
  40. end
  41.  function colorprintf(c,s,...)
  42.  local oldcolor = gpu.getForeground()
  43.   gpu.setForeground(c)
  44.   printf (s,...)
  45.   gpu.setForeground(oldcolor)
  46.   end
  47. fileWrite=io.open(fileName,"a")
  48. fileWrite:close()
  49.  
  50. if upadr ~= nil or downadr ~= nil then
  51.  
  52. if cpt.get(downadr) == nil or cpt.get(upadr)==nil then
  53. print ("упс, кто-то сломал ваши адаптеры и адреса изменились")
  54. upadr=nil
  55. downadr = nil
  56. crash = true
  57. term.read()
  58. return
  59. end
  60. else fromgtadrs15 = true
  61. end
  62. if ( fromgtadrs15 == nil or fromgtadrs15 == true) and (crash==false or crash == nil) then
  63. fileRead = io.open(fileName,"r")
  64. upadr,downadr =fileRead:read("*l","*l")
  65. fileRead:close()
  66. end
  67.  
  68.  
  69. while upadr == nil  or downadr == nil do
  70. local i = 0
  71. for address in cpt.list("flux_gate") do
  72. i=i+1
  73. end
  74. if i < 2  then
  75. print ("подключите адаптеры к флюкс-гейтам")
  76. term.read()
  77. return
  78.  
  79. end
  80. print ("адреса подключенных флюкс-гейтов\n")
  81.  
  82. for address in cpt.list("flux_gate") do
  83. print (address,"\n")
  84. end
  85.  
  86. while upadr == nil do
  87. print ('введите первые символы адресса гейта, отвечающего за поток')
  88. upadr = cpt.get(io.read(),"flux_gate")
  89. if upadr == nil then print ("Неверный адресс *incorrect address\n")
  90.  
  91. end
  92. end
  93. while downadr == nil or downadr == upadr do
  94. print ("Введите первые символы адреса гейта отвечающего за сдерживание")
  95. downadr = cpt.get(io.read(),"flux_gate")
  96. if downadr == nil or downadr == upadr then print ("Неверный адресс\n")
  97. end
  98. end
  99. local conf = true
  100. while conf do
  101.  
  102. printf ("\nАдресс поточного гейта:       %s \n",upadr)
  103. printf ("Адресс сдерживающего гейта:   %s \n",downadr)
  104. print ("\nвсе верно\n\n1-Да, продолжить\n2-Нет, изменить")
  105. local chk = io.read()
  106. if chk  == "1" then conf = false  
  107. elseif chk == "2" then
  108. upadr = nil
  109. downadr = nil
  110. term.clear()
  111. conf = false
  112. else
  113. print ("\nне понял (введите 1 или 2) * i don't understald (type 1 or 2)\n")
  114.  
  115. end
  116.  
  117. end
  118.  
  119. crash = false
  120. fromgtadrs15 = true
  121. end
  122. fileWrite=io.open(fileName,"w")
  123. fileWrite:write(upadr.."\n"..downadr.."\n")
  124. fileWrite:close()
  125.  
  126. --cpt.setPrimary("flux_gate",upadr)
  127. local upgate = cpt.proxy(cpt.get(tostring(upadr)))
  128. local downgate = cpt.proxy(cpt.get(tostring(downadr)))
  129.  
  130.  
  131. function keydown(eventname,keyboardaddress,char,code,playername)
  132. end
  133.  
  134. term.clear()
  135.  
  136. colorprintf(color["red"],"Нажмите ENTER, чтобы продолжить")
  137. term.read()
  138.  
  139. prog = true
  140. dynamic = false
  141.  
  142.  
  143.  
  144. while(prog==true) do
  145.  
  146. if cpt.get(upadr) ~= nil and cpt.get(downadr) ~= nil and cpt.isAvailable("draconic_reactor") then
  147. tst1 = react.getReactorInfo()
  148. if cpt.isAvailable("draconic_rf_storage") then
  149. local core = cpt.draconic_rf_storage
  150.  
  151.  
  152. local coreT = core.getEnergyStored()/10^12
  153. local coreB = core.getEnergyStored()/10^9
  154. local coreM = core.getEnergyStored()/10^6
  155. local coreK = core.getEnergyStored()/10^3
  156. if core.getEnergyStored() > 10^12 then
  157. printf ("накоплено в ядре: %0.3f T\n\n",coreT)
  158. elseif core.getEnergyStored() > 10^9 then
  159. printf ("накоплено в ядре: %0.3f B\n\n",coreB)
  160. elseif core.getEnergyStored() > 10^6 then
  161. printf ("накоплено в ядре: %0.3f M\n\n",coreM)
  162. elseif core.getEnergyStored() > 10^3 then
  163. printf ("накоплено в ядре: %0.3f K\n\n",coreK)
  164. else
  165. printf ("накоплено в ядре: %d K\n\n",core.getEnergyStored())
  166. end
  167. end
  168. if tst1.temperature<green_edge then
  169. printf ("температура:_______   %0.2f\n",tst1.temperature)
  170. elseif tst1.temperature>=green_edge and tst1.temperature<red_edge then
  171. printf ("температура:_______   ") colorprintf(color.goodtmp,"%0.2f\n",tst1.temperature)
  172. else
  173. printf ("температура:_______   ") colorprintf(color.red,"%0.2f\n",tst1.temperature)
  174. end
  175. printf ("вырабатывает:______   %d \n",tst1.generationRate)
  176.  
  177. printf ("поток:_____________   %d \n",upgate.getFlow())
  178. --printf ("верхний поток (upper flow):_____   %d \n",upgate.getSignalLowFlow())
  179. printf ("итоговая мосч:_____   ") colorprintf(color.yellow,"%d \n",tst1.generationRate - downgate.getFlow())
  180. printf ("поглащает:_________   %d \n",tst1.fieldDrainRate)
  181. printf ("\nмощность поля:_____   %d / %d (%0.2f %%) \n", tst1.fieldStrength,tst1.maxFieldStrength,(tst1.fieldStrength/tst1.maxFieldStrength)*100)
  182. printf ("насыщенность:______   %d / %d (%0.2f %%) \n",tst1.energySaturation,tst1.maxEnergySaturation,(tst1.energySaturation/tst1.maxEnergySaturation)*100)
  183. printf ("топливо:___________   %d / %d (%0.2f %%) \n",tst1.fuelConversion,tst1.maxFuelConversion,(tst1.fuelConversion/tst1.maxFuelConversion)*100)
  184. printf ("расход топлива:______ %d",tst1.fuelConversionRate)
  185. if (tst1.fuelConversion/tst1.maxFuelConversion)*100 > 78 then
  186. colorprintf (colr.red,"\nКРИТИЧЕСКИЙ УРОВЕНЬ ТОПЛИВА, ПОДГОТОВЬТЕ РЕАКТОР К ВЫКЛЮЧЕНИЮ\n")
  187. end
  188. print ("\n(y) измененить потрк, (g) выход, (r) изменить адреса гейдов \n")
  189. event.listen ("key_down",keydown)
  190. -- if dynamic == false then event.pull(keydown) end
  191. function keydown(eventname,keyboardaddress,char,code,playername)
  192.  
  193. if code == 21 then do
  194. x=term.read()
  195. hflow = upgate.getSignalLowFlow()
  196. sum = hflow+x
  197. hflow=upgate.setSignalLowFlow(sum)
  198. end
  199.  
  200.  --elseif code == 32 then dynamic = not dynamic
  201.  
  202.  elseif code == 19 then do
  203.  upadr = nil
  204.  downadr = nil
  205.  prog = false
  206.  fromgtadrs15 = false
  207.  fs.remove(fileName)
  208.  event.ignore("key_down",keydown)
  209.  end
  210.  
  211. elseif code == 34 then do prog = false
  212. event.ignore("key_down",keydown)
  213. end
  214. end
  215.  
  216. end
  217.  os.sleep(0.5)
  218. term.clear()
  219.  else print ("Не ломайте адаптеры")
  220.  event.ignore("key_down",keydown)
  221.  term.read()
  222.  return
  223.  end
  224. end
  225. gpu.setForeground(rForeground)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement