TimNekkYT

ITEMS | pastebin run b4VjvgSi

Apr 18th, 2020
246
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 0.49 KB | None | 0 0
  1. local component = require('component')
  2. local gpu = component.gpu
  3. local unicode = require('unicode')
  4. local term = require('term')
  5. local sides = require("sides")
  6. local event = require("event")
  7. local thread = require("thread")
  8.  
  9. local FPS = 0.5
  10.  
  11. local requiredItems = {}
  12. requiredItems[#requiredItems+1] = {label = "Свинцовый блок", deposit = "Lead", size = "0", required = 4400, color = 0x7783AF, sing = {label = "Свинцовая сингулярность", size = "0"}}
  13. requiredItems[#requiredItems+1] = {label = "Лазуритовый блок", deposit = "Lapis", size = "0", required = 4200, color = 0x234395, sing = {label = "Лазуритовая сингулярность", size = "0"}}
  14. requiredItems[#requiredItems+1] = {label = "Никелевый блок", deposit = "Nickel", size = "0", required = 4600, color = 0xDED9A8, sing = {label = "Никелевая сингулярность", size = "0"}}
  15. requiredItems[#requiredItems+1] = {label = "Медный блок", deposit = "Copper", size = "0", required = 4600, color = 0x9E6048, sing = {label = "Медная сингулярность", size = "0"}}
  16. requiredItems[#requiredItems+1] = {label = "Железный блок", deposit = "Iron", size = "0", required = 4600, color = 0xE0E0E0, sing = {label = "Железная сингулярность", size = "0"}}
  17. requiredItems[#requiredItems+1] = {label = "Редстоуновый блок", deposit = "Cinnabar", size = "0", required = 4800, color = 0xC9230B, sing = {label = "Редстоуновая сингулярность", size = "0"}}
  18. requiredItems[#requiredItems+1] = {label = "Оловянный блок", deposit = "Cassiterite",  size = "0", required = 4600, color = 0xDBDFDF, sing = {label = "Оловянная сингулярность", size = "0"}}
  19. requiredItems[#requiredItems+1] = {label = "Серебряный блок", deposit = "Silver", size = "0", required = 4400, color = 0x9CBEC7, sing = {label = "Серебряная сингулярность", size = "0"}}
  20. requiredItems[#requiredItems+1] = {label = "Золотой блок", deposit = "Gold", size = "0", required = 4200, color = 0xFFF144, sing = {label = "Золотая сингулярность", size = "0"}}
  21. requiredItems[#requiredItems+1] = {label = "Алмазный блок", deposit = "Coal", size = "0", required = 4200, color = 0x67BAAB, sing = {label = "Алмазная сингулярность", size = "0"}}
  22. requiredItems[#requiredItems+1] = {label = "Изумрудный блок", deposit = "Coal", size = "0", required = 4200, color = 0x34C255, sing = {label = "Изумрудная сингулярность", size = "0"}}
  23. requiredItems[#requiredItems+1] = {label = "Кварцевый блок", deposit = "Quarzite", size = "0", required = 4200, color = 0xEDEBE5, sing = {label = "Кварцевая сингулярность", size = "0"}}
  24.  
  25. -- Компоненты
  26. local components = {redControllers = {quarry = {}, sing = {}}, MESystems = {}}
  27.  
  28. components.MESystems.main = {id = "b02e65dc-a363-4a2c-a90e-5b67be8c6338"}
  29.  
  30. components.redControllers.quarry[#components.redControllers.quarry+1] = {id = "032af69f-72fc-4ae9-b6ae-a967ee2a015b"}
  31. components.redControllers.quarry[#components.redControllers.quarry+1] = {id = "2b5f43ac-c34f-417f-b87a-1400636e535b"}
  32. components.redControllers.quarry[#components.redControllers.quarry+1] = {id = "a30454c9-0032-46e2-b968-b149e3a38f9e"}
  33. components.redControllers.quarry[#components.redControllers.quarry+1] = {id = "3aac7466-813c-43ae-b49a-1c1680b1b8d6"}
  34. components.redControllers.quarry[#components.redControllers.quarry+1] = {id = "9e38a46c-5bbb-4fac-8364-0fa0b892a547"}
  35. components.redControllers.quarry[#components.redControllers.quarry+1] = {id = "8cc871e7-5b34-4318-a0f6-76acc1f09bb3"}
  36. components.redControllers.quarry[#components.redControllers.quarry+1] = {id = "dd402595-7ff1-4e6f-a7d6-0553c3af97f3"}
  37. components.redControllers.quarry[#components.redControllers.quarry+1] = {id = "74ee8d02-9737-485e-9ae1-060831983a67"}
  38. components.redControllers.quarry[#components.redControllers.quarry+1] = {id = "51bc4f54-14bb-450c-8f27-a5bc0691a354"}
  39. components.redControllers.quarry[#components.redControllers.quarry+1] = {id = "ad69e0f4-5c1f-45ca-9c09-17b13e1bb13e"}
  40. components.redControllers.quarry[#components.redControllers.quarry+1] = {id = "bc54363f-1158-40aa-81d4-e375f216793a"}
  41. components.redControllers.quarry[#components.redControllers.quarry+1] = {id = "a9594429-73b5-44b5-8d73-41203fa2f835"}
  42. components.redControllers.quarry[#components.redControllers.quarry+1] = {id = "661b9adf-c5e6-40d4-a717-a94718b1413f"}
  43. components.redControllers.quarry[#components.redControllers.quarry+1] = {id = "1142a220-0d6e-40e8-8a72-d66d94813801"}
  44. components.redControllers.quarry[#components.redControllers.quarry+1] = {id = "43c34150-c009-4df6-b794-dc469392ad25"}
  45. components.redControllers.quarry[#components.redControllers.quarry+1] = {id = "e5fe1860-015e-4e33-80b4-66ce0957637c"}
  46.  
  47. components.redControllers.sing[#components.redControllers.sing+1] = {id = "e0a9ba66-9e0a-4a1c-9668-fea781872c5c", name = "Золотая сингулярность"}
  48. components.redControllers.sing[#components.redControllers.sing+1] = {id = "894169a0-0a71-4b6f-9a2a-55872cde9ffc", name = "Кварцевая сингулярность"}
  49. components.redControllers.sing[#components.redControllers.sing+1] = {id = "ca0a4549-82c2-4794-90bc-d80e305aea37", name = "Медная сингулярность"}
  50. components.redControllers.sing[#components.redControllers.sing+1] = {id = "e44723ac-d510-4267-857c-8070bac6d9da", name = "Свинцовая сингулярность"}
  51. components.redControllers.sing[#components.redControllers.sing+1] = {id = "68dd8b3c-306e-4e14-aa36-0aedd7fdd9ee", name = "Лазуритовая сингулярность"}
  52. components.redControllers.sing[#components.redControllers.sing+1] = {id = "3590f66e-fb94-4f6d-991e-8d5f54bdd1b5", name = "Железная сингулярность"}
  53. components.redControllers.sing[#components.redControllers.sing+1] = {id = "39661c10-5416-4c24-a1ab-94beff7072e2", name = "Оловянная сингулярность"}
  54. components.redControllers.sing[#components.redControllers.sing+1] = {id = "bf3fec28-ec6c-4ea6-bcf3-07b86977cce4", name = "Серебряная сингулярность"}
  55. components.redControllers.sing[#components.redControllers.sing+1] = {id = "89318e4e-0fdc-4322-878b-ea23d9652b56", name = "Алмазная сингулярность"}
  56. components.redControllers.sing[#components.redControllers.sing+1] = {id = "def98839-ea7d-49e5-a2fa-2187deb3dd34", name = "Никелевая сингулярность"}
  57. components.redControllers.sing[#components.redControllers.sing+1] = {id = "763a2985-01d1-46a0-b74e-dc5ffd19eaa5", name = "Редстоуновая сингулярность"}
  58. components.redControllers.sing[#components.redControllers.sing+1] = {id = "de352611-7ad1-4b74-a1e4-d4df9ca1435c", name = "Изумрудная сингулярность"}
  59.  
  60.  
  61. local colors = {black = 0x000000, white = 0xFFFFFF, green = 0x22FA00, red = 0xFF302E, grey = 0x131313, light_gray = 0x6E6E6E}
  62.  
  63.  
  64. function getItems()
  65.   local items = {}
  66.  
  67.   -- Все предметы
  68.   local itemsInNetwork, err = component.proxy(components.MESystems.main.id).getItemsInNetwork()
  69.  
  70.   for _, requiredItem in pairs(requiredItems) do
  71.     for i=1, #itemsInNetwork do
  72.       local item = itemsInNetwork[i]
  73.  
  74.       -- Блок
  75.       if item.label == requiredItem.label then
  76.         requiredItem.size = tostring(item.size)
  77.  
  78.       -- Сингулярность
  79.       elseif item.label == requiredItem.sing.label then
  80.         requiredItem.sing.size = tostring(item.size)
  81.       end
  82.     end
  83.     items[#items+1] = requiredItem
  84.   end
  85.  
  86.  
  87.   return items
  88. end
  89.  
  90.  
  91. function setSings(init, items)
  92.   if init then
  93.     -- Заполнение блока серым
  94.     gpu.setBackground(colors.grey)
  95.     gpu.fill(3, 2, gpu.getResolution()-4, #items+4, " ")
  96.    
  97.     -- Верх таблицы
  98.     gpu.setForeground(colors.white)
  99.     gpu.set(9, 3, "Название")
  100.     gpu.set(30, 3, "Нужно")
  101.     gpu.set(40, 3, "Имеется")
  102.     gpu.set(50, 3, "Осталось")
  103.     gpu.set(60, 3, "Создать")
  104.     gpu.set(70, 3, "Сингул.")
  105.     gpu.set(80, 3, "Жила")
  106.   else
  107.     -- Надписи
  108.     for y, item in pairs(items) do
  109.         -- Иконка блока
  110.         gpu.setBackground(item.color)
  111.         gpu.set(6, y+4, " ")
  112.         gpu.set(7, y+4, " ")
  113.         gpu.setBackground(colors.grey)
  114.      
  115.         local difference = item.required - tonumber(item.size)
  116.         local canCreate = math.floor(tonumber(item.size) / item.required)
  117.      
  118.         if difference <= 0 then
  119.           gpu.setForeground(colors.green)
  120.           difference = 0
  121.         else
  122.           gpu.setForeground(colors.red)
  123.         end
  124.         gpu.set(9, y+4, item.label)  -- Название
  125.         gpu.set(30, y+4, item.required .. "   ")  -- Нужно
  126.         gpu.set(40, y+4, item.size:sub(1, #item.size-2) .. "   ")  -- Имеется
  127.         gpu.set(50, y+4, tostring(difference):sub(1, #tostring(difference)-2) .. "   ")  -- Осталось
  128.         gpu.set(60, y+4, tostring(canCreate) .. "   ")  -- Создать
  129.      
  130.         gpu.setForeground(colors.white)
  131.         gpu.set(80, y+4, item.deposit)  -- Жила
  132.  
  133.         gpu.setBackground(colors.light_gray)
  134.         gpu.set(95, y+4, 'Создать')
  135.         gpu.setBackground(colors.grey)
  136.      
  137.         if item.sing.size == "0" then
  138.           gpu.setForeground(colors.red)
  139.         end
  140.  
  141.         gpu.set(70, y+4, item.sing.size:sub(1, #item.sing.size-2) .. "     ")  -- Сингулярностей
  142.     end
  143.   end
  144. end
  145.  
  146.  
  147. function setRedStones()
  148.   -- Заполнение блока серым
  149.   gpu.setForeground(colors.white)
  150.   gpu.setBackground(colors.grey)
  151.   gpu.fill(3, 19, gpu.getResolution()-4, 6, " ")
  152.  
  153.   local effeciency = 0
  154.   for i, redController in pairs(components.redControllers.quarry) do
  155.     redController = component.proxy(redController.id)
  156.  
  157.     -- Номер
  158.     gpu.setBackground(colors.grey)
  159.     gpu.set(1 + i*7, 20, tostring(i))
  160.  
  161.     -- Кнопки
  162.     if redController.getOutput(sides.top) == 0 then
  163.       gpu.setBackground(colors.red)
  164.     else
  165.       gpu.setBackground(colors.green)
  166.       effeciency = effeciency + 1
  167.     end
  168.     gpu.fill(i*7, 22, 4, 2, " ")
  169.   end
  170.  
  171.   -- Эффективность
  172.   effeciency = math.floor(effeciency*145/60*10)/10
  173.   gpu.setBackground(colors.grey)
  174.   gpu.set(#components.redControllers.quarry*7 + 8, 20, "Скорость: " .. tostring(effeciency) .. " рес/сек     ")
  175. end
  176.  
  177.  
  178. function touchEventManager()
  179.   while true do
  180.  
  181.     local _, _, x, y = event.pull("touch")
  182.     -- Отображение координат нажатия
  183.     gpu.set(1, 1, "x: " .. tostring(x) .. " y: " .. tostring(y) .. "        ")
  184.  
  185.     for i, redController in pairs(components.redControllers.quarry) do
  186.       redController = component.proxy(redController.id)
  187.  
  188.       if x >= i*7  and x <= 3 + i*7 and y >= 22 and y <= 24 then
  189.         if redController.getOutput(sides.top) == 0 then
  190.           redController.setOutput(sides.top, 1)
  191.           setRedStones()
  192.         else
  193.           redController.setOutput(sides.top, 0)
  194.           setRedStones()
  195.         end
  196.       end
  197.     end
  198.  
  199.     for i, item in pairs(getItems()) do
  200.       if x >= 95  and x <= 101 and y == i+4 then
  201.         gpu.set(105, i+4, "111")
  202.       end
  203.     end
  204.  
  205.   end
  206. end
  207.  
  208.  
  209. function start()
  210.   term.clear()
  211.  
  212.   setRedStones()
  213.   thread.create(touchEventManager)
  214.  
  215.   local items = getItems()
  216.   local old_items
  217.   setSings(true, items)
  218.  
  219.   while true do
  220.     old_items = getItems()
  221.  
  222.     os.sleep(0.1)
  223.  
  224.     items = getItems(AE, requiredItems)
  225.     if old_items ~= items then
  226.       setSings(false, items)
  227.     end
  228.   end
  229. end
  230.  
  231. start()
Advertisement
Add Comment
Please, Sign In to add comment