Difference between revisions of "Receiving a rednet message through os.pullEvent()"

From ComputerCraft Wiki
Jump to: navigation, search
m (Moved to CAT:Programs, CAT:Tutorials.)
m (The Code: - Gave a bit more sophisticated code for this...)
Line 4: Line 4:
 
== The Code ==
 
== The Code ==
 
This is a typical Listener which prints the content and the sender id of any incoming message.
 
This is a typical Listener which prints the content and the sender id of any incoming message.
  rednet.open("Direction_of_modem")
+
  for n,m in ipairs(rs.getSides()) do rednet.open(m) end -- Opens all rednet sides.
 
  while true do
 
  while true do
 
   event, id, text = os.pullEvent()
 
   event, id, text = os.pullEvent()

Revision as of 05:08, 3 December 2012

The following method is a good method of receiving a rednet message without using rednet.receive(). It is usually used in IRC, Chat programs e.t.c. When a message arrives to a computer, a "rednet_message" event occurs.

The Code

This is a typical Listener which prints the content and the sender id of any incoming message.

for n,m in ipairs(rs.getSides()) do rednet.open(m) end -- Opens all rednet sides.
while true do
  event, id, text = os.pullEvent()
  if event == "rednet_message" then
    print(id .. "> " .. text)
  end
end

Explanation

rednet.open("Direction_of_modem")

Here we just open the modem.

while true do

We start a loop because os.pullEvent() terminates itself after 10 seconds.

event, id, text = os.pullEvent()

We wait for an event to occur and when this happens, we store the event's info into 3 variables. NOTE: You can give your variables whichever name you want.

if event == "rednet_message" then

We check if the event was a rednet message.

print(id .. "> " .. text)

We print the message and the id of the sender.

end
end

We close our previous statements.