Advertisement
mrWhiskasss

1

Dec 4th, 2024
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local flaag = true
  2. local Graphic = require("dispeloff/Graphic")
  3. local Colors = require("dispeloff/Colors")
  4. local Sy = require("dispeloff/Symbols")
  5. local Image = require("dispeloff/Image")
  6.  
  7. local term = require("term")
  8. local shell = require("shell")
  9. local event = require("event")
  10. local com = require("component")
  11. local computer = require("computer")
  12. local ser = require("serialization")
  13. local fs = require("filesystem")
  14.  
  15. local gpu = com.gpu
  16. --local sensor = com.openperipheral_sensor
  17. local AUTH_W, AUTH_H, w, h = 34, 11, 160,50 -- resolution
  18. local bColor, fColor = Colors.BLACK, Colors.WHITE
  19. Graphic.BColor(bColor) Graphic.FColor(fColor) gpu.setResolution(w,h) term.clear() --preInitSettings
  20. local users = {}
  21. local users_path = "/home/users.db"
  22. local fingerprints = {{id="minecraft:iron_ingot",dmg=0},{id="IC2:blockMachine",dmg=2}}
  23. local finger_path = "/home/fingerprints.db"
  24. local sellItems = {
  25.   {label="Электропечь",name="IC2:blockMachine",damage=2,maxSize=64,cost=6},
  26.   {label="Солнечная панель 1-ур",name="AdvancedSolarPanel:BlockAdvSolarPanel",damage=0,maxSize=64,cost=20}
  27. }
  28. local sellI_path = "/home/sellItems.db"
  29. local buyItems = {
  30.   {label="Железный слиток",name="minecraft:iron_ingot",damage=0,maxSize=64,cost=0.5}
  31. }
  32. local buyI_path = "/home/buyItems.db"
  33. local pic = {
  34.   {label="Железный слиток",name="minecraft:iron_ingot",path="/home/images/iron_ingot.pic"},
  35.   {label="Электропечь",name="IC2:blockMachine",path="/home/images/Электропечь.pic"},
  36.   {label="Солнечная панель 1-ур",name="AdvancedSolarPanel:BlockAdvSolarPanel",path="/home/images/Солнечная_панель1.pic"}
  37. }
  38. local pic_path = "/home/pic.db"
  39. function saveDataBase(db_path,db) -- Сохранение баз данных путь/база
  40.   local file = io.open(db_path, "w")
  41.   file:write(ser.serialize(db))
  42.   file:close()
  43. end
  44. function load_database(db_path) -- Загрузка базы данных
  45.   local file = io.open(db_path, "r")
  46.   if file then
  47.     local data = file:read("*all")
  48.     file:close()
  49.     return ser.unserialize(data)
  50.   else
  51.     return {}
  52.   end
  53. end
  54. if not fs.exists(users_path) then -- Если база данных по пути users_path отсутствует - создаёт
  55.   local file = io.open(users_path,"w")
  56.   file:write(ser.serialize(users))
  57.   file:close()
  58.   print("Файл: "..users_path.." создан") os.sleep(0.1) print("Запуск программы") os.sleep(0.1) term.clear() -- Беспонтовый лог
  59. else
  60.   print("Обнаружен файл базы данных\n"..users_path) os.sleep(0.1) print("Запуск программы") os.sleep(0.1) term.clear() -- Беспонтовый лог
  61. end
  62. local users = load_database(users_path) -- ИНИЦИАЛИЗАЦИЯ БАЗЫ ДАННЫХ В ПЕРЕМЕННУЮ users
  63. saveDataBase(finger_path,fingerprints)
  64. saveDataBase(sellI_path,sellItems)
  65. saveDataBase(buyI_path,buyItems)
  66. saveDataBase(pic_path,pic)
  67. term.clear()
  68. gpu.setResolution(AUTH_W,AUTH_H)
  69. Graphic.TextCenter(2,"INF MARKET", 0xFF00FF)
  70. Graphic.TextCenter(5,"Для авторизации", 0xFFFFFF)
  71. Graphic.TextCenter(6,"Нажмите на кнопку", 0xFFFFFF)
  72. Graphic.TextCenter(8,"-------------------------", 0x0096FF)
  73. Graphic.TextCenter(9," > > > Авторизация < < < ", 0x0096FF)
  74. Graphic.TextCenter(10,"-------------------------", 0x0096FF)
  75. local _, _, _, _, _, AuthUser = event.pull("touch")
  76. Graphic.ClearChunkScreen(1,9,w,1)
  77. Graphic.TextCenter(9,"привет "..AuthUser, 0x0096FF)
  78. os.sleep(0.5)
  79. gpu.setResolution(w,h)
  80. function userExists(users, AuthUser) -- Проверка есть ли юзер в бд, если есть вернёт true и индекс пользователя в базе
  81.   for index, user in ipairs(users) do
  82.     if user.name == AuthUser then
  83.       return true, index
  84.     end
  85.   end
  86.   return false
  87. end
  88. local exists_flag, index = userExists(users, AuthUser) -- Получаем флаг из функции userExists(users, AuthUser)
  89. if exists_flag == true then -- ПОЛЬЗОВАТЕЛЬ НАЙДЕН В БАЗЕ ДАННЫХ
  90.   AuthUserBalance = users[index].money -- ВЫДАЁМ БАЛАНС В ЭМАХ
  91.   AuthUserBalanceCoin = users[index].coins -- ВЫДАЁМ БАЛАНС В КОИНАХ
  92. else -- ПОЛЗОВАТЕЛЬ НЕ НАЙДЕН В БАЗЕ ДАННЫХ - РЕГАЕМ
  93.   table.insert(users,{name=AuthUser, money=0, coins=0}) -- РЕГИСТРАЦИЯ
  94.   AuthUserBalance = 0 -- ВЫДАЁМ НУЛЕВОЙ БАЛАНС
  95. end
  96. saveDataBase(users_path,users) -- ОБНОВЛЯЕМ БАЗУ ДАННЫХ
  97. term.clear()
  98. --MAIN BUTTONS COORDS
  99. local btnY, btnW, btnH = 23, 24, 3
  100. local width,_ = gpu.getResolution()
  101. local start_x = math.floor(width/2-w/2+1) -- нач. X коорд. кнопки
  102. local buyButtonX, buyButtonY, sellButtonX, sellButtonY = start_x, 24, start_x, 27
  103. function Buy()
  104.   term.clear()
  105.   Image.Render(20,4,"/home/images/INF_LOGO.pic") -- LOGO
  106.   Graphic.BColor(bColor)
  107.   Graphic.FColor(fColor)
  108.   Sy.TextCenter(6,"inf market",Colors.WHITE)
  109.   Graphic.TextRight(18,6,AuthUser,Colors.WHITE)
  110.   Graphic.TextRight(18,7,"БАЛАНС",Colors.WHITE)
  111.   Graphic.TextRight(18,8,tostring(AuthUserBalanceCoin).." ICoin",Colors.WHITE)
  112.   Graphic.TextRight(18,9,tostring(AuthUserBalance).." Эм",Colors.WHITE)
  113.   for i_, item in ipairs(sellItems) do
  114.     print(item.label)
  115.     local var1 = 0
  116.     for i, picture in ipairs(pic) do
  117.       print(picture.label)
  118.       if item.label == picture.label then
  119.         Image.Render(12+var1,15,picture.path)
  120.       end
  121.       local var1 = 40 * i
  122.     end
  123.   end
  124.   Graphic.BColor(bColor)
  125.   Graphic.FColor(fColor)
  126. end
  127. function Main()
  128.   term.clear()
  129.   Image.Render(20,4,"/home/images/INF_LOGO.pic") -- LOGO
  130.   Graphic.BColor(bColor)
  131.   Graphic.FColor(fColor)
  132.   Sy.TextCenter(6,"inf market",Colors.WHITE)
  133.   Graphic.TextRight(18,6,AuthUser,Colors.WHITE)
  134.   Graphic.TextRight(18,7,"БАЛАНС",Colors.WHITE)
  135.   Graphic.TextRight(18,8,tostring(AuthUserBalanceCoin).." ICoin",Colors.WHITE)
  136.   Graphic.TextRight(18,9,tostring(AuthUserBalance).." Эм",Colors.WHITE)
  137.   Graphic.BtnCenter(buyButtonY,btnW,btnH,Colors.WHITE,Colors.YELLOW,"КУПИТЬ ПРЕДМЕТЫ") -- BUY BUTTON
  138.   Graphic.BtnCenter(sellButtonY,btnW,btnH,Colors.GREEN,Colors.GOLD,"$ ПРОДАТЬ ПРЕДМЕТЫ $") -- SELL BUTTON
  139. end
  140. Main()
  141. function onTouch(_,_,x,y,key,nickname)
  142.   -- Обработка тач ивента
  143.   print(x.."\n"..y)
  144.   if x >= 68 and x <= 94 and y >= btnY and y <= btnY + btnH then
  145.     event.ignore("touch",onTouch)
  146.     term.clear()
  147.     funExit()
  148.   else
  149.     Buy()
  150.   end
  151. end
  152. function funExit()
  153.   flaag = false
  154.   os.exit()
  155. end
  156. event.listen("touch",onTouch)
  157. -- Отключение принудительного выхода из программы
  158. --function event.shouldInterrupt() return false end function event.shouldSoftInterrupt() return false end
  159. while flaag == true do
  160.   os.sleep(1)
  161. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement