Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Recherche des périphériques
- local speakers = { peripheral.find("speaker") }
- local modems = { peripheral.find("modem") }
- -- Vérifications et logs initiaux
- print("Speakers trouvés : " .. #speakers)
- print("Modems trouvés : " .. #modems)
- if #modems == 0 then
- error("Aucun modem trouvé")
- end
- if #speakers == 0 then
- error("Aucun haut-parleur trouvé")
- end
- -- Fonction pour jouer sur un speaker
- local function playSpeaker(speaker, message)
- while not speaker.playAudio(message, 1.0) do
- os.pullEvent("speaker_audio_empty")
- end
- end
- -- Ouvrir les canaux sur tous les modems
- for i, modem in pairs(modems) do
- print("Ouverture des canaux sur modem " .. i)
- modem.open(1) -- Canal de réception
- modem.open(2) -- Canal de transmission
- end
- print("En attente de messages...")
- -- Boucle principale
- while true do
- local event, side, channel, replyChannel, message, distance = os.pullEvent("modem_message")
- print("Message reçu sur canal " .. channel .. " depuis " .. side)
- if channel == 1 then
- print("Traitement du message audio")
- -- Créer les callbacks pour chaque speaker
- local callbacks = {}
- for _, speaker in pairs(speakers) do
- table.insert(callbacks, function()
- playSpeaker(speaker, message)
- end)
- end
- -- Lancer tous les speakers en parallèle
- parallel.waitForAll(table.unpack(callbacks))
- -- Retransmettre sur tous les modems
- for _, modem in pairs(modems) do
- if peripheral.getName(modem) ~= side then
- print("Retransmission vers " .. peripheral.getName(modem))
- modem.transmit(2, 1, message)
- end
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement