Answering Machine

Written by Kitsune

Needs a menu script to work.

 

// This script keeps a list of messages.
// The owner can play the messages back and erase them.
 

// Retrieved from Free SL Scripts: http://www.gendersquare.org/sl

// Global variables
list message_list;
integer listen_id = -1;  // Lets us turn off listening when we need to
string current_speaker_name = "";  // Who is currently recording a message

readList()
{
    integer i;

    integer count = llGetListLength( message_list );
    llSay( 0, "You have " + (string) count + " messages:" );
    for( i = 0; i < count; i++ )
    {
        llSay( 0, (string)(i+1) + ": " + llList2String(message_list, i) );
    }
}

resetList()
{
    message_list = llDeleteSubList(message_list, 0, llGetListLength(message_list));
    llSay( 0, "Erased all messages.");
}

addMessage( string name, string message )
{
    string full_message = name + " said, '" + message + "'";
    message_list += full_message;
}

default
{
    on_rez( integer start_param )
    {
        // re-initialize
        message_list = llDeleteSubList(message_list, 0, llGetListLength(message_list));
        listen_id = -1;
        current_speaker_name = "";
    }

    // Listen to a single line, spoken by the person who pressed
    // the "Leave Message" button.
    listen( integer channel, string name, key id, string message )
    {
        if( (channel == 0) && (current_speaker_name == name ) )
        {
            addMessage( current_speaker_name, message );
            llListenRemove( listen_id );
            current_speaker_name = "";
            listen_id = -1;
            llSay(0, "Message recorded: " + message );
        }
    }
    
    // Process messages from buttons
    link_message(integer sender_num, integer num, string message, key id)  
    {   
        // Uses a standard button message format:
        // "Button Message,