User:Daemonika Nightfire/Scripts/xytText Example
*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
<source lang="lsl2"> /*
*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(); }
} </source>
Mehr Inhalte spaeter...