Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local com = require("component")
- local term = require("term")
- local gpu = com.gpu
- local itm = {
- ["draconium"] = {["tp"] = 4,["tpc"] = 0,["tpi"] = 1},
- ["tnt"] = {["tp"] = 1,["tpc"] = 0,["tpi"] = 2},
- ["dragonHeart"] = {["tp"] = 1,["tpc"] = 0,["tpi"] = 3},
- ["draconicCore"] = {["tp"] = 16,["tpc"] = 0,["tpi"] = 4},
- }
- local side
- local sides = {
- {["name"] = "NORTH", ["ru"] = "СЕВЕР"},
- {["name"] = "SOUTH", ["ru"] = "ЮГ"},
- {["name"] = "WEST", ["ru"] = "ЗАПАД"},
- {["name"] = "EAST", ["ru"] = "ВОСТОК"},
- }
- local chests = {
- "chest", "diamond", "crystal", "gold", "iron", "obsidian"
- }
- local function getChest()
- local ch = 0
- for i=1, #chests do
- if pcall(com.getPrimary, chests[i]) then
- ch = chests[i]
- return ch
- end
- end
- if ch == 0 then
- setColor("red")
- print("Ошибка: Сундук не подключен адаптером, либо выбранный сундук не поддерживается программой :(")
- setColor("clear")
- end
- end
- local chest = com.getPrimary(getChest())
- local maxslot = chest.getInventorySize()
- local w8 = false
- local function sidesCheck()
- local incount = 0
- local ilast
- if not w8 then
- setColor("yellow")
- print("Идет автоматическая настройка")
- setColor("clear")
- end
- for i=1, #sides do
- b, n, _ = pcall(chest.pullItem, sides[i].name, 1, 1, 1)
- if b == true and n ~= nil then
- incount = incount + 1
- ilast = i
- end
- end
- if incount == 1 then
- w8 = false
- side = sides[ilast].name
- setColor("green")
- print("Автонастройка успешно завершена, предметы будут отправляться на " .. sides[ilast].ru)
- setColor("clear")
- return sides[ilast]
- elseif incount > 1 then
- if not w8 then
- setColor("red")
- print("Автонастройка не выполнена (вплотную к сундуку стоят посторонние механизмы)")
- setColor("clear")
- end
- w8 = true
- else
- if not w8 then
- setColor("red")
- print('Автонастройка не выполнена (подключите "принимающий" мэ интерфейс к одной из сторон сундука)')
- setColor("clear")
- end
- w8 = true
- end
- end
- local function check()
- for k, v in pairs(itm) do
- itm[k].tpc = 0
- end
- local can = false
- for i = 1, maxslot do
- local s = chest.getStackInSlot(i)
- if s ~= nil then
- if itm[s.name].tpc < itm[s.name].tp then
- itm[s.name].i = i
- itm[s.name].tpc = itm[s.name].tp
- end
- end
- end
- if itm.draconium.tpc == 4 and itm.tnt.tpc == 1 and itm.dragonHeart.tpc == 1 and itm.draconicCore.tpc == 16 then
- can = true
- end
- return can
- end
- local function push(it)
- while it.tpc > 0 do
- it.tpc = it.tpc - chest.pushItem(side, it.i, it.tpc, it.tpi)
- os.sleep(0)
- end
- end
- local function extract()
- local exd = 0
- repeat
- for i = 1, maxslot do
- local s = chest.getStackInSlot(i)
- if s ~= nil then
- if s.name == "draconicBlock" and s.qty >= 4 then
- exd = exd + chest.pushItem("UP", i, 4, 1)
- break
- end
- end
- end
- until exd == 4
- end
- local function craft()
- if check() then
- setColor("green")
- print("Крафт запущен")
- setColor("clear")
- push(itm.draconium)
- push(itm.tnt)
- push(itm.dragonHeart)
- os.sleep(8)
- push(itm.draconicCore)
- setColor("yellow")
- print("Ожидаю появления пробужденных блоков в сундуке")
- setColor("clear")
- extract()
- setColor("green")
- print("Блоки успешно экспортированы")
- setColor("clear")
- end
- end
- function setColor(num)
- if (num == "red") then
- gpu.setForeground(0xFF0000)
- end
- if (num == "yellow") then
- gpu.setForeground(0xFFFF00)
- end
- if (num == "green") then
- gpu.setForeground(0x00FF00)
- end
- if (num == "blue") then
- gpu.setForeground(0x0000FF)
- end
- if (num == "clear") then
- gpu.setForeground(0xFFFFFF)
- end
- end
- term.clear()
- gpu.setResolution(60, 30)
- while sidesCheck() == nil do
- os.sleep(0)
- end
- setColor("blue")
- print("Программа готова к использованию")
- setColor("clear")
- while true do
- os.sleep(0)
- craft()
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement