Advertisement
N2AZ

receiver_wired_handled

Nov 18th, 2024 (edited)
28
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.76 KB | None | 0 0
  1. -- Recherche des périphériques
  2. local speakers = { peripheral.find("speaker") }
  3. local modems = { peripheral.find("modem") }
  4.  
  5. -- Vérifications et logs initiaux
  6. print("Speakers trouvés : " .. #speakers)
  7. print("Modems trouvés : " .. #modems)
  8.  
  9. if #modems == 0 then
  10.     error("Aucun modem trouvé")
  11. end
  12.  
  13. if #speakers == 0 then
  14.     error("Aucun haut-parleur trouvé")
  15. end
  16.  
  17. -- Fonction pour jouer sur un speaker
  18. local function playSpeaker(speaker, message)
  19.     while not speaker.playAudio(message, 1.0) do
  20.         os.pullEvent("speaker_audio_empty")
  21.     end
  22. end
  23.  
  24. -- Ouvrir les canaux sur tous les modems
  25. for i, modem in pairs(modems) do
  26.     print("Ouverture des canaux sur modem " .. i)
  27.     modem.open(1)  -- Canal de réception
  28.     modem.open(2)  -- Canal de transmission
  29. end
  30.  
  31. print("En attente de messages...")
  32.  
  33. -- Boucle principale
  34. while true do
  35.     local event, side, channel, replyChannel, message, distance = os.pullEvent("modem_message")
  36.     print("Message reçu sur canal " .. channel .. " depuis " .. side)
  37.  
  38.     if channel == 1 then
  39.         print("Traitement du message audio")
  40.  
  41.         -- Créer les callbacks pour chaque speaker
  42.         local callbacks = {}
  43.         for _, speaker in pairs(speakers) do
  44.             table.insert(callbacks, function()
  45.                 playSpeaker(speaker, message)
  46.             end)
  47.         end
  48.  
  49.         -- Lancer tous les speakers en parallèle
  50.         parallel.waitForAll(table.unpack(callbacks))
  51.  
  52.         -- Retransmettre sur tous les modems
  53.         for _, modem in pairs(modems) do
  54.             if peripheral.getName(modem) ~= side then
  55.                 print("Retransmission vers " .. peripheral.getName(modem))
  56.                 modem.transmit(2, 1, message)
  57.             end
  58.         end
  59.     end
  60. end
  61.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement