llSetText

From Second Life Wiki
Revision as of 02:13, 8 August 2008 by Randur Source (talk | contribs) (Multiple linebreaks with empty lines solution)
Jump to navigation Jump to search

Summary

Function: llSetText( string text, vector color, float alpha );
0.0 Forced Delay
10.0 Energy

Displays text that hovers over the prim with specific color and translucency (specified with alpha).

• string text text to display
• vector color color in RGB <R, G, B> (<0.0, 0.0, 0.0> = black, <1.0, 1.0, 1.0> = white)
• float alpha from 0.0 (clear) to 1.0 (solid) (0.0 <= alpha <= 1.0)

Caveats

  • text is limited to 254 bytes, if the string is longer it will be truncated to 254 bytes, even if that means the truncation will chop a character in half.
  • Floating text can be seen through walls and other object. Be considerate of neighbors in malls and apartment buildings.
  • There is no way for a script to determine the prims current floating text or detect when it is changed.
  • Removing the script or deactivating it will not remove the prims floating text.
    • Floating text is a prim property and not dependent or changed to a script to continue to exist.
  • To remove floating text, use the following:

<lsl>llSetText("", <1.0, 1.0, 1.0>, 1.0);</lsl>

  • Vertical whitespace is removed from the end of the text string, so if you want vertical whitespace put any character (like a space) on the last line.
  • Multiple linebreaks with empty lines are converted to a single linebreak, so add a whitespace character on every line you want to skip User:Randur Source:

<lsl>llSetText("Monkeys\n\n\n\n\n", <1.0, 1.0, 1.0>, 1.0);//Bad llSetText("Monkeys\n\n\n\n\n ", <1.0, 1.0, 1.0>, 1.0);//Good - no, bad, see next line: llSetText("Monkeys\n \n \n \n \n ", <1.0, 1.0, 1.0>, 1.0);//Good</lsl>

Examples

Example of how llSetText could be included in default code to show object's name in green text: <lsl>default {

   state_entry()
   {
        llSay(0, "Hello, Avatar!");
        llSetText(llGetObjectName(), <0.0, 1.0, 0.0>, 1.0); // Display the object's current name in green
   }
   touch_start(integer total_number)
   {
        llSay(0, "Touched.");
   }

}</lsl> By default the floating text will appear on a single line. However, the floating text can be spread over multiple lines by using a line break "\n" (read SplitLine in section 'See Also').

Color & Alpha

Color Code
White <1.0, 1.0, 1.0>
Grey <0.5, 0.5, 0.5>
Black <0.0, 0.0, 0.0>
Red <1.0, 0.0, 0.0>
Green <0.0, 1.0, 0.0>
Blue <0.0, 0.0, 1.0>

The x, y & z components of the vector are used to represent red, green, and blue respectively. The range is different then traditional RGB, instead of being 0 -> 255, LSL uses 0 -> 1. <1.0, 1.0, 1.0>, means "white" and <0.0, 0.0, 0.0> means "black": <lsl>llSetText("I am on", <1.0, 1.0, 1.0>, 1.0);//white text</lsl> <lsl>llSetText("I am off", <0.0, 0.0, 0.0>, 1.0);//black text</lsl> The 1.0 is the alpha setting. 1.0 means fully opaque, and 0.0 would be completely transparent (invisible): <lsl>llSetText("alpha", <0.0, 1.0, 0.0>, 0.5);//50% translucent green text</lsl>

Multiple lines

<lsl>llSetText("I am \n on two lines!", <0.0, 1.0, 0.0>, 1.0);//two lines of green text</lsl>

Useful Snippets

Drag this script out of inventory onto an object to erase its set text: <lsl>// http://wiki.secondlife.com/wiki/llSetText default {

   state_entry()
   {
       llSetText("", <1.0, 1.0, 1.0>, 1.0);
       llRemoveInventory(llGetScriptName());
   }

}</lsl>

Notes

To actually display text on a prim, see XyzzyText, or consider using parcel prim Media options (useful only you have control over the land's media settings.)

See Also

Articles

•  Color in LSL
•  Translucent Color
•  Examples: SplitLine Insert 'new line' escape codes at certain positions of a string
•  Useful snippet: llGetObjectPermMask Label an object with text and newlines to give away or sell

Deep Notes

Signature

function void llSetText( string text, vector color, float alpha );