Daemonika Nightfire
Forumsgott/göttin
huhu,
Da momentan in mehreren Threads ueber Avatarnamen diskutiert wird, habe ich mal eine kleine Auswahl moeglicher Methoden mittels Script den Avatarnamen abzufragen zusammen gestellt. Ich fange erst ganz leicht an und nach unten hin wird es anspruchsvoller. Der Einfachheit halber verwende ich ausschliesslich den Touch als Ausloeser.
llDetectedName(0)
Diese Funktion kann ausschliesslich in Events verwendet werden, die einen Detect unterstuetzen, zudem ist hierfuer die Anwesenheit des Avatars auf der Region unerlaesslich.
llKey2Name(key id)
Diese Funktion kann in jedem Event ausgefuehrt werden, sobald der Avatar Key bekannt ist, auch hier ist die Anwesenheit des Avatars zwingend erforderlich.
Bleiben wir kurz bei dieser Funktion und versuchen die gleiche Abfrage diesmal ohne Resident in der Ausgabe.
Hier ist es notwendig beide Namen zuerst in einer Liste getrennt aufzulisten. Anschliessend lassen sich bei Bedarf beide Namen separat ausgeben.
llGetUsername(key id)
Folgende Funktion kann ebenfalls in jedem Event ausgefuehrt werden, sobald der Avatar Key bekannt ist, jedoch gilt auch hier das der Avatar Anwesend sein muss.
llGetDisplayName(key id)
Nun kommen wir endlich mal zum Displaynamen. Hier gelten die selben Regeln wie beim vorherigen Beispiel.
Kurz Luft holen...
...kommen wir nun zu Beispielen, bei denen die Anwesenheit des Avatars nicht erforderlich ist.
llRequestUsername(key id)
Dieses ist eine Dataserver Funktion welche in jedem Event ausgeloest werden kann, sobald der Avatar Key bekannt ist. Zusaetzlich ist hier diesmal der Dataserver Event fuer die Ausgabe erforderlich.
llRequestDisplayName(key id)
Natuerlich existiert diese Funktion auch fuer den Displaynamen und unterliegt den selben Regeln.
llRequestAgentData(key id, DATA_NAME)
Zu guter Letzt eine Funktion die so alt ist wie Second Life. Diese Abfrage kann wie die llKey2Name Version in einzelne Bestandteile aufgelistet werden, jedoch ist hier die Anwesenheit des Avatars nicht erforderlich.
Ich hoffe die Beispiele sind euch nicht zu trocken, weil ich sie nicht bunt angemalt habe.
LG
Dae
Da momentan in mehreren Threads ueber Avatarnamen diskutiert wird, habe ich mal eine kleine Auswahl moeglicher Methoden mittels Script den Avatarnamen abzufragen zusammen gestellt. Ich fange erst ganz leicht an und nach unten hin wird es anspruchsvoller. Der Einfachheit halber verwende ich ausschliesslich den Touch als Ausloeser.
llDetectedName(0)
Diese Funktion kann ausschliesslich in Events verwendet werden, die einen Detect unterstuetzen, zudem ist hierfuer die Anwesenheit des Avatars auf der Region unerlaesslich.
Code:
default
{
touch_start(integer total_number)
{
llSay(0, llDetectedName(0) + " touched me.");
// Username in Gross und Kleinschreibung inclusive Resident.
}
}
llKey2Name(key id)
Diese Funktion kann in jedem Event ausgefuehrt werden, sobald der Avatar Key bekannt ist, auch hier ist die Anwesenheit des Avatars zwingend erforderlich.
Code:
default
{
touch_start(integer total_number)
{
key avatar = llDetectedKey(0);
llSay(0, llKey2Name(avatar) + " touched me.");
// Username in Gross und Kleinschreibung inclusive Resident.
}
}
Hier ist es notwendig beide Namen zuerst in einer Liste getrennt aufzulisten. Anschliessend lassen sich bei Bedarf beide Namen separat ausgeben.
Code:
default
{
touch_start(integer total_number)
{
key avatar = llDetectedKey(0);
list parse = llParseString2List(llKey2Name(avatar), [" "], [""]);
string FirstName = llList2String(parse, 0);
string LastName = llList2String(parse, 1);
if(LastName == "Resident")
{
llSay(0, FirstName + " touched me.");
// Username in Gross und Kleinschreibung ohne Resident.
}
else if(LastName != "Resident")
{
llSay(0, FirstName + " " + LastName + " touched me.");
// Username in Gross und Kleinschreibung inclusive individuellen Nachnamen.
}
}
}
llGetUsername(key id)
Folgende Funktion kann ebenfalls in jedem Event ausgefuehrt werden, sobald der Avatar Key bekannt ist, jedoch gilt auch hier das der Avatar Anwesend sein muss.
Code:
default
{
touch_start(integer total_number)
{
key avatar = llDetectedKey(0);
llSay(0, llGetUsername(avatar) + " touched me.");
// Username kleingeschrieben, resident entfaellt, User mit Nachnamen erhalten einen Punkt zwischen beide Namen.
}
}
llGetDisplayName(key id)
Nun kommen wir endlich mal zum Displaynamen. Hier gelten die selben Regeln wie beim vorherigen Beispiel.
Code:
default
{
touch_start(integer total_number)
{
key avatar = llDetectedKey(0);
llSay(0, llGetDisplayName(avatar) + " touched me.");
// Displayname
}
}
Kurz Luft holen...
...kommen wir nun zu Beispielen, bei denen die Anwesenheit des Avatars nicht erforderlich ist.
llRequestUsername(key id)
Dieses ist eine Dataserver Funktion welche in jedem Event ausgeloest werden kann, sobald der Avatar Key bekannt ist. Zusaetzlich ist hier diesmal der Dataserver Event fuer die Ausgabe erforderlich.
Code:
key User_name_query;
default
{
touch_start(integer total_number)
{
key avatar = llDetectedKey(0);
User_name_query = llRequestUsername(avatar);
}
dataserver(key queryid, string data)
{
if(User_name_query == queryid)
{
llSay(0, data + " touched me.");
// Username kleingeschrieben, resident entfaellt, User mit Nachnamen erhalten einen Punkt zwischen den Namen.
}
}
}
llRequestDisplayName(key id)
Natuerlich existiert diese Funktion auch fuer den Displaynamen und unterliegt den selben Regeln.
Code:
key Display_name_query;
default
{
touch_start(integer total_number)
{
key avatar = llDetectedKey(0);
Display_name_query = llRequestDisplayName(avatar);
}
dataserver(key queryid, string data)
{
if(Display_name_query == queryid)
{
llSay(0, data + " touched me.");
// Displayname
}
}
}
llRequestAgentData(key id, DATA_NAME)
Zu guter Letzt eine Funktion die so alt ist wie Second Life. Diese Abfrage kann wie die llKey2Name Version in einzelne Bestandteile aufgelistet werden, jedoch ist hier die Anwesenheit des Avatars nicht erforderlich.
Code:
key Agent_data_query;
default
{
touch_start(integer total_number)
{
key avatar = llDetectedKey(0);
Agent_data_query = llRequestAgentData(avatar, DATA_NAME);
}
dataserver(key queryid, string data)
{
if(Agent_data_query == queryid)
{
llSay(0, data + " touched me.");
// Username in Gross und Kleinschreibung inclusive Resident.
}
}
}
Ich hoffe die Beispiele sind euch nicht zu trocken, weil ich sie nicht bunt angemalt habe.
LG
Dae
Zuletzt bearbeitet: