MantisBT - opensim
View Issue Details
0008369opensim[REGION] Script Functionspublic2018-09-13 03:502018-09-26 06:38
djphil 
 
normalminorhave not tried
patch includedopen 
PCWindows10
 
 
Grid (Multiple Regions per Sim)
ubODE
.NET / Windows64
None
Firestorm
0008369: [PATCH] llRequestUserKey not implemented
See http://wiki.secondlife.com/wiki/LlRequestUserKey [^]
No tags attached.
patch 0001-llRequestUserKey-implementation.patch (6,219) 2018-09-22 06:15
http://opensimulator.org/mantis/file_download.php?file_id=4776&type=bug
Issue History
2018-09-13 03:50djphilNew Issue
2018-09-13 03:50djphilPhysics EngineBulletSim => ubODE
2018-09-22 06:15Mandarinka TastyFile Added: 0001-llRequestUserKey-implementation.patch
2018-09-22 06:22Mandarinka TastyNote Added: 0033049
2018-09-22 06:22Mandarinka TastyStatusnew => patch included
2018-09-22 06:22Mandarinka TastyNote Edited: 0033049bug_revision_view_page.php?bugnote_id=33049#r6717
2018-09-22 06:23Mandarinka TastyNote Edited: 0033049bug_revision_view_page.php?bugnote_id=33049#r6718
2018-09-22 09:51djphilNote Added: 0033050
2018-09-23 05:49Mandarinka TastyNote Added: 0033052
2018-09-24 00:51BillBlightNote Added: 0033055
2018-09-24 13:09Mandarinka TastyNote Added: 0033057
2018-09-26 06:38Fly-Man-Summary[SCRIPT FUNCTION] llRequestUserKey not implemented => [PATCH] llRequestUserKey not implemented

Notes
(0033049)
Mandarinka Tasty   
2018-09-22 06:22   
(edited on: 2018-09-22 06:23)
Hello) I have written the implementation of llRequestUserKey(string username).

Here is an example of a school script to test it in-world:

integer a;
integer chan;
key toucher;
string name;
default
{
    touch_start(integer num)
    {
        if(a == 0)
        {
            a=1;
            chan = (integer)llFrand(DEBUG_CHANNEL) * -1;
            toucher = llDetectedKey(0);
            llTextBox(toucher,"\nTo receive the user's key\nplease type resident's name in a box below:\n",chan);
            llListen(chan,"",toucher,"");
            llSetTimerEvent(30);
        }
        else
        {
            if(llDetectedKey(0) != toucher)
            {
                llRegionSayTo(llDetectedKey(0),0,"\n\nPlease wait a moment.Busy with another resident.\n");
            }
        }
    }
    listen(integer Channel,string Name,key ID,string Text)
    {
        name = Text;
        llRequestUserKey(name);
    }
    dataserver(key RequestID,string Data)
    {
        if(Data != NULL_KEY)
        {
            llRegionSayTo(toucher,0,"\n\n"+name+"'s key is: "+Data+"\n");
        }
        else
        {
            llRegionSayTo(toucher,0,"\n\nResident: "+name+" doesn't exist.\n");
        }
        llResetScript();
    }
    timer()
    {
        llSetTimerEvent(0);
        llRegionSayTo(toucher,0,"\n\nSession has expired. Try again later.\n");
        llResetScript();
    }
}

That new function returns userkey of any avatar, not only located in the scene, script is in, but also located in other scenes and offline as well.

One can also return the key of the foreign user avatar, certainly under condition, that appropriate hypergrid service has been enabled on the foreign grid side.

I'd like you to test this patch and I'd be very grateful for that)

The supported cases are: username = "FirstName LastName"
or username = "FirstName.LastName"

So suggested tests are:

John Smith
John.Smith
John.Smith @john.grid.com
John.Smith.@john.grid.com

The technique I have applied here, varies from the very last patch of llName2Key, since I do not proceed scan of any grid database to compare strings.

(0033050)
djphil   
2018-09-22 09:51   
Thank you man, it's super nice :)
(0033052)
Mandarinka Tasty   
2018-09-23 05:49   
@djphil ) I'm glad, you have liked it :)
(0033055)
BillBlight   
2018-09-24 00:51   
@Mandarinka, I tested your suggested tests and can confirm they work.
(0033057)
Mandarinka Tasty   
2018-09-24 13:09   
@watcher ) Thank you very much for your tests.