Martmists

HostPC.lua

Mar 21st, 2016
497
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.57 KB | None | 0 0
  1. function save(table, filename)
  2.     file = fs.open(filename,"w")
  3.     file.write(textutils.serialize(table))
  4.     file.close()
  5. end
  6.  
  7. function load(filename)
  8.     file = fs.open(filename,"r")
  9.     data = file.readAll()
  10.     file.close()
  11.     return textutils.unserialize(data)
  12. end
  13.  
  14. function newAcc(FromPort)
  15.     I = #LogInTable
  16.     unable = false
  17.     event, side, x,y, ID = os.pullEvent("modem_message")
  18.     print(ID)
  19.     event, side, x,y, Pass = os.pullEvent("modem_message")
  20.     print(Pass)
  21.    
  22.     for J = 1, #LogInTable, 2 do
  23.         if LogInTable[J] == ID then
  24.             unable = true
  25.             modem.transmit(FromPort, 12345, "Used")
  26.             print("Account "..ID.." already in use.")
  27.         end
  28.     end
  29.     if not unable then
  30.         modem.transmit(FromPort, 12345, "Unused")
  31.         print("Created account for ID: "..ID)
  32.         LogInTable[I + 1] = ID
  33.         LogInTable[I + 2] = Pass
  34.         J = #CurrencyTable
  35.         CurrencyTable[J + 1] = ID
  36.         CurrencyTable[J + 2] = 0
  37.     end
  38. end
  39.  
  40. function LogIn(FromPort)
  41.     login = false
  42.     print(FromPort.." is attempting to login.")
  43.     event, side, x, y, ID = os.pullEvent("modem_message")
  44.     print(ID)
  45.     sleep(0.1)
  46.     event, side, x, y, Pass = os.pullEvent("modem_message")
  47.     print(Pass)
  48.    
  49.     for I = 1, #LogInTable, 2 do
  50.         if ID == LogInTable[I] then
  51.             if Pass == LogInTable[I + 1] then
  52.                 login = true
  53.                 loginCreds = LogInTable[I]
  54.             end
  55.         end
  56.     end
  57.    
  58.     modem.transmit(FromPort, 12345, tostring(login))
  59.     print("Sent "..tostring(login).." to "..FromPort)
  60. end
  61.    
  62. function Transfer(FromPort)
  63.     Owner = false
  64.     request = false
  65.     event, side, x,y, ID = os.pullEvent("modem_message")
  66.     event, side, x,y, ToID = os.pullEvent("modem_message")
  67.     event, side, x,y, Amount = os.pullEvent("modem_message")
  68.     for I = 1, #LogInTable, 2 do
  69.         if LogInTable[I] == tonumber(ID) then
  70.             Currency = CurrencyTable[I + 1]
  71.             Owner = true
  72.         elseif LogInTable[I] == tonumber(ToID) then
  73.             OtherCurrency = CurrencyTable[I + 1]
  74.             request = true
  75.         end
  76.     end
  77.    
  78.     if not Owner or not request then
  79.         modem.transmit(FromPort, 12345, "InvalidUser")
  80.     elseif tonumber(Amount) > Currency or tonumber(Amount) < 0 then
  81.         modem.transmit(FromPort, 12345, "NotEnough")
  82.     else
  83.         OtherCurrency = OtherCurrency + Amount
  84.         Currency = Currency - Amount
  85.         print(ID.." sent "..Amount.." to "..ToID)
  86.         modem.transmit(FromPort, 12345, "Transfer Successful.")
  87.     end
  88.    
  89.     for I = 1, #CurrencyTable, 2 do
  90.         if CurrencyTable[I] == tonumber(ID) then
  91.             CurrencyTable[I + 1] = Currency
  92.         elseif CurrencyTable[I] == tonumber(ToID) then
  93.             CurrencyTable[I + 1] = OtherCurrency
  94.         end
  95.     end
  96. end
  97.  
  98. function init()
  99.  
  100.     if fs.exists("Currency") then
  101.         CurrencyTable = load("Currency")
  102.     else
  103.         CurrencyTable = {}
  104.     end
  105.    
  106.     if fs.exists("LogIn") then
  107.         LogInTable = load("LogIn")
  108.     else
  109.         LogInTable = {}
  110.     end
  111.    
  112.     modem = peripheral.wrap("back")
  113.     modem.open(12345)
  114. end
  115.  
  116. function getCurrency(FromPort)
  117.     event, side, x, y, ID = os.pullEvent("modem_message")
  118.     for I = 1, #CurrencyTable, 2 do
  119.         if CurrencyTable[I] == tonumber(ID) then
  120.             Currency = CurrencyTable[I + 1]
  121.         end
  122.     end
  123.     modem.transmit(FromPort, 12345, Currency)
  124.     print("Currency for "..ID..": "..Currency)
  125. end
  126.  
  127. function main()
  128.     print("Init complete.")
  129.     while true do
  130.         CurrencyTable = load("Currency")
  131.         LogInTable = load("LogIn")
  132.         event, side, x, FromUser, message = os.pullEvent("modem_message")
  133.         if message == "LogIn" then
  134.             LogIn(FromUser)
  135.         elseif message == "CreateNew" then
  136.             newAcc(FromUser)
  137.         elseif message == "getCurrency" then
  138.             getCurrency(FromUser)
  139.         elseif message == "Transfer" then
  140.             Transfer(FromUser)
  141.         end
  142.         save(CurrencyTable, "Currency")
  143.         save(LogInTable, "LogIn")
  144.     end
  145. end
  146.  
  147. init()
  148. main()
Advertisement
Add Comment
Please, Sign In to add comment