Skip to content
lsl.devlsl.devLSL Dev

LlSetObjectName

Looking for the current API? Open the llSetObjectName reference →

Wiki description

Sets the prim's name according to the name parameter.

Function notes

If this function is called from a child prim in a linked set, it will change the name of the child prim and not the root prim.

Caveats

  • The name is limited to 63 characters. Longer prim names are cut short.
  • Names can only consist of the 95 printable characters found in the ASCII-7 (non-extended) character set, with the exception of the vertical bar/pipe ("|") character.
    • Invalid characters in the range 1 to 31, as well as the pipe character (124) are replaced with a question mark ("?").
    • Other invalid characters in the range 128 and above are replaced with two or more question marks, depending on how many bytes their UTF-8 representation requires.
    • Objects with all-whitespace names (e.g., a space or a series of spaces) will appear as "(Unnamed)" if they emit chat via llSay, llOwnerSay, llInstantMessage, etc., although this behaviour may vary in third-party viewers.
  • While an object is attached, the script cannot change the name of the object as it appears in the user's inventory.Whether or not this is a bug is still debated, regardless LL has said they will not fix it. This behavior was first recognized as a pain point in 2006 and only confirmed to be lava-flowed more recently (2011).
    • Changes to the name of the root prim (with llSetObjectName for example) will not be saved to inventory; when the attachment is detached (to inventory, not dropped) this name change is discarded and the name in inventory is used instead.
    • When attachment is dropped (to the ground) and taking it into inventory, the inventory item will have the new name (not the old).
  • Changes to the names of child prims will be saved back to inventory when the object is detached to inventory. They survive detachment.
  • Changes to the object name do not trigger a changed event.

Examples

Set this prim's name Set the root prim's name
default
{
    state_entry()
    {
        llSetObjectName("NEW PRIM NAME");
    }
}
default
{
    state_entry()
    {
        llSetLinkPrimitiveParamsFast(LINK_ROOT,
            [PRIM_NAME, "NEW ROOT PRIM NAME"]);
    }
}
Test if a string is valid as an object name
// Returns TRUE if 'name' is a valid object name, FALSE otherwise
integer isValidObjectName(string name)
{
    string original_name = llGetObjectName();
    llSetObjectName(name);
    integer valid_name = llGetObjectName() == name;
    llSetObjectName(original_name);
    return valid_name;
}

See also: functions

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/limits

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

{{#vardefine:also_articles|{{#var:also_articles}}
{{LSL DefineRow||[[Limits{{#var:lang}}{{{1|}}}|Limits]]|SL limits and constrictions}}
}}

}}<noinclude>
{| {{Prettytable}}
|-{{Hl2}}
! #var
! value
|-
{{VarPairTable|also_articles}}
|}
</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.