Advertisement
MoonlightOwl

Finance Lib

Nov 11th, 2014
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.76 KB | None | 0 0
  1. local event = require('event')
  2. local serial = require('serialization')
  3. local component = require('component')
  4.  
  5. --  Коды операций   --
  6. local CHANGE_PORT = 0x1
  7. local ADD_ACCOUNT = 0x2
  8. local DEL_ACCOUNT = 0x3
  9. local REMITTANCE  = 0x4
  10. local ACC_REQUEST = 0x5
  11. local CSH_REQUEST = 0x6
  12. local SET_ACCOUNT = 0x7
  13.  
  14. --   Коды ошибок    --
  15. local WRONG_PORT = 0xF1
  16. local ANSWER_YES = 0xF2
  17. local ANSWER_NO  = 0xF3
  18. local WRONG_CRED = 0xF4
  19. local TOO_LITTLE = 0xF5
  20. --
  21.  
  22. local port = 72
  23. local modem = component.modem
  24. local server = nil
  25. local function send(data)
  26.   if modem == nil then
  27.     error('[FinanceWrapper] Не инициализирован модем.')
  28.   else
  29.     local message = data
  30.     if type(message) == 'table' then
  31.       message = serial.serialize(message)
  32.     end
  33.     if server == nil then
  34.       modem.broadcast(port, message)
  35.     else
  36.       modem.send(server, port, message)
  37.     end
  38.   end
  39. end
  40.  
  41. local finance = {}
  42.  
  43. ----------------------------------------------------------------
  44.  
  45. function finance.setPort(num)
  46.   port = num
  47. end
  48. function finance.setServer(address)
  49.   server = address
  50. end
  51.  
  52. function finance.changeServerPort(newport)
  53.   send({code=CHANGE_PORT, port=newport})
  54.   name, _, _, _, _, message  = event.pull('modem_message')
  55.   if message == ANSWER_YES then return true end
  56.   return false
  57. end
  58. function finance.addAccount(name, amount)
  59.   send({code=ADD_ACCOUNT, name=name, amount=amount})
  60.   name, _, _, _, _, message  = event.pull('modem_message')
  61.   if message == ANSWER_YES then return true end
  62.   return false
  63. end
  64. function finance.removeAccount(name)
  65.   send({code=DEL_ACCOUNT, name=name})
  66.   name, _, _, _, _, message  = event.pull('modem_message')
  67.   if message == ANSWER_YES then return true end
  68.   return false
  69. end
  70. function finance.existsAccount(name)
  71.   send({code=ACC_REQUEST, name=name})
  72.   name, _, _, _, _, message  = event.pull('modem_message')
  73.   if message == ANSWER_YES then return true end
  74.   return false
  75. end
  76. function finance.transfer(from, to, amount)
  77.   send({code=REMITTANCE, sender=from, receiver=to, amount=amount})
  78.   name, _, _, _, _, message  = event.pull('modem_message')
  79.   if message == ANSWER_YES then return true end
  80.   return false
  81. end
  82. function finance.getCash(name)
  83.   send({code=CSH_REQUEST, name=name})
  84.   name, _, _, _, _, message  = event.pull('modem_message')
  85.   local data = serial.unserialize(message)
  86.   if data ~= nil then
  87.     if data[1] == ANSWER_YES then
  88.       if data[2] ~= nil then
  89.         return data[2]
  90.       end
  91.     end
  92.   end
  93.   return -1
  94. end
  95. function finance.setCash(name, amount)
  96.   send({code=SET_ACCOUNT, name=name, amount=amount})
  97.   name, _, _, _, _, message  = event.pull('modem_message')
  98.   if message == ANSWER_YES then return true end
  99.   return false
  100. end
  101.  
  102. return finance
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement