PfText
pfText 1.0
I admire the work being put into xyText, but life is short, and so should be Source Code. That's why I made my own version. pfText might not be the most powerful version of Text Systems in SL, but it's by far the shortest (1/10 of a typical xytext), and thereby easiest version.
Features: You can easily add your own favourite characters, like diactitics and other funny stuff. Just make textures, 10x10 characters. You'll probably need at least 2 textures. Write down the printable chars one by one in the showable var. Put the texture's UUIDs into the chartextures list. That's about it.
Installation
Drop the 2 scripts into the root of a linkset of 5 Face prims, as described in xyText et. al.. Say something in chat.
Improving
pfText uses llSetLinkPrimitiveParams. By making a herd of parallel scripts, you would fill a sheet faster than with one of them. bt;dt
License
I have made this mostly on my own. A few of the float constants are ripped from the older xyText scripts, but I had to change 2 one of them. Therefore the Scripts are Copyright 2007- Torrid Luna <torrid@primforge.com> The Scripts and any derivative work are licensed as follow:
Some rights reserved: You may use and remix/improve this work as you like, but: Make a visible mark on the project and script, that your work is based on me, Torrid Luna, or Primforge.com. My sister is a lawyer in RL, and she's leading a Karate school in Berlin, Kreuzberg, Germany, Terra. You have been warned.
Scripts
pfText Script
<lsl> // pfText // Copyright 2007- Torrid Luna <torrid@primforge.com> // Some rights reserved: You may use and remix/improve this work as you like, but: // Make a visible mark on the project and script, that your work is based on me, Torrid Luna, and/or Primforge.com. // My sister is a lawyer in RL, and she's leading a Karate school in Berlin, Kreuzberg, Germany, Terra. You have been warned.^^
string showable; list chartextures; list faces = [1,6,4,7,3];
list offsets = [<0.12, 0.1, 0>, <0.037, 0, 0>, <0.05, 0.1, 0>, <0,0,0>, <-0.74, 0.1, 0>, <0.244, 0, 0>, <0.05, 0.1, 0>, <0,0,0>, <0.12, 0.1, 0>, <-0.037, 0, 0>];
default{
state_entry(){
showable = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ";
showable += "[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~·";
showable += "\n\n\n\n";
showable +="ÄäÖöÜüßſÅåĄąÆæƏəĆćÇÐðđĘęĦħIJijŁłŃńÑñŊŋÓóÕõ";
showable +="ŒœØø\n\nȘșŦțȚțÞþŨũŸÿÝý";
chartextures = ["f8638022-4e35-d9de-053b-072b3cdd31ce", "d68b35a5-8f3d-b19c-6455-fd1d2bc9521b"];
}
link_message(integer sender, integer num, string str, key id){
integer i;
list alletters;
for(i=0;i<5;i++){
string thischar = llGetSubString(str, i,i);
integer charindex = llSubStringIndex(showable, thischar);
integer row = charindex / 10;
integer col = charindex % 10;
vector offset = <-0.45 + 0.1 * col, 0.45 - 0.1 * row, 0.0>;
key texture = llList2Key(chartextures, charindex / 100);
integer face = llList2Integer(faces, i);
vector offset1 = llList2Vector(offsets, i*2);
vector offset2 = llList2Vector(offsets, i*2 +1);
// llSetPrimitiveParams([PRIM_TEXTURE, face, texture, offset1, offset + offset2, PI]);
alletters += [PRIM_TEXTURE, face, texture, offset1, offset + offset2, PI];
}
llSetLinkPrimitiveParams(num+1, alletters);
}
} </lsl>
pfText chat Example
<lsl> // pfText example // Copyright 2007- Torrid Luna <torrid@primforge.com> // Some rights reserved: You may use and remix/improve this work as you like, but: // Make a visible mark on the project and script, that your work is based on me, Torrid Luna, and/or Primforge.com. // My sister is a lawyer in RL, and she's leading a Karate school in Berlin, Kreuzberg, Germany, Terra. You have been warned.
default{
state_entry(){
llListen(0, "", llGetOwner(), "");
}
listen(integer c, string name, key k, string msg){
// meant for up to 5 prims. Know what you do.
msg = llGetSubString(msg + " ", 0, 24);
// llOwnerSay("stringlength: " + (string)llStringLength(msg));
integer length = (llStringLength(msg) - 1)/ 5 +1;
integer i;
for(i=0;i<length;i++){
string sub = llGetSubString(msg, i*5, ((i+1)*5 - 1));
llMessageLinked(LINK_THIS, i, sub, NULL_KEY);
}
}