Stawlie0

Untitled

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