Advertisement
Stawlie0

Untitled

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