Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require("package").loaded["doublebuffer"] = nil
- require("package").loaded["control"] = nil
- require("package").loaded["casino"] = nil
- require("package").loaded["sgui"] = nil
- local controlLib = require("control")
- local charSpace = ' '
- local component = require("component")
- local computer = require("computer")
- local event = require("event")
- local unicode = require("unicode")
- local thread = require("thread")
- local Casino = require("casino")
- local gui = require("sgui")
- local gpu = component.gpu
- local radar = component.radar
- local chatbox = component.chat_box
- chatbox.setName("§6BAZAR CASINO§7§o")
- chatbox.say("§aМодули успешно загружены")
- local width, height = gpu.getResolution()
- gpu.setResolution(112,50)
- local win = {}
- --Резервируем места
- local function reservWin()
- local x = 10 -- начальная Координата x
- local y = 6 -- начальная координата y
- for i = 1, 63 do
- local id = controlLib.createLabel{
- x = x;
- y = y;
- text = ""
- }
- table.insert(win, id)
- x = x + 36
- if x > 108 then
- x = 10
- y = y+2
- end
- end
- local id = controlLib.createLabel{
- x = 46;
- y = y;
- text = ""
- }
- table.insert(win, id)
- end
- reservWin()
- local function ClearWin()
- for i = 1, 64 do
- controlLib.updateControl(win[i], {
- text = ""
- })
- end
- end
- local function saveToFile(filename, data)
- local file = io.open(filename, "w")
- if file then
- file:write(serialization.serialize(data))
- file:close()
- else
- error("Не удалось открыть файл для записи!")
- end
- end
- local function loadFromFile(filename)
- local file = io.open(filename, "r")
- if file then
- local data = file:read("*a")
- file:close()
- return serialization.unserialize(data)
- else
- error("Не удалось открыть файл для чтения!")
- end
- end
- local myCasino = Casino:new()
- myCasino:addItem("&aЖемчуг эндера", "minecraft:ender_pearl", 4, 0.8)
- myCasino:addItem("&aСингулярность", "Singularity", 1, 0.8)
- myCasino:addItem("&aАпатит", "forestry:apatite", 64, 0.8)
- myCasino:addItem("&aКорпус ячейки", "ME Storage Housing", 1, 0.8)
- myCasino:addItem("&aУл. Электросхема", "Advanced Circuit", 1, 0.8)
- myCasino:addItem("&aЭлектросхема", "Electronic Circuit", 1, 0.8)
- myCasino:addItem("&aОбсидиан", "minecraft:obsidian", 32, 0.8)
- myCasino:addItem("&aИзумруд", "minecraft:emerald", 16, 0.8)
- myCasino:addItem("&aАккумулятор", "contenttweaker:modelbatre", 1, 0.8)
- myCasino:addItem("&aВычислительный процессор", "Calculation Processor", 2, 0.8)
- myCasino:addItem("&aЛогический процессор", "Logic Processor", 2, 0.8)
- myCasino:addItem("&aСпекулятивный процессор", "Speculative Processor", 2, 0.8)
- myCasino:addItem("&aМассивный процессор", "Massively Parallel Processor", 2, 0.8)
- myCasino:addItem("&aИридиевый процессор", "Iridium Processor", 2, 0.8)
- myCasino:addItem("&aИнженерный процессор", "Engineering Processor", 2, 0.8)
- myCasino:addItem("&aУран 238", "Uranium 238", 1, 0.8)
- myCasino:addItem("&aЧасть саннариума", "Sunnarium Part", 1, 0.8)
- myCasino:addItem("&aПасека", "forestry:apiary", 1, 0.8)
- myCasino:addItem("&eТрансформатор", "Transformer Upgrade", 1, 0.4)
- myCasino:addItem("&eУскоритель", "Overclocker Upgrade", 1, 0.4)
- myCasino:addItem("&eСветокамень", "minecraft:glowstone", 8, 0.4)
- myCasino:addItem("&eМатерия", "UU-Matter", 8, 0.4)
- myCasino:addItem("&eИридий", "Iridium Ore", 1, 0.4)
- myCasino:addItem("&eМаточное молочко", "forestry:royal_jelly", 8, 0.4)
- myCasino:addItem("&eУрановая руда", "Uranium Ore", 16, 0.4)
- myCasino:addItem("&eРезонирующий набор", "thermalfoundation:upgrade", 2, 0.4)
- myCasino:addItem("&eПанель 2-го уровня", "Low Voltage Solar Array", 1, 0.4)
- myCasino:addItem("&bПромышленная пасека", "gendustry:industrial_apiary", 1, 0.3)
- myCasino:addItem("&bБлок Угля", "minecraft:coal_block", 64, 0.3)
- myCasino:addItem("&bКиноварь", "Cinnabar", 64, 0.3)
- myCasino:addItem("&bАметист", "contenttweaker:amethyst", 4, 0.3)
- myCasino:addItem("&bЯйцо дракона", "minecraft:dragon_egg", 1, 0.3)
- myCasino:addItem("&bБлок Платины", "thermalfoundation:storage", 32, 0.3)
- myCasino:addItem("&bБлок Изумрудов", "minecraft:emerald_block", 64, 0.3)
- myCasino:addItem("&bПанель 3-го уровня", "Medium Voltage Solar Array", 1, 0.3)
- myCasino:addItem("&dЭнергетическая капля", "Energy Drop", 16, 0.2)
- myCasino:addItem("&dСовершенная материя", "ic2stuff:pf_matter", 2, 0.2)
- myCasino:addItem("&dПлутоний", "Plutonium", 8, 0.2)
- myCasino:addItem("&dНано нагрудник", "Advanced NanoChestplate", 1, 0.2)
- myCasino:addItem("&dПыль Синерии", "tllod:material", 8, 0.2)
- myCasino:addItem("&dУлучшение Производство", "Production Upgrade", 4, 0.2)
- myCasino:addItem("&dПанель 5-го уровня", "Advanced Solar Panel", 1, 0.2)
- myCasino:addItem("&9Панель 6-го уровня", "Ultimate Hybrid Solar Panel", 1, 0.15)
- myCasino:addItem("&9Топор виверны", "draconicevolution:wyvern_axe", 1, 0.15)
- myCasino:addItem("&9Кирка Виверны", "draconicevolution:wyvern_pick", 1, 0.15)
- myCasino:addItem("&9Виверновый нагрудник", "draconicevolution:wyvern_chest", 1, 0.15)
- myCasino:addItem("&9Виверновые поножи", "draconicevolution:wyvern_legs", 1, 0.15)
- myCasino:addItem("&9Виверновые болитинки", "draconicevolution:wyvern_boots", 1, 0.15)
- myCasino:addItem("&9Виверновый шлем", "draconicevolution:wyvern_helm", 1, 0.15)
- myCasino:addItem("&9Сердце дракона", "draconicevolution:dragon_heart", 1, 0.15)
- myCasino:addItem("&9Панель 7-го уровня", "Hybrid Solar Panel", 1, 0.10)
- myCasino:addItem("&6Поножи дракона", "draconicevolution:draconic_legs", 1, 0.05)
- myCasino:addItem("&6Шлем дракона", "draconicevolution:draconic_helm", 1, 0.05)
- myCasino:addItem("&6Панель 8-го уровня", "Quantum Solar Panel", 1, 0.05)
- myCasino:addItem("&6Ботинки дракона", "draconicevolution:draconic_boots", 1, 0.05)
- myCasino:addItem("&6Контейнер для кибер-пчел III", "contenttweaker:bees_container_t3", 1, 0.05)
- myCasino:addItem("&6Пробужденное ядро", "draconicevolution:awakened_core", 1, 0.05)
- myCasino:addItem("&6Звезда ада", "minecraft:nether_star", 32, 0.05)
- myCasino:addItem("&6Кирка дракона", "draconicevolution:draconic_pick", 1, 0.05)
- myCasino:addItem("&cКвантовый генератор", "Quantum Generator", 1, 0.01)
- myCasino:addItem("&cНагрудник дракона", "draconicevolution:draconic_chest", 1, 0.01)
- myCasino:addItem("&cКвантовая кирка", "apex:quantum_pickaxe", 1, 0.01)
- myCasino:addItem("&cКибернетическая пасека", "modularmachinery:cybernetic_apiary_controller", 1, 0.01)
- myCasino:search_transposers()
- --myCasino:get_list()
- controlLib.drawAll()
- --myCasino:displayItems()
- local function mainCasino(money)
- local rewardsList = {}
- local itemCounts = {}
- myCasino:sendMoney(money)
- chatbox.say("§6Баланс пополнен на §a$" .. money)
- for i = 1, 64 do
- controlLib.updateControl(win[i], {
- text = string.rep(" ", 36),
- })
- end
- controlLib.drawAll()
- for i = 1, money do
- local reward = myCasino:weightedRoll()
- local displayName = string.gsub(reward.name, "&", "§", 1)
- component.proxy(reward.address).transferItem(0, 1, reward.count, reward.slot, i)
- local secondChar = string.sub(reward.name, 2, 2)
- local modifiedString = string.sub(reward.name, 3)
- if reward and reward.name and reward.count then
- -- Суммируем количество одинаковых предметов и сохраняем шанс
- if itemCounts[displayName] then
- itemCounts[displayName].count = itemCounts[displayName].count + reward.count
- else
- itemCounts[displayName] = {count = reward.count, chance = reward.chance}
- end
- end
- controlLib.updateControl(win[i], {
- text = modifiedString,
- foreColor = gui.colors[secondChar],
- })
- controlLib.drawAll()
- os.sleep(0.5)
- end
- -- Создаем список для отсортированных результатов
- for name, data in pairs(itemCounts) do
- table.insert(rewardsList, {name = name, count = data.count, chance = data.chance})
- end
- table.sort(rewardsList, function(a, b) return a.chance < b.chance end)
- local results = {}
- for _, item in ipairs(rewardsList) do
- table.insert(results, item.name .. ": " .. item.count .. "x")
- end
- local resultString = "\n" .. table.concat(results, "\n")
- chatbox.say(resultString)
- end
- local totalCash = 0
- local permissions = {}
- permissions["Stawlie_"] = true
- permissions["NikkyFreaky"] = true
- local function chatMessageHandler()
- chatbox.say("Модуль чата запущен")
- while true do
- local _, address, nick, msg = event.pull(0.1, "chat_message")
- local words = {}
- local countWords = 0
- if msg then
- msg = string.lower(msg)
- for word in msg:gmatch("%S+") do
- table.insert(words, word)
- countWords = countWords + 1
- end
- if msg == @list then
- myCasino:get_list()
- end
- if permissions[nick] then
- if words[1] == "@try" then
- chatbox.say("§fПопыток: §a§l" .. totalCash)
- elseif words[1] == "@off" then
- chatbox.say("§e§lПерезагружаюсь")
- computer.shutdown(true)
- elseif words[1] == "@add" then
- if words[2] then
- chatbox.say("§с&lПополняю")
- mainCasino(tonumber(words[2]))
- end
- elseif words[1] == "@owner" then
- if words[2] then
- permissions[words[2]] = true
- end
- end
- end
- end
- end
- end
- thread.create(chatMessageHandler)
- local colors = { {0xFF0000, 0x0000FF}, {0x0000FF, 0x00FF00}, {0x00FF00, 0xFF0000} }
- local indexColorGradient = 1
- while true do
- gui.drawMain("[Casino BAZAR]", 0.3, colors[indexColorGradient][1], colors[indexColorGradient][2])
- indexColorGradient = indexColorGradient % #colors + 1
- local money = myCasino:SearchMoney()
- if money then
- totalCash = 0
- mainCasino(money)
- totalCash = totalCash + money
- saveToFile("/try.data", totalCash)
- end
- computer.pullSignal(2)
- end
- --Проблемы
- --Если существует 2 одинаковых предмета, например камень с шансом 0.3 и камень с шансом 0.2, алгоритм записывает адрес только первого камня, который попадется в списке
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement