Advertisement
jaklsfjlsak

c

Feb 15th, 2021 (edited)
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.33 KB | None | 0 0
  1. local uri = "htt"
  2. local intervalSec = 15
  3. function tableHasValue(table, v)
  4. for i=1,#table do
  5. if table[i] == v then
  6. return true
  7. end
  8. end
  9. return false
  10. end
  11.  
  12. if not term.isColor() then
  13. print("Advanced computer required")
  14. error()
  15. end
  16.  
  17. local function showError(message)
  18. term.setBackgroundColor(colors.black)
  19. term.setTextColor(colors.red)
  20. term.write(message)
  21. term.setBackgroundColor(colors.black)
  22. term.setTextColor(colors.white)
  23. print()
  24. end
  25.  
  26. local function showErrorAndExit(message)
  27. showError(message)
  28. error()
  29. end
  30.  
  31. local camera
  32. local cameras = {}
  33. local sides = peripheral.getNames()
  34. for key,side in pairs(sides) do
  35. if peripheral.getType(side) == "warpdriveCamera" then
  36. print("Camera found on " .. side)
  37. camera = peripheral.wrap(side)
  38. table.insert(cameras, peripheral.wrap(side))
  39. --camera.videoChannel("23" + key)
  40. end
  41. end
  42. if camera == nil or camera.isInterfaced() == nil then
  43. showErrorAndExit("No camera detected")
  44. end
  45.  
  46. local argv = { ... }
  47. if #argv ~= 0 then
  48. showErrorAndExit("Usage: recognition")
  49. end
  50. while true do
  51. for _, camera in pairs(cameras) do
  52. local delay = 0
  53. local count
  54. local newFaces = {}
  55. local oldFaces = {}
  56. repeat
  57. count = camera.getResultsCount()
  58. os.sleep(0.1)
  59. delay = delay + 1
  60. until (count ~= nil and count ~= -1) or delay > 10
  61.  
  62. if count ~= nil and count > 0 then
  63. for i=0, count-1 do
  64. local success, type, name, x, y, z, vx, vy, vz = camera.getResult(i)
  65. x = math.floor(x * 10) / 10
  66. y = math.floor(y * 10) / 10
  67. z = math.floor(z * 10) / 10
  68. if success then
  69. if type == "minecraft:player" then
  70. player = "".. name .." @ (" .. x .. " " .. y .. " " .. z .. ")"
  71. table.insert(newFaces,player)
  72. if not tableHasValue(oldFaces, player) then -- not already tracked
  73. if firstMsgPart then
  74. str = str.."**Newly tracked Players:**"
  75. firstMsgPart = false
  76. end
  77. str = str.."\n"..so
  78. end
  79. --print(so)
  80. --os.sleep(.5)
  81. --
  82. end
  83. end
  84.  
  85.  
  86. firstMsgPart = true
  87. for i=1,#oldFaces do
  88. if not tableHasValue(newFaces, oldFaces[i]) then -- if a ship was removed
  89. if firstMsgPart then
  90. str = str.."Lost contact with ships:\n"
  91. firstMsgPart = false
  92. end
  93. str = str..oldFaces[i].."\n"
  94. end
  95. end
  96. --print("\n\n")
  97. --print("l3:"..#newShips)
  98. if str ~= "" then
  99. str = "-------------------------------\n"..str
  100. --print("posting update to discord...")
  101. local sanitized = ""
  102. for j=1,str:len() do
  103. if string.find(str:sub(j,j), "\"") or str:sub(j,j):find("\\") then
  104. sanitized = sanitized .. "."
  105. -- print("removed "..str:sub(j,j))
  106. else
  107. sanitized = sanitized .. string.sub(str,j,j)
  108. end
  109. end
  110. --print(sanitized)
  111. term.setCursorPos(1,11)
  112. term.clearLine()
  113. print("Sent Results to HFGR Server.")
  114. if sanitized:len() > 1950 then
  115. sanitized = sanitized:sub(1,1951).."[..]"
  116. end
  117. http.post(discordUri, "{\"content\":\""..sanitized:gsub("\n","\\n").."\"}",{['content-type']="application/json"})
  118. end
  119. oldFaces = newFaces
  120. sleep(intervalSec)
  121. end
  122.  
  123. else
  124. end
  125. else
  126. showError("Error " .. type)
  127. end
  128. end
  129. else
  130. print("Nothing was found =(")
  131. end
  132. end
  133. oldFaces = newFaces
  134. sleep(intervalSec)
  135. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement