User:Daemonika Nightfire/Scripts/Tools (de)

From Second Life Wiki
Jump to navigation Jump to search

*DS* GetPrimInfo

/*
    *DS* GetPrimInfo by Daemonika Nightfire
    
    Mit diesem kleinen Tool bekommst du auf die schnelle,
    saemtliche nuetzlichen Informationen eines Prims die du zum Scripten benoetigs.
    Lege das Script einfach hinein und klicke ihn an.
    
    INFO:
    Je nachdem ob das Script im Root oder Child liegt, bekommst du unterschiedliche werte.
    Die Bezeichnung (me) deutet darauf hin, dass nur der Wert des Prims ausgelesen wird, wo das Script drin liegt.
*/

default
{
    touch_start(integer num_detected)
    {
        integer i;
        for(i=0; i<num_detected; ++i)
        {
            llOwnerSay("/me Creator: "  + (string)llKey2Name(llGetCreator()) +
            "\nCreatorKey: "            + (string)llGetCreator() +
            "\nObjectKey: "             + (string)llGetKey() +
            "\nObjectPrimCount: "       + (string)llGetNumberOfPrims() +
            "\nLinkNumber: "            + (string)llDetectedLinkNumber(i) +
            "\nLinkName: "              + (string)llGetLinkName(llDetectedLinkNumber(i)) +
            "\nLinkNumberKey: "         + (string)llGetLinkKey(llDetectedLinkNumber(i)) +
            "\nTouchFace: "             + (string)llDetectedTouchFace(i) +
            "\nTouchPos: "              + (string)llDetectedTouchST(i) +
            "\nScale (me): "            + (string)llGetScale() +
            "\nMass (object): "         + (string)llGetMass() +
            "\nLinkMass: "              + (string)llGetObjectMass(llGetLinkKey(llDetectedLinkNumber(i))) +
            "\nPos (root): "            + (string)llGetPos() +
            "\nRot (root): "            + (string)llGetRot() +
            "\nLocalPos (me): "         + (string)llGetLocalPos() +
            "\nLocalRot (me): "         + (string)llGetLocalRot() +
            "\nColor: "                 + (string)llGetColor(llDetectedTouchFace(i)) +
            "\nAlpha: "                 + (string)llGetAlpha(llDetectedTouchFace(i)));
        }
    }
}

*DS* Prim-Cleaner (LINK_THIS)

/*
    *DS* Prim-Cleaner (LINK_THIS) by Daemonika Nightfire
    
    Der Prim-Cleaner entfernt saemtliche Prim-Eigenschaften, die sich nicht mit dem Baumenue einstellen lassen.
    Diese Version funktioniert nur in dem Prim, in dem das Script eingelegt ist.
*/

default
{
    state_entry()
    {
        llSetSitText("");                                        // entfernt den Sitz-Text
        llSetTouchText("");                                      // entfernt den Klick-Text
        llParticleSystem([]);                                    // entfernt die Particle
        llSetText("", ZERO_VECTOR, 1.0);                         // entfernt den Hovertext
        llTargetOmega(ZERO_VECTOR, 0.0, 0.0);                    // entfernt die Rotation
        llSetCameraAtOffset(ZERO_VECTOR);                        // entfernt die Kamera-Position
        llSetCameraEyeOffset(ZERO_VECTOR);                       // entfernt die Kamera-Ausrichtung
        llSitTarget(ZERO_VECTOR, ZERO_ROTATION);                 // entfernt die Sitz-Orientierung
        llSetTextureAnim(FALSE, ALL_SIDES, 1, 1, 0.0, 0.0, 0.0); // entfernt Textur-Animationen
        llStopSound();                                           // entfernt den looped Sound
        llDeleteCharacter();                                     // entfernt alle Pathfinding Einstellungen
        
        llSay(0, "This prim is plean...");
        llRemoveInventory(llGetScriptName()); // entfernt sich selbst
    }
}

*DS* Prim-Cleaner (LINK_SET)

/*
    *DS* Prim-Cleaner (LINK_SET) by Daemonika Nightfire
    
    Der Prim-Cleaner entfernt saemtliche Prim-Eigenschaften, die sich nicht mit dem Baumenue einstellen lassen.
    Diese Version aendert die Eigenschaften jedes Prims des gesamten Linksets.
*/

default
{
    state_entry()
    {
        llSetLinkPrimitiveParamsFast(LINK_SET,[
        PRIM_TEXT, "", ZERO_VECTOR, 0.00,                                      // entfernt den Hovertext
        PRIM_OMEGA, ZERO_VECTOR, 0.0, 0.0                                      // entfernt die Rotation
        ]);
        
        llLinkParticleSystem(LINK_SET, []);                                    // entfernt die Particle
        llSetLinkCamera(LINK_SET, ZERO_VECTOR, ZERO_VECTOR);                   // entfernt die Kamera-Optionen
        llLinkSitTarget(LINK_SET, ZERO_VECTOR, ZERO_ROTATION);                 // entfernt die Sitz-Orientierung
        llSetLinkTextureAnim(LINK_SET, FALSE, ALL_SIDES, 1, 1, 0.0, 0.0, 0.0); // entfernt Textur-Animationen
        
        llSay(0, "This linkset is plean...");
        llRemoveInventory(llGetScriptName()); // entfernt sich selbst
    }
}

*DS* Fullbright FALSE (LINK_SET)

/*
    *DS* Fullbright FALSE (LINK_SET) by Daemonika Nightfire
    
    Dieses kleine Tool verwende ich sehr oft, um bei Attachments die option "ganz Hell" eines Linksets abzuschalten.
    Besonders bei Prim Haaren kommt es oft vor, dass der Ersteller die Haare "ganz Hell" einstellt und das sieht bei Mitternacht absolut ****** aus.
    
    Natuerlich ginge das auch mit dem Baumenue, aber wir kennen das alle,
    man stellt in einem Grossen Linkset etwas ein und ploetzlich wird einiges zurueck gesetzt oder gar nicht erst uebernommen.
    
    Mit diesem kleinen Script hat sich das innerhalb einer Sekunde erledigt.
*/

default
{
    state_entry()
    {
        llSetLinkPrimitiveParamsFast(LINK_SET,[PRIM_FULLBRIGHT,ALL_SIDES,FALSE]); // deaktiviert die Option "ganz hell" (Fullbright).
        llRemoveInventory(llGetScriptName()); // entfernt sich selbst
    }
}

*DS* Fullbright, Light & Glow FALSE (LINK_SET)

/*
    *DS* Fullbright, Light & Glow FALSE (LINK_SET) by Daemonika Nightfire
    
    Dieses kleine Tool kann dazu verwendet werden, die Viewer performance zu erhoehen.
    Besonders der Eintrag PRIM_POINT_LIGHT ist bei uebermaessigem gebrauch von unnuetzen Lichtquellen in einer Region sehr empfehlenswert.
    
*/

default
{
    state_entry()
    {
        llSetLinkPrimitiveParamsFast(LINK_SET,[
        PRIM_FULLBRIGHT, ALL_SIDES, FALSE,                                          // deaktiviert die Option "ganz hell" (Fullbright).
        PRIM_POINT_LIGHT, FALSE, <1.00000, 1.00000, 1.00000>, 1.000, 10.000, 0.750, // setzt das Licht auf Default zurueck und schaltet es ab.
        PRIM_GLOW, ALL_SIDES, 0.00                                                  // schaltet den Prim Glow ab.
        ]);
        
        llRemoveInventory(llGetScriptName()); // entfernt sich selbst
    }
}

*DS* Rotation Converter

/*
    *DS* Rotation Converter by Daemonika Nightfire
    
    Mit diesem kleinen Tool kannst du sehr leicht und sehr schnell Rotationen in Vectoren umrechnen und anders herum.
    
    Bitte nicht wundern, dass ich das Semikolon am ende der globalen Variablen runter geentert habe,
    das dient einzig und allein dem Zweck es nicht aus versehen zu ueberschreiben oder loeschen.
*/

// Wenn du einen Vector benoetigst, tragte hier die Rotation (4 stellig) ein.
rotation Rot2Vec = <0.00000, 0.00000, 0.70711, 0.70711>
;

// Wenn du eine Rotation benoetigst, trage hier einen Vector (3 stellig) ein.
vector Vec2Rot = <0.00000, 0.00000, 90.00000>
;

default
{
    state_entry()
    {
        llSay(0, "Rotaton 2 Vector: " + (string)(llRot2Euler(Rot2Vec) * RAD_TO_DEG));
        llSay(0, "Vector 2 Rotaton: " + (string)llEuler2Rot(Vec2Rot * DEG_TO_RAD));
    }
}

*DS* FloatLinkNumber

/* 
    *DS* FloatLinkNumber by Daemonika Nightfire (daemonika.nightfire)
 
    Features:
    Nuetzlicher Helfer fuer Ersteller & Scripter
    Mit diesem Tool kannst du saemtliche Linknummern direkt als Hovertext ueber den Prims sehen
    Lege das Script einfach in den Root-Prim und klicke ihn zum ein/ausschalten des Hovertextes.
 
    Info:
    ein einzelner Prim zeigt LinkNumber 0 fuer den root
    in einem LINK_SET zeigt der root die LinkNumber 1
*/
 
integer text = 0;
 
// setze TRUE oder FALSE fuer mit oder ohne LinkName
integer name = TRUE;
 
Links()
{
    integer i;
    for(i = 0; i <= llGetNumberOfPrims(); i++)
    {
        if(text)
        {
            string num;
            if(i < 2)
            {
                num = (string)i + " (root)";
                if(name)
                {
                    num = (string)i + " (root)\n" + llGetLinkName(i);
                }
            }
            else if(i >= 2)
            {
                num = (string)i;
                if(name)
                {
                    num = (string)i + "\n" + llGetLinkName(i);
                }
            }
            llSetLinkPrimitiveParamsFast(i,[PRIM_TEXT, num, <1,1,0>, 1.0]);
        }
        else if(!text)
        {
            llSetLinkPrimitiveParamsFast(i,[PRIM_TEXT, "", ZERO_VECTOR, 0.0]);
        }
    }
}
 
default
{
    state_entry()
    {
        Links();
    }
 
    touch_start(integer num_detected)
    {
        // Zum ein/aus schalten, musst du den Root Prim klicken
        if(llDetectedKey(0) == llGetOwner() && llDetectedLinkNumber(0) < 2)
        {
            if(!text)
            {
                text = 1;
            }
            else if(text)
            {
                text = 0;
            }
            Links();
        }
    }
 
    on_rez(integer Dae)
    {
        llResetScript();
    }
}