mrWhiskasss

[Draconic Evolution] auto draconic blocks using AE2 only Пробуждение дк блоков от фризи

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