Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --pastebin get Lq1GgMw0 gpsServerSub
- local wirelessModem
- local wiredModem
- args = {...}
- shell.run("delete mathLib")
- shell.run("pastebin get PkFcWZJi mathLib")
- os.loadAPI("mathLib")
- shell.run("delete vector3Lib")
- shell.run("pastebin get Xruma0TN vector3Lib")
- os.loadAPI("vector3Lib")
- shell.run("delete fileUtils")
- shell.run("pastebin get m0yUeGbS fileUtils")
- os.loadAPI("fileUtils")
- worldPosition = vector3Lib.vector3(0,0,0)
- if #args > 3 then
- worldPosition = vector3Lib.vector3(args[1], args[2], args[3])
- fileUtils.saveToFile(worldPosition, "gpsPosition", "saves", true)
- print(textutils.serialiseJSON(worldPosition))
- else
- worldPosition = fileUtils.loadFromFile("saves/gpsPosition")
- if worldPosition ~= nil and worldPosition.x ~= nil then
- print("pos xyz ("..worldPosition.x..", "..worldPosition.y..", "..worldPosition.z..")")
- else
- error("Wrong Usage (worldPosX worldPosY worldPosZ) for first time setup")
- end
- end
- function setupWireless()
- wirelessModem = peripheral.wrap("top")
- if not wirelessModem.isWireless() then
- wirelessModem = peripheral.wrap("bottom")
- print("bottom wireless")
- else
- print("top wireless")
- end
- end
- function setupWired()
- wiredModem = peripheral.wrap("top")
- if wiredModem.isWireless() then
- wiredModem = peripheral.wrap("bottom")
- print("bottom wired")
- else
- print("top wired")
- end
- end
- setupWired()
- setupWireless()
- wiredModem.open(88)
- local replyRecieved = false
- parallel.waitForAny(
- function()
- while not replyRecieved do
- local data = {type = "register gps", subGPSName = os.getComputerID(), location = worldPosition}
- wiredModem.transmit(89, 88, textutils.serialise(data))
- sleep(5)
- end
- end,
- function()
- while true do
- local event, modemSide, senderChannel,
- replyChannel, message, senderDistance = os.pullEvent("modem_message")
- local package = textutils.unserialise(message)
- if senderChannel == 88 and package.id == os.getComputerID() then
- replyRecieved = true
- print("Registered to main server")
- end
- end
- end
- )
- wirelessModem.open(33)
- while true do
- local event, modemSide, senderChannel,
- replyChannel, message, senderDistance = os.pullEvent("modem_message")
- local recievedMessage = textutils.unserialise(message)
- local package = {distance = senderDistance, subGPSName = os.getComputerID(), clientID = recievedMessage.clientID, type = "distance"}
- if senderChannel == 33 then
- wiredModem.transmit(89, replyChannel, textutils.serialise(package))
- end
- end
Add Comment
Please, Sign In to add comment