Stawlie0

Untitled

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