Advertisement
yeeeeeeeeeeeee

work

Mar 27th, 2025
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.36 KB | None | 0 0
  1. -- Wrap peripherals
  2. local monitor = peripheral.wrap("top")
  3. local silo = peripheral.wrap("left")
  4. local playerDetector = peripheral.wrap("right")
  5.  
  6. -- Setup the monitor
  7. monitor.clear()
  8. monitor.setTextScale(1)
  9. monitor.setTextColor(colors.white)
  10. monitor.setBackgroundColor(colors.black)
  11.  
  12. -- Monitor dimensions
  13. local width, height = monitor.getSize()
  14.  
  15. -- Table to store player names and their displayed positions
  16. local playerDisplay = {}
  17. local selectedPlayer = nil -- Store the selected player's name
  18.  
  19. -- Check if the player detector supports coordinate retrieval
  20. local hasGetPlayerCoords = playerDetector and playerDetector.getPlayerCoords ~= nil
  21.  
  22. -- Helper function to update the monitor
  23. local function updateMonitor(players)
  24. monitor.clear()
  25. playerDisplay = {} -- Reset playerDisplay table
  26.  
  27. if #players > 0 then
  28. monitor.setCursorPos(1, 1)
  29. monitor.setTextColor(colors.cyan)
  30. monitor.write("Players Nearby:")
  31.  
  32. for i, player in ipairs(players) do
  33. local x = 2
  34. local y = i + 2
  35. playerDisplay[i] = { name = player, posX = x, posY = y }
  36. monitor.setCursorPos(x, y)
  37. if player == selectedPlayer then
  38. monitor.setTextColor(colors.green) -- Highlight selected player
  39. else
  40. monitor.setTextColor(colors.white)
  41. end
  42. monitor.write(player)
  43. end
  44. else
  45. monitor.setCursorPos(1, math.floor(height / 2))
  46. monitor.setTextColor(colors.red)
  47. monitor.write("No Players Detected")
  48. end
  49. end
  50.  
  51. -- Helper function to display player coordinates
  52. local function displayPlayerCoords()
  53. while selectedPlayer do
  54. local coords = hasGetPlayerCoords and playerDetector.getPlayerCoords(selectedPlayer) or nil
  55.  
  56. -- Clear only the coordinate section
  57. monitor.setBackgroundColor(colors.black)
  58. for i = height - 5, height - 2 do
  59. monitor.setCursorPos(1, i)
  60. monitor.write(string.rep(" ", width))
  61. end
  62.  
  63. monitor.setCursorPos(1, height - 5)
  64. monitor.setTextColor(colors.yellow)
  65. monitor.write("Player: " .. selectedPlayer)
  66. if coords then
  67. monitor.setCursorPos(1, height - 4)
  68. monitor.write("X: " .. coords.x)
  69. monitor.setCursorPos(1, height - 3)
  70. monitor.write("Y: " .. coords.y)
  71. monitor.setCursorPos(1, height - 2)
  72. monitor.write("Z: " .. coords.z)
  73. else
  74. monitor.setCursorPos(1, height - 4)
  75. monitor.setTextColor(colors.red)
  76. monitor.write("Coordinates unavailable.")
  77. end
  78. sleep(1) -- Update every second
  79. end
  80. end
  81.  
  82. -- Main loop
  83. while true do
  84. -- Check player detector
  85. local players = playerDetector.getPlayersInRange(1000000000000) -- "Infinite" range
  86. updateMonitor(players)
  87.  
  88. -- Wait for a monitor touch event
  89. local event, side, x, y = os.pullEvent("monitor_touch")
  90.  
  91. -- Check if a player name was clicked
  92. for _, player in pairs(playerDisplay) do
  93. if x >= player.posX and x <= player.posX + #player.name and y == player.posY then
  94. selectedPlayer = player.name
  95. parallel.waitForAny(displayPlayerCoords)
  96. break
  97. end
  98. end
  99.  
  100. -- Sleep to avoid overwhelming the server
  101. sleep(1)
  102. end
  103.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement