User:Daemonika Nightfire/Scripts/Access Tutorial
Access Tutorial
Public / Oeffentlich
Wie du siehst, siehst du nichts, zumindest nichts besonderes. Dieses Script ist im grunde nichts anderes, als ein "New Script" was jeder in einem Prim erstellen kann. Es besitzt keinerlei Abfragen oder Beschraenkungen, damit ist die Funktion fuer jeden der das Object klickt ausfuehrbar. <lsl> default {
state_entry() { }
touch_start(integer total_number) { llSay(0, "Touched."); } on_rez(integer Dae) { llResetScript(); }
} </lsl>
Owner / Besitzer
Bei diesem Script sieht es schon etwas anders aus. Wenn das Object geklickt wird, ueberprueft es erst, ob der jenige der es klickt auch wirklich der Besitzer ist. <lsl> key owner; // globale Variable zum speichern des OwnerKey's
default {
state_entry() { owner = llGetOwner(); // speichert den OwnerKey (UUID) }
touch_start(integer total_number) { if(llDetectedKey(0) == owner) // erkannter Key == (gleich) Owner { llSay(0, "Touched."); } else if(llDetectedKey(0) != owner) // erkannter Key != (nicht gleich) Owner { llSay(0,"Du bist nicht der Besitzer."); } } on_rez(integer Dae) { llResetScript(); }
} </lsl>
Group / Gruppe
Bei diesem Script sieht es wieder etwas anders aus. Wenn das Object geklickt wird, ueberprueft es erst, ob der jenige der es klickt auch die selbe Gruppe traegt. Dabei ist wichtig zu wissen, das es sich um die Gruppe handelt, mit der das Object gerezzt wurde. <lsl> default {
state_entry() { }
touch_start(integer total_number) { if(llSameGroup(llDetectedKey(0)) == TRUE) // ist die erkannte Gruppe des Avatars die selbe des geklickten Objekts richtig? { llSay(0, "Touched."); } else if(llSameGroup(llDetectedKey(0)) == FALSE) // ist die erkannte Gruppe des Avatars die selbe des geklickten Objekts falsch? { llSay(0,"Du traegst nicht die richtige Gruppe."); } } on_rez(integer Dae) { llResetScript(); }
} </lsl>
VIP / Zugangsliste
Bei diesem Script sieht das Ganze voellig anders aus. Anders als bei den ersten 3 Versionen, bei denen nur alle, der Besitzer oder die ganze Gruppe festgelegt werden, kann man hier mehrere User, unabhaengig von Eigentumsrechten und Gruppenzugehoerigkeit bestimmen. Wenn das Object geklickt wird, ueberprueft es erst ob der Name der Person die es klickt auf der Liste steht. <lsl> // User mit Resident als Nachname werden "ohne punkt und ohne Nachname" eingetragen list VIP = ["daemonika.nightfire", "jane.doe", "john.doe"];
default {
state_entry() { }
touch_start(integer total_number) { if(~llListFindList(VIP, (list)llGetUsername(llDetectedKey(0)))) // sucht hier in der Liste nach dem Namen des klickenden { llSay(0, "Touched."); } else //if(!~llListFindList(VIP, (list)llGetUsername(llDetectedKey(0)))) { llSay(0,"Du stehst nicht auf der Liste."); } } on_rez(integer Dae) { llResetScript(); }
} </lsl>