Stawlie0

Untitled

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