Difference between revisions of "User:Daemonika Nightfire/Scripts/xytText Example"

From Second Life Wiki
Jump to navigation Jump to search
(very small xyzText example)
 
Line 8: Line 8:
     Dieses Script ist ein ganz einfaches Beispiel um '1' Buchstaben pro Face anzuzeigen.
     Dieses Script ist ein ganz einfaches Beispiel um '1' Buchstaben pro Face anzuzeigen.
     Auf uebermaessigen Brimborium habe ich bewusst verzichtet, um das Beispiel moeglichst klein zu halten.
     Auf uebermaessigen Brimborium habe ich bewusst verzichtet, um das Beispiel moeglichst klein zu halten.
     Der Listener fuer den Channel 0 im Beispiel wird nur zum texten verwendet.
     Der Listener fuer den Channel 0 im Beispiel wird nur zum testen verwendet.
*/
*/


Line 36: Line 36:
         float V = (index-H)/Y; // Vertical
         float V = (index-H)/Y; // Vertical
          
          
         // Das Script liegt in einem 8 Faces Mesh [0][1][2][3][4][5][6][7], darum die Angabe LINK_THIS im folgenden befehl.
         // Das Script liegt in einem 8 Faces Mesh [0][1][2][3][4][5][6][7], darum die Angabe LINK_THIS im folgenden Befehl.
         llSetLinkPrimitiveParamsFast(LINK_THIS,[PRIM_TEXTURE, i, texture, <1.0000/X, 1.0000/Y, 0.0000>, <(H-4.5)/X, (4.5-V)/Y, 0.0000>, 0.0]);
         llSetLinkPrimitiveParamsFast(LINK_THIS,[PRIM_TEXTURE, i, texture, <1.0000/X, 1.0000/Y, 0.0000>, <(H-4.5)/X, (4.5-V)/Y, 0.0000>, 0.0]);
     }
     }

Revision as of 10:24, 29 June 2022

*DS* xyzText Example

Dieses Beispiel ist fuer Mesh mit 1 - 8 Faces geeignet, damit lassen sich verschiedene kleine Displays mit Kurz-Infos anzeigen. Auf Grund des minimalistischem Codes kann die Funktion auch in groessere Projekte mit sehr geringem Memory-Verbrauch integriert werden. Die passenden Objekte fuer dieses Script findest du Fullperm hier in meinem Store https://marketplace.secondlife.com/p/DS-xyz-Text-Mesh-discount/3800657

/*
    *DS* xyzText Example
    Dieses Script ist ein ganz einfaches Beispiel um '1' Buchstaben pro Face anzuzeigen.
    Auf uebermaessigen Brimborium habe ich bewusst verzichtet, um das Beispiel moeglichst klein zu halten.
    Der Listener fuer den Channel 0 im Beispiel wird nur zum testen verwendet.
*/

// Textur *DS* xyzText Font Arial 1024px
key texture = "2f2386b7-9198-3520-3eb8-1b5e814e87eb";

// String mit allen Zeichen auf der Textur in der selben Reihenfolge.
string characters = "abcdefghijklmnopqrstuvwxyz <|>ABCDEFGHIJKLMNOPQRSTUVWXYZ+-*/0123456789!§$%&()[]?{}#€_,.;:°^~©'´`\\\"= ";

// Aufteilung der Buchstaben (Kacheln) auf der Textur.
integer X = 10; // Spalten
integer Y = 10; // Zeilen

xyzText(string msg)
{
    integer i = 0;
    do
    {
        string letter = llGetSubString(msg, i, i);
        if(~llListFindList(["ö","ä","ü","Ö","Ä","Ü","ß"], [letter])) // Diese Zeichen fehlen auf der Textur.
        {
            letter = "#"; // Fehlende Buchstaben werden mit # ersetzt.
        }
        
        integer index = llSubStringIndex(characters, letter);
        float H = (index % X); // Horizontal
        float V = (index-H)/Y; // Vertical
        
        // Das Script liegt in einem 8 Faces Mesh [0][1][2][3][4][5][6][7], darum die Angabe LINK_THIS im folgenden Befehl.
        llSetLinkPrimitiveParamsFast(LINK_THIS,[PRIM_TEXTURE, i, texture, <1.0000/X, 1.0000/Y, 0.0000>, <(H-4.5)/X, (4.5-V)/Y, 0.0000>, 0.0]);
    }
    while(++i <= 7); // 0 - 7 = max. 8 Faces
}

default
{
    state_entry()
    {
        llListen(0, "", "", "");
        xyzText("abcdefgh");
    }
    
    listen(integer channel, string name, key id, string message)
    {
        xyzText(message);
    }
    
    on_rez(integer Dae)
    {
        llResetScript();
    }
}

Mehr Inhalte spaeter...