Difference between revisions of "LlRequestDisplayName"
Jump to navigation
Jump to search
All Issues ~ Search JIRA for related Bugs
(Added warning about escaping strings to prevent a wave of injection attacks on people's backends when these functions go live.) |
Lou Netizen (talk | contribs) m (Made the link to Viewer URI Name Space work) |
||
(9 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
{{#vardefine:p_data_desc|DATA_* flag}}{{LSL_Function | {{#vardefine:p_data_desc|DATA_* flag}}{{LSL_Function | ||
|inject-1={{LSL Function/avatar|id | |inject-1= | ||
{{LSL_Function/warning|Security|It is a '''terrible''' idea to tie any security measures to display names | {{LSL Function/avatar|id}} | ||
{{LSL_Function/warning| | {{LSL_Function/warning|Security|It is a '''terrible''' idea to tie any security measures to display names; they are not unique and can easily be changed.}} | ||
|func_id= | {{LSL_Function/warning|Data Execution|Display names can contain [[Display_names#Punctuation_characters_allowed_in_your_display_name|quotes and some punctuation]]. While this is ''not'' a problem for LSL, remember to '''escape''' strings being passed to command line scripts, sql queries, etc.<br/>See: [http://xkcd.com/327/ XKCD: Exploits of a Mom]}} | ||
|func_id=361|func_sleep=0.0|func_energy=10.0 | |||
|func=llRequestDisplayName | |func=llRequestDisplayName | ||
|return_type=key | |return_type=key | ||
|return_subtype=handle | |||
|p1_type=key|p1_name=id | |p1_type=key|p1_name=id | ||
|func_footnote | |func_footnote | ||
Line 11: | Line 13: | ||
|Return_text=that is used to identify the [[dataserver]] event when it is raised. | |Return_text=that is used to identify the [[dataserver]] event when it is raised. | ||
|spec | |spec | ||
|caveats=*If the request fails for any reason, there will be no error notice or dataserver event. You may use a timer to check for stale requests. | |caveats= | ||
*If you merely wish to show | *If the request fails for any reason, there will be no error notice or dataserver event. You may use a timer to check for stale requests. | ||
*If you merely wish to show the agent display name in the viewer window, it may be more straightforward to use [[Viewer_URI_Name_Space|Viewer URI Name Space]] and avoid a dataserver event, e.g.: <source lang="lsl2">llSay(0, "secondlife:///app/agent/" + (string)id + "/displayname");</source> | |||
|constants | |constants | ||
|examples=< | |examples=<source lang="lsl2">key owner_key; | ||
key owner_name_query; | key owner_name_query; | ||
string owner_display_name; | string owner_display_name; | ||
Line 33: | Line 36: | ||
} | } | ||
} | } | ||
}</ | }</source> | ||
|helpers | |helpers | ||
|also_functions= | |also_functions= |
Latest revision as of 16:16, 15 April 2024
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
![]() |
Security Warning! |
It is a terrible idea to tie any security measures to display names; they are not unique and can easily be changed. |
![]() |
Data Execution Warning! |
Display names can contain quotes and some punctuation. While this is not a problem for LSL, remember to escape strings being passed to command line scripts, sql queries, etc. |
Summary
Function: key llRequestDisplayName( key id );361 | Function ID |
0.0 | Forced Delay |
10.0 | Energy |
Requests the Display Name of the agent identified by id. When the Display Name is available the dataserver event will be raised. The agent identified by id does not need to be in the same region or online at the time of the request.
Returns the handle (a key) that is used to identify the dataserver event when it is raised.
• key | id | – | avatar UUID |
Caveats
- If the request fails for any reason, there will be no error notice or dataserver event. You may use a timer to check for stale requests.
- If you merely wish to show the agent display name in the viewer window, it may be more straightforward to use Viewer URI Name Space and avoid a dataserver event, e.g.:
llSay(0, "secondlife:///app/agent/" + (string)id + "/displayname");
Examples
key owner_key;
key owner_name_query;
string owner_display_name;
default
{
state_entry()
{
owner_key = llGetOwner();
owner_name_query = llRequestDisplayName(owner_key);
}
dataserver(key queryid, string data)
{
if ( owner_name_query == queryid )
{
owner_display_name = data;
llSay(0, "The display name of the owner of this script : " + owner_display_name );
}
}
}