Advertisement
Stawlie0

Untitled

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