Skip to content
lsl.devlsl.devLSL Dev

LlTextBox

Looking for the current API? Open the llTextBox reference →

Wiki description

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.

Caveats

  • Not supported in official Linden Lab 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.
  • The textbox input is limited to 250 bytes (characters). This can be a problem for larger text input; if the input can be over 250 characters, you will have to accept it through chat.
  • There is an undocumented throttle on llTextBox requests. Exceeding it will shout an error on DEBUG_CHANNEL until the "average" falls.

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
    llTextBox(avatar_key," \n",dialog_channel);

Examples

integer  gListener;
default
{
    touch_start(integer total_number)
    {
        // See 'discussion' page for more comments on choosing a channel and possible left-open listener
        integer channel = -13572468;
        // "" saves byte-code over NULL_KEY
        gListener = llListen( channel, "", "", "");     
        llTextBox(llDetectedKey(0), "Some info text for the top of the window...", channel);
    }
    listen(integer channel, string name, key id, string message)
    {
        llListenRemove(gListener);
        llSay(0, "You wrote: " + message);
    }
}
If the user hits Enter before clicking the "Submit" button, there will be a final carriage return in the message. In the rare event that this could be a problem, it is easily removed:
        message = llStringTrim(message,STRING_TRIM);

See also: functions

See also: events

History

Introduced in SVN:568 r88085 Trunk Wednesday, 21 May 2008

Shared wiki helpers

The original page also injects shared parameter notes, caveats or issue information through these helpers. Their conditional MediaWiki logic is not reproduced here; inspect the preserved helper source for additional material.

Template:LSL Function/avatar

Original shared helper source (conditional wiki logic is not evaluated)
{{LSL Injection Test}}<noinclude>{{Multi-lang|category=LSL}}</noinclude>{{#if:

{{#vardefine:p_{{{1|none}}}_desc|avatar {{#if:{{{group|}}}|or group}} {{HoverLink|UUID|Universally Unique Identifier}} {{#if:{{{sim|}}}{{{region|}}}|that is in the same [[region]] {{#ifeq:{{{sim|}}}{{{region|}}}|known|or is otherwise known to the region{{Footnote|handle=known}}}}}}}}

{{#vardefine:p_{{{1|none}}}_hover|avatar {{#if:{{{group|}}}|or group}} UUID {{#if:{{{sim|}}}{{{region|}}}|that is in the same region {{#ifeq:{{{sim|}}}{{{region|}}}|known|or is otherwise known to the region}}}}}}

<includeonly>
{{#if:{{{nc|}}}||{{#vardefine:hidden-text|{{#var:hidden-text}}
{{#if:{{#pos:{{#var:moded}}|r}}{{#pos:{{#var:moded}}|u}}||{{LSLC|Avatar/As A Parameter||{{#var:lang}}}}}}
}}}}
</includeonly>

}}<noinclude>
{| {{Prettytable}}
|-{{Hl2}}
! #var
! value
|-
{{VarPair|p_{{{1|none}}}_desc}}
|-
{{VarPair|p_{{{1|none}}}_hover}}
|}
</noinclude>

Template:LSL Function/chat

Original shared helper source (conditional wiki logic is not evaluated)
{{LSL Injection Test}}{{#if:

<includeonly>{{#if:{{{nc|}}}||{{#vardefine:hidden-text|{{#var:hidden-text}}{{LSLC|Communications{{#var:lang}}}}}}}}</includeonly>

{{#if:{{{1|<noinclude>*</noinclude>}}}|

<includeonly>{{#if:{{{nc|}}}||{{#vardefine:hidden-text|{{#var:hidden-text}}{{LSLC|Chat{{#var:lang}}}}}}}}</includeonly>

{{#vardefine:fc-neither|{{#ifeq:{{#if:{{{np|}}}|*}}{{#if:{{{nd|}}}|*}}|**|*}}}}

{{#if:{{#var:fc-neither}}|{{LSL Constants/Chat}}|
{{#vardefine:constants_nb|{{LSL Constants/Chat|np={{{np|}}}|nd={{{nd|}}}|direct={{{direct|}}}}}
{{#var:constants_nb}}}}}}

{{#if:{{{np|}}}||{{Footnote|handle=channel_zero|Channel zero is also known as: {{#var:PUBLIC_CHANNEL}}, open chat, local chat and public chat|Channel zero is also known as: PUBLIC_CHANNEL, open chat, local chat and public chat}}}}

{{#vardefine:p_{{{1|none}}}_desc|{{#if:{{{input|}}}|input|output}} {{LSLGC|Chat|chat}} channel, any integer value {{#if:{{#var:fc-neither}}|except zero{{Footnote|handle=channel_zero}} and {{#var:DEBUG_CHANNEL}}|{{#if:{{{np|}}}|except zero{{Footnote|handle=channel_zero}}}}{{#if:{{{nd|}}}|except {{#var:DEBUG_CHANNEL}}}}}}}}

{{#vardefine:p_{{{1|none}}}_hover|{{#if:{{{input|}}}|input|output}} chat channel, any integer value {{#if:{{#var:fc-neither}}|except zero (PUBLIC_CHANNEL) and DEBUG_CHANNEL|{{#if:{{{np|}}}|except zero (PUBLIC_CHANNEL)}}{{#if:{{{nd|}}}|except DEBUG_CHANNEL}}}}}}

{{#ifeq:{{#var:fc-neither}}{{{1|<noinclude>{{{1}}}</noinclude>}}}{{{dialog|}}}|{{{1}}}|
{{#vardefine:caveats|{{#var:caveats}}
*Messages sent on {{#if:{{{np|}}}||channel zero{{Footnote|handle=channel_zero}} {{#if:{{{nd|}}}||and}}}} {{#if:{{{nd|}}}||{{#var:DEBUG_CHANNEL}}}} are throttled to a rate of <200/10sec, per region, per owner/user.
**Once the rate is exceeded, all following messages on {{#if:{{{np|}}}||channel zero {{#if:{{{nd|}}}||or}}}} {{#if:{{{nd|}}}||{{#var:DEBUG_CHANNEL}}}} will be dropped until the send rate is again below 200/10sec for the previous 10 sec. Dropped messages, despite being dropped still count against the limit.}}
}}

}}

{{#if:{{{2|<noinclude>*</noinclude>}}}|

{{#if:{{{input|}}}|
{{#vardefine:p_{{{2|none_}}}_desc|{{#if:{{{ph|}}}|{{{ph|}}}|{{{pd|}}}}} message}}
|
{{#if:{{{dialog|}}}|
{{#vardefine:p_{{{2|none_}}}_desc|message to be displayed in the {{{dialog|}}}}}
|
{{#vardefine:p_{{{2|none_}}}_desc|message to be transmitted}}
}}
}}

}}

}}<noinclude>
{| {{Prettytable}}
|-{{Hl2}}
! #var
! value
|-
{{VarPair|caveats}}
|-
{{VarPair|p_{{{1|none}}}_desc}}
|-
{{VarPair|p_{{{1|none}}}_hover}}
|-
{{VarPair|p_{{{2|none_}}}_desc}}
|-
{{VarPair|constants_nb}}
|-
{{VarPair|examples}}
|-
{{VarPairTable|footnotes}}
|}
</noinclude>
Original wiki source

Some wiki templates and tables need their original context. View this article on the Second Life Wiki. Technical wording and examples are retained from the source; historical guidance may differ from current behavior.