Difference between revisions of "LlRequestClientData"

From Second Life Wiki
Jump to navigation Jump to search
m (Link in 'See also' amended)
m (Added to Category: WishList)
Line 57: Line 57:
*Design Discussions: [[LSL_To_Client_Communication#GetViewerVersion|Get Viewer Version ]]
*Design Discussions: [[LSL_To_Client_Communication#GetViewerVersion|Get Viewer Version ]]
[[Category:Design Discussions]]
[[Category:Design Discussions]]
{{LSLC|WishList}}

Revision as of 07:16, 24 September 2007

Function: key llRequestClientData(key id, integer data);

Requests data about the client app of online agent id. When data is available the dataserver event will be raised

• key id avatar UUID
• integer data DATA_* flag


I'm wishing for a function that works like llRequestAgentData to tell me more of the environment in which my script is running. Something to answer questions like:

Q: Is the client app current or obsolete?

Q: Is the client app running on Apple Mac OS X/ Linux/ Windows, what? (Like Unix uname answers.)

Q: Is the world around me the one true Second Life world, or is it some emulation like the binary code only LSL-Editor of Windows?

I need this function to clarify bug reports, not so much to make the script do anything different, though certainly creators could choose to make scripts distinguish platforms otherwise, e.g., to refuse to run except in the glory that is the Mac OS X user interface.

Someone more skilled in wiki-editing than I could adapt the llRequestAgentData spec better here. Below you can see I began this effort, but I got stuck as soon as the editing grew too deeply geeky.


A: Here we are, entry now adapted. But don't use the LSL Function template for any description other than a real LSL function. The template automatically adds the entry to the LSL function list, where this wished function already was listed before being corrected by this change!


Example

key owner_key;
key client_name_query;
string client_name;

default
{
    state_entry()
    {
        owner_key = llGetOwner();
        client_name_query = llRequestClientData(owner_key, DATA_CLIENT_NAME);
    }
    dataserver(key queryid, string data)
    {
        if (client_name_query == queryid) {
            client_name = data;
            llOwnerSay("Bugs you see may be due to: " + client_name);
        }
    }
}

See Also

Articles