Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local event = require('event')
- local serial = require('serialization')
- local component = require('component')
- -- Коды операций --
- local CHANGE_PORT = 0x1
- local ADD_ACCOUNT = 0x2
- local DEL_ACCOUNT = 0x3
- local REMITTANCE = 0x4
- local ACC_REQUEST = 0x5
- local CSH_REQUEST = 0x6
- local SET_ACCOUNT = 0x7
- -- Коды ошибок --
- local WRONG_PORT = 0xF1
- local ANSWER_YES = 0xF2
- local ANSWER_NO = 0xF3
- local WRONG_CRED = 0xF4
- local TOO_LITTLE = 0xF5
- --
- local port = 72
- local modem = component.modem
- local server = nil
- local function send(data)
- if modem == nil then
- error('[FinanceWrapper] Не инициализирован модем.')
- else
- local message = data
- if type(message) == 'table' then
- message = serial.serialize(message)
- end
- if server == nil then
- modem.broadcast(port, message)
- else
- modem.send(server, port, message)
- end
- end
- end
- local finance = {}
- ----------------------------------------------------------------
- function finance.setPort(num)
- port = num
- end
- function finance.setServer(address)
- server = address
- end
- function finance.changeServerPort(newport)
- send({code=CHANGE_PORT, port=newport})
- name, _, _, _, _, message = event.pull('modem_message')
- if message == ANSWER_YES then return true end
- return false
- end
- function finance.addAccount(name, amount)
- send({code=ADD_ACCOUNT, name=name, amount=amount})
- name, _, _, _, _, message = event.pull('modem_message')
- if message == ANSWER_YES then return true end
- return false
- end
- function finance.removeAccount(name)
- send({code=DEL_ACCOUNT, name=name})
- name, _, _, _, _, message = event.pull('modem_message')
- if message == ANSWER_YES then return true end
- return false
- end
- function finance.existsAccount(name)
- send({code=ACC_REQUEST, name=name})
- name, _, _, _, _, message = event.pull('modem_message')
- if message == ANSWER_YES then return true end
- return false
- end
- function finance.transfer(from, to, amount)
- send({code=REMITTANCE, sender=from, receiver=to, amount=amount})
- name, _, _, _, _, message = event.pull('modem_message')
- if message == ANSWER_YES then return true end
- return false
- end
- function finance.getCash(name)
- send({code=CSH_REQUEST, name=name})
- name, _, _, _, _, message = event.pull('modem_message')
- local data = serial.unserialize(message)
- if data ~= nil then
- if data[1] == ANSWER_YES then
- if data[2] ~= nil then
- return data[2]
- end
- end
- end
- return -1
- end
- function finance.setCash(name, amount)
- send({code=SET_ACCOUNT, name=name, amount=amount})
- name, _, _, _, _, message = event.pull('modem_message')
- if message == ANSWER_YES then return true end
- return false
- end
- return finance
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement