Second Life Tutorial: Communication Between Two Different Objects

Comments 5 Standard

Finished Lego HouseFor my summer science research project I needed to build a lego house that would interact with a controller mounted on a working elevator. In order to get the controller communicating with the blocks I had to tune them both to the same channel. Once they were listening to the same channel I could send messages between the blocks and the controller without problem.

Controller Code

default
{
     state_entry()
     {
          //listen to this specific channel
          llListen(1361, "",NULL_KEY, "");
          llListen(1360, "",NULL_KEY, "");
          llSetText("Play.", , 1);
     }

     touch_start(integer total_number)
     {
          llSay(0, "Playing!");
          llSay(1360, "Hi there!");
     }

     //listen for something to happen
     listen(integer channel, string name, key id, string message)
     {
          if(message = "3 White")
          {
               llSay(0,"Three piece white lego pressed!");
          }
     }
}

Block Code

default
{
     state_entry()
     {
          //make it so they can walk through this
          llSetStatus( STATUS_PHANTOM, TRUE);
          //listen to this specific channel
          llListen(1361, "",NULL_KEY, "");
          llListen(1360, "",NULL_KEY, "");
          //you can say something like this
          llSay(1361,"Pressed");
     }
     
     //listen for something to happen
     listen(integer channel, string name, key id, string message)
     {
          if(channel == 1360)
          {
               llSay(0,"Hahahaha! That tickles!!");
          }
     }

     //or whisper something like this and still
     //send a message to the controller
     llWhisper(1361, "3 White");

     }
}
Advertisements

5 thoughts on “Second Life Tutorial: Communication Between Two Different Objects

  1. Hey Greta, I’ve got some good news…I think I solved our chat interference problem! Though my idea for turning all llSay’s into llOwnerSay’s would’ve worked, it would’ve made it so we were the only ones who could use our visualizations (i.e. Dr. Polack/others couldn’t try/test it out).

    Instead, what I’ve figured we can do is have the all the objects that use chat to instead instant message the person who touched the object. This solves both our problems! The text is no longer in 0 (the main chat channel), and the blocks respond to whoever touched them! There’s a tiny bit of delay, but that’s only noticeable if you’re trying to click the same block in rapid succession (so it’s not a problem for what we need.

    Before I post the code, I’ll also explain what’s around it. While playing around with my bars today, I realized something pretty important: though objects can be phantom/invisible, they’ll still respond like normal if you click them! Thus, I figured that if you make it so they only speak when phantom, it solves that problem (I’m pretty sure this is useful to you, because I’m assuming that if you click an object, it’ll identify itself by name for the user if they forget what it is, etc.)

    Here’s the code (and a pretty general script too!). If you have any questions about it, feel free to ask. Enjoy 🙂

    touch_start(integer total_number)
    {

    if ( !(llGetStatus(STATUS_PHANTOM)) ){
    llInstantMessage(llDetectedKey(0), llGetObjectName());
    }
    }

    Your thoughts?

  2. please explain me how communication between real world objects and virtual world objects takes place?

    i just want to know how the request gets served ……
    if possible plz reply me …….

  3. In secondLife communication is done through channels. Basically it broadcasts a signal to all of the objects within a certain distance. You have to set the objects (not sure what you mean with virtual and real) to listen to certain channels. Once an object listens to that channel it can respond to any message that another object sends out on that channel. I hope this helps.

  4. Great! You have opened my doors to enter lsl world..
    This was the hardest question for me.. how things get communicated? thanks again.. great article

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s