Advertisement
CelticCoder

phone

May 12th, 2024 (edited)
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 6.79 KB | None | 0 0
  1. os.loadAPI("text.lua")
  2.  
  3. exitcode = 0
  4.  
  5. rednet.open("back")
  6. phoneServerID = 21
  7. serverID = 3
  8. passwordfile = "adminsuccess.txt"
  9. userFile = "usersuccess.txt"
  10.  
  11. local function download(url, fileName)
  12.     if http then
  13.         local response = http.get(url)
  14.         if response then
  15.             local file = fs.open(fileName, "w")
  16.             file.write(response.readAll())
  17.             file.close()
  18.             print("Downloaded " .. fileName)
  19.         else
  20.             print("Failed to download " .. url)
  21.         end
  22.     else
  23.         print("HTTP not enabled")
  24.     end
  25.     os.sleep(3)
  26. end
  27.  
  28. function getExitCode()
  29.     return exitcode
  30. end
  31.  
  32. function twoInputStrip(str)
  33.     first, second = str:match("(%S+)%s+(%S+)")
  34.     return first, second
  35. end
  36.  
  37. function readAdminPassword()
  38.     local file = fs.open(passwordfile, "r")
  39.     if file then
  40.         line = file.readLine()
  41.         file.close()
  42.         return line
  43.     end
  44. end
  45.  
  46. function readUserLogin()
  47.     local file = fs.open(userFile, "r")
  48.     if file then
  49.         line = file.readLine()
  50.         line2 = file.readLine()
  51.         file:close() -- Close the file
  52.         return line, line2
  53.     end
  54. end
  55.  
  56. function login(dusername, dpassword)
  57.     while true do
  58.         -- Display login screen
  59.         print("Login Screen")
  60.         print("Enter username:")
  61.         local username = read()
  62.         print("Enter password:")
  63.         local password = read("*")
  64.  
  65.         if username == "admin" and password == readAdminPassword() then
  66.             print("ADMIN")
  67.             os.sleep(1)
  68.             exitcode = 1
  69.             os.exit(1)
  70.         end
  71.  
  72.         -- If login is successful, unlock the screen
  73.         if username == dusername and password == dpassword then
  74.             print("Login successful")
  75.             os.sleep(3)
  76.             term.clear()
  77.             term.setCursorPos(1, 1)
  78.             return true
  79.         elseif dusername == nil or dpassword == nil then
  80.             print("User Login Corrupted")
  81.             print("Please See a Celtico Representative")
  82.             os.sleep(3)
  83.             return false
  84.         else
  85.             print("Login failed")
  86.             os.sleep(3)
  87.             term.clear()
  88.             term.setCursorPos(1, 1)
  89.         end
  90.     end
  91. end
  92.  
  93. local function displayMenu(dusername)
  94.     print("Welcome " .. dusername .. "!")
  95.     print("1. Text Messages")
  96.     print("2. Transfer Funds")
  97.     print("3. Buy Request")
  98.     print("4. Services")
  99.     print("0. Exit")
  100. end
  101.  
  102. local function displayServiceMenu(dusername)
  103.     print("Welcome " .. dusername .. "!")
  104.     print("1. Games")
  105.     print("2. Turtle Services")
  106.     print("0. Exit")
  107. end
  108.  
  109. local function displayGameMenu(dusername)
  110.     print("Welcome " .. dusername .. "!")
  111.     print("1. Flappy Bird")
  112.     print("0. Exit")
  113.     print("\nWarning: Some Games may Require a Manual Shut Off to Exit!\n")
  114. end
  115.  
  116. local function userChoice(dusername)
  117.     io.write("Enter your choice: ")
  118.     return tonumber(io.read())
  119.    
  120. end
  121.  
  122. local function sendServer(message)
  123.     rednet.send(serverID, message)
  124.     id, message = rednet.receive(nil, 3)
  125.     if id == serverID then
  126.         return message
  127.     else
  128.         return "error"
  129.     end
  130. end
  131.  
  132. local function transferFunds(dusername, dpassword)
  133.     balance = sendServer("search " .. dusername .. " " .. dpassword)
  134.     if balance == nil then
  135.         print("Error: Server Offline")
  136.         os.sleep(2)
  137.     elseif balance == "false" then
  138.         print("Error: Phone Login not in Server Database")
  139.         os.sleep(2)
  140.     elseif balance == "error" then
  141.         print("Error: Server Interference")
  142.         os.sleep(2)
  143.     else
  144.         print("Your Balance: " .. balance)
  145.         print("Enter the Recipients Username: ")
  146.         recipient = io.read()
  147.         print("Enter the Amount to Transfer: ")
  148.         amount = io.read()
  149.         success = sendServer("transfer " .. dusername .. " " .. dpassword .. " " .. amount .. " " .. recipient)
  150.         if success == nil then
  151.             print("Error: Server Offline")
  152.             os.sleep(2)
  153.         elseif success == "false" then
  154.             print("Error: Recipient not in Server Database or Impossible Amount")
  155.             os.sleep(5)
  156.         elseif success == "error" then
  157.             print("Error: Server Interference")
  158.             os.sleep(2)
  159.         else
  160.             print("Success!")
  161.             os.sleep(2)
  162.         end
  163.     end
  164. end
  165.  
  166. function buyAccept()
  167.     id, message = rednet.receive(nil, 30)
  168.     print(message)
  169.     if id == nil then
  170.         print("Could Not Find Cashier Terminal")
  171.         os.sleep(3)
  172.         return
  173.     end
  174.     rednet.send(id, "ping")
  175.     if message ~= nil then
  176.         command, cost = twoInputStrip(message)
  177.         if command == "buyrequest" then
  178.             print("Buy Request of " .. cost .. " Received")
  179.             print("Press 1 to Confirm Payment")
  180.             confirmation = read()
  181.             if tonumber(confirmation) == 1 then
  182.                 rednet.send(serverID, "buy " .. dusername .. " " .. dpassword .. " " .. cost)
  183.                 newid, success = rednet.receive(nil, 3)
  184.                 if success ~= nil then
  185.                     print("Payment Success!")
  186.                     os.sleep(3)
  187.                 else
  188.                     print("Payment Error")
  189.                     os.sleep(3)
  190.                 end
  191.             else
  192.                 print("Payment Cancelled")
  193.                 os.sleep(3)
  194.                 rednet.send(id, "cancel")
  195.             end
  196.         else
  197.             print("Buy Request Intercepted, Please Retry")
  198.             os.sleep(3)
  199.         end
  200.     else
  201.         print("No Buy Request Found Exiting to Menu")
  202.         os.sleep(3)
  203.     end
  204. end
  205.  
  206. function main()
  207.     while true do
  208.         dusername, dpassword = readUserLogin()
  209.         if login(dusername, dpassword) then
  210.             while true do
  211.                 displayMenu(dusername)
  212.                 choice = userChoice(dusername)
  213.                 if choice == 1 then
  214.                     term.clear()
  215.                     term.setCursorPos(1, 1)
  216.                     text.text(dusername, phoneServerID)
  217.                     term.clear()
  218.                     term.setCursorPos(1, 1)
  219.                 elseif choice == 2 then
  220.                     term.clear()
  221.                     term.setCursorPos(1, 1)
  222.                     transferFunds(dusername, dpassword)
  223.                     term.clear()
  224.                     term.setCursorPos(1, 1)
  225.                 elseif choice == 3 then
  226.                     buyAccept()
  227.                     term.clear()
  228.                     term.setCursorPos(1, 1)
  229.                 elseif choice == 4 then
  230.                     while true do
  231.                         term.clear()
  232.                         term.setCursorPos(1, 1)
  233.                         displayServiceMenu(dusername)
  234.                         schoice = userChoice(dusername)
  235.                         if schoice == 1 then
  236.                             while true do
  237.                                 term.clear()
  238.                                 term.setCursorPos(1, 1)
  239.                                 displayGameMenu(dusername)
  240.                                 gchoice = userChoice(dusername)
  241.                                 if gchoice == 1 then
  242.                                     download("https://github.com/bartek18887/ComputerCraft-FlappyBird/raw/main/main.lua", "flappybird.lua")
  243.                                     os.loadAPI("flappybird.lua")
  244.                                 elseif gchoice == 0 then
  245.                                     break
  246.                                 end
  247.                             end
  248.                         elseif schoice == 2 then
  249.                             print("\nTurtle Services Not Available in Early Access")
  250.                             print("(ie I am not paid enough to have it done yet)\n")
  251.                             print("type anything to return to the menu")
  252.                             read()
  253.                             break
  254.                         elseif schoice == 0 then
  255.                             break
  256.                         end
  257.                     end
  258.                     term.clear()
  259.                     term.setCursorPos(1, 1)
  260.                 elseif choice == 0 then
  261.                     term.clear()
  262.                     term.setCursorPos(1, 1)
  263.                     break
  264.                 else
  265.                     print("Incorrect Input")
  266.                     os.sleep(1)
  267.                     term.clear()
  268.                     term.setCursorPos(1, 1)
  269.                 end
  270.             end
  271.         end
  272.     end
  273. end
  274.  
  275. --os.pullEvent = os.pullEventRaw
  276. pcall(main)
  277. --os.shutdown()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement