Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local bodCoinServerID = 138
- function SendToServer(data)
- if modemName == nil then
- error("'modemName' is not defined")
- end
- rednet.open(modemName)
- while true do
- rednet.send(bodCoinServerID, data , "BodCoin")
- while true do
- local id, msg = rednet.receive("BodCoinResp", 2)
- if not id then
- --print("Timed out")
- break
- end
- if id == bodCoinServerID then
- return msg
- end
- sleep(0)
- end
- end
- end
- function GetLogin()
- local file = fs.open("BodCoinLogin", "r")
- if file == nil then
- error("the file 'BodCoinLogin' is missing, please create and insert login details")
- end
- local toRet = textutils.unserialise(file.readAll())
- file.close()
- return toRet
- end
- local moduleItems = {}
- function GetBalance()
- local getBalanceResp = SendToServer({
- ["login"] = GetLogin(),
- ["action"] = "getBalance"
- })
- if getBalanceResp["status"] == "success" then
- return getBalanceResp["balance"]
- end
- return nil, getBalanceResp["msg"]
- end
- moduleItems["GetBalance"] = GetBalance
- function CheckAccountExists(username)
- local accExistsResp = SendToServer({
- ["login"] = GetLogin(),
- ["action"] = "checkAccountExists",
- ["username"] = username
- })
- if accExistsResp["status"] == "success" then
- return accExistsResp["exists"]
- end
- return nil, accExistsResp["msg"]
- end
- moduleItems["CheckAccountExists"] = CheckAccountExists
- function SendCoins(toUsername, amount)
- local sendCoinsResp = SendToServer({
- ["login"] = GetLogin(),
- ["action"] = "send",
- ["to"] = toUsername,
- ["amount"] = amount
- })
- if sendCoinsResp["status"] == "success" then
- return true
- end
- return false, sendCoinsResp["msg"]
- end
- moduleItems["SendCoins"] = SendCoins
- function RequestCoins(fromUsername, amount)
- local requestCoinsResp = SendToServer({
- ["login"] = GetLogin(),
- ["action"] = "request",
- ["from"] = fromUsername,
- ["amount"] = amount
- })
- if requestCoinsResp["status"] == "success" then
- return requestCoinsResp["requestID"]
- end
- return nil, requestCoinsResp["msg"]
- end
- moduleItems["RequestCoins"] = RequestCoins
- function GetRequestStatus(requestID)
- local getRequestStatusResp = SendToServer({
- ["login"] = GetLogin(),
- ["action"] = "getRequestStatus",
- ["requestID"] = requestID
- })
- if getRequestStatusResp["status"] == "success" then
- return getRequestStatusResp["requestStatus"]
- end
- return nil, getRequestStatusResp["msg"]
- end
- moduleItems["GetRequestStatus"] = GetRequestStatus
- function RequestAndWaitForCoins(fromUsername, amount, timeout)
- if timeout == nil then
- timeout = 60
- end
- local requestID, requestRespError = RequestCoins(fromUsername, amount)
- if requestID == nil then
- error("RequestCoins failed - " .. requestRespError)
- end
- for t = 1, timeout do
- sleep(1)
- local requestStatus, requestStatusError = GetRequestStatus(requestID)
- if requestStatus == nil then
- error("Failed to check request status - " .. requestStatusError)
- elseif requestStatus == "allowed" then
- return true
- elseif requestStatus ~= "pending" then
- return false, requestStatus
- end
- end
- return false, "timeout"
- end
- moduleItems["RequestAndWaitForCoins"] = RequestAndWaitForCoins
- return moduleItems
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement