Advertisement
Stawlie0

Untitled

Oct 13th, 2023
822
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 10.69 KB | None | 0 0
  1. require("package").loaded["doublebuffer"] = nil
  2. require("package").loaded["control"] = nil
  3. require("package").loaded["casino"] = nil
  4. require("package").loaded["sgui"] = nil
  5.  
  6. local controlLib = require("control")
  7. local charSpace = ' '
  8.  
  9. local component = require("component")
  10. local unicode = require("unicode")
  11. local Casino = require("casino")
  12. local gui = require("sgui")
  13.  
  14. local gpu = component.gpu
  15. local radar = component.radar
  16. local chatbox = component.chat_box
  17.  
  18. chatbox.setName("§6BAZAR CASINO§7§o")
  19. chatbox.say("§aМодули успешно загружены")
  20.  
  21. local width, height = gpu.getResolution()
  22.  
  23. gpu.setResolution(112,50)
  24.  
  25. local win = {}
  26. --Резервируем места
  27. local function reservWin()
  28.     local x = 10 -- начальная Координата x
  29.     local y = 6  -- начальная координата y
  30.     for i = 1, 63 do
  31.         local id = controlLib.createLabel{
  32.             x = x;
  33.             y = y;
  34.             text = ""
  35.         }
  36.         table.insert(win, id)
  37.         x = x + 36
  38.         if x > 108 then
  39.             x = 10
  40.             y = y+2
  41.         end
  42.     end
  43.     local id = controlLib.createLabel{
  44.         x = 46;
  45.         y = y;
  46.         text = ""
  47.     }
  48.     table.insert(win, id)
  49. end
  50.  
  51. reservWin()
  52.  
  53. local function ClearWin()
  54.     for i = 1, 64 do
  55.         controlLib.updateControl(win[i], {
  56.             text = ""
  57.         })
  58.     end
  59. end
  60.  
  61. local myCasino = Casino:new()
  62.  
  63. myCasino:addItem("&aЖемчуг эндера", "minecraft:ender_pearl", 4, 0.8)
  64. myCasino:addItem("&aСингулярность", "Singularity", 1, 0.8)
  65. myCasino:addItem("&aАпатит", "forestry:apatite", 64, 0.8)
  66. myCasino:addItem("&aКорпус ячейки", "ME Storage Housing", 1, 0.8)
  67. myCasino:addItem("&aУл. Электросхема", "Advanced Circuit", 1, 0.8)
  68. myCasino:addItem("&aЭлектросхема", "Electronic Circuit", 1, 0.8)
  69. myCasino:addItem("&aОбсидиан", "minecraft:obsidian", 32, 0.8)
  70. myCasino:addItem("&aИзумруд", "minecraft:emerald", 16, 0.8)
  71. myCasino:addItem("&aАккумулятор", "contenttweaker:modelbatre", 1, 0.8)
  72.  
  73. myCasino:addItem("&aВычислительный процессор", "Calculation Processor", 2, 0.8)
  74. myCasino:addItem("&aЛогический процессор", "Logic Processor", 2, 0.8)
  75. myCasino:addItem("&aСпекулятивный процессор", "Speculative Processor", 2, 0.8)
  76. myCasino:addItem("&aМассивный процессор", "Massively Parallel Processor", 2, 0.8)
  77. myCasino:addItem("&aИридиевый процессор", "Iridium Processor", 2, 0.8)
  78. myCasino:addItem("&aИнженерный процессор", "Engineering Processor", 2, 0.8)
  79. myCasino:addItem("&aУран 238", "Uranium 238", 1, 0.8)
  80. myCasino:addItem("&aЧасть саннариума", "Sunnarium Part", 1, 0.8)
  81. myCasino:addItem("&aПасека", "forestry:apiary", 1, 0.8)
  82.  
  83. myCasino:addItem("&eТрансформатор", "Transformer Upgrade", 1, 0.4)
  84. myCasino:addItem("&eУскоритель", "Overclocker Upgrade", 1, 0.4)
  85. myCasino:addItem("&eСветокамень", "minecraft:glowstone", 8, 0.4)
  86. myCasino:addItem("&eМатерия", "UU-Matter", 8, 0.4)
  87. myCasino:addItem("&eИридий", "Iridium Ore", 1, 0.4)
  88. myCasino:addItem("&eМаточное молочко", "forestry:royal_jelly", 8, 0.4)
  89. myCasino:addItem("&eУрановая руда", "Uranium Ore", 16, 0.4)
  90. myCasino:addItem("&eРезонирующий набор", "thermalfoundation:upgrade", 2, 0.4)
  91. myCasino:addItem("&eПанель 2-го уровня", "Low Voltage Solar Array", 1, 0.4)
  92.  
  93. myCasino:addItem("&bПромышленная пасека", "gendustry:industrial_apiary", 1, 0.3)
  94. myCasino:addItem("&bБлок Угля", "minecraft:coal_block", 64, 0.3)
  95. myCasino:addItem("&bКиноварь", "Cinnabar", 64, 0.3)
  96. myCasino:addItem("&bАметист", "contenttweaker:amethyst", 4, 0.3)
  97. myCasino:addItem("&bЯйцо дракона", "minecraft:dragon_egg", 1, 0.3)
  98. myCasino:addItem("&bБлок Платины", "thermalfoundation:storage", 32, 0.3)
  99. myCasino:addItem("&bБлок Изумрудов", "minecraft:emerald_block", 64, 0.3)
  100. myCasino:addItem("&bПанель 3-го уровня", "Medium Voltage Solar Array", 1, 0.3)
  101.  
  102. myCasino:addItem("&dЭнергетическая капля", "Energy Drop", 16, 0.2)
  103. myCasino:addItem("&dСовершенная материя", "ic2stuff:pf_matter", 2, 0.2)
  104. myCasino:addItem("&dПлутоний", "Plutonium", 8, 0.2)
  105. myCasino:addItem("&dНано нагрудник", "Advanced NanoChestplate", 1, 0.2)
  106. myCasino:addItem("&dПыль Синерии", "tllod:material", 8, 0.2)
  107. myCasino:addItem("&dУлучшение Производство", "Production Upgrade", 4, 0.2)
  108. myCasino:addItem("&dПанель 5-го уровня", "Advanced Solar Panel", 1, 0.2)
  109.  
  110. myCasino:addItem("&9Панель 6-го уровня", "Ultimate Hybrid Solar Panel", 1, 0.15)
  111. myCasino:addItem("&9Панель 7-го уровня", "Hybrid Solar Panel", 1, 0.15)
  112. myCasino:addItem("&9Топор виверны", "draconicevolution:wyvern_axe", 1, 0.15)
  113. myCasino:addItem("&9Кирка Виверны", "draconicevolution:wyvern_pick", 1, 0.15)
  114. myCasino:addItem("&9Виверновый нагрудник", "draconicevolution:wyvern_chest", 1, 0.15)
  115. myCasino:addItem("&9Виверновые поножи", "draconicevolution:wyvern_legs", 1, 0.15)
  116. myCasino:addItem("&9Виверновые болитинки", "draconicevolution:wyvern_boots", 1, 0.15)
  117. myCasino:addItem("&9Виверновый шлем", "draconicevolution:wyvern_helm", 1, 0.15)
  118. myCasino:addItem("&9Сердце дракона", "draconicevolution:dragon_heart", 1, 0.15)
  119.  
  120. myCasino:addItem("&6Поножи дракона", "draconicevolution:draconic_legs", 1, 0.05)
  121. myCasino:addItem("&6Шлем дракона", "draconicevolution:draconic_helm", 1, 0.05)
  122. myCasino:addItem("&6Панель 8-го уровня", "Quantum Solar Panel", 1, 0.05)
  123. myCasino:addItem("&6Ботинки дракона", "draconicevolution:draconic_boots", 1, 0.05)
  124. myCasino:addItem("&6Контейнер для кибер-пчел III", "contenttweaker:bees_container_t3", 1, 0.05)
  125. myCasino:addItem("&6Пробужденное ядро", "draconicevolution:awakened_core", 1, 0.05)
  126. myCasino:addItem("&6Звезда ада", "minecraft:nether_star", 32, 0.05)
  127. myCasino:addItem("&6Кирка дракона", "draconicevolution:draconic_pick", 1, 0.05)
  128.  
  129. myCasino:addItem("&cКвантовый генератор", "Quantum Generator", 1, 0.01)
  130. myCasino:addItem("&cНагрудник дракона", "draconicevolution:draconic_chest", 1, 0.01)
  131. myCasino:addItem("&cКвантовая кирка", "apex:quantum_pickaxe", 1, 0.01)
  132. myCasino:addItem("&cКибернетическая пасека", "modularmachinery:cybernetic_apiary_controller", 1, 0.01)
  133. myCasino:search_transposers()
  134. --myCasino:get_list()
  135.  
  136. controlLib.drawAll()
  137. --myCasino:displayItems()
  138.  
  139. local function chatMessageHandler()
  140.     while true do
  141.         local _, address, nick, msg = event.pull(0.1, "chat_message")
  142.         if msg then
  143.             local command = msg:match("^(@%w+)")
  144.             local args = {}
  145.             for arg in msg:gmatch("%s(%S+)") do
  146.                 table.insert(args, arg)
  147.             end
  148.  
  149.             if nick == "Stawlie_" then
  150.                 if command == "@try" then
  151.                     -- ваш код для обработки команды @try
  152.                    
  153.                 elseif command == "@off" then
  154.                         os.exit()
  155.                        
  156.                 elseif command == "@add" then
  157.                    
  158.                 end
  159.             else
  160.                 if command == "@help" then
  161.                    
  162.                 elseif command == "@list" then
  163.                    
  164.                 end
  165.             end
  166.         end
  167.     end
  168. end
  169.  
  170. thread.create(chatMessageHandler)
  171.  
  172. local colors = { {0xFF0000, 0x0000FF}, {0x0000FF, 0x00FF00}, {0x00FF00, 0xFF0000} }
  173. local indexColorGradient = 1
  174.  
  175. while true do
  176.     gui.drawMain("[Casino BAZAR]", 0.3, colors[indexColorGradient][1], colors[indexColorGradient][2])
  177.    
  178.     indexColorGradient = indexColorGradient % #colors + 1
  179.    
  180.     local money = myCasino:SearchMoney()
  181.     local rewardsList = {}
  182.     local itemCounts = {} -- Добавленная таблица для суммирования предметов
  183.  
  184.     if money then
  185.         myCasino:sendMoney(money)
  186.         chatbox.say("§6Баланс пополнен на §a$" .. money)
  187.         for i = 1, 64 do
  188.             controlLib.updateControl(win[i], {
  189.                 text = string.rep(" ", 36),
  190.             })
  191.         end
  192.         controlLib.drawAll()
  193.        
  194.         for i = 1, money do
  195.             local reward = myCasino:weightedRoll()
  196.             local displayName = string.gsub(reward.name, "&", "§", 1)
  197.  
  198.             component.proxy(reward.address).transferItem(0, 1, reward.count, reward.slot, i)
  199.            
  200.             local secondChar = string.sub(reward.name, 2, 2)
  201.             local modifiedString = string.sub(reward.name, 3)
  202.            
  203.             if reward and reward.name and reward.count then
  204.                 -- Суммируем количество одинаковых предметов и сохраняем шанс
  205.                 if itemCounts[displayName] then
  206.                     itemCounts[displayName].count = itemCounts[displayName].count + reward.count
  207.                 else
  208.                     itemCounts[displayName] = {count = reward.count, chance = reward.chance}
  209.                 end
  210.             end
  211.             controlLib.updateControl(win[i], {
  212.                 text = modifiedString,
  213.                 foreColor = gui.colors[secondChar],
  214.             })
  215.             controlLib.drawAll()
  216.             os.sleep(0.5)
  217.         end
  218.  
  219.         -- Создаем список для отсортированных результатов
  220.         for name, data in pairs(itemCounts) do
  221.             table.insert(rewardsList, {name = name, count = data.count, chance = data.chance})
  222.         end
  223.        
  224.         table.sort(rewardsList, function(a, b) return a.chance < b.chance end)
  225.        
  226.         local results = {}
  227.         for _, item in ipairs(rewardsList) do
  228.             table.insert(results, item.name .. ": " .. item.count .. "x")
  229.         end
  230.         local resultString = "\n" .. table.concat(results, "\n")
  231.         chatbox.say(resultString)        
  232.     end
  233.     computer.pullSignal(3)
  234. end
  235.  
  236. --Проблемы
  237. --Если существует 2 одинаковых предмета, например камень с шансом 0.3 и камень с шансом 0.2, алгоритм записывает адрес только первого камня, который попадется в списке
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement