Advertisement
pulchroxloom

Turtle Logger

Jan 26th, 2025 (edited)
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.25 KB | None | 0 0
  1. LOGS_RECV = 1 -- general purpose logger
  2. SERVER_RECV = 20
  3. CLIENT_MINIMUM = 300
  4. CLIENT_MAXIMUM = 900
  5. CLIENT_GAP = 10
  6. COLOR_MINIMUM = 2
  7. COLOR_MAXIMUM = 14
  8.  
  9. local modem = nil
  10. local peripherals = peripheral.getNames()
  11. for name = 1, #peripherals, 1 do
  12.     if (peripheral.getType(peripherals[name]) == "modem") then
  13.         modem = peripheral.wrap(peripherals[name])
  14.         break
  15.     end
  16. end
  17.  
  18. if (modem == nil) then
  19.     error("Error, this program requires a Modem!")
  20. end
  21.  
  22. local function replyChannelColor(replyChanel)
  23.     local r = replyChanel / CLIENT_GAP
  24.  
  25.     if replyChanel < CLIENT_MINIMUM then
  26.         return math.floor(r)
  27.     end
  28.  
  29.     local u = (r - CLIENT_MINIMUM) / (CLIENT_MAXIMUM - CLIENT_MINIMUM)
  30.  
  31.     local exponent = COLOR_MINIMUM + (COLOR_MAXIMUM - COLOR_MINIMUM) * u
  32.  
  33.     return 2^exponent
  34. end
  35.  
  36. modem.open(LOGS_RECV)
  37.  
  38. while true do
  39.     local event, modemSide, senderChannel, replyChannel, message, senderDistance = os.pullEvent("modem_message")
  40.     local color = replyChannelColor(replyChannel)
  41.     if replyChannel == SERVER_RECV then
  42.         replyChannel = "S"
  43.     end
  44.     local log = replyChannel .. ": " .. message .. " (" .. senderDistance .. " m)"
  45.     term.setTextColor(color)
  46.     print(log)
  47. end
  48.  
  49. modem.close(LOGS_RECV)
  50.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement