Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local flaag = true
- local Graphic = require("dispeloff/Graphic")
- local Colors = require("dispeloff/Colors")
- local Sy = require("dispeloff/Symbols")
- local Image = require("dispeloff/Image")
- local term = require("term")
- local shell = require("shell")
- local event = require("event")
- local com = require("component")
- local computer = require("computer")
- local ser = require("serialization")
- local fs = require("filesystem")
- local gpu = com.gpu
- --local sensor = com.openperipheral_sensor
- local AUTH_W, AUTH_H, w, h = 34, 11, 160,50 -- resolution
- local bColor, fColor = Colors.BLACK, Colors.WHITE
- Graphic.BColor(bColor) Graphic.FColor(fColor) gpu.setResolution(w,h) term.clear() --preInitSettings
- local users = {}
- local users_path = "/home/users.db"
- local fingerprints = {{id="minecraft:iron_ingot",dmg=0},{id="IC2:blockMachine",dmg=2}}
- local finger_path = "/home/fingerprints.db"
- local sellItems = {
- {label="Электропечь",name="IC2:blockMachine",damage=2,maxSize=64,cost=6},
- {label="Солнечная панель 1-ур",name="AdvancedSolarPanel:BlockAdvSolarPanel",damage=0,maxSize=64,cost=20}
- }
- local sellI_path = "/home/sellItems.db"
- local buyItems = {
- {label="Железный слиток",name="minecraft:iron_ingot",damage=0,maxSize=64,cost=0.5}
- }
- local buyI_path = "/home/buyItems.db"
- local pic = {
- {label="Железный слиток",name="minecraft:iron_ingot",path="/home/images/iron_ingot.pic"},
- {label="Электропечь",name="IC2:blockMachine",path="/home/images/Электропечь.pic"},
- {label="Солнечная панель 1-ур",name="AdvancedSolarPanel:BlockAdvSolarPanel",path="/home/images/Солнечная_панель1.pic"}
- }
- local pic_path = "/home/pic.db"
- function saveDataBase(db_path,db) -- Сохранение баз данных путь/база
- local file = io.open(db_path, "w")
- file:write(ser.serialize(db))
- file:close()
- end
- function load_database(db_path) -- Загрузка базы данных
- local file = io.open(db_path, "r")
- if file then
- local data = file:read("*all")
- file:close()
- return ser.unserialize(data)
- else
- return {}
- end
- end
- if not fs.exists(users_path) then -- Если база данных по пути users_path отсутствует - создаёт
- local file = io.open(users_path,"w")
- file:write(ser.serialize(users))
- file:close()
- print("Файл: "..users_path.." создан") os.sleep(0.1) print("Запуск программы") os.sleep(0.1) term.clear() -- Беспонтовый лог
- else
- print("Обнаружен файл базы данных\n"..users_path) os.sleep(0.1) print("Запуск программы") os.sleep(0.1) term.clear() -- Беспонтовый лог
- end
- local users = load_database(users_path) -- ИНИЦИАЛИЗАЦИЯ БАЗЫ ДАННЫХ В ПЕРЕМЕННУЮ users
- saveDataBase(finger_path,fingerprints)
- saveDataBase(sellI_path,sellItems)
- saveDataBase(buyI_path,buyItems)
- saveDataBase(pic_path,pic)
- term.clear()
- gpu.setResolution(AUTH_W,AUTH_H)
- Graphic.TextCenter(2,"INF MARKET", 0xFF00FF)
- Graphic.TextCenter(5,"Для авторизации", 0xFFFFFF)
- Graphic.TextCenter(6,"Нажмите на кнопку", 0xFFFFFF)
- Graphic.TextCenter(8,"-------------------------", 0x0096FF)
- Graphic.TextCenter(9," > > > Авторизация < < < ", 0x0096FF)
- Graphic.TextCenter(10,"-------------------------", 0x0096FF)
- local _, _, _, _, _, AuthUser = event.pull("touch")
- Graphic.ClearChunkScreen(1,9,w,1)
- Graphic.TextCenter(9,"привет "..AuthUser, 0x0096FF)
- os.sleep(0.5)
- gpu.setResolution(w,h)
- function userExists(users, AuthUser) -- Проверка есть ли юзер в бд, если есть вернёт true и индекс пользователя в базе
- for index, user in ipairs(users) do
- if user.name == AuthUser then
- return true, index
- end
- end
- return false
- end
- local exists_flag, index = userExists(users, AuthUser) -- Получаем флаг из функции userExists(users, AuthUser)
- if exists_flag == true then -- ПОЛЬЗОВАТЕЛЬ НАЙДЕН В БАЗЕ ДАННЫХ
- AuthUserBalance = users[index].money -- ВЫДАЁМ БАЛАНС В ЭМАХ
- AuthUserBalanceCoin = users[index].coins -- ВЫДАЁМ БАЛАНС В КОИНАХ
- else -- ПОЛЗОВАТЕЛЬ НЕ НАЙДЕН В БАЗЕ ДАННЫХ - РЕГАЕМ
- table.insert(users,{name=AuthUser, money=0, coins=0}) -- РЕГИСТРАЦИЯ
- AuthUserBalance = 0 -- ВЫДАЁМ НУЛЕВОЙ БАЛАНС
- end
- saveDataBase(users_path,users) -- ОБНОВЛЯЕМ БАЗУ ДАННЫХ
- term.clear()
- --MAIN BUTTONS COORDS
- local btnY, btnW, btnH = 23, 24, 3
- local width,_ = gpu.getResolution()
- local start_x = math.floor(width/2-w/2+1) -- нач. X коорд. кнопки
- local buyButtonX, buyButtonY, sellButtonX, sellButtonY = start_x, 24, start_x, 27
- function Buy()
- term.clear()
- Image.Render(20,4,"/home/images/INF_LOGO.pic") -- LOGO
- Graphic.BColor(bColor)
- Graphic.FColor(fColor)
- Sy.TextCenter(6,"inf market",Colors.WHITE)
- Graphic.TextRight(18,6,AuthUser,Colors.WHITE)
- Graphic.TextRight(18,7,"БАЛАНС",Colors.WHITE)
- Graphic.TextRight(18,8,tostring(AuthUserBalanceCoin).." ICoin",Colors.WHITE)
- Graphic.TextRight(18,9,tostring(AuthUserBalance).." Эм",Colors.WHITE)
- for i_, item in ipairs(sellItems) do
- print(item.label)
- local var1 = 0
- for i, picture in ipairs(pic) do
- print(picture.label)
- if item.label == picture.label then
- Image.Render(12+var1,15,picture.path)
- end
- local var1 = 40 * i
- end
- end
- Graphic.BColor(bColor)
- Graphic.FColor(fColor)
- end
- function Main()
- term.clear()
- Image.Render(20,4,"/home/images/INF_LOGO.pic") -- LOGO
- Graphic.BColor(bColor)
- Graphic.FColor(fColor)
- Sy.TextCenter(6,"inf market",Colors.WHITE)
- Graphic.TextRight(18,6,AuthUser,Colors.WHITE)
- Graphic.TextRight(18,7,"БАЛАНС",Colors.WHITE)
- Graphic.TextRight(18,8,tostring(AuthUserBalanceCoin).." ICoin",Colors.WHITE)
- Graphic.TextRight(18,9,tostring(AuthUserBalance).." Эм",Colors.WHITE)
- Graphic.BtnCenter(buyButtonY,btnW,btnH,Colors.WHITE,Colors.YELLOW,"КУПИТЬ ПРЕДМЕТЫ") -- BUY BUTTON
- Graphic.BtnCenter(sellButtonY,btnW,btnH,Colors.GREEN,Colors.GOLD,"$ ПРОДАТЬ ПРЕДМЕТЫ $") -- SELL BUTTON
- end
- Main()
- function onTouch(_,_,x,y,key,nickname)
- -- Обработка тач ивента
- print(x.."\n"..y)
- if x >= 68 and x <= 94 and y >= btnY and y <= btnY + btnH then
- event.ignore("touch",onTouch)
- term.clear()
- funExit()
- else
- Buy()
- end
- end
- function funExit()
- flaag = false
- os.exit()
- end
- event.listen("touch",onTouch)
- -- Отключение принудительного выхода из программы
- --function event.shouldInterrupt() return false end function event.shouldSoftInterrupt() return false end
- while flaag == true do
- os.sleep(1)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement