Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- pastebin get d245Bgnn sort.lua
- local component - require("component")
- local transposer - component.transposer
- local gpu - component.gpu
- -- Цвета
- local green = 0X00FF00
- local white = 0xFFFFFF
- local red = 0x800000
- local black = 0x000000
- --Таблица предметов для отправки на восток
- local eastitems = {
- "Water bottle",
- "ClownFish",
- "PuFFerFish",
- "Raw Fish",
- "Raw Salmon",
- "Ink Sac",
- "String",
- "Plastic Bag",
- "Saddle",
- "Bone",
- "Name Tag",
- "Stick"
- }
- --Статистика
- local stats = {
- charms = 0,
- system = 0,
- trash = 0
- }
- --Функция для проверки, есть ли предмет в таблице
- local function isInEastItems(itemName)
- for _, name in ipairs(eastItems) do
- if itemName == name then
- return true
- end
- end
- return false
- end
- --Функция для поиска свободного слота
- local function findFreeSlot(side)
- local size = transposer.getInventorySize(side)
- if not size then
- return nil
- end
- for slot =1, size do
- if not transposer.getStackInSlot(side, slot) then
- return slot
- end
- end
- return nil
- end
- --Функция для красивого вывода статистики
- local function updateDisplay()
- gpu.setResolution(80, 15)
- gpu.setBackground(black)
- gpu.fill(1, 1, 80, 15, " ")
- gpu.setBackground(black)
- gpu.fill(1, 1, 80, 1, " ")
- gpu.setForeground(green)
- gpu.set(20, 1, "___ Автосортировка предметов с рыбаков ___")
- --Верхние рамки
- gpu.setBackground(black)
- gpu.setForeground(green)
- gpu.fill(1, 2, 80, 1, " ")
- gpu.set(2, 2, string.rep(" ", 24))
- gpu.set(27, 2, string.rep(" ", 25))
- gpu.set(53, 2, string.rep(" ", 26))
- gpu.setForeground(red)
- gpu.set(10, 2, "В мусорку")
- gpu.set(30, 2, "Зачарованные Предметы")
- gpu.set(63, 2, "В систему")
- --Основные рамки
- gpu.setBackground(black)
- gpu.setForeground(green)
- gpu.fill( 1, 3, 80, 6, " ")
- --Вертикальные линии
- for y = 3, 8 do
- gpu.set(27, y, "│")
- gpu.set(53, y, "│")
- end
- --Горизонтальные линии
- gpu.set(1, 9, string.rep("─", 80))
- gpu.set(1, 3, string.rep("─", 80))
- --Углы
- gpu.set(1, 3, "┌")
- gpu.set(27, 3, "┬")
- gpu.set(53, 3, "┬")
- gpu.set(80, 3, "┐")
- gpu.set(1, 9, "└")
- gpu.set(27, 9, "┴")
- gpu.set(53, 9, "┴")
- gpu.set(80, 9, "┘")
- --Числа
- gpu.setForeground(green)
- gpu.setBackground(black)
- gpu.set(14, 6, string.format("%d", stats.trash))
- gpu.set(39, 6, string.format("%d", stats.charms))
- gpu.set(68, 6, string.format("%d", stats.system))
- --Подписи снизу
- gpu.setForeground(green)
- gpu.setBackground(black)
- gpu.set(54, 10, string.rep(" ", 26))
- gpu.set(54, 11, string.rep(" ", 26))
- gpu.setForeground(red)
- gpu.set(56, 11, "Create by ")
- gpu.set(71, 11, "Jonik512")
- gpu.set(71, 12, "ReFOiL")
- gpu.setBackground(black)
- gpu.setForeground(white)
- end
- --Очистка экрана при запуске
- updateDisplay()
- --Основной цикл программы
- local emptyCount = 0
- local slot = 1
- local maxSlots = transposer.getInventorySize(4)
- while true do
- local stack = transposer.getStackInSlot(4, slot)
- if not stack then
- emptyCount = emptyCount + 1
- if emptyCount >= 8 then
- slot = 1
- emptyCount = 0
- else
- slot = slot + 1
- if slot > maxSlots then slot - 1 end
- end
- else
- emptyCount = 0
- --Проверяем на зачарования
- if stack.enchantments and #stack.enchantments > 0 then
- local targetSlot = findFreeSlot(2)
- if targetSlot then
- local amount = stack.size
- if transposer.transferItem(4, 2, amount, slot, targetSlot) then
- stats.charms = stats.charms + amount
- updateDisplay()
- end
- end
- elseif isInEastItems(stack.label) then
- local targetSlot = findFreeSlot(5)
- if targetSlot then
- local amount = stack.size
- if transposer.transferItem(4, 5, amount, slot, targetSlot) then
- stats.system = stats.system + amount
- updateDisplay()
- end
- end
- else
- local targetSlot = findFreeSlot(3)
- if targetSlot then
- local amount = stack.size
- if transposer.transferItem(4, 3, amount, slot, targetSlot) then
- stats.trash = stats.trash + amount
- updateDisplay()
- end
- end
- end
- slot = slot + 1
- if slot > maxSlots then slot = 1 end
- end
- os. sleep(10)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement