LlSetText
Looking for the current API? Open the llSetText reference →
Wiki description
Displays
text that hovers over the prim with specific color and translucency (specified with alpha).Caveats
- If more than one llSetText is called (By reset,interaction or script state) within a prim the latest call will take priority over the previous.
textis limited to 254 bytes (compare Limits) in UTF-8 encoding. If the string is longer it will be truncated to 254 bytes, and any multibyte characters getting split will be removed entirely.- An unbroken line of text of a great length may be broken automatically into two lines (one above the other).
textcan be seen through walls and other object. Be considerate of neighbors in malls and apartment buildings.- Visibility distance increases with prim size.
- Removing the script or deactivating it will not remove a prim's
textproperty. Floatingtextis not dependent on a script for its continued existence but only when wanting to change it. - To remove a prim's
text, use the following:
Preferred method to remove a prim's floating text | Second method does the same effect-wise. |
|---|---|
| |
- Vertical whitespace is removed from the end of the
textstring, 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:
| Good | Bad |
|---|---|
| |
- Measurements showed a high impact of process time when doing numerous iterations in a while loop. For approx. 65 thousand iterations the process times are ca. 5 seconds without floating text, 24 seconds with llSetText and 96 seconds when using llSetPrimitiveParams in combination with PRIM_TEXT. Thats why you are not advised to make excessive use of changing a prim's
textwithin such iterations.
Examples
Example of how llSetText could be used to show prim's name in green
text:default
{
state_entry()
{
vector COLOR_GREEN = <0.0, 1.0, 0.0>;
float OPAQUE = 1.0;
// prim's name (not necessarily object's)
llSetText(llGetObjectName(), COLOR_GREEN, OPAQUE );
// delete the script as we only needed it to change the floating text property
llRemoveInventory(llGetScriptName());
}
}By default the floating
text will appear on a single line. However, it can be spread over multiple lines by using a line break "\n" (read SplitLine in section 'See Also').String escape codes:
LSL has four string escape codes:
\nfor a new line\\for a backslash\tfor a tab\"for a double-quote
Color & Alpha
| Color | Code |
|---|---|
| NAVY | <0.000, 0.122, 0.247> |
| BLUE | <0.000, 0.455, 0.851> |
| AQUA | <0.498, 0.859, 1.000> |
| TEAL | <0.224, 0.800, 0.800> |
| OLIVE | <0.239, 0.600, 0.439> |
| GREEN | <0.180, 0.800, 0.251> |
| LIME | <0.004, 1.000, 0.439> |
| YELLOW | <1.000, 0.863, 0.000> |
| ORANGE | <1.000, 0.522, 0.106> |
| RED | <1.000, 0.255, 0.212> |
| MAROON | <0.522, 0.078, 0.294> |
| FUCHSIA | <0.941, 0.071, 0.745> |
| PURPLE | <0.694, 0.051, 0.788> |
| WHITE | <1.000, 1.000, 1.000> |
| SILVER | <0.867, 0.867, 0.867> |
| GRAY | <0.667, 0.667, 0.667> |
| BLACK | <0.000, 0.000, 0.000> |
The x, y & z components of the vector are used to represent red, green, and blue respectively. The range is different from traditional RGB, instead of being 0 -> 255, LSL uses 0 -> 1.
<1.0, 1.0, 1.0> represents "white" and <0.0, 0.0, 0.0> represents "black":// white & opaque
llSetText("I am white", <1.0, 1.0, 1.0>, 1.0); vector myColor;// defaults to ZERO_VECTOR or <0.0, 0.0, 0.0> which is black
llSetText("I am black and 30% transparent.", myColor, 0.7);
llSleep(7.5); // before: <0.0, 0.0, 0.0> black
myColor.x = 1.0;// now: <1.0, 0.0, 0.0> red
llSetText("I am now red and 10% transparent.", myColor, 0.9);If
alpha is 1.0 it means the text is fully opaque (alpha), 0.0 would make it completely transparent (invisible): llSetText("green text with alpha 0.7", <0.0, 1.0, 0.0>, 0.7);
llSetText("white text with alpha 0.4\n60% transparent", <1.0, 1.0, 1.0>, 0.4);
llSetText("white text with alpha 1.0\nfully opaque", <1.0, 1.0, 1.0>, 1.0);
// next to lines have the same effect
llSetText("invisible black text with alpha 0.0\nfully transparent", ZERO_VECTOR, 0);
llSetText("invisible black text with alpha 0.0\nfully transparent", <0.0, 0.0, 0.0>, 0.0);Multiple lines
// two lines of orange text
llSetText("I am\non two lines!", <1.0, 0.4, 0.0>, 1.0);Helper functions
Drag this script out of inventory onto an object to erase its set text:
// http://wiki.secondlife.com/wiki/llSetText
default
{
state_entry()
{
// remove floating text (empty string & black & 100% transparent)
llSetText("", ZERO_VECTOR, 0.0);
// delete the script as we only needed it to change the floating text property
llRemoveInventory(llGetScriptName());
}
}Code to easily specify appearance of hovertext:
vector NAVY = <0, 0.122, 0.247>;
vector BLUE = <0, 0.455, 0.851>;
vector AQUA = <0.498, 0.859, 1 >;
vector TEAL = <0.224, 0.8, 0.8 >;
vector OLIVE = <0.239, 0.6, 0.439>;
vector GREEN = <0.18, 0.8, 0.251>;
vector LIME = <0.004, 1 , 0.439>;
vector YELLOW = <1 , 0.863, 0 >;
vector ORANGE = <1 , 0.522, 0.106>;
vector RED = <1 , 0.255, 0.212>;
vector MAROON = <0.522, 0.078, 0.294>;
vector FUCHSIA = <0.941, 0.071, 0.745>;
vector PURPLE = <0.694, 0.051, 0.788>;
vector WHITE = <1 , 1 , 1 >;
vector SILVER = <0.867, 0.867, 0.867>;
vector GRAY = <0.667, 0.667, 0.667>;
vector BLACK = <0.000, 0.000, 0.000>;
string hoverText = "TEXT GOES HERE";
vector hoverColor = LIME;// set predefined color or any RGB color vector in float form
float hoverAlpha = 1.0; // Sets the text's transparency, 1.0 being opaque, while 0.0 would be transparent
default
{
state_entry()
{
llSetText(hoverText, hoverColor, hoverAlpha);
}
}To make hovertext when using linked prims you can use this simple function:
mySetLinkText(integer linknum, string text, vector color, float alpha) {
llSetLinkPrimitiveParamsFast(linknum, [PRIM_TEXT, text, color, alpha]);
}
// For example:
default
{
touch_start(integer total_number)
{
mySetLinkText(LINK_SET, "TEST", <0, 1, 0>, 0.5);
}
}Notes
To actually display text on a prim, see XyzzyText, or consider using parcel prim Media options (useful only if you have control over the land's media settings.)
----
The function displays
text that hover over the prim's center, the prim position. The height over the center is proportional to the prim's Z-dimension exclusively- It doesn't matter how the prim is rotated, so if Z is smaller than X and Y the
textmay be seenonthe prim
See also: articles
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.
Original shared helper source (conditional wiki logic is not evaluated)
{{Issues|SVC-4539|[[llSetText]] is not working with special characters.|type=bug|status=res}}Original shared helper source (conditional wiki logic is not evaluated)
{{Issues|BUG-11077|Set Floating Text Colour and Alpha Only|type=nf}}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.