LlCreateLink/de
LSL Portal | Funktionen | Ereignisse | Typen | Konstanten | Datenflusskontrolle | Script Sammlung | Tutorien |
Beschreibung
Funktion: llCreateLink( key target, integer parent );141 | Funktions ID |
1.0 | Verzögerung |
10.0 | Energie |
Versucht das Objekt in dem sich das Script befindet mit target zu linken.
• key | target | – | Ein Prim in der selben Region | |
• integer | parent | – | Wenn FALSE, dann wird target zu root. Wenn TRUE, wird das Objekt in dem das Script steckt zu root. |
Benötigt die PERMISSION_CHANGE_LINKS Erlaubnis, von dem Eigentümer, um zu funktionieren.
target muss modifizierbar sein und dem selben Eigentümer gehören.
Dieses Objekt muss ebenfalls modifizierbar sein.
Spezifikationen
Die prims des child Objekts (target wenn parent TRUE ist, das Objekt in dem sich das Script befindet, wenn parent FALSE ist) werden dem Link Set des parent Objekts hinzugefügt und starten bei der Link Nummer 2. Beispiel: Falls die Link Reihenfolge des parent Objekts A1, A2, A3 ist und die Linkordnung des child Objekts B1, B2, B3 ist, dann wird die Linkreihenfolge des resultierenden Objekts A1, B1, B2, B3, A2, A3 sein.
Warnungen
- Diese Funktion lässt das Script 1.0 Sekunden schlafen.
- Vertraue nicht auf die automatische Erlaubnis. Nutze immer das run time permissions event.
- Falls dem Script die PERMISSION_CHANGE_LINKS Erlaubnis fehlt, ruft es einen Fehler auf dem DEBUG_CHANNEL und die Anwendung schlägt fehl (das Script selbst läuft weiterhin).
- Falls PERMISSION_CHANGE_LINKS von jemand anderem als dem Eigentümer Erkaubt wurde und die Funktion aufgerufen wird, wird ein Fehler auf dem DEBUG_CHANNEL gerufen.
- Sobald die PERMISSION_CHANGE_LINKS Erlaubnis erteilt wurde, gibt es keinen Weg diese wieder zu widerrufen. Das Script wird die Erlaubnis lediglich verlieren wenn es resetted oder derezzed wird (gelöscht, abgelegt oder aufgenommen).
- Falls target nicht in der Region ist, kein Prim ist oder von einem Avatar getragen wird, wird ein Fehler auf dem DEBUG_CHANNEL gerufen.
- Wenn entweder das Objekt oder target nicht modifizierbar sind oder verschiedene Eigentümer besitzen, wird ein Fehler auf dem DEBUG_CHANNEL gerufen.
- Wenn das parent Objekt und target zu weit entfernt sind (basierend auf ihrer physikalischen Größe), werden sie nicht gelinkt.
- Der maximale Abstand ist hier weiter erklärt: Linkability Rules
- Diese Funktion schlägt lautlos fehl, wenn sie von einem Script in einem Attachment aufgerufen wird.
Beispiele
<lsl>// Create a new object and link it as a child prim. string ObjectName = "Object Name Here"; // NOTE: must be a name of an object in this object's inventory.
default {
touch_start(integer count) { // When the object is touched, make sure we can do this before trying. llRequestPermissions(llGetOwner(), PERMISSION_CHANGE_LINKS); } run_time_permissions(integer perm) { // Only bother rezzing the object if will be able to link it. if (perm & PERMISSION_CHANGE_LINKS) llRezObject(ObjectName, llGetPos() + <0,0,0.5>, ZERO_VECTOR, llGetRot(), 0); else llOwnerSay("Sorry, we can't link."); } object_rez(key id) { // NOTE: under some conditions, this could fail to work. // This is the parent object. Create a link to the newly-created child. llCreateLink(id, TRUE); }}</lsl>
Hilfreiche Code-Schnippsel
<lsl> // child prim key key kChild = NULL_KEY; integer bLink = TRUE; // we suppose this script is on a linked object default {
state_entry() { // get the permission to change the link llRequestPermissions(llGetOwner(), PERMISSION_CHANGE_LINKS); // get the child key kChild = llGetLinkKey(2); } touch_start(integer nTotalCliquor) { if (bLink) { // break all my links, wait 1.5 sec llBreakAllLinks(); llSleep(1.5); // i'm unlinked llSay(0, "Unlinked, click to link"); bLink = FALSE; } else { // redo my link llCreateLink(kChild, TRUE); llSleep(1.5); // i'm linked llSay(0, "Linked, click to unlink"); bLink = TRUE; } }
} </lsl>
Siehe auch
Ereignisse
• | run_time_permissions | – | Event dass die Erlaubnis erhält | |
• | changed | – | CHANGED_LINK |
Funktionen
• | llGetPermissions | – | Bekomme die Erlaubnis gewährt | |
• | llGetPermissionsKey | – | Gibt den agent der die Erlaubnis gewährt hat | |
• | llRequestPermissions | – | Fragt Erlaubnis an | |
• | llBreakLink | – | Bricht einen Link | |
• | llBreakAllLinks | – | Bricht alle Links |
Artikel
• | Script Erlaubnis | |||
• | Linkability Rules |