Find Avatar Key
| LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Find Avatar Key
Explores UUID of avatar whose name is said in local chat or who touches the prim. Uses Name2Key code published in LSL Library.
Requirements:
- Place this script into a single prim and decorate to taste.
Operation:
- No special instructions. It operates stand alone once installed.
<lsl>// Find Avatar Key Script // by Huney Jewell // based on Name2Key code published in LSL Library // // Put in single prim // Explores UUID of avatar whose name is said in local chat or who touches the prim // LL Search engine sometimes returns wrong profile, hence lookup may fail. // Then the only method to explore the key is by touching the prim //
// GLOBALS //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// System settings - Do Not Change Anything Below!
string search = "http://lawlinter.net/secondlifeutility/name2key.php5?name="; // Name2Key URL //string search = "http://w-hat.com/name2key?terse=1&name="; // Alternate Name2Key URL string notFound = "00000000-0000-0000-0000-000000000000";
list requests = [];
// CODE ENTRY //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
default {
on_rez(integer i)
{
llResetScript();
}
state_entry()
{
llSay(0, "Ready. Say \"/1 firstname lastname\" or touch me");
llListen(1, "", "", "");
}
touch_start(integer total_number)
{
integer i = 0;
for (; i < total_number; ++i)
{
llSay(0, llDetectedName(i) + " = " + (string)llDetectedKey(i));
}
}
listen(integer c, string n, key i, string msg)
{
list Args=llParseString2List(msg, [" "], []);
string FirstName = llList2String(Args, 0);
string LastName = llList2String(Args, 1);
string name = FirstName + " " + LastName;
llSay(0,"Requesting key for " + name);
if(llListFindList(requests,[name]) == -1)
{
string url = search + FirstName + "%20" + LastName;
key id = llHTTPRequest(url, [], "");
requests += [(string)id,name];
}
}
http_response(key request_id, integer status, list metadata, string body)
{
// llOwnerSay("Status:" + (string) status + "; Body: " + body); // DEBUG
integer p = llListFindList(requests,[(string)request_id]);
if (p != -1)
{
string name = llList2String(requests,p+1);
if (status == 200)
{
if (body != notFound)
llSay(0,name + " = " + body);
else
llSay(0,"Lookup '" + name + "' failed: Not found.");
}
else
{
if (status == 499)
llSay(0,"Lookup '" + name + "' timed out, try again.");
else
llSay(0,"Lookup '" + name + "' failed: HHTP error code " + (string)status);
}
requests = llDeleteSubList(requests,p,p+1);
}
}
}</lsl>
Comments
The search URL needed to be changed as of 2010-01-10 to comply with modification of LL HHTP code, which apparently moved the requested key out of LSL limit for body parameter within http_response event.