Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Refresh rate of the sensor
- local iRefreshRate = 0.3
- -- Edit the range of the sensor!
- local tSensorRange = {}
- tSensorRange.xMin = -5
- tSensorRange.xMax = 5
- tSensorRange.yMin = -5
- tSensorRange.yMax = 5
- tSensorRange.zMin = -5
- tSensorRange.zMax = 5
- -- Set 'bUSR' to true, if you want to enable the Sensor Range Limit!
- local bUSR = true
- -- Edit this whitelist to your likings!
- local tWhitelist = {"Coronaxe","Notch","Direwolf20","Dinnerbone"}
- -- Set 'bUWL' to true, if you want to enable the whitelist!
- local bUWL = false
- -- Invert the Output
- local bInvert = false
- -- Determine the side(s), where the output should occur.
- local tRSides = {"left","right"}
- -- determine this variable, if you have more than one sensor in your network. The Numbers will show up on startup.
- local iSensorID = 1
- function getPeripherals()
- local tTempStore = {}
- for i,s in pairs( peripheral.getNames() ) do
- if tTempStore[ peripheral.getType( s ) ] == nil then
- tTempStore[ peripheral.getType ( s ) ] = {}
- end
- table.insert( tTempStore[ peripheral.getType ( s ) ], s )
- end
- return tTempStore
- end
- function getRSOutput()
- local tTempStore = {}
- for i, s in pairs( rs.getSides() ) do
- table.insert( tTempStore, s )
- end
- return tTempStore
- end
- function getEntities( pSensor )
- local tTempStore = {}
- tTempStore.mobs, tTempStore.players = pSensor.getMobIds(), pSensor.getPlayerNames()
- return tTempStore
- end
- function control( tRSides, bState, bInvert )
- if bInvert then
- bState = not bState
- end
- for i=1, #tRSides do
- rs.setOutput( tRSides[i], bState )
- end
- end
- function cls()
- term.setBackgroundColor( colors.black )
- term.clear()
- term.setCursorPos( 1, 1 )
- end
- function main()
- cls()
- print( "Initializing..." )
- print( "Searching for sensors..." )
- local tPeripherals = getPeripherals()
- local pSensor, tEntities, tAdvancedPlayerData
- if not tPeripherals.openperipheral_sensor then
- error( "NO SENSOR CONNECTED!" )
- end
- print( "\nSensors found:" )
- for i=1, #tPeripherals.openperipheral_sensor do
- print( "["..i.."]:"..tPeripherals.openperipheral_sensor[i] )
- end
- if ( #tPeripherals.openperipheral_sensor > 1 and iSensorID < 1 ) or ( #tPeripherals.openperipheral_sensor > 1 and iSensorID > #tPeripherals.openperipheral_sensor ) then
- error( "iSensorID is out of range!" )
- end
- if #tPeripherals.openperipheral_sensor == 1 then
- iSensorID = 1
- end
- pSensor = peripheral.wrap( tPeripherals.openperipheral_sensor[ iSensorID ] )
- print( "Wrapped sensor on "..tPeripherals.openperipheral_sensor[ iSensorID ] )
- sleep( 0.2 )
- while true do
- tEntities = getEntities( pSensor )
- if #tEntities.players > 0 then
- for i=1, #tEntities.players do
- local bAllow = false
- for j=1, #tWhitelist do
- if tEntities.players[ i ] == tWhitelist[ j ] then
- bAllow = true
- end
- end
- if not bUWL then
- bAllow = true
- end
- if bUSR then
- if not ( tSensorRange.xMin < pSensor.getPlayerData( tEntities.players[ i ] ).position.x and tSensorRange.xMax > pSensor.getPlayerData( tEntities.players[ i ] ).position.x ) or not ( tSensorRange.yMin < pSensor.getPlayerData( tEntities.players[ i ] ).position.y and tSensorRange.yMax > pSensor.getPlayerData( tEntities.players[ i ] ).position.y ) or not ( tSensorRange.zMin < pSensor.getPlayerData( tEntities.players[ i ] ).position.z and tSensorRange.zMax > pSensor.getPlayerData( tEntities.players[ i ] ).position.z ) then
- control( tRSides, false, bInvert )
- elseif bAllow then
- control( tRSides, true, bInvert )
- end
- elseif bAllow then
- control( tRSides, true, bInvert )
- end
- tAdvancedPlayerData = pSensor.getPlayerData( tEntities.players[ i ] )
- cls()
- print( " Listening... Terminate with ctrl + t for 2 seconds" )
- print( "Players:" )
- print( "\t"..tEntities.players[ i ] )
- print( "\t[X]:"..tAdvancedPlayerData.position.x )
- print( "\t[Y]:"..tAdvancedPlayerData.position.y )
- print( "\t[Z]:"..tAdvancedPlayerData.position.z )
- end
- else
- control( tRSides, false, bInvert )
- end
- sleep( iRefreshRate )
- end
- end
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement