Difference between revisions of "User:Daemonika Nightfire/Scripts/xytText Example"
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 | 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 | // 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...