Advertisement
Stawlie0

Untitled

Oct 15th, 2023
580
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 12.90 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("&fАккумулятор", "contenttweaker:modelbatre", 1, 0.99)
  68.     myCasino:addItem("&fЭнергетический кристалл", "contenttweaker:modelbatcrystal", 1, 0.99)
  69.     myCasino:addItem("&f8-битный чип", "contenttweaker:chip_8bit", 1, 0.99)
  70.     myCasino:addItem("&fФрагметное завихрение", "contenttweaker:blakk_vw", 1, 0.99)
  71.     myCasino:addItem("&fУглепластик", "Carbon Plate", 1, 0.99)
  72.     myCasino:addItem("&fКомпозит", "Advanced Alloy", 1, 0.99)
  73.     myCasino:addItem("&fЭлектросхема", "Electronic Circuit", 1, 0.99)
  74.     myCasino:addItem("&fУлучшенная Электросхема", "Advanced Circuit", 1, 0.99)
  75.     myCasino:addItem("&fОбсидиан", "minecraft:obsidian", 32, 0.99)
  76.    
  77.     myCasino:addItem("&bЛогический процессор", "Logic Processor", 1, 0.4)
  78.     myCasino:addItem("&bЛазуротроновый Кристалл", "contenttweaker:modelbatlamacrystal", 1, 0.4)
  79.     myCasino:addItem("&b16-битный чип", "contenttweaker:chip_16bit", 1, 0.4)
  80.     myCasino:addItem("&bУскоритель", "Overclocker Upgrade", 1, 0.4)
  81.     myCasino:addItem("&bТрансформатор", "Transformer Upgrade", 1, 0.4)
  82.     myCasino:addItem("&bПанель 2-го уровня", "Low Voltage Solar Array", 1, 0.4)
  83.     myCasino:addItem("&bИридиевая руда", "Iridium Ore", 1, 0.4)
  84.     myCasino:addItem("&bЭндер-Жемчуг", "minecraft:ender_pearl", 16, 0.4)
  85.     myCasino:addItem("&bРэдстоуновая руда", "minecraft:redstone_ore", 48, 0.4)
  86.    
  87.     myCasino:addItem("&bФлаксовый разъем", "fluxnetworks:fluxplug", 1, 0.4)
  88.     myCasino:addItem("&bФлаксовый контроллер", "fluxnetworks:fluxcontroller", 1, 0.4)
  89.     myCasino:addItem("&b32-битный чип", "contenttweaker:chip_32bit", 1, 0.4)
  90.     myCasino:addItem("&bЗавихрение Виверны", "contenttweaker:drei_vw", 1, 0.4)
  91.     myCasino:addItem("&bАметист", "contenttweaker:amethyst", 1, 0.4)
  92.     myCasino:addItem("&bНуклеус Виверны", "contenttweaker:vyverncore_vw", 1, 0.4)
  93.     myCasino:addItem("&bЯдро Дракона", "draconicevolution:draconic_core", 1, 0.4)
  94.     myCasino:addItem("&bПлутоний", "Plutonium", 4, 0.4)
  95.     myCasino:addItem("&bЯйцо Дракона", "minecraft:dragon_egg", 1, 0.4)
  96.    
  97.     myCasino:addItem("&dФлакс Точка", "fluxnetworks:fluxpoint", 1, 0.2)
  98.     myCasino:addItem("&dФлаксобур Основной", "Fluxbore (Basic)", 1, 0.2)
  99.     myCasino:addItem("&dСовершенная материя", "ic2stuff:pf_matter", 1, 0.2)
  100.     myCasino:addItem("&dНановолоконный шлем", "ic2:nano_helmet", 1, 0.2)
  101.     myCasino:addItem("&dНановолоконный Жилет", "ic2:nano_chestplate", 1, 0.2)
  102.     myCasino:addItem("&dНановолоконный Поножи", "ic2:nano_leggings", 1, 0.2)
  103.     myCasino:addItem("&dНановолоконный Ботинки", "ic2:nano_boots", 1, 0.2)
  104.     myCasino:addItem("&dПереносная ячейка", "appliedenergistics2:portable_cell", 1, 0.2)
  105.     myCasino:addItem("&dЗвезда Ада", "minecraft:nether_star", 1, 0.2)
  106.    
  107.     myCasino:addItem("&dПанель 3-го уровня", "Medium Voltage Solar Array", 1, 0.2)
  108.     myCasino:addItem("&dФлаксобур Резонирующий", "Fluxbore (Resonant)", 1, 0.2)
  109.     myCasino:addItem("&d64-битный чип", "contenttweaker:chip_64bit", 1, 0.2)
  110.     myCasino:addItem("&dЗавихрение Дракона", "contenttweaker:vier_vw", 1, 0.2)
  111.     myCasino:addItem("&dНановолоконный нагрудник", "gravisuite:advancednanochestplate", 1, 0.2)
  112.     myCasino:addItem("&dНуклеус Дракона", "contenttweaker:dragoncore_vw", 1, 0.2)
  113.     myCasino:addItem("&dЯдро Виверны", "draconicevolution:wyvern_core", 1, 0.2)
  114.     myCasino:addItem("&dПыль Синерия", "Synerium Dust", 16, 0.2)
  115.     myCasino:addItem("&dСердце Дракона", "draconicevolution:dragon_heart", 1, 0.2)
  116.    
  117.     myCasino:addItem("&cКонденсатор Виверны", "Wyvern Flux Capacitor", 1, 0.1)
  118.     myCasino:addItem("&cМеч Виверны", "draconicevolution:wyvern_sword", 1, 0.1)
  119.     myCasino:addItem("&cЛук Виверны", "draconicevolution:wyvern_bow", 1, 0.1)
  120.     myCasino:addItem("&cКирка Виверны", "draconicevolution:wyvern_pick", 1, 0.1)
  121.     myCasino:addItem("&cТопор Виверны", "draconicevolution:wyvern_axe", 1, 0.1)
  122.     myCasino:addItem("&cШлем Виверны", "draconicevolution:wyvern_helm", 1, 0.1)
  123.     myCasino:addItem("&cНагрудник Виверны", "draconicevolution:wyvern_chest", 1, 0.1)
  124.     myCasino:addItem("&cПоножи Виверны", "draconicevolution:wyvern_legs", 1, 0.1)
  125.     myCasino:addItem("&cБотинки Виверны", "draconicevolution:wyvern_boots", 1, 0.1)
  126.    
  127.     myCasino:addItem("&4Конденсатор Дракона", "Draconic Flux Capacitor", 1, 0.03)
  128.     myCasino:addItem("&4Меч Дракона", "draconicevolution:draconic_sword", 1, 0.03)
  129.     myCasino:addItem("&4Лук Дракона", "draconicevolution:draconic_bow", 1, 0.03)
  130.     myCasino:addItem("&4Кирка Дракона", "draconicevolution:draconic_pick", 1, 0.03)
  131.     myCasino:addItem("&4Топор Дракона", "draconicevolution:draconic_axe", 1, 0.03)
  132.     myCasino:addItem("&4Шлем Дракона", "draconicevolution:draconic_helm", 1, 0.03)
  133.     myCasino:addItem("&4Поножи Дракона", "draconicevolution:draconic_legs", 1, 0.03)
  134.     myCasino:addItem("&4Ботинки Дракона", "draconicevolution:draconic_boots", 1, 0.03)
  135.     myCasino:addItem("&4Ядро Дракона", "draconicevolution:awakened_core", 1, 0.03)
  136.    
  137.     myCasino:addItem("&6Квантовая Кирка", "apex:quantum_pickaxe", 1, 0.01)
  138.     myCasino:addItem("&6Квантовый Генератор", "Quantum Generator", 1, 0.01)
  139.     myCasino:addItem("&6Нагрудник Дракона", "draconicevolution:draconic_chest", 1, 0.01)
  140.    
  141.     myCasino:search_transposers()
  142.     --myCasino:get_list()
  143.    
  144.     controlLib.drawAll()
  145.     --myCasino:displayItems()
  146.    
  147.     local function mainCasino(money)
  148.         local rewardsList = {}
  149.         local itemCounts = {}
  150.         myCasino:sendMoney(money*4)
  151.         chatbox.say("§6Крутим §a" .. money .. "§6 раз" )
  152.         for i = 1, 64 do
  153.             controlLib.updateControl(win[i], {
  154.                 text = string.rep(" ", 36),
  155.             })
  156.         end
  157.         controlLib.drawAll()
  158.    
  159.         for i = 1, money do
  160.             local reward = myCasino:weightedRoll()
  161.             local displayName = string.gsub(reward.name, "&", "§", 1)
  162.    
  163.             component.proxy(reward.address).transferItem(0, 1, reward.count, reward.slot, i)
  164.    
  165.             local secondChar = string.sub(reward.name, 2, 2)
  166.             local modifiedString = string.sub(reward.name, 3)
  167.    
  168.             if reward and reward.name and reward.count then
  169.                 -- Суммируем количество одинаковых предметов и сохраняем шанс
  170.                 if itemCounts[displayName] then
  171.                     itemCounts[displayName].count = itemCounts[displayName].count + reward.count
  172.                 else
  173.                     itemCounts[displayName] = {count = reward.count, chance = reward.chance}
  174.                 end
  175.             end
  176.             controlLib.updateControl(win[i], {
  177.                 text = modifiedString,
  178.                 foreColor = gui.colors[secondChar],
  179.             })
  180.             controlLib.drawAll()
  181.             os.sleep(0.5)
  182.         end
  183.    
  184.         -- Создаем список для отсортированных результатов
  185.         for name, data in pairs(itemCounts) do
  186.             table.insert(rewardsList, {name = name, count = data.count, chance = data.chance})
  187.         end
  188.    
  189.         table.sort(rewardsList, function(a, b) return a.chance < b.chance end)
  190.    
  191.         local results = {}
  192.         for _, item in ipairs(rewardsList) do
  193.             table.insert(results, item.name .. ": " .. item.count .. "x")
  194.         end
  195.         local resultString = "\n" .. table.concat(results, "\n")
  196.         chatbox.say(resultString)        
  197.     end
  198.    
  199.     local totalCash = 0
  200.    
  201.     local permissions = {}
  202.     permissions["Stawlie_"] = true
  203.     permissions["NikkyFreaky"] = true
  204.     permissions["FrameGame"] = true
  205.    
  206.     local function chatMessageHandler()
  207.         chatbox.say("Модуль чата запущен")
  208.         while true do
  209.             local _, address, nick, msg = event.pull(0.1, "chat_message")
  210.             local words = {}
  211.             local countWords = 0
  212.    
  213.             if msg then
  214.                 msg = string.lower(msg)
  215.                 for word in msg:gmatch("%S+") do
  216.                     table.insert(words, word)
  217.                     countWords = countWords + 1
  218.                 end
  219.                
  220.                 if msg == "@list" then
  221.                     myCasino:get_list()
  222.                 end
  223.                
  224.                 if permissions[nick] then
  225.                     if words[1] == "@try" then
  226.                         chatbox.say("§fПопыток: §a§l" .. totalCash)
  227.                     elseif words[1] == "@off" then
  228.                         chatbox.say("§e§lПерезагружаюсь")
  229.                         computer.shutdown(true)
  230.                     elseif words[1] == "@add" then
  231.                         if words[2] then
  232.                             mainCasino(tonumber(words[2]))
  233.                         end
  234.                     elseif words[1] == "@owner" then
  235.                         if words[2] then
  236.                             permissions[words[2]] = true
  237.                         end
  238.                     end
  239.                 end
  240.             end
  241.         end
  242.     end
  243.    
  244.     thread.create(chatMessageHandler)
  245.    
  246.     local colors = { {0xFF0000, 0x0000FF}, {0x0000FF, 0x00FF00}, {0x00FF00, 0xFF0000} }
  247.     local indexColorGradient = 1
  248.    
  249.     local SPIN_COST = 4
  250.    
  251.     while true do
  252.         gui.drawMain("[Casino BAZAR]", 0.3, colors[indexColorGradient][1], colors[indexColorGradient][2])
  253.  
  254.         indexColorGradient = indexColorGradient % #colors + 1
  255.  
  256.         local money = myCasino:SearchMoney()
  257.         if money and money >= 4 then
  258.             local spins = math.floor(money / 4)
  259.             local remainder = money % 4  -- Остаток после вычитания стоимости всех круток
  260.             chatbox.say("§f§lВаш остаток средств §a§l$" .. remainder)
  261.             mainCasino(spins)
  262.             totalCash = totalCash + spins
  263.         end
  264.  
  265.         computer.pullSignal(2)
  266.     end
  267.    
  268.     --Проблемы
  269.     --Если существует 2 одинаковых предмета, например камень с шансом 0.3 и камень с шансом 0.2, алгоритм записывает адрес только первого камня, который попадется в списке
  270.     --Ultimate Hybrid и Hybrid разные места
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement