Advertisement
oGoOgO

Untitled

Jun 3rd, 2024
34
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.92 KB | None | 0 0
  1. --Контроллер ядерного комплекса РГ 1 к 50 через впрыскиватель
  2. local com = require("component")
  3. local computer = require("computer")
  4. local image = require("image")
  5. local buffer = require("doubleBuffering")
  6. local shell = require("shell")
  7. local event = require("event")
  8. local consoleLines = {}
  9. local eut = 0
  10. local timer = 60
  11. local Plaz = 250000 -- Начальный порог лазурита
  12. local sts = true
  13. local f = true
  14. local widgets = {
  15. { id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },
  16. { id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },
  17. { id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },
  18. { id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },
  19. { id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },
  20. { id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false },{ id, eu = 0, xt, yt, add, check = false }
  21. }
  22. for i = 1, 11 do
  23. consoleLines[i] = ""
  24. end
  25.  
  26. function round(number) --Функция чтобы вывести число после запятой
  27. if (number - (number % 0.1)) - (number - (number % 1)) < 0.5 then
  28. number = number - (number % 1)
  29. else
  30. number = (number - (number % 1)) + 1
  31. end
  32. return number
  33. end
  34.  
  35. local function knopoch()
  36. x = 6
  37. y = 4
  38. local i = 1
  39. local j = 1
  40. local n = 1
  41. for i = 1, 6 do
  42.  
  43.  
  44. for j = 1, 9 do
  45. widgets[n][1] = n
  46. widgets[n][3] = x
  47. widgets[n][4] = y
  48. n = n+1
  49.  
  50. x = x + 6
  51. end
  52. x = 6
  53.  
  54. y = y + 3
  55. end
  56.  
  57. x=54
  58.  
  59. buffer.drawRectangle(x-6, y-3, 4, 2, 0xBFBFBF, 0, " ") -- Убрать крайние с крайние 53
  60. buffer.drawRectangle(x, y-3, 4, 2, 0xBFBFBF, 0, " ") -- Убрать крайние с крайние 54
  61. buffer.drawRectangle(6, y-3, 4, 2, 0xBFBFBF, 0, " ") -- Убрать крайние с крайние 47
  62. buffer.drawRectangle(12, y-3, 4, 2, 0xBFBFBF, 0, " ") -- Убрать крайние с крайние 46
  63. widgets[47][1] = widgets[52][1] -- поменять местами 48 с 52
  64. widgets[47][3] = widgets[52][3]
  65. widgets[47][4] = widgets[52][4]
  66.  
  67. widgets[46][1] = widgets[51][1] -- поменять местами 47 с 51
  68. widgets[46][3] = widgets[51][3]
  69. widgets[46][4] = widgets[51][4]
  70. widgets[52][1] = widgets[47][1] -- поменять местами 48 с 52
  71. widgets[52][3] = widgets[47][3]
  72. widgets[52][4] = widgets[47][4]
  73.  
  74. widgets[51][1] = widgets[46][1] -- поменять местами 47 с 51
  75. widgets[51][3] = widgets[46][3]
  76. widgets[51][4] = widgets[46][4]
  77. buffer.drawChanges()
  78. end
  79.  
  80. local function drawStatic()
  81. buffer.setResolution(90, 30)
  82. buffer.clear(0xdcdcdc)
  83. buffer.drawRectangle(3, 2, 86, 28, 0xFFFFFF, 0, " ")
  84. buffer.drawText(16, 1, 0, "Контроль реакторного комплекса РГ")
  85. buffer.drawRectangle(4, 3, 56, 19, 0xBFBFBF, 0, " ") -- Фон реактора
  86.  
  87.  
  88. x = 6
  89. y = 4
  90. local i = 1
  91. local j = 1
  92. local n = 1
  93. for i = 1, 6 do
  94.  
  95. buffer.drawRectangle(x, y, 4, 2, 0xffc6c6, 0, " ") -- вывести кнопочки
  96. for j = 1, 9 do
  97. widgets[n][1] = n
  98. widgets[n][3] = x
  99. widgets[n][4] = y
  100. n = n+1
  101. buffer.drawRectangle(x, y, 4, 2, 0xffc6c6, 0, " ") -- вывести кнопочки
  102. x = x + 6
  103. end
  104. x = 6
  105.  
  106. y = y + 3
  107. end
  108.  
  109. x=54
  110.  
  111. buffer.drawRectangle(x-6, y-3, 4, 2, 0xBFBFBF, 0, " ") -- Убрать крайние с крайние 53
  112. buffer.drawRectangle(x, y-3, 4, 2, 0xBFBFBF, 0, " ") -- Убрать крайние с крайние 54
  113. buffer.drawRectangle(6, y-3, 4, 2, 0xBFBFBF, 0, " ") -- Убрать крайние с крайние 47
  114. buffer.drawRectangle(12, y-3, 4, 2, 0xBFBFBF, 0, " ") -- Убрать крайние с крайние 46
  115. widgets[47][1] = widgets[52][1] -- поменять местами 48 с 52
  116. widgets[47][3] = widgets[52][3]
  117. widgets[47][4] = widgets[52][4]
  118.  
  119. widgets[46][1] = widgets[51][1] -- поменять местами 47 с 51
  120. widgets[46][3] = widgets[51][3]
  121. widgets[46][4] = widgets[51][4]
  122. widgets[52][1] = widgets[47][1] -- поменять местами 48 с 52
  123. widgets[52][3] = widgets[47][3]
  124. widgets[52][4] = widgets[47][4]
  125.  
  126. widgets[51][1] = widgets[46][1] -- поменять местами 47 с 51
  127. widgets[51][3] = widgets[46][3]
  128. widgets[51][4] = widgets[46][4]
  129.  
  130.  
  131.  
  132. buffer.drawRectangle(6, 23, 25, 3, 0xE06666, 0, " ") -- Аварийная кнопка завершения
  133. buffer.drawText(8, 24, 0, 'Аварийное завершение!')
  134. buffer.drawRectangle(31, 23, 28, 3, 0x93C47D, 0, " ") -- Кнопка Старта
  135. buffer.drawText(36, 24, 0, 'Старт')
  136.  
  137. buffer.drawRectangle(6, 26, 25, 3, 0xCCCCCC, 0, " ") -- Рестарт
  138. buffer.drawText(14, 27, 0, 'Рестарт программы')
  139.  
  140. buffer.drawText(34, 27, 0, 'Статус комлпекса: ')
  141. buffer.drawRectangle(53, 26, 6, 3, 0xFF0000, 0, " ") -- Статус
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149. buffer.drawRectangle(61, 16, 27, 6, 0xFFFFFF, 0, " ")
  150.  
  151. buffer.drawRectangle(60, 23, 28, 4, 0xCCCCCC, 0, " ") -- Порог лазурита
  152.  
  153.  
  154.  
  155.  
  156. buffer.drawChanges()
  157. end
  158. local function drawRightMenu()
  159. buffer.drawRectangle(61, 2, 27, 12, 0, 0, " ")
  160. buffer.drawText(61, 2, 0xAAAAAA, "Вывод:")
  161. for i = 1, #consoleLines do
  162. buffer.drawText(61, 2 + i, (15 - #consoleLines + i) * 0x111111, consoleLines[i])
  163. end
  164.  
  165. buffer.drawText(66, 24, 0, "Порог лазурита: " .. Plaz)
  166. buffer.drawRectangle(60, 23, 4, 2, 0xCCCCCC, 0, " ") -- +
  167. buffer.drawText(60, 23, 0x00FF00, "__|__")
  168. buffer.drawText(60, 24, 0x00FF00, " | ")
  169. buffer.drawRectangle(60, 25, 4, 2, 0xCCCCCC, 0, " ") -- -
  170. buffer.drawText(60, 25, 0xFF0000, " ___ ")
  171. buffer.drawRectangle(60, 27, 28, 2, 0xCCCCCC, 0, " ") -- Таймер
  172.  
  173. buffer.drawChanges()
  174. end
  175.  
  176.  
  177. local function message(msg)
  178. table.remove(consoleLines, 1)
  179. table.insert(consoleLines, tostring(msg))
  180. drawRightMenu()
  181. end
  182.  
  183.  
  184. ---------
  185. local function Click()
  186. local e, _, left, top, clickType, _ = event.pull(0.1, "touch")
  187. if left == nil then return nil end
  188. if left >= 6 and left <= 30 and top >= 23 and top <= 25 and sts then
  189. message("Sistem off!")
  190. for address, componentType in com.list("react") do
  191. com.invoke(address, "stopReactor")
  192. end
  193. message("Успешно")
  194. sts = false
  195.  
  196. end
  197. if left >= 31 and left <= 58 and top >= 23 and top <= 25 and not sts then
  198. message("Sistem On!")
  199. sts = true
  200. end
  201. if left >= 60 and left <= 64 and top >= 23 and top <= 24 then
  202. Plaz = Plaz + 1000
  203. message("Новый порог : ".. Plaz)
  204. end
  205.  
  206. if left >= 60 and left <= 64 and top >= 25 and top <= 26 then
  207. Plaz = Plaz - 1000
  208. message("Новый порог : ".. Plaz)
  209. end
  210.  
  211. if left >= 6 and left <= 30 and top >= 26 and top <= 28 then
  212. message("sistem off")
  213. for address, componentType in com.list("react") do
  214. com.invoke(address, "stopReactor")
  215. end
  216. message("Успешно")
  217. buffer.drawRectangle(53, 26, 6, 3, 0xFF0000, 0, " ") -- Статус OFF
  218. buffer.drawChanges()
  219. os.exit()
  220.  
  221. end
  222.  
  223. end
  224.  
  225. local function wait(n)
  226.  
  227. local t = 0
  228.  
  229. while t < n do
  230. if Click() == nil then
  231. t = t + 0.1
  232. timer = timer + 0.1
  233. buffer.drawText(60, 28, 0, 'Таймер : ' .. round(60 - timer))
  234. buffer.drawChanges()
  235. end
  236. end
  237. end
  238.  
  239.  
  240. local function start()
  241. for address, componentType in com.list("react") do
  242. com.invoke(address, "startReactor")
  243. end
  244. buffer.drawRectangle(61, 19, 27, 3, 0x111111, 0, " ") --Колличество еу в тик
  245. buffer.drawText(66, 20, 0x00FF00, 'EU/t : '.. round(eut))
  246. buffer.drawRectangle(53, 26, 6, 3, 0x00FF00, 0, " ") -- Статус ON
  247. buffer.drawChanges()
  248.  
  249. end
  250. local function stop()
  251.  
  252. for address, componentType in com.list("react") do
  253. wait(0.1)
  254. com.invoke(address, "stopReactor")
  255. end
  256. buffer.drawRectangle(61, 19, 27, 3, 0x111111, 0, " ") --Колличество еу в тик
  257. buffer.drawText(66, 20, 0x00FF00, 'EU/t : '.. round(eut))
  258. buffer.drawRectangle(53, 26, 6, 3, 0xFF0000, 0, " ") -- Статус OFF
  259. buffer.drawChanges()
  260.  
  261. end
  262.  
  263. local function checkRe()
  264. wait(0.1)
  265. while not com.isAvailable("reactor_chamber") do
  266. message("Ошибика! Нет реакторов!")
  267. computer.beep(500, 1)
  268. wait(3)
  269. end
  270. eut = 0
  271.  
  272. knopoch()
  273.  
  274. z = 0
  275. for address, componentType in com.list("react") do
  276. z = z+1
  277. widgets[z][5] = address -- Запись адресса реактора в ячейку
  278. widgets[z][6] = true
  279.  
  280. widgets[z][2] = com.invoke(widgets[z][5], "getReactorEUOutput")
  281. eut = eut + widgets[z][2]
  282.  
  283.  
  284.  
  285. if widgets[z][2] == 0 and widgets[z][6] then
  286. buffer.drawRectangle(widgets[z][3], widgets[z][4], 4, 2, 0xFFFF00, 0, " ")
  287. else
  288. buffer.drawRectangle(widgets[z][3], widgets[z][4], 4, 2, 0x00FF00, 0, " ")
  289.  
  290. end
  291.  
  292. end
  293.  
  294.  
  295. i=1
  296. buffer.drawRectangle(61, 19, 27, 3, 0x111111, 0, " ") --Колличество еу в тик
  297. buffer.drawText(66, 20, 0x00FF00, 'EU/t : '.. round(eut))
  298. buffer.drawChanges()
  299. wait(0.1)
  300. return 1
  301. end
  302.  
  303. local function checkMe()
  304. while not com.isAvailable("me_interface") do
  305. message("Ошбика! Мэ сеть не прогружена")
  306. computer.beep(500, 1)
  307. stop()
  308. wait(3)
  309. end
  310.  
  311. return 1
  312. end
  313.  
  314. local function checkLaz()
  315.  
  316. sizes = com.me_interface.getItemsInNetwork()[1].size --me_interface.getItemsInNetwork('minecraft:lapis_block')[1].size
  317. buffer.drawRectangle(61, 15, 27, 3, 0x111111, 0, " ") --Колличество Лазурита
  318. buffer.drawText(66, 16, 0x00FF00, 'Лазурит: ' .. sizes)
  319. while sizes < Plaz do
  320.  
  321. stop()
  322. message("Ошбика! Лазурита!")
  323. message("Ожидание... 60 сек")
  324. computer.beep(500, 1)
  325. buffer.drawRectangle(61, 15, 27, 3, 0x111111, 0, " ") --Колличество Лазурита
  326. buffer.drawText(66, 16, 0x00FF00, 'Лазурит: ' .. sizes)
  327. wait(60)
  328. sizes = com.me_interface.getItemsInNetwork()[1].size
  329.  
  330. end
  331. message("Лазурита ОК ...")
  332. buffer.drawRectangle(61, 15, 27, 3, 0x111111, 0, " ") --Колличество Лазурита
  333. buffer.drawText(66, 16, 0x00FF00, 'Лазурит: ' .. sizes)
  334. -- wait(59)
  335. buffer.drawChanges()
  336. timer = 0
  337. return 1
  338. end
  339.  
  340. --------------
  341. drawStatic()
  342. drawRightMenu()
  343. knopoch()
  344. local function rabota()
  345. knopoch()
  346. sts = true
  347. message("Настройка компонентов")
  348. wait(0.1)
  349.  
  350.  
  351.  
  352. buffer.drawChanges()
  353.  
  354. z = 0
  355. for address, componentType in com.list("react") do
  356. z = z+1
  357. widgets[z][5] = address -- Запись адресса реактора в ячейку
  358. widgets[z][6] = true
  359. buffer.drawRectangle(widgets[z][3], widgets[z][4], 4, 2, 0x00FF00, 0, " ")
  360. wait(0.1)
  361. end
  362.  
  363. i=1
  364. k = 2
  365. while sts do
  366.  
  367. message("Проверка всех компонетнов")
  368. wait(0.1)
  369. checkRe()
  370. wait(0.1)
  371. checkMe()
  372. wait(0.1)
  373. if timer >= 60 then
  374. checkLaz()
  375. end
  376.  
  377. message("Успешно, запускаю реакторы")
  378. start()
  379. while (checkRe() == 1 or checkMe() == 1 or checkLaz() == 1) and sts == true do
  380. --message("Сек до чек " .. 60 - timer)
  381. buffer.drawRectangle(61, 19, 27, 3, 0x111111, 0, " ") --Колличество еу в тик
  382. buffer.drawText(66, 20, 0x00FF00, 'EU/t : '.. round(eut))
  383. buffer.drawChanges()
  384. start()
  385.  
  386. wait(0.1)
  387. checkRe()
  388. wait(0.1)
  389. checkMe()
  390. wait(0.1)
  391. if timer >= 60 then
  392. checkLaz()
  393. end
  394. end
  395. computer.beep(500, 1)
  396. message("Остановка ")
  397. stop()
  398.  
  399. eut = 0
  400. while not sts do
  401. wait(0.1)
  402. if timer >= 60 then
  403. checkLaz()
  404. end
  405. buffer.drawRectangle(61, 19, 27, 3, 0x111111, 0, " ") --Колличество еу в тик
  406. buffer.drawText(66, 20, 0x00FF00, 'EU/t : '.. round(eut))
  407. buffer.drawRectangle(53, 26, 6, 3, 0xFF0000, 0, " ") -- Статус OFF
  408. buffer.drawChanges()
  409.  
  410. end
  411.  
  412. end
  413. end
  414.  
  415. if sts then rabota() end
  416.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement