Advertisement
nikita2007558

пробуждалка драк блоков

Jul 24th, 2023 (edited)
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.90 KB | None | 0 0
  1. local com = require("component")
  2. local term = require("term")
  3. local gpu = com.gpu
  4.  
  5. local itm = {
  6.     ["draconium"] = {["tp"] = 4,["tpc"] = 0,["tpi"] = 1},
  7.     ["tnt"] = {["tp"] = 1,["tpc"] = 0,["tpi"] = 2},
  8.     ["dragonHeart"] = {["tp"] = 1,["tpc"] = 0,["tpi"] = 3},
  9.     ["draconicCore"] = {["tp"] = 16,["tpc"] = 0,["tpi"] = 4},
  10. }
  11.  
  12. local side
  13.  
  14. local sides = {
  15.     {["name"] = "NORTH", ["ru"] = "СЕВЕР"},
  16.     {["name"] = "SOUTH", ["ru"] = "ЮГ"},
  17.     {["name"] = "WEST", ["ru"] = "ЗАПАД"},
  18.     {["name"] = "EAST", ["ru"] = "ВОСТОК"},
  19. }
  20.  
  21. local chests = {
  22.     "chest", "diamond", "crystal", "gold", "iron", "obsidian"
  23. }
  24.  
  25. local function getChest()
  26.     local ch = 0
  27.     for i=1, #chests do
  28.         if pcall(com.getPrimary, chests[i]) then
  29.             ch = chests[i]
  30.             return ch
  31.         end
  32.     end
  33.     if ch == 0 then
  34.         setColor("red")
  35.         print("Ошибка: Сундук не подключен адаптером, либо выбранный сундук не поддерживается программой :(")
  36.         setColor("clear")
  37.     end
  38. end
  39.  
  40. local chest = com.getPrimary(getChest())
  41. local maxslot = chest.getInventorySize()
  42.  
  43. local w8 = false
  44. local function sidesCheck()
  45.     local incount = 0
  46.     local ilast
  47.     if not w8 then
  48.         setColor("yellow")
  49.         print("Идет автоматическая настройка")
  50.         setColor("clear")
  51.     end
  52.     for i=1, #sides do
  53.         b, n, _ = pcall(chest.pullItem, sides[i].name, 1, 1, 1)
  54.         if b == true and n ~= nil then
  55.             incount = incount + 1
  56.             ilast = i
  57.         end
  58.     end
  59.     if incount == 1 then
  60.         w8 = false
  61.         side = sides[ilast].name
  62.         setColor("green")
  63.         print("Автонастройка успешно завершена, предметы будут отправляться на " .. sides[ilast].ru)
  64.         setColor("clear")
  65.         return sides[ilast]
  66.     elseif incount > 1 then
  67.         if not w8 then
  68.             setColor("red")
  69.             print("Автонастройка не выполнена (вплотную к сундуку стоят посторонние механизмы)")
  70.             setColor("clear")
  71.         end
  72.         w8 = true
  73.     else
  74.         if not w8 then
  75.             setColor("red")
  76.             print('Автонастройка не выполнена (подключите "принимающий" мэ интерфейс к одной из сторон сундука)')
  77.             setColor("clear")
  78.         end
  79.         w8 = true
  80.     end
  81. end
  82.  
  83. local function check()
  84.     for k, v in pairs(itm) do
  85.         itm[k].tpc = 0
  86.     end
  87.     local can = false
  88.     for i = 1, maxslot do
  89.         local s = chest.getStackInSlot(i)
  90.         if s ~= nil then
  91.             if itm[s.name].tpc < itm[s.name].tp then
  92.                 itm[s.name].i = i
  93.                 itm[s.name].tpc = itm[s.name].tp
  94.             end
  95.         end
  96.     end
  97.     if itm.draconium.tpc == 4 and itm.tnt.tpc == 1 and itm.dragonHeart.tpc == 1 and itm.draconicCore.tpc == 16 then
  98.         can = true
  99.     end
  100.     return can
  101. end
  102.  
  103. local function push(it)
  104.     while it.tpc > 0 do
  105.         it.tpc = it.tpc - chest.pushItem(side, it.i, it.tpc, it.tpi)
  106.         os.sleep(0)
  107.     end
  108. end
  109.  
  110. local function extract()
  111.     local exd = 0
  112.     repeat
  113.         for i = 1, maxslot do
  114.             local s = chest.getStackInSlot(i)
  115.             if s ~= nil then
  116.                 if s.name == "draconicBlock" and s.qty >= 4 then
  117.                     exd = exd + chest.pushItem("UP", i, 4, 1)
  118.                     break
  119.                 end
  120.             end
  121.         end
  122.     until exd == 4
  123. end
  124.  
  125. local function craft()
  126.     if check() then
  127.         setColor("green")
  128.         print("Крафт запущен")
  129.         setColor("clear")
  130.         push(itm.draconium)
  131.         push(itm.tnt)
  132.         push(itm.dragonHeart)
  133.         os.sleep(8)
  134.         push(itm.draconicCore)
  135.         setColor("yellow")
  136.         print("Ожидаю появления пробужденных блоков в сундуке")
  137.         setColor("clear")
  138.         extract()
  139.         setColor("green")
  140.         print("Блоки успешно экспортированы")
  141.         setColor("clear")
  142.     end
  143. end
  144.  
  145. function setColor(num)
  146.     if (num == "red") then
  147.         gpu.setForeground(0xFF0000)
  148.     end
  149.     if (num == "yellow") then
  150.         gpu.setForeground(0xFFFF00)
  151.     end
  152.     if (num == "green") then
  153.         gpu.setForeground(0x00FF00)
  154.     end
  155.     if (num == "blue") then
  156.         gpu.setForeground(0x0000FF)
  157.     end
  158.     if (num == "clear") then
  159.         gpu.setForeground(0xFFFFFF)
  160.     end
  161. end
  162.  
  163. term.clear()
  164. gpu.setResolution(60, 30)
  165.  
  166. while sidesCheck() == nil do
  167.     os.sleep(0)
  168. end
  169.  
  170. setColor("blue")
  171. print("Программа готова к использованию")
  172. setColor("clear")
  173.  
  174. while true do
  175.     os.sleep(0)
  176.     craft()
  177. end
  178.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement