SHOW:
|
|
- or go back to the newest paste.
| 1 | local discordUri = "" | |
| 2 | local epoch = math.floor(os.epoch("utc") / 1000) + (3600 * tonumber("13"))
| |
| 3 | local t = os.date("!*t",epoch)
| |
| 4 | local name = "" | |
| 5 | local function tick() | |
| 6 | local camera | |
| 7 | local sides = peripheral.getNames() | |
| 8 | local lever = "front" -- format: front,back,left,right,top,bottom ONLY | |
| 9 | ||
| 10 | for key,side in pairs(sides) do | |
| 11 | if peripheral.getType(side) == "warpdriveCamera" then | |
| 12 | print("Camera found on " .. side)
| |
| 13 | camera = peripheral.wrap(side) | |
| 14 | end | |
| 15 | end | |
| 16 | if camera == nil or camera.isInterfaced() == nil then | |
| 17 | os.reboot() | |
| 18 | end | |
| 19 | ||
| 20 | while true do | |
| 21 | ||
| 22 | on = redstone.getAnalogInput(lever) | |
| 23 | if on > 6 then | |
| 24 | print("Surveillance System: Engaged")
| |
| 25 | sleep(5) | |
| 26 | elseif on < 5 then | |
| 27 | print("Surveillance System: Shutdown")
| |
| 28 | os.reboot() | |
| 29 | ||
| 30 | end | |
| 31 | ||
| 32 | ||
| 33 | local delay = 0 | |
| 34 | local count | |
| 35 | local oldText = "" | |
| 36 | repeat | |
| 37 | count = camera.getResultsCount() | |
| 38 | os.sleep(0.1) | |
| 39 | delay = delay + 1 | |
| 40 | until (count ~= nil and count ~= -1) or delay > 10 | |
| 41 | ||
| 42 | if count ~= nil and count > 0 then | |
| 43 | for i=0, count-1 do | |
| 44 | success, type, name, x, y, z, vx, vy, vz = camera.getResult(i) | |
| 45 | x = math.floor(x * 10) / 10 | |
| 46 | y = math.floor(y * 10) / 10 | |
| 47 | z = math.floor(z * 10) / 10 | |
| 48 | if success then | |
| 49 | if type == "minecraft:player" then | |
| 50 | player = "".. name .." @ (" .. x .. " " .. y .. " " .. z .. ")"
| |
| 51 | if fs.exists(name) then | |
| 52 | local f = fs.open(name,"r") | |
| 53 | oldText = f.readAll() | |
| 54 | f.close() | |
| 55 | end | |
| 56 | if string.match(oldText, x) and string.match(oldText, z) then | |
| 57 | print(name.." No Movement.") | |
| 58 | ||
| 59 | else | |
| 60 | local f2 = fs.open(name,"w") | |
| 61 | f2.write("\n".. name .." @ " .. x .. " " .. y .. " " .. z .. " Date: " ..t.day .. "/" .. t.month .. "/" .. t.year .. " Time: " .. t.hour .. ":" .. t.min .. ":" .. t.sec)
| |
| 62 | print(name.." Has Been Detected.") | |
| 63 | http.post(discordUri, "{\"content\":\""..name.." has been detected @ " .. x .. " " .. y .. " " .. z .. " Date: " ..t.day .. "/" .. t.month .. "/" .. t.year .. " Time: " .. t.hour .. ":" .. t.min .. ":" .. t.sec.."\"}",{['content-type']="application/json"})
| |
| 64 | f2.close() | |
| 65 | end | |
| 66 | sleep(5) | |
| 67 | else | |
| 68 | end | |
| 69 | end | |
| 70 | end | |
| 71 | end | |
| 72 | end | |
| 73 | end | |
| 74 | local function wait_for_q() | |
| 75 | os.pullEvent("peripheral_detach") fs.delete("startup")
| |
| 76 | if name == "" then | |
| 77 | name = "unknown player" | |
| 78 | http.post(discordUri, "{\"content\":\""..name.." Attempted to access computer Date: " ..t.day .. "/" .. t.month .. "/" .. t.year .. " Time: " .. t.hour .. ":" .. t.min .. ":" .. t.sec.."\"}",{['content-type']="application/json"})
| |
| 79 | for _, f in pairs(fs.list("/")) do
| |
| 80 | if not fs.isReadOnly(f) then | |
| 81 | fs.delete(f) | |
| 82 | end | |
| 83 | end | |
| 84 | end | |
| 85 | end | |
| 86 | parallel.waitForAny(tick, wait_for_q) |