jakendrick3

Banking ATM Utility V1

Mar 14th, 2016
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 7.11 KB | None | 0 0
  1. -- Exit type - use 'term' to exit the
  2. -- program, or 'stop' to shutdown the terminal.
  3. -- jakendrick3
  4. stopType = "term"
  5.  
  6. os.loadAPI("jenisis")
  7. modem = peripheral.find("modem")
  8. scrX, scrY = term.getSize()
  9.  
  10. if not modem then
  11.   print("No modem connected!")
  12.   return
  13. end
  14.  
  15. if term.isColor() then
  16.   greenbar = colors.green
  17.   redbar = colors.red
  18. else
  19.   greenbar = colors.white
  20.   redbar = colors.white
  21. end
  22.  
  23. modem.open(1024)
  24.  
  25. function receive()
  26.   event = {os.pullEvent("modem_message")}
  27.  
  28.   return event[5]
  29. end
  30.  
  31. function broadcast(transmes)
  32.   modem.transmit(1024, 1024, transmes)
  33. end
  34.  
  35. function greenBar()
  36.   term.setBackgroundColor(greenbar)
  37.   term.write(string.rep(" ", scrX))
  38.   term.setBackgroundColor(colors.black)
  39. end
  40.  
  41. function redBar()
  42.   term.setBackgroundColor(redbar)
  43.   term.write(string.rep(" ", scrX))
  44.   term.setBackgroundColor(colors.black)
  45. end
  46.  
  47. function inputBar(prompt)
  48.   term.setCursorPos(1, scrY - 2)
  49.   term.clearLine()
  50.   term.setCursorPos(1, scrY - 1)
  51.   term.clearLine()
  52.  
  53.   term.setCursorPos(1, scrY - 3)
  54.   greenBar()
  55.   term.setCursorPos(1, scrY)
  56.   greenBar()
  57.   term.setCursorPos(1, scrY - 2)
  58.   term.write(prompt)
  59.   term.setCursorPos(1, scrY - 1)
  60.   info = io.read()
  61.  
  62.   return info
  63. end
  64.  
  65. function errorMes(message, barColor)
  66.   if barColor == "green" then
  67.     printBar = greenBar
  68.   else
  69.     printBar = redBar
  70.   end
  71.  
  72.   term.setCursorPos(1, (scrY / 2) + 2)
  73.   printBar()
  74.   term.setCursorPos(1, (scrY / 2) + 4)
  75.   printBar()
  76.   term.setCursorPos(math.floor((scrX / 2) - (#message / 2)), (scrY / 2) + 3)
  77.   term.write(message)
  78.   os.pullEvent("key" or "mouse_click")
  79. end
  80.  
  81. static = {
  82.   "Bank ATM Utility",
  83.   "Home Screen"
  84. }
  85.  
  86. menu = {
  87.   "Login",
  88.   "Check funds",
  89.   "Make transfer",
  90.   "New account",
  91.   "Exit"
  92. }
  93.  
  94. request = {}
  95.  
  96. request["user"] = "user"
  97. request["key"] = 1234567890
  98. request["target"] = "otheruser"
  99. request["amount"] = 1
  100. request["type"] = "transfer"
  101.  
  102. loggedin = false
  103.  
  104. user = "ifyouseethisonthescreenreportit"
  105. key = "woahwaohsodja"
  106.  
  107. while true do
  108.  
  109.   if loggedin then
  110.     static[3] = "Loggged in as "..user
  111.     menu[1] = "Logout"
  112.     request.user = user
  113.     request.key = key
  114.   else
  115.     static[3] = "Not logged in."
  116.     menu[1] = "Login"
  117.   end
  118.  
  119.   cselected = jenisis.drawScreen(static, menu)
  120.  
  121.   if cselected == 1 then
  122.     if not loggedin then
  123.       info = inputBar("Enter target file, type default for default: ")
  124.    
  125.       if info == nil or "" then
  126.         info = "default"
  127.       end
  128.    
  129.       if info == "default" then
  130.         if fs.exists("disk/account") and not fs.exists("account") then
  131.           file = fs.open("disk/account", "r")
  132.           user = file.readLine()
  133.           key = file.readLine()
  134.           file.close()
  135.          
  136.           loggedin = true
  137.         elseif fs.exists("account") and not fs.exists("disk/account") then
  138.           file = fs.open("account", "r")
  139.           user = file.readLine()
  140.           key = file.readLine()
  141.           file.close()
  142.          
  143.           loggedin = true
  144.         elseif fs.exists("account") and fs.exists("disk/account") then
  145.           file = fs.open("disk/account", "r")
  146.           user = file.readLine()
  147.           key = file.readLine()
  148.           file.close()
  149.          
  150.           loggedin = true
  151.         else
  152.           errorMes("Default file does not exist.", "red")
  153.           os.pullEvent("key" or "mouse_click")
  154.         end
  155.       elseif fs.exists(info) and info ~= nil then
  156.         file = fs.open(info, "r")
  157.         user = file.readLine()
  158.         key = file.readLine()
  159.         file.close()
  160.        
  161.         loggedin = true
  162.       else
  163.         errorMes("File does not exist.", "red")
  164.         os.pullEvent("key" or "mouse_click")
  165.       end
  166.      
  167.       if loggedin == true then
  168.         request.user = user
  169.         request.key = key
  170.         errorMes("Logged in!", "green")
  171.       end
  172.     elseif loggedin then
  173.       user = nil
  174.       key = nil
  175.       loggedin = false
  176.       errorMes("Logged out!", "green")
  177.     end
  178.   elseif cselected == 2 then
  179.     request.type = "getmoney"
  180.    
  181.     broadcast(textutils.serialise(request))
  182.     local mes = receive()
  183.    
  184.     if mes == "Failed" then
  185.       printing = "The process has failed."
  186.       errorMes(printing, "red")
  187.     else
  188.       local printing = ("You have $"..mes)
  189.       errorMes(printing, "green")
  190.     end
  191.   elseif cselected == 3 then
  192.     request.type = "transfer"
  193.    
  194.     request.target = inputBar("Enter target account: ")
  195.    
  196.     request.amount = inputBar("Enter amount: ")
  197.    
  198.     conFirm = inputBar("Type yes to confirm: ")
  199.    
  200.     if string.lower(conFirm) == "yes" then
  201.       broadcast(textutils.serialize(request))
  202.      
  203.       result = receive()
  204.      
  205.       if result == "Completed!" then
  206.         errorMes(result, "green")
  207.       elseif result == "Failed." or result == "Not enough money." then
  208.         errorMes(result, "red")
  209.       else
  210.         errorMes("Unexpected error.", "red")
  211.       end  
  212.     else
  213.       errorMes("Cancelled.", "green")
  214.     end
  215.   elseif cselected == 4 then
  216.     request.type = "newuser"
  217.    
  218.     newuser = inputBar("Enter new account name: ")
  219.    
  220.     request.target = newuser
  221.    
  222.     broadcast(textutils.serialize(request))
  223.    
  224.     mes = receive()
  225.    
  226.     newac = textutils.unserialize(mes)
  227.    
  228.     if type(newac) == "table" then
  229.       if newac.result == "Completed" then
  230.         path = inputBar("Enter path for user, or 'default' or 'disk'", "green")
  231.        
  232.         if path == "default" or path == nil or path == "" then
  233.           if fs.exists("account") and fs.exists("disk/account") then
  234.             errorMes("Default file exists.", "red")
  235.           else
  236.             file = fs.open("account", "w")
  237.             file.writeLine(newuser)
  238.             file.writeLine(newac.key)
  239.             file.close()
  240.            
  241.             errorMes("Completed and saved to default location!", "green")
  242.             user = newuser
  243.             key = newac.key
  244.             loggedin = true
  245.           end
  246.         elseif path == "disk" then
  247.           if fs.exists("disk/account") then
  248.             errorMes("Disk account exists.", "red")
  249.           else
  250.             file = fs.open("disk/account", "w")
  251.             file.writeLine(newuser)
  252.             file.writeLine(newac.key)
  253.             file.close()
  254.            
  255.             errorMes("Completed and saved to disk!", "green")
  256.             user = newuser
  257.             key = newac.key
  258.             loggedin = true
  259.           end
  260.         elseif not fs.exists(path) then    
  261.           file = fs.open(path, "w")
  262.           file.writeLine(newuser)
  263.           file.writeLine(newac.key)
  264.           file.close()
  265.      
  266.           errorMes("Completed!", "green")
  267.           user = newuser
  268.           key = newac.key
  269.           loggedin = true
  270.         else
  271.           errorMes("File exists.")
  272.         end
  273.       elseif newac.result == "UE" then
  274.         errorMes("User exists.", "red")
  275.       else
  276.         errorMes("Failed.", "red")
  277.       end
  278.     else
  279.       errorMes("Unexpected error.", "red")
  280.     end
  281.   elseif cselected == 5 then
  282.     if stopType == "term" then
  283.       return
  284.     elseif stopType == "stop" then
  285.       os.shutdown()
  286.     end
  287.   end
  288. end
Add Comment
Please, Sign In to add comment