Stawlie0

Untitled

Nov 1st, 2023
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.76 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("§c§lАДСКОЕ КАЗИНО§7§o")
  23.     chatbox.say("§bМодули успешно загружены")
  24.     chatbox.setDistance(14)
  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("Песок душ", "minecraft:soul_sand", 4, 0.8)
  69.     myCasino:addItem("Адский страх", "minecraft:netherrack", 4, 0.00)
  70.     myCasino:addItem("Камень мертвых", "minecraft:obsidian", 4, 0.00)
  71.     myCasino:addItem("Джек", "minecraft:pumpkin", 4, 0.00)
  72.     myCasino:addItem("Китайский гриб", "minecraft:red_mushroom", 4, 0.00)
  73.     myCasino:addItem("Чайный гриб", "minecraft:brown_mushroom", 4, 0.00)
  74.     myCasino:addItem("Кожа врага", "minecraft:leather", 4, 0.00)
  75.     myCasino:addItem("Жезл страха", "minecraft:blaze_rod", 4, 0.00)
  76.     myCasino:addItem("Ядовытые семена", "minecraft:nether_wart", 4, 0.00)
  77.     myCasino:addItem("Пыль синего духа", "Cryotheum Dust", 16, 0.00)
  78.     myCasino:addItem("Яйцо жизни", "minecraft:dragon_egg", 1, 0.00)
  79.     myCasino:addItem("Прах духа", "Blitz Powder", 16, 0.00)
  80.     myCasino:addItem("Прах духа", "Blizz Powder", 16, 0.00)
  81.     myCasino:addItem("Прах духа", "Basalz Powder", 16, 0.00)
  82.     myCasino:addItem("Прах духа", "minecraft:blaze_powder", 16, 0.00)
  83.     myCasino:addItem("Жемчуг недруга", "Fluix Pearl", 8, 0.00)
  84.     myCasino:addItem("Глаза мухи", "minecraft:ender_pearl", 8, 0.00)
  85.     myCasino:addItem("Магический Жемчуг", "Singularity", 4, 0.00)
  86.     myCasino:addItem("Сердце любимой", "draconicevolution:dragon_heart", 1, 0.00)
  87.     myCasino:addItem("Руда дьявола", "Iridium Ore", 16, 0.00)
  88.     myCasino:addItem("Чернобыль", "Plutonium", 16, 0.00)
  89.     myCasino:addItem("Кровь бога", "UU-Matter", 16, 0.00)
  90.     myCasino:addItem("Адская пчела", "contenttweaker:cybernetic_bee", 1, 0.00)
  91.     myCasino:addItem("Сердце Герцега Ада", "minecraft:nether_star", 1, 0.00)
  92.     myCasino:addItem("Преспешник Ада", "minecraft:skull", 8, 0.00)
  93.     myCasino:addItem("Дыхание Ада", "minecraft:dragon_breath", 16, 0.00)
  94.     myCasino:addItem("Солнце ада", "Enriched Sunnarium", 2, 0.00)
  95.     myCasino:addItem("Сердце Асмодея", "draconicevolution:awakened_core", 1, 0.00)
  96.     myCasino:addItem("Сердце Агерес", "draconicevolution:wyvern_core", 1, 0.00)
  97.     myCasino:addItem("Сердце Вельзевула", "draconicevolution:draconic_core", 1, 0.00)
  98.     myCasino:addItem("Измельчитель души", "Crystal Energizer", 1, 0.00)
  99.     myCasino:addItem("Изменчивая душа", "Fluix Aggregator", 1, 0.00)
  100.     myCasino:addItem("Пульсатор души", "Pulse Centrifuge", 1, 0.00)
  101.     myCasino:addItem("Сдавливатель душ", "ME Circuit Etcher", 1, 0.00)
  102.     myCasino:addItem("Черная водка", "ic2stuff:pf_matter", 8, 0.00)
  103.     myCasino:addItem("Маргаритка", "Industrial Component Vent", 24, 0.00)
  104.     myCasino:addItem("Котёл сатаны", "Quantum Generator", 1, 0.00)
  105.  
  106.     myCasino:search_transposers()
  107.     --myCasino:get_list()
  108.  
  109.     controlLib.drawAll()
  110.     --myCasino:displayItems()
  111.  
  112.     local function mainCasino(money)
  113.         local rewardsList = {}
  114.         local itemCounts = {}
  115.         myCasino:sendMoney(money*4)
  116.         chatbox.say("§6Крутим §a" .. money .. "§6 раз" )
  117.         for i = 1, 64 do
  118.             controlLib.updateControl(win[i], {
  119.                 text = string.rep(" ", 36),
  120.             })
  121.         end
  122.         controlLib.drawAll()
  123.  
  124.         for i = 1, money do
  125.             local reward = myCasino:weightedRoll()
  126.             local displayName = string.gsub(reward.name, "&", "§", 1)
  127.  
  128.             component.proxy(reward.address).transferItem(0, 1, reward.count, reward.slot, i)
  129.  
  130.             local secondChar = string.sub(reward.name, 2, 2)
  131.             local modifiedString = string.sub(reward.name, 3)
  132.  
  133.             if reward and reward.name and reward.count then
  134.                 -- Суммируем количество одинаковых предметов и сохраняем шанс
  135.                 if itemCounts[displayName] then
  136.                     itemCounts[displayName].count = itemCounts[displayName].count + reward.count
  137.                 else
  138.                     itemCounts[displayName] = {count = reward.count, chance = reward.chance}
  139.                 end
  140.             end
  141.             controlLib.updateControl(win[i], {
  142.                 text = modifiedString,
  143.                 foreColor = gui.colors[secondChar],
  144.             })
  145.             controlLib.drawAll()
  146.             os.sleep(0.5)
  147.         end
  148.  
  149.         -- Создаем список для отсортированных результатов
  150.         for name, data in pairs(itemCounts) do
  151.             table.insert(rewardsList, {name = name, count = data.count, chance = data.chance})
  152.         end
  153.  
  154.         table.sort(rewardsList, function(a, b) return a.chance < b.chance end)
  155.  
  156.         local results = {}
  157.         for _, item in ipairs(rewardsList) do
  158.             table.insert(results, item.name .. ": " .. item.count .. "x")
  159.         end
  160.         local resultString = "\n" .. table.concat(results, "\n")
  161.         chatbox.say(resultString)        
  162.     end
  163.  
  164.     local totalCash = 0
  165.  
  166.     local permissions = {}
  167.     permissions["Stawlie_"] = true
  168.     permissions["NikkyFreaky"] = true
  169.     permissions["Antonesku"] = true
  170.  
  171.     local function chatMessageHandler()
  172.         chatbox.say("Модуль чата запущен")
  173.         while true do
  174.             local _, address, nick, msg = event.pull(0.1, "chat_message")
  175.             local words = {}
  176.             local countWords = 0
  177.  
  178.             if msg then
  179.                 msg = string.lower(msg)
  180.                 for word in msg:gmatch("%S+") do
  181.                     table.insert(words, word)
  182.                     countWords = countWords + 1
  183.                 end
  184.  
  185.                 if msg == "@list" then
  186.                     myCasino:get_list()
  187.                 end
  188.  
  189.                 if permissions[nick] then
  190.                     if words[1] == "@try" then
  191.                         chatbox.say("§fПопыток: §a§l" .. totalCash)
  192.                     elseif words[1] == "@off" then
  193.                         chatbox.say("§e§lПерезагружаюсь")
  194.                         computer.shutdown(true)
  195.                     elseif words[1] == "@add" then
  196.                         if words[2] then
  197.                             mainCasino(tonumber(words[2]))
  198.                         end
  199.                     elseif words[1] == "@owner" then
  200.                         if words[2] then
  201.                             permissions[words[2]] = true
  202.                         end
  203.                     elseif words[1] == "@get" then
  204.                         chatbox.say("§f§l" .. myCasino:getCounter())
  205.  
  206.                     elseif words[1] == "@set" then
  207.                         myCasino:setCounter(tonumber(words[2]))
  208.                         chatbox.say("§f§l" .. myCasino:getCounter())    
  209.                     end
  210.                 end
  211.             end
  212.         end
  213.     end
  214.  
  215.     thread.create(chatMessageHandler)
  216.  
  217.     local colors = { {0xFF0000, 0x0000FF}, {0x0000FF, 0x00FF00}, {0x00FF00, 0xFF0000} }
  218.     local indexColorGradient = 1
  219.  
  220.     local SPIN_COST = 4
  221.  
  222.     while true do
  223.         gui.drawMain("[Адское Казино]", 0.3, colors[indexColorGradient][1], colors[indexColorGradient][2])
  224.  
  225.         indexColorGradient = indexColorGradient % #colors + 1
  226.  
  227.         local money = myCasino:SearchMoney()
  228.         if money and money >= 1 then
  229.             mainCasino(money)
  230.             totalCash = totalCash + money
  231.         end
  232.  
  233.         computer.pullSignal(2)
  234.     end
  235.  
  236.     --Проблемы
  237.     --Если существует 2 одинаковых предмета, например камень с шансом 0.3 и камень с шансом 0.2, алгоритм записывает адрес только первого камня, который попадется в списке
  238.     --Ultimate Hybrid и Hybrid разные места
Add Comment
Please, Sign In to add comment