User:Daemonika Nightfire/Scripts/xytText Example
< User:Daemonika Nightfire
Jump to navigation
Jump to search
Revision as of 10:24, 29 June 2022 by Daemonika Nightfire (talk | contribs) (→*DS* xyzText 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
/*
*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...