zodiak707

Phoenix LSI Shield

Feb 3rd, 2021 (edited)
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.99 KB | None | 0 0
  1. local shieldID = 0
  2.  
  3. if not term.isColor() then
  4.   print("Advanced computer required")
  5.   error()
  6. end
  7.  
  8. local function showError(message)
  9.   term.setBackgroundColor(colors.black)
  10.   term.setTextColor(colors.red)
  11.   term.write(message)
  12.   term.setBackgroundColor(colors.black)
  13.   term.setTextColor(colors.white)
  14.   print()
  15. end
  16.  
  17. local function showErrorAndExit(message)
  18.   showError(message)
  19.   error()
  20. end
  21.  
  22. local shield
  23. local sides = peripheral.getNames()
  24. for key,side in pairs(sides) do
  25.     if peripheral.getType(side) == "warpdriveForceFieldProjector" then
  26.         shield = peripheral.wrap(side)
  27.     end
  28. end
  29. if shield == nil or shield.isInterfaced() ~= true then
  30.     showErrorAndExit("No force field projector detected")
  31. end
  32.  
  33. term.clear()
  34. term.setCursorPos(1, 1)
  35. print("Phoenix shield client of Lupus Space Industries started.")
  36.  
  37. function split(inputstr, sep)
  38.     if sep == nil then
  39.         sep = "%s"
  40.     end
  41.     local t={}
  42.     for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
  43.         table.insert(t, str)
  44.     end
  45.     return t
  46. end
  47.  
  48. while true do
  49.     local ws, err = http.websocket("ws://144.76.116.75:2021")
  50.     if(err) then
  51.         showErrorAndExit(err)
  52.         shell.run("startup")
  53.     end
  54.     local message = ws.receive()
  55.    
  56.     if string.match(message, "shdEnergy") then
  57.         print("Received: "..message)
  58.         local energy, maxEnergy, energyType = shield.getEnergyStatus()
  59.         ws.send("shieldEnergy " .. shieldID .. " " .. energy .. " " .. maxEnergy .. " " .. energyType)
  60.         print("Send: shieldEnergy " .. shieldID .. " " .. energy .. " " .. maxEnergy .. " " .. energyType)
  61.     elseif string.match(message, "shdState") then
  62.         print("Received: "..message)
  63.         local status, isEnabled, isConnected, isPowered, shape, energy = shield.state()
  64.         local tier, tierName = shield.getTier()
  65.         local name = shield.name()
  66.         local frequence = shield.beamFrequency()
  67.         ws.send("shieldState " .. shieldID .. " " .. status .. " " .. isEnabled .. " " .. isConnected .. " " .. isPowered .. " " .. shape .. " " .. energy .. " " .. tier .. " " .. tierName .. " " .. name .. " " .. frequence)
  68.         print("Send: shieldState " .. shieldID .. " " .. status .. " " .. isEnabled .. " " .. isConnected .. " " .. isPowered .. " " .. shape .. " " .. energy .. " " .. tier .. " " .. tierName .. " " .. name .. " " .. frequence)
  69.     elseif string.match(message, "shdName") then
  70.         print("Received: "..message)
  71.         local name = split(message, " ")
  72.         shield.name(name[2])
  73.     elseif string.match(message, "shdFrequence") then
  74.         print("Received: "..message)
  75.         local frequence = split(message, " ")
  76.         shield.beamFrequency(frequence[2])
  77.     elseif string.match(message, "shdToggle") then
  78.         print("Received: "..message)
  79.         local status, isEnabled, isConnected, isPowered, shape, energy = shield.state()
  80.         if(isConnected) then
  81.             if(shape == "NONE") then
  82.                 print("Projector is missing a shape!")
  83.             else
  84.                 if(isEnabled) then
  85.                     shield.enable(false)
  86.                 else
  87.                     shield.enable(true)
  88.                 end
  89.             end
  90.         else
  91.             print("Projector is missing a beam frequency!")
  92.         end
  93.     end
  94.     os.sleep(1)
  95.     ws.close()
  96. end
Add Comment
Please, Sign In to add comment