jakendrick3

Bank Host v2

Nov 27th, 2015
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.87 KB | None | 0 0
  1. modem = peripheral.find("modem")
  2.  
  3. if not modem then
  4.   print("No modem")
  5. end
  6.  
  7. modem.open(1024)
  8.  
  9. function getMoney(user, key)
  10.   if user == nil or key == nil then
  11.     return "Failed."
  12.   end
  13.  
  14.   if fs.exists("account/"..user) then
  15.     account = fs.open("account/"..user, "r")
  16.     line = account.readLine()
  17.     line2 = account.readLine()
  18.     account.close()
  19.   else
  20.     return "Failed"
  21.   end
  22.  
  23.   if key == line then
  24.     return line2
  25.   else
  26.     return "Failed"
  27.   end
  28. end
  29.  
  30. function transfer(give, take, gkey, amountf)
  31.   if give == nil or take == nil or gkey == nil or amountf == nil then
  32.     return "Failed."
  33.   end
  34.  
  35.   if not fs.exists("account/"..give) or not fs.exists("account/"..take) then
  36.     return "Failed."
  37.   end
  38.  
  39.   giverf = fs.open("account/"..give, "r")
  40.   givekey = giverf.readLine()
  41.   giveramount = giverf.readLine()
  42.   giverf.close()
  43.  
  44.   takef = fs.open("account/"..take, "r")
  45.   takekey = takef.readLine()
  46.   takeramount = takef.readLine()
  47.   takef.close()
  48.  
  49.   if amountf > giveramount then
  50.     return "Not enough money."
  51.   end
  52.  
  53.   if gkey == givekey then
  54.     newamountg = giveramount - amountf
  55.     newamountf = takeramount + amountf
  56.    
  57.     giverf = fs.open("account/"..give, "w")
  58.     giverf.writeLine(givekey)
  59.     giverf.writeLine(newamountg)
  60.     giverf.close()
  61.    
  62.     takef = fs.open("account/"..take, "w")
  63.     takef.writeLine(takekey)
  64.     takef.writeLine(newamountf)
  65.     takef.close()
  66.    
  67.     return "Completed!"
  68.    
  69.   else
  70.     return "Failed."
  71.   end
  72. end
  73.  
  74. function makeKey()
  75.   a = math.random(0, 9)
  76.   b = math.random(0, 9)
  77.   c = math.random(0, 9)
  78.   d = math.random(0, 9)
  79.   e = math.random(0, 9)
  80.   f = math.random(0, 9)
  81.   g = math.random(0, 9)
  82.   h = math.random(0, 9)
  83.   i = math.random(0, 9)
  84.   j = math.random(0, 9)
  85.  
  86.   newkey = a..b..c..d..e..f..g..h..i..j
  87.   return newkey
  88.  
  89. end
  90.  
  91. function newUser(user, key)
  92.   d = fs.exists("account/"..user)
  93.  
  94.   if d == false then
  95.     file = fs.open("account/"..user, "w")
  96.     file.writeLine(key)
  97.     file.writeLine(0)
  98.     file.close()
  99.    
  100.     return "Completed"
  101.   else
  102.     return "UE"
  103.   end
  104. end
  105.  
  106. function receive()
  107.   event = {os.pullEvent("modem_message")}
  108.  
  109.   return event[5]
  110. end
  111.  
  112. function broadcast(message_trans)
  113.   modem.transmit(1024, 1024, message_trans)
  114. end
  115.  
  116. while true do
  117.   mes = receive()
  118.  
  119.   request = textutils.unserialise(mes)
  120.  
  121.   if request["type"] == "getmoney" then
  122.     money = getMoney(request.user, request.key)
  123.    
  124.     broadcast(money)
  125.   elseif request.type == "newuser" then
  126.     newkey = makeKey()
  127.     result = newUser(request.target, newkey)
  128.    
  129.     newac = {}
  130.     newac["result"] = result
  131.     newac["key"] = newkey
  132.    
  133.     broadcast(textutils.serialize(newac))
  134.   elseif request["type"] == "transfer" then
  135.     result = transfer(request.user, request.target, request.key, request.amount)
  136.    
  137.     broadcast(result)
  138.   end
  139. end
Add Comment
Please, Sign In to add comment