Difference between revisions of "LlTextBox"

From Second Life Wiki
Jump to: navigation, search
m
m
Line 25: Line 25:
 
Instead of mouse clicking: "Submit", you can use keyboard keys: press {{K|Tab}} and then {{K|Enter}}
 
Instead of mouse clicking: "Submit", you can use keyboard keys: press {{K|Tab}} and then {{K|Enter}}
  
|examples=<lsl>integer listener;
+
|examples=
 +
<lsl>
 +
integer listener;
 +
 
 +
// this is a user-function, it doesn't have a return type
 +
remove_listener()
 +
{
 +
    llListenRemove(listener);
 +
}
  
 
default
 
default
Line 31: Line 39:
 
     touch_start(integer total_number)
 
     touch_start(integer total_number)
 
     {
 
     {
         llListenRemove(listener);//A previous user may not have responded. Make sure we don't leak!
+
         key id = llDetectedKey(0);
         integer channel = ~(integer)llFrand(1000.0);
+
        remove_listener();
         listener = llListen(channel,"","","");
+
 
         llTextBox(llDetectedKey(0),"Write something here...",channel);
+
         integer randomChannel = ~(integer)llFrand(1000.0);
 +
         listener = llListen(randomChannel, "", NULL_KEY, "");
 +
 
 +
         llTextBox(id, "Some info text for the top of the window...", randomChannel);
 
     }
 
     }
   
+
 
 
     listen(integer channel, string name, key id, string message)
 
     listen(integer channel, string name, key id, string message)
 
     {
 
     {
         llSay(0,"You wrote: " + message);
+
        // PUBLIC_CHANNEL has the integer value 0
         llListenRemove(listener);
+
         llSay(PUBLIC_CHANNEL, "You wrote: " + message);
 +
 
 +
         remove_listener();
 
     }
 
     }
}</lsl>
+
}
 +
</lsl>
 
|spec
 
|spec
 
|constants
 
|constants

Revision as of 08:49, 23 September 2012

Summary

Function: llTextBox( key avatar, string message, integer channel );

Shows a dialog box on avatar's screen with the text message. It contains a text box for input, any text that is entered is said by avatar on channel when the "Submit" button is clicked.

• key avatar avatar UUID that is in the same region
• string message message to be displayed in the text box
• integer channel output chat channel, any integer value
Channel Constant Description
DEBUG_CHANNEL 0x7FFFFFFF Chat channel reserved for script debugging and error messages, broadcasts to all nearby users.
PUBLIC_CHANNEL 0x0 Chat channel that broadcasts to all nearby users. This channel is sometimes referred to as: open chat, local chat and public chat.

Caveats

  • This function causes the script to sleep for 1.0 seconds.
  • Not supported in official Linden Labs viewers prior to version 2.4, and some TPVs may not support it. Unsupported viewers will display a dialog box with a single option of "!!llTextBox!!".
  • There is no way by script to kill a text box.
  • There is no way for the script to detect if the user clicked the small "ignore" button (no chat is generated as a result of pressing this button).
  • If the listening prim is out of the 20 meter range of the sending prim when the "Submit" button is pressed, it will not be able to hear the response.
    • This limitation affects attachments too if the wearer moves more than 20 meters from where the listener is located.

message limits

  • If it exceeds 7 (Viewer 3) or 8 (Viewer 1) lines a scroll bar will appear.
  • message must be less than 512 bytes and not empty. Otherwise it will shout an error on DEBUG_CHANNEL. One easy way to create an empty message is to use a line feed, as in <lsl>llTextBox(avatar_key," \n",dialog_channel);</lsl>
All Issues ~ Search JIRA for related Bugs

Examples

<lsl> integer listener;

// this is a user-function, it doesn't have a return type remove_listener() {

   llListenRemove(listener);

}

default {

   touch_start(integer total_number)
   {
       key id = llDetectedKey(0);
       remove_listener();
       integer randomChannel = ~(integer)llFrand(1000.0);
       listener = llListen(randomChannel, "", NULL_KEY, "");
       llTextBox(id, "Some info text for the top of the window...", randomChannel);
   }
   listen(integer channel, string name, key id, string message)
   {
       // PUBLIC_CHANNEL has the integer value 0
       llSay(PUBLIC_CHANNEL, "You wrote: " + message);
       remove_listener();
   }

}

</lsl>

Notes

Instead of mouse clicking: "Submit", you can use keyboard keys: press Tab ⇆ and then Enter ↵

See Also

Events

•  listen

Functions

•  llDialog
•  llListen
•  llSay
•  llWhisper
•  llShout
•  llRegionSay

Deep Notes

History

Search JIRA for related Issues

Source

HG:viewer-release - indra/llcommon/lllslconstants.h (please use SourceLink/bitbucket instead, SourceLink is deprecated) <cpp>// llTextBox() magic token string - yes this is a hack. sue me. const std::string TEXTBOX_MAGIC_TOKEN = "!!llTextBox!!";</cpp>

Footnotes

  1. ^ Channel zero is also known as: PUBLIC_CHANNEL, open chat, local chat and public chat

Signature

function void llTextBox( key avatar, string message, integer channel );
<lsl></lsl>