Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- pastebin run XbFrPdLE
- local component = require("component")
- local computer=require("computer")
- local event = require("event")
- local term = require("term")
- local shell = require("shell")
- local fs = require("filesystem")
- local unicode= require("unicode")
- local serial = require("serialization")
- local serialization = require('serialization')
- local sky = require("sky")
- local gml = require('gml')
- local utf8 = require('unicode')
- g = component.gpu
- --event.shouldInterrupt = function () return false end
- --------------------Настройки--------------------
- local WIDTH, HEIGHT = 60, 25 --Разрешение моника 146/112 x 42
- H = HEIGHT
- W = WIDTH
- hW = WIDTH/2
- AUTOEXIT = 59 --Автовыход через n сек.
- local PRICE = 16 --Цена одной игры в эмах (Целое число)
- local COLOR1 = 0xffffff --Рамка
- local COLOR2 = 0x0000ff --Цвет кнопок
- local TONE = 600 --Тональность звука
- local RED = 0 --Сторона редстоун блока
- N = 110 --настроение
- lastCollor = 0x0000ff
- isFirst = true
- isActive_1 = false
- ticket_value = 16.00
- count_games = 0
- ---------------------------------------------------
- --Файлик Chest.lua
- --Максимум 27 предметов, иначае спсиок заедет на кнопку, а прокрутку делать лень чота \(^o^)/
- --[1] - Кол-во, [2] - Название, [3] - Шанс, [4] - Цвет, [5] - id:meta
- --Шанс - это сколько раз указанный предмет встретится в списке(Например Земли будет в списке 30шт. Гравик 2 шт. и т.д.)
- print("Запуск программы...")
- file = io.open(shell.getWorkingDirectory() .. "/images.lua", "r")
- images = serial.unserialize("{" .. file:read(9999999) .. "}")
- file:close()
- my_file = io.open(shell.getWorkingDirectory() .. "/loots.lua", "r")
- ITEMS = serial.unserialize("{" .. my_file:read(9999999) .. "}")
- my_file:close()
- SELL_ITEMS ={
- { "minecraft:iron_ingot", 0, 0.2},
- { "ThermalFoundation:material", 64, 0.1},
- { "customnpcs:npcMoney", 0, 1},
- { "dwcity:Vis_materia", 0, 1.5}
- }
- -------------------------------------------------------------------------------------
- local chest_sell = component.proxy("56ca4078-6b53-401c-acc1-e69fe96e5dcd")
- local me_interface_sell = component.proxy("980aa4fb-319a-4472-b511-bec0e2f16ed2")
- local chest_loot = component.proxy("3ce68a6a-bf9b-4a9a-bfc1-afb884370e89")
- local me_interface_loot = component.proxy("22940377-fdcf-430d-992f-1d48596d1531")
- local mid = (WIDTH-32)/2+32
- local login = false
- local timer = 0
- timer_2 = 0
- local items_all = {}
- local summa = 0
- local smile = false
- local summa_money
- g.setResolution(WIDTH, HEIGHT)
- sky.logo("", COLOR1, COLOR2, WIDTH+1, HEIGHT)
- g.setForeground(COLOR2)
- for i = 1, HEIGHT do
- g.set(22, i, "█")
- end
- function drawImage(x,y,img) --Отрисовка картинок
- local back, font = g.getBackground(), g.getForeground()
- local start_x = x
- local image = img
- for i = 1, #image / 2 do
- x = start_x
- for j = 1, #image[i] do
- g.setBackground(image[i * 2 - 1][j])
- g.setForeground(image[i * 2][j])
- g.set(x,y,"▄")
- x = x + 1
- end
- y = y + 1
- end
- g.setBackground(back)
- g.setForeground(font)
- end
- function word(x,y,text,ramka) --Шрифт
- text = unicode.lower(text)
- for i = 1, unicode.len(text) do
- sky.symbol(i*5 -5 + x, y, string.sub(text,i,i), ramka)
- end
- end
- function Login(w,h,nick)
- if w>=7 and w<=24 and h>=16 and h<=17 then -- x x y y (2) поиск нажатия кнопки старт - выход
- if login == false then
- computer.addUser(nick)
- isActive_1 =true
- login = true
- sky.clearR(WIDTH,HEIGHT)
- g.setForeground(COLOR2)
- sky.midL(WIDTH,30,"Добро пожаловать")
- g.setForeground(COLOR1)
- sky.midL(WIDTH,31,nick)
- sky.midL(WIDTH,32,"Недостаточно эмов")
- sky.midL(WIDTH,33,"для покупки кейса:")
- sky.midL(WIDTH,34," [ " .. ticket_value.. " ] ")
- for l = 15, 26 do
- sky.midL(WIDTH,l," ")
- end
- sky.button(7,15,18,3,COLOR1,COLOR2," Выход ")
- sky.button(7,18,18,3,COLOR1,COLOR2," Купить кейс ")
- --Game()
- sky.drawImage(40,12, shell.getWorkingDirectory() .. "/" .. "v2" .. ".lua")
- sky.drawImage(73,19, shell.getWorkingDirectory() .. "/i_2.lua")
- else
- Exit()
- isActive_1 = false
- end
- end
- if w>=7 and w<=24 and h>=19 and h<=20 then -- шансы
- if login == false then
- computer.addUser(nick)
- for l = 15, 26 do
- sky.midL(WIDTH,l," ")
- end
- sky.button(7,15,18,3,COLOR1,COLOR2," Выход ")
- login = true
- sky.clearR(WIDTH,HEIGHT)
- g.setForeground(COLOR2)
- sky.midL(WIDTH,30,"Добро пожаловать")
- --sky.midL(WIDTH,31,"Ваш баланс:")
- --sky.midL(WIDTH,29," ")
- g.setForeground(COLOR1)
- sky.midL(WIDTH,31,nick)
- Game()
- autoExit()
- --Exit()
- end
- end
- if w>=7 and w<=24 and h>=22 and h<=23 then
- if login == false then
- computer.addUser(nick)
- for l = 15, 26 do
- sky.midL(WIDTH,l," ")
- end
- sky.button(7,15,18,3,COLOR1,COLOR2," Выход ")
- login = true
- sky.clearR(WIDTH,HEIGHT)
- g.setForeground(COLOR2)
- sky.midL(WIDTH,30,"Добро пожаловать")
- g.setForeground(COLOR1)
- sky.midL(WIDTH,31,nick)
- sky.midR(WIDTH,12, "mrWhiskasss , пожилой человек 1981 года рождения, гражданин республики Новороссия, ")
- sky.midR(WIDTH,13, "ветеран второй чеченской войны , служил в 17-й Батальонно-тактической группе")
- sky.midR(WIDTH,14, "отдельной мотострелковой бригаде , награжден В. В. Путиным")
- sky.midR(WIDTH,15, "за успешное выполнение поставленных задач - земельным участком (под гараж)")
- sky.midR(WIDTH,16, "На сегодняшний день пенсионер. Соло игрок, как и в жизни, начавший свое развите с 1 сек вайпа,")
- sky.midR(WIDTH,17, "построил казино и весь приват своими руками. Выживает на этом сервере с 2018 года. Мудрый человек,")
- sky.midR(WIDTH,18, "знающийся на ВСЕХ модах. Внимательный, воспитанный, гений, перфекционист, бережливый, карьерист ,")
- sky.midR(WIDTH,19, "трудяга, с виду скользкий но в душе настоящий. Курит мануал, играет на маке, носит шляпу и")
- sky.midR(WIDTH,20, "серый двубортный плащ, рассматривает все предметы через wiki. Ведёт себя уравновешенно,")
- sky.midR(WIDTH,21, "задумчиво и хладнокровно; всегда спокоен и невозмутим; характер общительный, не женат.")
- autoExit()
- end
- end
- if w>=7 and w<=24 and h>=25 and h<=26 then
- if login == false then
- computer.addUser(nick)
- for l = 15, 26 do
- sky.midL(WIDTH,l," ")
- end
- sky.button(7,15,18,3,COLOR1,COLOR2," Выход ")
- login = true
- sky.clearR(WIDTH,HEIGHT)
- g.setForeground(COLOR2)
- sky.midL(WIDTH,30,"Добро пожаловать")
- g.setForeground(COLOR1)
- sky.midL(WIDTH,31,nick)
- sky.midR(WIDTH,3, " Игроки, выбившие предметы:")
- for i = 1, #ITEMS do
- if i==1 then
- g.setForeground(ITEMS[i][4])
- sky.midR(WIDTH,i+5, ITEMS[i][11] .." - Самый везучий человек на этом сервере, сорвал : ".. ITEMS[i][2] )
- elseif i<=7 and i~=1 then
- g.setForeground(ITEMS[i][4])
- sky.midR(WIDTH,i+5, ITEMS[i][11] .. " - Повезло, повезло : ".. ITEMS[i][2] )
- else
- g.setForeground(ITEMS[i][4])
- sky.midR(WIDTH,i+5, ITEMS[i][11] .. " : " .. ITEMS[i][2] )
- end
- end
- g.setForeground(COLOR1)
- autoExit()
- end
- end
- end
- function Check(w,h,nick)
- if w>=7 and w<=24 and h>=19 and h<=20 and isActive_1 then
- g.setForeground(COLOR1)
- computer.beep(TONE, 0.05)
- while timer_2 < 9 do
- sky.midL(WIDTH,35," высовываю ресурсы ")
- os.sleep(0.01)
- sky.midL(WIDTH,35," высовываю ресурсы. ")
- os.sleep(0.01)
- chest_sell.condenseItems() --сортировка борохла
- for slot = 1, chest_sell.getInventorySize() do
- local item = chest_sell.getStackInSlot(slot)
- if item then
- for i = 1, #SELL_ITEMS do
- if item.id == SELL_ITEMS[i][1] and item.dmg == SELL_ITEMS[i][2] then
- for p = 1,item.qty do
- me_interface_sell.pullItem(2, slot,1)
- ticket_value = sky.mathRound((ticket_value - SELL_ITEMS[i][3]),2)
- g.setForeground(COLOR1)
- sky.midL(WIDTH,34," [ " .. ticket_value.. " ] ")
- if ticket_value <= 0 then
- ticket_value = ticket_value + 16
- sky.clearR(WIDTH,HEIGHT)
- Start(nick)
- g.setForeground(COLOR1)
- sky.midL(WIDTH,34," [ " .. ticket_value.. " ] ")
- timer_2 = 0
- return end
- end
- end
- end
- end
- end
- g.setForeground(COLOR1)
- timer_2= timer_2 + 1
- sky.midL(WIDTH,35," высовываю ресурсы.. ")
- os.sleep(0.01)
- sky.midL(WIDTH,35," высовываю ресурсы... ")
- end
- timer_2 = 0
- end
- end
- function autoExit()
- timer = timer - 1
- g.setForeground(COLOR2)
- sky.midL(WIDTH,35, "Авто выход через: ")
- g.setForeground(COLOR1)
- g.set(24, 35, timer .. " ")
- if (smile) then
- sky.midL(WIDTH,29, "( o_0)")
- smile = false
- else
- sky.midL(WIDTH,29, "(0_o )")
- smile = true
- end
- end
- local function exportstring( s )
- return string.format("%q", s)
- end
- function save( tbl,filename,size )
- local tmp_bool = 0
- local charS,charE = " ","\n"
- local file,err = io.open( filename, "wb" )
- local tab_size = size + 1
- if err then return err end
- -- initiate variables for save procedure
- local tables,lookup = { tbl },{ [tbl] = 1 }
- for idx,t in ipairs( tables ) do
- if tmp_bool ~= 0 then
- file:write( "{" )
- end
- local thandled = {}
- for i,v in ipairs( t ) do
- thandled[i] = true
- local stype = type( v )
- -- only handle value
- if stype == "table" then
- if not lookup[v] then
- table.insert( tables, v )
- lookup[v] = #tables
- end
- elseif stype == "string" then
- file:write( charS..exportstring( v ).."," )
- elseif stype == "number" then
- file:write( charS..tostring( v ).."," )
- end
- end
- for i,v in pairs( t ) do
- -- escape handled values
- if (not thandled[i]) then
- local str = ""
- local stype = type( i )
- -- handle index
- if stype == "table" then
- if not lookup[i] then
- table.insert( tables,i )
- lookup[i] = #tables
- end
- str = charS.."[{"..lookup[i].."}]="
- elseif stype == "string" then
- str = charS.."["..exportstring( i ).."]="
- elseif stype == "number" then
- str = charS.."["..tostring( i ).."]="
- end
- if str ~= "" then
- stype = type( v )
- -- handle value
- if stype == "table" then
- if not lookup[v] then
- table.insert( tables,v )
- lookup[v] = #tables
- end
- --file:write( str.."{"..lookup[v].."}," )
- elseif stype == "string" then
- file:write( str..exportstring( v ).."," )
- elseif stype == "number" then
- file:write( str..tostring( v ).."," )
- end
- end
- end
- end
- if tmp_bool ~= 0 then
- file:write( "}")
- end
- tab_size = tab_size - 1
- if tab_size ~= size and tab_size ~= 0 then
- file:write(",")
- else
- end
- if tab_size ~= size then
- file:write(charE )
- end
- tmp_bool =1000
- end
- file:close()
- end
- function autoExit_2()
- timer = timer - 1
- g.setForeground(COLOR2)
- sky.midL(WIDTH,35, "Авто выход через: ")
- g.setForeground(COLOR1)
- g.set(24, 35, timer .. " ")
- if (smile) then
- sky.midL(WIDTH,29, "( o_0)")
- smile = false
- else
- sky.midL(WIDTH,29, "(0_o )")
- smile = true
- end
- end
- function Rules()
- g.setForeground(COLOR1)
- sky.midL(WIDTH,2, " Общая инфа: ")
- sky.midL(WIDTH,3, " Цена кейса - 16 эм ")
- sky.midL(WIDTH,4, " Погода в сервере = "..N)
- --sky.midL(WIDTH,4, " открытых кейсов = "..count_games)
- sky.midL(WIDTH,5, " Также купить кейс ")
- sky.midL(WIDTH,6, " можно за ресурсы ")
- sky.midL(WIDTH,7, " Железо = 0.2 эма ")
- sky.midL(WIDTH,8, " Медь = 0.1 эма ")
- sky.midL(WIDTH,9, " Наличка = 1 эм ")
- sky.midL(WIDTH,10," Вис = 1.5 эма ")
- sky.midL(WIDTH,11," Слево пополнение <-- ")
- sky.midL(WIDTH,12," Справо получение --> ")
- sky.button(7,15,18,3,COLOR1,COLOR2,"Старт")
- sky.button(7,18,18,3,COLOR1,COLOR2,"Шансы")
- sky.button(7,21,18,3,COLOR1,COLOR2,"Об авторе")
- sky.button(7,24,18,3,COLOR1,COLOR2,"Победители")
- sky.midL(WIDTH,27,"▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄")
- sky.midL(WIDTH,14,"▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀")
- end
- function Game()
- g.setForeground(COLOR1)
- sky.midR(WIDTH,3, " Предметы, которые могут выпасть:")
- --sky.button(mid - 15,37,30,3,COLOR1,COLOR2, " Открыть кейс ")
- for i = 1, #ITEMS do
- g.setForeground(ITEMS[i][4])
- sky.midR(WIDTH,i+5, "&3" .. ITEMS[i][1] .. "x&r -- " .. ITEMS[i][2] .. " -- &3".. ITEMS[i][6] .. " ".. sky.mathRound(ITEMS[i][3] / summa * 100, 3) .. "%" )
- --sky.midR(WIDTH,i+5, "&3" .. ITEMS[i][1] .. "x&r -- " .. ITEMS[i][2] .. " -- &3".. ITEMS[i][6] )
- end
- end
- function midle(y, text) --Fast Render for Table \/
- len=unicode.len(text)
- x=52-(len/2)
- g.set(x, y, text)
- end
- function Table(rand)
- local win
- for j = 1, #ITEMS do
- midle(j+5, "")
- if j == sky.mathRound(#ITEMS / 2, 0) then
- win = rand
- --g.setForeground(COLOR1)
- g.setForeground(items_all[rand][3])
- --midle(j+5, ">>>>> " .. items_all[rand][2] .. " <<<<<")
- midle(19, items_all[rand][2] )
- drawImage(87,17, images[tonumber(ITEMS[tonumber(items_all[rand][6])][8])] )
- -- sky.drawImage(73,19, shell.getWorkingDirectory() "/"..items_all[rand][8] ..".lua")
- end
- g.setForeground(items_all[rand][3])
- midle(j+5, items_all[rand][2])
- if rand == #items_all then
- rand = 1
- else
- rand = rand + 1
- end
- end
- return win
- end
- function Start(nick)
- --if w>=mid-15 and w<=mid+14 and h>=37 and h<=39 then
- computer.beep(TONE, 0.05)
- summa_money = 0
- g.setForeground(COLOR1)
- sky.drawImage(79,7, shell.getWorkingDirectory() .. "/i_3.lua")
- midle(19, "▷▷▷ " .. " ".. " ◁◁◁")
- sky.midL(WIDTH,35," Идёт игра... ")
- sky.midR(WIDTH,35, " Открываем кейсик... ")
- local rand, win = math.random(1, #items_all)
- for i = 1, 90 do
- --os.sleep(0.16)
- win = Table(rand)
- if i < 75 then
- os.sleep(0.01)
- elseif i < 85 then
- elseif i < 90 then
- computer.beep(TONE, 0.1)
- else
- computer.beep(TONE, 1)
- end
- if rand == #items_all then
- rand = 1
- else
- rand = rand + 1
- end
- end
- count_games = count_games + 1
- ITEMS[tonumber(items_all[win][6])][11] = nick
- local fingerprint_2 = {id = ITEMS[tonumber(items_all[win][6])][9], dmg = ITEMS[tonumber(items_all[win][6])][10]}
- me_interface_loot.exportItem(fingerprint_2, 2, ITEMS[tonumber(items_all[win][6])][1])
- --погода
- N = (N + PRICE) - tonumber(items_all[win][5])
- g.setForeground(COLOR1)
- sky.midL(WIDTH,4, " ")
- sky.midL(WIDTH,4, "Погода в сервере "..N)
- --sky.midL(WIDTH,4, " открытых кейсов = "..count_games)
- while (N <= -114) do
- N = N + 114
- for k = 13, 27 do
- local tmp = tonumber(ITEMS[k][3])
- tmp = tmp + 1
- ITEMS[k][3] = tmp
- end
- fs.remove(shell.getWorkingDirectory() .. "/loots.lua", "r")
- save(ITEMS,"loots.lua",27)
- end
- while (N >= 114) do
- N = N - 114
- for k = 13, 27 do
- local tmp = tonumber(ITEMS[k][3])
- tmp = tmp - 1
- ITEMS[k][3] = tmp
- end
- fs.remove(shell.getWorkingDirectory() .. "/loots.lua", "r")
- save(ITEMS,"loots.lua",27)
- end
- g.setForeground(items_all[win][3])
- sky.midR(WIDTH,35, " ")
- sky.midR(WIDTH +1,35, items_all[win][2])
- end
- function create_items()
- --от 1 до 27
- for i = 1, #ITEMS do
- for j = 1, ITEMS[i][3] do
- -- от 1 до числа шанса айтема
- summa = summa + 1
- items_all[summa] = {ITEMS[i][1], ITEMS[i][2], ITEMS[i][4], ITEMS[i][5], ITEMS[i][7], ITEMS[i][8]}
- end
- end
- sky.shake(items_all)
- --save(ITEMS,"loots_v2.lua",27)
- end
- function Exit()
- login = false
- sky.clearL(HEIGHT)
- sky.clearR(WIDTH,HEIGHT)
- g.setResolution(WIDTH, HEIGHT)
- sky.logo("", COLOR1, COLOR2, WIDTH, HEIGHT)
- g.setForeground(COLOR2)
- for i = 1, HEIGHT do
- g.set(29, i, "█")
- end
- Rules()
- --sky.drawImage(mid - 21,7, shell.getWorkingDirectory() .. "/LogoChest.lua")
- -- text = unicode.lower("mr-whiskas")
- -- for i = 1, unicode.len(text) do
- -- sky.symbol(i*8-8 + 45, 7, string.sub(text,i,i), 0x00000)
- -- end
- --text = unicode.lower("-ke+c")
- -- for i = 1, unicode.len(text) do
- -- sky.symbol(i*8-8 + 65, 14, string.sub(text,i,i), 0x00000)
- -- end
- sky.drawImage(32,2, shell.getWorkingDirectory() .. "/i_1.lua")
- local users={computer.users()}
- for i=1, #users do
- computer.removeUser(users[i])
- end
- end
- --create_items()
- --Exit()
- while false do
- local e,_,w,h,_,nick = event.pull(1, "touch")
- if e == "touch" then
- Login(w,h,nick)
- Check(w,h,nick)
- --if (login) then
- -- Start(w,h,nick)
- --end
- timer = AUTOEXIT
- end
- if (login) then
- autoExit()
- -- if isFirst then
- -- for i = 1, 31 do
- -- g.set(67,1 + i, " ")
- -- end
- --end
- if timer == 0 then
- Exit()
- end
- end
- end
- function MyButton(x,y,w,h,col1,col2,text) -- Кнопка
- g.setForeground(col1)
- g.set(x + w/2 - unicode.len(text)/2, y+h/2, text)
- g.setForeground(col2)
- for i = 1, w-2 do
- g.set(x+i,y+h-1,"▀")
- end
- --for i = 1, h-1 do
- -- g.set(x,y+i,"│")
- -- g.set(x+w-1,y+i,"│")
- -- end
- -- g.set(x,y,"┌")
- -- g.set(x+w-1,y,"┐")
- -- g.set(x,y+h-1,"└")
- --g.set(x+w-1,y+h-1,"┘")
- end
- MyButton(1,1,22,3,COLOR1,COLOR2,"Applied Energistics ")
- MyButton(1,3,22,3,COLOR1,COLOR2,"BuildCraft ")
- MyButton(1,5,22,3,COLOR1,COLOR2,"Draconic Evolution ")
- MyButton(1,7,22,3,COLOR1,COLOR2,"Forestry ")
- MyButton(1,9,22,3,COLOR1,COLOR2,"IndustrialCraft ")
- MyButton(1,11,22,3,COLOR1,COLOR2,"Minecraft ")
- MyButton(1,13,22,3,COLOR1,COLOR2,"MineFactory Reloaded")
- MyButton(1,15,22,3,COLOR1,COLOR2,"OpenComputers ")
- MyButton(1,17,22,3,COLOR1,COLOR2,"Thermal Expansion ")
- MyButton(1,19,22,3,COLOR1,COLOR2,"Другие моды ")
- sky.button(7,22,9,3,COLOR1,0x00ff00," cтарт ")
- while true do
- os.sleep(1)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement