Liebe Gemeinde, die Lindens haben wie viele Jahre dazu gebraucht?
Keine Ahnung, jedenfalls ist es jetzt da und funzt.
In der Wiki fand ich jetzt endlich funktionierende Funktionen zum Thema Name2Key.
Zum einen waere das llName2Key(); was ich persoenlich fuer wenig Sinnvoll halte, da der Avatar sich dazu auf der selben Region befinden muss. Genau wie bei dem llKey2Name();
Zum zweiten ist da noch die Funktion
llRequestUserKey(
string UserName); (
nicht displayname)
In der Wiki findet ihr nun folgendes BeispielScript:
Code:
key name_key_query;
default
{
state_entry()
{
name_key_query = llRequestUserKey("rider.linden");
}
dataserver(key queryid, string data)
{
if ( name_key_query == queryid )
{
llSay(0, "The key for this user is : " + data);
}
}
}
Fuer die ersten spielereien ist das ganz OK, doch wenig benutzerfreundlich, da der Name direkt im Befehl eingetragen werden muss.
Aus diesem Grund habe ich gleich mal versucht etwas uebersicht rein zu bringen.
Das sah dann so aus:
Code:
string Name4Request = "daemonika.nightfire";
key name_key_query;
default
{
state_entry()
{
name_key_query = llRequestUserKey(Name4Request);
}
dataserver(key queryid, string data)
{
if(name_key_query == queryid)
{
llSay(0, "secondlife:///app/agent/" + data + "/about");
}
}
}
Bei der Version lasse ich auch den Key gleich als klickbaren Chatlink ausgeben, welcher gleich das Profil des entsprechenden Avatars oeffnet.
Das gefiel mir aber immer noch nicht, da man immer noch manuell den Namen rein schreiben und wieder speichern musste.
Darum habe ich es etwas erweitert und einen Listener eingebaut, damit man das Script fuer die Abfrage nicht mehr oeffnen, aktuallisieren und speichern muss.
Das sieht dann jetzt so aus:
Code:
// Eingabe Beispiele: /1get&daemonika.nightfire /1get&Daemonika Nightfire
// Resident Beispiele: /1get&daemonika.resident /1get&Daemonika Resident /1get&Daemonika
key owner;
key name_key_query;
default
{
state_entry()
{
owner = llGetOwner();
llListen(1,"","","");
}
listen(integer channel, string name, key id, string message)
{
if(id == owner)
{
list parse = llParseString2List(message, ["&"], []);
string cmd = llList2String(parse, 0);
string name = llList2String(parse, 1);
if(cmd == "get")
{
name_key_query = llRequestUserKey(name);
}
}
}
dataserver(key queryid, string data)
{
if(name_key_query == queryid)
{
llOwnerSay("\nProfil: secondlife:///app/agent/" + data + "/about\n Key: " + data);
}
}
}
Damit die Eingabe Fehlerfrei funktioniert, weil Avatar namen auch mit Leerschritt geschrieben werden koennen, habe ich als Seperator im Parse Befehl das
& verwendet, da Namen niemals dieses Zeichen beinhalten koennen.
Fuer diejenigen die einen Viewer verwenden, der den Key eventuell nicht im Profil anzeigt, habe ich den Key in der Chat-Ausgabe hinzugefuegt.
Wenn ihr nun einen Key abfragen moechtet, verwendet fuer die eingabe im Chat nun folgenden befehl: /1get& und anschliessend ohne Leerschritt nach dem & den Namen und drueckt feuer.
Entsprechende Beispiele stehen im Script ganz oben als Kommentar.
Zufaellig hatten wir dieses Thema Avatar Name gerade Inworld, wo sich darueber beklagt wurde, das die Gift Optionen diverser Vendoren nur schlecht als Recht funktioniert.
Liebe Vendoren Ersteller, diese Funktion ist ideal dazu geeignet, den richtigen Namen bzw. Key fuer Geschenke heraus zu finden.
LG
Dae