Advertisement
Revector

MagicSortTransposer

May 12th, 2025 (edited)
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.50 KB | None | 0 0
  1. -- pastebin get d245Bgnn sort.lua
  2. local component - require("component")
  3. local transposer - component.transposer
  4. local gpu - component.gpu
  5.  
  6. -- Цвета
  7. local green = 0X00FF00
  8. local white = 0xFFFFFF
  9. local red   = 0x800000
  10. local black = 0x000000
  11.  
  12. --Таблица предметов для отправки на восток
  13. local eastitems = {
  14.     "Water bottle",
  15.     "ClownFish",
  16.     "PuFFerFish",
  17.     "Raw Fish",
  18.     "Raw Salmon",
  19.     "Ink Sac",
  20.     "String",
  21.     "Plastic Bag",
  22.     "Saddle",
  23.     "Bone",
  24.     "Name Tag",
  25.     "Stick"
  26. }
  27.  
  28. --Статистика
  29. local stats = {
  30.     charms = 0,
  31.     system = 0,
  32.     trash  = 0
  33. }
  34.  
  35. --Функция для проверки, есть ли предмет в таблице
  36. local function isInEastItems(itemName)
  37.     for _, name in ipairs(eastItems) do
  38.         if itemName == name then
  39.             return true
  40.         end
  41.     end
  42.     return false
  43. end
  44.  
  45. --Функция для поиска свободного слота
  46. local function findFreeSlot(side)
  47.     local size = transposer.getInventorySize(side)
  48.     if not size then
  49.         return nil
  50.     end
  51.     for slot =1, size do
  52.         if not transposer.getStackInSlot(side, slot) then
  53.             return slot
  54.         end
  55.     end
  56.     return nil
  57. end
  58.    
  59. --Функция для красивого вывода статистики
  60. local function updateDisplay()
  61.     gpu.setResolution(80, 15)
  62.     gpu.setBackground(black)
  63.     gpu.fill(1, 1, 80, 15, " ")
  64.     gpu.setBackground(black)
  65.     gpu.fill(1, 1, 80, 1, " ")
  66.     gpu.setForeground(green)
  67.     gpu.set(20, 1, "___ Автосортировка предметов с рыбаков ___")
  68.    
  69.     --Верхние рамки
  70.     gpu.setBackground(black)
  71.     gpu.setForeground(green)
  72.     gpu.fill(1, 2, 80, 1, " ")
  73.     gpu.set(2, 2, string.rep(" ", 24))
  74.     gpu.set(27, 2, string.rep(" ", 25))
  75.     gpu.set(53, 2, string.rep(" ", 26))
  76.     gpu.setForeground(red)
  77.     gpu.set(10, 2, "В мусорку")
  78.     gpu.set(30, 2, "Зачарованные Предметы")
  79.     gpu.set(63, 2, "В систему")
  80.    
  81.     --Основные рамки
  82.     gpu.setBackground(black)
  83.     gpu.setForeground(green)
  84.     gpu.fill( 1, 3, 80, 6, " ")
  85.     --Вертикальные линии
  86.     for y = 3, 8 do
  87.         gpu.set(27, y, "│")
  88.         gpu.set(53, y, "│")
  89.     end
  90.     --Горизонтальные линии
  91.     gpu.set(1, 9, string.rep("─", 80))
  92.     gpu.set(1, 3, string.rep("─", 80))
  93.     --Углы
  94.     gpu.set(1,  3, "┌")
  95.     gpu.set(27, 3, "┬")
  96.     gpu.set(53, 3, "┬")
  97.     gpu.set(80, 3, "┐")
  98.     gpu.set(1,  9, "└")
  99.     gpu.set(27, 9, "┴")
  100.     gpu.set(53, 9, "┴")
  101.     gpu.set(80, 9, "┘")
  102.        
  103.     --Числа
  104.     gpu.setForeground(green)
  105.     gpu.setBackground(black)
  106.     gpu.set(14, 6, string.format("%d", stats.trash))
  107.     gpu.set(39, 6, string.format("%d", stats.charms))
  108.     gpu.set(68, 6, string.format("%d", stats.system))
  109.    
  110.     --Подписи снизу
  111.     gpu.setForeground(green)
  112.     gpu.setBackground(black)
  113.     gpu.set(54, 10, string.rep(" ", 26))
  114.     gpu.set(54, 11, string.rep(" ", 26))
  115.     gpu.setForeground(red)
  116.     gpu.set(56, 11, "Create by ")
  117.     gpu.set(71, 11, "Jonik512")
  118.     gpu.set(71, 12, "ReFOiL")
  119.     gpu.setBackground(black)
  120.     gpu.setForeground(white)
  121. end
  122.  
  123. --Очистка экрана при запуске
  124. updateDisplay()
  125.  
  126. --Основной цикл программы
  127. local emptyCount = 0
  128. local slot = 1
  129. local maxSlots = transposer.getInventorySize(4)
  130. while true do
  131.     local stack = transposer.getStackInSlot(4, slot)
  132.     if not stack then
  133.         emptyCount = emptyCount + 1
  134.         if emptyCount >= 8 then
  135.             slot = 1
  136.             emptyCount = 0
  137.         else
  138.             slot = slot + 1
  139.             if slot > maxSlots then slot - 1 end
  140.         end
  141.     else
  142.         emptyCount = 0
  143.         --Проверяем на зачарования
  144.         if stack.enchantments and #stack.enchantments > 0 then
  145.             local targetSlot = findFreeSlot(2)
  146.             if targetSlot then
  147.                 local amount = stack.size
  148.                 if transposer.transferItem(4, 2, amount, slot, targetSlot) then
  149.                     stats.charms = stats.charms + amount
  150.                     updateDisplay()
  151.                 end
  152.             end
  153.         elseif isInEastItems(stack.label) then
  154.             local targetSlot = findFreeSlot(5)
  155.             if targetSlot then
  156.                 local amount = stack.size
  157.                 if transposer.transferItem(4, 5, amount, slot, targetSlot) then
  158.                     stats.system = stats.system + amount
  159.                     updateDisplay()
  160.                 end
  161.             end
  162.         else
  163.             local targetSlot = findFreeSlot(3)
  164.                 if targetSlot then
  165.                     local amount = stack.size
  166.                     if transposer.transferItem(4, 3, amount, slot, targetSlot) then
  167.                         stats.trash = stats.trash + amount
  168.                         updateDisplay()
  169.                     end
  170.                 end
  171.         end
  172.         slot = slot + 1
  173.         if slot > maxSlots then slot = 1 end
  174.     end
  175.     os. sleep(10)
  176. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement