ETvd

EMC sender

Jan 9th, 2024
11
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local monitor = peripheral.wrap("left")
  2. local chest = peripheral.wrap("right")
  3. local modemSide = "back"
  4. local targetID = 5296
  5.  
  6. local itemAliases = {
  7. ["projecte:item.pe_matter"] = "Red Matter",
  8. ["projecte:rm_furnace"] = "RM Furnace",
  9. ["projecte:matter_block"] = "RM Block"
  10. }
  11.  
  12. local function getItemAlias(itemName)
  13. return itemAliases[itemName] or itemName
  14. end
  15.  
  16. local function formatEMCValue(emc)
  17. local billion = emc / 1000000000
  18. return string.format("%.2fB", billion)
  19. end
  20.  
  21. local function getEMCValue(itemName, itemCount)
  22. local emcValue = 0
  23.  
  24. if itemName == "Red Matter" then
  25. emcValue = itemCount * 466944
  26. elseif itemName == "RM Furnace" then
  27. emcValue = itemCount * 10059784
  28. elseif itemName == "RM Block" then
  29. emcValue = itemCount * 1867776
  30. end
  31.  
  32. return emcValue
  33. end
  34.  
  35. local function getItemsWithPrefix(prefix, items)
  36. local filteredItems = {}
  37.  
  38. for slot, item in pairs(items) do
  39. local itemName = item.name
  40. if string.sub(itemName, 1, #prefix) == prefix then
  41. local alias = getItemAlias(itemName)
  42. local itemCount = item.count or 0 -- Make sure itemCount exists, default to 0 if not
  43. local emc = getEMCValue(alias, itemCount)
  44. table.insert(filteredItems, { name = alias, count = itemCount, emc = emc })
  45. end
  46. end
  47.  
  48. return filteredItems
  49. end
  50.  
  51. while true do
  52. monitor.clear()
  53. monitor.setBackgroundColor(colors.black)
  54. monitor.setTextColor(colors.red)
  55. monitor.setCursorPos(1, 1)
  56. monitor.write("Chest Contents")
  57.  
  58. rednet.open(modemSide)
  59.  
  60. -- Calculate total EMC value
  61. local totalEMC = 0
  62. local items = chest.list()
  63. local filteredItems = getItemsWithPrefix("projecte:", items)
  64.  
  65. for _, item in ipairs(filteredItems) do
  66. totalEMC = totalEMC + item.emc
  67. end
  68.  
  69. -- Display total EMC value
  70. monitor.setCursorPos(1, 3)
  71. monitor.write("Total EMC: " .. formatEMCValue(totalEMC))
  72.  
  73. -- Send total EMC value via Rednet
  74. rednet.send(targetID, totalEMC)
  75.  
  76. rednet.close(modemSide)
  77.  
  78. local row = 5 -- İlk öğenin yazılacağı satır numarası
  79.  
  80. -- Display individual item details
  81. for _, item in ipairs(filteredItems) do
  82. monitor.setCursorPos(1, row)
  83. monitor.write(item.name .. ": " .. item.count)
  84. row = row + 1 -- Bir sonraki öğe için satır numarasını arttır
  85. monitor.setCursorPos(1, row)
  86. monitor.write("EMC: " .. formatEMCValue(item.emc))
  87. row = row + 2 -- Bir sonraki öğe için boş bir satır bırak
  88. end
  89.  
  90. sleep(3)
  91. end
  92.  
Add Comment
Please, Sign In to add comment