Advertisement
eytixis

PlayerRadiusLogger (Opencomputers mod)

Nov 8th, 2020
1,776
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.48 KB | None | 0 0
  1. local component = require("component")
  2. local term = require("term")
  3. local filesystem = require("filesystem")
  4. local shell = require("shell")
  5.  
  6. local debug = component.debug
  7.  
  8. local mainposition = {712,73,2195}
  9. local lradius = 100
  10. local includeVerticalDistance = false
  11. local interval = 1 -- in seconds
  12.  
  13. local inside = {}
  14.  
  15. local function checkTimeLib()
  16.     if not filesystem.exists("//lib/timelib.lua") then
  17.         shell.execute("pastebin get Tsg2tkA8 //lib/timelib.lua")
  18.     end
  19. end
  20.  
  21. checkTimeLib()
  22. local tl = require("timelib")
  23.  
  24. local function termClear()
  25.     term.clear()
  26.     term.setCursor(1,1)
  27. end
  28.  
  29. local function register(name)
  30.     table.insert(inside, name)
  31. end
  32.  
  33. local function unRegister(name)
  34.     for k,v in pairs (inside) do
  35.         if v == name then
  36.             table.remove(inside, k)
  37.         end
  38.     end
  39. end
  40.  
  41. local function isRegistered(name)
  42.     for k,v in pairs(inside) do
  43.         if (v == name) then
  44.             return true
  45.         end
  46.     end
  47.     return false
  48. end
  49.  
  50. local function getDistance(p1, p2)
  51.     if includeVerticalDistance then
  52.         local distance = math.sqrt(math.pow(p1[1]-p2[1],2) + math.pow(p1[2]-p2[2],2) + math.pow(p1[3]-p2[3],2))
  53.         return distance
  54.     else
  55.         local distance = math.sqrt(math.pow(p1[1]-p2[1],2) + math.pow(p1[3]-p2[3],2))
  56.         return distance
  57.     end
  58. end
  59.  
  60. local function log(player)
  61.     filesystem.makeDirectory(tl.getDate("//home/data/%h"))
  62.     local f = io.open(tl.getDate("//home/data/%h/%d.txt"), "a")
  63.     f:write(tl.getDate("%T").." -> "..player.." Entered")
  64.     f:write("\n")
  65.     f:close()
  66. end
  67.  
  68. local function unLog(player)
  69.     filesystem.makeDirectory(tl.getDate("//home/data/%h"))
  70.     local f = io.open(tl.getDate("//home/data/%h/%d.txt"), "a")
  71.     f:write(tl.getDate("%T").." -> "..player.." Left")
  72.     f:write("\n")
  73.     f:close()
  74. end
  75.  
  76. local function findClosePlayers(x,y,radius)
  77.     local players = debug.getPlayers()
  78.     for i = 1, #players do
  79.         local player = players[i]
  80.         local position = {debug.getPlayer(player).getPosition()}
  81.         if getDistance(mainposition, position) <= lradius then
  82.             if not isRegistered(player) then
  83.                 register(player)
  84.                 log(player)
  85.             end
  86.         else
  87.             if (isRegistered(player)) then
  88.                 unRegister(player)
  89.                 unLog(player)
  90.             end
  91.         end
  92.     end
  93. end
  94.  
  95.  
  96.  
  97. termClear()
  98. while true do
  99.     findClosePlayers()
  100.     os.sleep(interval)
  101. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement