Thod

ScannerClient

Sep 24th, 2020 (edited)
1,010
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. term.clear()
  2. term.setCursorPos(1,1)
  3. if not fs.exists("scannerClient/info/scanId") then
  4.     local createIdFile = fs.open("scannerClient/info/scanId","w")
  5.     createIdFile.writeLine("")
  6.     createIdFile.close()
  7. end
  8. local function inputPrint(iString)
  9.     term.setTextColor(colors.green)
  10.     print(iString)
  11.     term.setTextColor(colors.white)
  12. end
  13. local getScanIdFile = fs.open("scannerClient/info/scanId","r")
  14. local getScanId = getScanIdFile.readLine()
  15. getScanIdFile.close()
  16. local setId
  17. local ready = false
  18. local connected = false
  19. local noId = true
  20. local side = "noside"
  21. while side == "noside" do
  22.     inputPrint("Enter Modem Side (Right,Left,Front,Back,Top,Bottom): ")
  23.     local setSide = io.read()
  24.     if string.lower(setSide) == "right" or string.lower(setSide) == "left" or string.lower(setSide) == "front" or string.lower(setSide) == "back" or string.lower(setSide) == "top" or string.lower(setSide) == "bottom" then
  25.         side = string.lower(setSide)
  26.         rednet.open(side)
  27.     else
  28.         print("Invalid side")
  29.         sleep(2)
  30.     end
  31. end
  32. if getScanId == "" or getScanId == nil then
  33.     while noId == true do
  34.         term.clear()
  35.         term.setCursorPos(1,1)
  36.         inputPrint("Enter Control Terminal ID: ")
  37.         getId = io.read()
  38.         if tonumber(getId) == nil then
  39.             print("Must be a number")
  40.             sleep(2)
  41.         else
  42.             setId = tonumber(getId)
  43.             print("Establishing connection...")
  44.             local i = 1
  45.             while i <= 5 do
  46.                 rednet.send(setId,"я_%47ad")          
  47.                 local id, msg, protocol = rednet.receive(3)
  48.                     if id == setId then
  49.                         if msg == "CTCE" then
  50.                             print("Connection established, starting scanner client...")
  51.                             connected = true
  52.                             break
  53.                         end
  54.                     end
  55.                 i = i + 1
  56.             end
  57.                 if connected == true then
  58.                     local noX = true
  59.                     local xcoord = 0
  60.                     while noX do
  61.                         inputPrint("Enter X coord of client: ")
  62.                         local getX = io.read()
  63.                         if tonumber(getX) == nil then
  64.                             print("Must be a number")
  65.                             sleep(2)
  66.                         else
  67.                             noX = false
  68.                             xcoord = getX
  69.                         end
  70.                     end
  71.                     local noY = true
  72.                     local ycoord = 0
  73.                     while noY do
  74.                         inputPrint("Enter Y coord of client: ")
  75.                         local getY = io.read()
  76.                         if tonumber(getY) == nil then
  77.                             print("Must be a number")
  78.                             sleep(2)
  79.                         else
  80.                             noY = false
  81.                             ycoord = getY
  82.                         end
  83.                     end
  84.                     local noZ = true
  85.                     local zcoord = 0
  86.                     while noZ do
  87.                         inputPrint("Enter Z coord of client: ")
  88.                         local getZ = io.read()
  89.                         if tonumber(getZ) == nil then
  90.                             print("Must be a number")
  91.                             sleep(2)
  92.                         else
  93.                             noZ = false
  94.                             zcoord = getZ
  95.                         end
  96.                     end
  97.                     rednet.send(setId, "Sending coords...")
  98.                     rednet.send(setId, xcoord)
  99.                     rednet.send(setId, ycoord)
  100.                     rednet.send(setId, zcoord)
  101.                     term.setTextColor(colors.magenta)
  102.                     print("Setup complete!")
  103.                     term.setTextColor(colors.white)
  104.                     sleep(3)
  105.                     term.clear()
  106.                     term.setCursorPos(1,1)
  107.                     noId = false
  108.                     ready = true
  109.                 else
  110.                     print("Connection failed after 5 retries, rebooting...")
  111.                     sleep(5)
  112.                     os.reboot()
  113.                 end
  114.         end
  115.     end
  116.    
  117. end
  118.  
  119. local pinged = false
  120. local pingedSleep = -1
  121. local retrySleep = 0
  122. local toggle = true
  123.  
  124. term.setCursorPos(1,1)
  125. print("[ Player Tracker Client ]")
  126. while ready do
  127.     sleep(0.1)
  128.     if pinged == true then
  129.         if os.clock() == pingedSleep then
  130.             pinged = false
  131.         end
  132.     end
  133.     --[[
  134.     local r9id, r9msg, r9prot = rednet.receive()
  135.     if r9msg == "toggle on" then
  136.         toggle = true
  137.     elseif r9msg == "toggle off" then
  138.         toggle = false
  139.     end]]--
  140.     if toggle then
  141.     if rs.getInput("top") == true and pinged == false then
  142.         print("[CLIENT] Player detected, sending to server...")
  143.         rednet.send(setId, "player_found")
  144.         pinged = true
  145.         pingedSleep = os.clock() + 30
  146.         local ri = 1
  147.         while ri <= 5 do
  148.             local rid, rmsg, rprot = rednet.receive(5)
  149.             if rid == setId then
  150.                 print("[CLIENT] Server received and logged info")
  151.                 break
  152.             end
  153.             ri = ri + 1
  154.             if ri == 5 then
  155.             print("[CLIENT] Connection to server lost, storing info locally, retrying connection in one minute")
  156.             if not fs.exists(".loggedinfo") then
  157.                 local createLocal = fs.open(".loggedinfo","w")
  158.                     createLocal.writeLine("")
  159.                 createLocal.close()
  160.             end
  161.             local storeLocal = fs.open(".loggedinfo","a")
  162.                 storeLocal.writeLine("["..os.day().."] ["..os.clock().."] Player detector pinged")
  163.             storeLocal.close()
  164.             end
  165.         end
  166.     end
  167.     end
  168. end
  169.  
RAW Paste Data