Advertisement
Guest User

Bancomat.lua

a guest
Dec 8th, 2019
310
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 7.66 KB | None | 0 0
  1. --[[
  2.  
  3.     Bancomat
  4.  
  5. ]]--
  6. local component = require("component")
  7. local computer=require("computer")
  8. local event = require("event")
  9. local term = require("term")
  10. local shell = require("shell")
  11. local fs = require("filesystem")
  12. local unicode=require("unicode")
  13. local serial = require("serialization")
  14. if not fs.exists("/lib/Sky.lua") then
  15.     shell.execute("wget https://www.dropbox.com/s/1xbv3nrfpkm6mg0/Sky%28lib%29.lua?dl=1 /lib/Sky.lua")
  16. end
  17. if not fs.exists("/home/BankLogs.lua") then
  18.     shell.execute("wget https://www.dropbox.com/s/x5mf2aiacacbj21/BankLogs.lua?dl=1 /home/BankLogs.lua")
  19. end
  20. local Sky = require("Sky")
  21. local g = component.gpu
  22. event.shouldInterrupt = function () return false end
  23. --------------------Настройки--------------------
  24. local WIGHT, HEIGHT = 54, 29 --Разрешение моника
  25. local AUTOEXIT = 30 --Автовыход через n сек.
  26. local PRICE = 1 --Цена одной банкноты
  27. local BUY_PRICE = 1 --Цена перевода банкнот в эмы
  28. local COLOR1 = 0x00ff00 --Рамка
  29. local COLOR2 = 0x24b3a7 --Цвет кнопок
  30. local TONE = 600 --Тональность звука
  31. local CHAT_NAME = "§2[§3Банкомат§2]: " --Ник чатбокса
  32. local SUMMA_OP = 5
  33. local money = 5254 -- ID денег
  34. -------------------------------------------------
  35.  
  36. print("\nИнициализация...")
  37. os.sleep(2)
  38. print("Запуск программы...")
  39. os.sleep(2)
  40.  
  41. local mid = WIGHT/2
  42. local login = false
  43. local timer = 0
  44.  
  45. WIGHT, HEIGHT = Sky.Resolution(WIGHT,HEIGHT)
  46. Sky.Ram2("Банкомат", COLOR1,COLOR2,WIGHT,HEIGHT, false)
  47.  
  48. function Login(w,h,nick)
  49.     if w>=(WIGHT/2)-10 and w<=(WIGHT/2)+10 and h>=25 and h<=27 then
  50.         if login == false then
  51.             computer.addUser(nick)
  52.             login = true
  53.             Sky.Clear(WIGHT,HEIGHT)
  54.             g.setForeground(COLOR2)
  55.             Sky.Mid(WIGHT,3,"Добро пожаловать")
  56.             Sky.Mid(WIGHT,6,"Ваш баланс:")
  57.             g.setForeground(COLOR1)
  58.             Sky.Mid(WIGHT,4,nick)
  59.             Sky.Mid(WIGHT,7, "  [ " .. Sky.Money(nick) .. " ]  ")
  60.             Sky.Mid(WIGHT,12, "  Сумма " .. SUMMA_OP .. "$  ")
  61.             Sky.Button((WIGHT/2)-10,25,20,3,COLOR1,COLOR2,"     Выход    ")
  62.             computer.beep(TONE, 0.05)
  63.             Operacia()
  64.         else
  65.             Exit()
  66.         end
  67.     end
  68. end
  69.  
  70. --[[function Logirovanie(nick, SUMMA_OP, Obnal)
  71.     file = io.open("/home/BankLogs.lua", "w")
  72.     local data, time = HostTime()
  73.     local text = ""
  74.     if Obnal == true then
  75.         text = text .. data .. " " .. time .. " " .. nick .. " снял со счёта " .. SUMMA_OP .. " эмов." .."\n"    
  76.     else
  77.         text = text .. data .. " " .. time .. " " .. nick .. " зачислил на счёт " .. SUMMA_OP .. " эмов." .."\n"
  78.     end
  79.     file:write(text)
  80.     file:close()
  81. end]]--
  82.  
  83. --[[function HostTime()
  84.     local TIME_ZONE = 2  
  85.     local t_correction = TIME_ZONE * 3600
  86.     local file = io.open('/tmp/unix.tmp', 'w')
  87.     file:write('')
  88.     file:close()
  89.     local lastmod = tonumber(string.sub(fs.lastModified('UNIX.tmp'), 1, -4)) + t_correction
  90.     -- Вариант 1
  91.     local data = os.date('%x', lastmod)
  92.     local time = os.date('%X', lastmod)
  93.     return data, time
  94.  
  95.     -- Вариант 2, eсли нужно все по отдельности
  96.     --local year = os.date('%Y', lastmod)
  97.     --local month = os.date('%m', lastmod)
  98.     --local day = os.date('%d', lastmod)
  99.     --local weekday = os.date('%A', lastmod)
  100.     --local hour = os.date('%H', lastmod)
  101.     --local minute  = os.date('%M', lastmod)
  102.     --local sec  = os.date('%S', lastmod)    
  103.     --return year, month, day, weekday, hour, minute, sec
  104.  
  105.     -- Вариант 3, но есть нюанс, если число минут(часов) 5, то и будет выдано 5, а не 05!
  106.     --local dt = os.date('*t', lastmod)
  107.     --return dt.year, dt.month, dt.day, dt.hour, dt.min, dt.sec
  108.    
  109.     -- Вариант 4, все в куче, как мы привыкли, в правильном формате
  110.     --local dt = os.date('%Y.%m.%d %H:%M:%S', lastmod)
  111.     --return dt
  112. end]]--
  113.  
  114. function Exit()
  115.     login = false
  116.     Sky.Clear(WIGHT,HEIGHT)
  117.     Info()
  118.     SUMMA_OP = 5
  119.     local users={computer.users()}
  120.     for i=1, #users do
  121.         computer.removeUser(users[i])
  122.     end
  123. end
  124.  
  125. function Operacia()
  126.     Sky.Button(mid-17,19,6,3,COLOR1,COLOR2, "-50$")
  127.     Sky.Button(mid-17,15,6,3,COLOR1,COLOR2, "-10$")
  128.     Sky.Button(mid-17,11,6,3,COLOR1,COLOR2, "-1$ ")
  129.     --Sky.Button(mid-10,14,20,3,COLOR1,COLOR2, "Сумма " .. SUMMA_OP .. "$")
  130.     Sky.Button(mid+11,11,6,3,COLOR1,COLOR2, "+1$ ")
  131.     Sky.Button(mid+11,15,6,3,COLOR1,COLOR2, "+10$")
  132.     Sky.Button(mid+11,19,6,3,COLOR1,COLOR2, "+50$")
  133.     Sky.Button(mid-7,15,14,3,COLOR1,COLOR2, " Обналичить ")
  134.     Sky.Button(mid-7,19,14,3,COLOR1,COLOR2, "  Положить  ")
  135. end
  136.  
  137. function autoExit()
  138.     timer = timer - 1
  139.     g.setForeground(COLOR2)
  140.     Sky.Mid(WIGHT,23, "Авто выход через:  ")
  141.     g.setForeground(COLOR1)
  142.     g.set((WIGHT/2)+9, 23, timer .. " ")
  143.     --[[if (smile) then
  144.         Sky.Mid(WIGHT,26, "__(^o^)__")
  145.         smile = false
  146.     else
  147.         Sky.Mid(WIGHT,26, " \\(^o^)/ ")
  148.         smile = true
  149.     end]]--
  150. end
  151.  
  152. function Obnal(w,h,nick,SUMMA_OP)
  153.     if(Sky.Check_money(nick,SUMMA_OP)) then
  154.         computer.beep(TONE, 0.05)
  155.         Sky.Com("give ".. nick .. " " .. money .. " ".. SUMMA_OP)
  156.         Sky.Mid(WIGHT,7, "  [ " .. Sky.Money(nick) .. " ]  ")
  157.         --Logirovanie(nick, SUMMA_OP, true)
  158.     else
  159.         Sky.Mid(WIGHT,9, "&4  Недостаточно средств!!!  ")
  160.     end
  161. end
  162.  
  163. function Zachislen(w,h,nick,SUMMA_OP)
  164.     if(Sky.TakeItem(nick, money, SUMMA_OP)) then
  165.         computer.beep(TONE, 0.05)
  166.         Sky.Com("money give " .. nick .. " " .. SUMMA_OP)
  167.         Sky.Mid(WIGHT,7, "  [ " .. Sky.Money(nick) .. " ]  ")
  168.         --Logirovanie(nick, SUMMA_OP, false)
  169.     else
  170.         Sky.Mid(WIGHT,9, "&4  Недостаточно средств!!!  ")
  171.     end
  172. end
  173.  
  174. function getSumma(w,h)
  175.     if w>= mid-17 and w<=mid-11 and h>=19 and h<=21 then -- -50$
  176.         SUMMA_OP = SUMMA_OP - 50
  177.     elseif w>= mid-17 and w<=mid-11 and h>=15 and h<=17 then -- -10$
  178.         SUMMA_OP = SUMMA_OP - 10
  179.     elseif w>= mid-17 and w<=mid-11 and h>=11 and h<=13 then -- -1$
  180.         SUMMA_OP = SUMMA_OP - 1
  181.     elseif w>= mid+11 and w<=mid+16 and h>=11 and h<=13 then -- +1$
  182.         SUMMA_OP = SUMMA_OP + 1
  183.     elseif w>= mid+11 and w<=mid+16 and h>=15 and h<=17 then -- +10$
  184.         SUMMA_OP = SUMMA_OP + 10
  185.     elseif w>= mid+11 and w<=mid+16 and h>=19 and h<=21 then -- +50$
  186.         SUMMA_OP = SUMMA_OP + 50
  187.     else
  188.         return
  189.     end
  190.     if SUMMA_OP < 1 then
  191.         SUMMA_OP = 1
  192.     end
  193.     g.setForeground(COLOR1)
  194.     Sky.Mid(WIGHT,12, "  Сумма " .. SUMMA_OP .. "$  ")
  195.     Sky.Mid(WIGHT,9, "                           ")
  196. end
  197.  
  198. function Info()
  199.     Sky.Symbol(mid-12,4,"b",0x000000)
  200.     Sky.Symbol(mid-6,4,"a",0x000000)
  201.     Sky.Symbol(mid,4,"n",0x000000)
  202.     Sky.Symbol(mid+6,4,"k",0x000000)
  203.     --[[Sky.Mid(WIGHT,10,"&3Здесь вы можете &2обналичить")
  204.     Sky.Mid(WIGHT,11,"&3или &2зачислить&3 на свой счёт")
  205.     Sky.Mid(WIGHT,12,"&2эмеральды&3.")]]--
  206.     Sky.Mid(WIGHT,14,"&4        Внимание!!!        ")
  207.     Sky.Mid(WIGHT,15,"&6Перед тем как снять деньги,")
  208.     Sky.Mid(WIGHT,16,"&6убедитесь, что в инвентаре ")
  209.     Sky.Mid(WIGHT,17,"&6достаточно места.          ")
  210.     Sky.Button((WIGHT/2)-10,25,20,3,COLOR1,COLOR2,"Залогиниться")
  211. end
  212.  
  213. Exit()
  214.  
  215. while true do
  216.     local e,_,w,h,_,nick = event.pull(1, "touch")
  217.     if e == "touch" then
  218.         Login(w,h,nick)
  219.         if login then
  220.             getSumma(w, h)
  221.             if w>= mid-7 and w<=mid+5 and h>=15 and h<=17 then
  222.                 Obnal(w,h,nick,SUMMA_OP)
  223.             elseif w>= mid-7 and w<=mid+5 and h>=19 and h<=21 then
  224.                 Zachislen(w,h,nick,SUMMA_OP)
  225.             end
  226.         end
  227.         timer = AUTOEXIT
  228.     end
  229.     if (login) then
  230.         autoExit()
  231.         if timer == 0 then 
  232.             Exit()
  233.         end
  234.     end
  235. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement