<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Traven+Sachs</id>
	<title>Second Life Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Traven+Sachs"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/wiki/Special:Contributions/Traven_Sachs"/>
	<updated>2026-06-26T23:43:34Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=XyzzyText&amp;diff=1174905</id>
		<title>XyzzyText</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=XyzzyText&amp;diff=1174905"/>
		<updated>2012-11-30T04:34:31Z</updated>

		<summary type="html">&lt;p&gt;Traven Sachs: 16 Character MESH Update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
{{RightToc}}&lt;br /&gt;
&lt;br /&gt;
Scripting tools to allow display of text on a prim: [[XyText 1.5]] , [[XyzzyText]], [[XyyyyzText]], [[XyText-UTF8]], [[XyzzyText-UTF8]], [[ZZText]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;XyzzyText&#039;&#039;&#039; is a new version of [[XyText 1.5]] with some advanced features:&lt;br /&gt;
&lt;br /&gt;
* Efficiency!  You can now control an entire linkset with just one script.&lt;br /&gt;
* Flexible Speed vs Lag.  Just drop in plug-and-play slave scripts to increase rendering speed.  (More than 4-5 slaves not recommended, there is diminishing returns)&lt;br /&gt;
* Ease of use.  There is no need to know link numbers.  Simply name the child prims xyzzytext-banknumber-cellnumber.&lt;br /&gt;
* To use, pass the bank number to use in the &amp;quot;key&amp;quot; field of the link message of DISPLAY_STRING/EXTENDED.&lt;br /&gt;
&lt;br /&gt;
=Copyright &amp;amp; Licensing=&lt;br /&gt;
&amp;lt;font size=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
* Traven Sachs hereby releases his contributions to this under the MIT license (16 Char MESH Prim Mod).&lt;br /&gt;
* Gigs Taggart hereby releases his contributions to this under the MIT license.&lt;br /&gt;
* Thraxis Epsilon hereby releases his contributions to this under the MIT license.&lt;br /&gt;
* Strife Onizuka hereby releases his contributions to this under the MIT license.&lt;br /&gt;
* Huney Jewell hereby releases her contributions to this under the MIT license.&lt;br /&gt;
* Salahzar Stenvaag hereby releases his contributions to this under the MIT license. (photoshop/GIMP vbs script for alternative fonts plus [[ZZText]])&lt;br /&gt;
* Ruud Lathrop hereby releases her contributions to this under the MIT license.&lt;br /&gt;
* Joel Cloquet hereby releases his contributions to this under the MIT license.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=XyzzyText - 5 Character=&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Display Prims named: &lt;br /&gt;
xyzzytext-0-0 xyzzytext-0-1&lt;br /&gt;
xyzzytext-1-0 xyzzytext-1-1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quickstart:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* Store all scripts in your inventory&lt;br /&gt;
* Rez a box&lt;br /&gt;
* Drop the prim setup script in it (You now have one unit, name it xyzzytext-0-0)&lt;br /&gt;
* Make a row of four of these prims (xyzzytext-0-0 xyzzytext-0-1,xyzzytext-0-2,xyzzytext-0-3)&lt;br /&gt;
* Move a copy of this row a little down, and rename the new row(xyzzytext-1-0 xyzzytext-1-1,xyzzytext-1-2,xyzzytext-1-3)&lt;br /&gt;
* Do this for every row you make&lt;br /&gt;
* Create a big box that serves as the board-background(mainprim)&lt;br /&gt;
* Link all prims with the mainprim(selected last), so the mainprim keeps yellow after linking(root-prim)&lt;br /&gt;
* Copy the main script and usage script into the root prim&lt;br /&gt;
* Type something, and check if it all works&lt;br /&gt;
* Flatten the prims, so the text looks straight&lt;br /&gt;
* Consider adding slave scripts to the root prim if you have a lot of rows&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
integer DISPLAY_STRING      = 204000; &lt;br /&gt;
integer DISPLAY_EXTENDED    = 204001; &lt;br /&gt;
integer REMAP_INDICES       = 204002; &lt;br /&gt;
integer RESET_INDICES       = 204003; &lt;br /&gt;
integer SET_FADE_OPTIONS    = 204004; &lt;br /&gt;
integer SET_FONT_TEXTURE    = 204005; &lt;br /&gt;
integer SET_LINE_COLOR      = 204006; &lt;br /&gt;
integer SET_COLOR           = 204007; &lt;br /&gt;
integer RESCAN_LINKSET      = 204008;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
integer gToggle;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llListen(0,&amp;quot;&amp;quot;,NULL_KEY,&amp;quot;&amp;quot;);&lt;br /&gt;
       &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
    listen(integer channel,string name, key id, string message)&lt;br /&gt;
    {&lt;br /&gt;
        if (gToggle)&lt;br /&gt;
            llMessageLinked(LINK_THIS,DISPLAY_STRING,name + &amp;quot;:&amp;quot;+ message,&amp;quot;0&amp;quot;);&lt;br /&gt;
        else&lt;br /&gt;
            llMessageLinked(LINK_THIS,DISPLAY_STRING,name + &amp;quot;:&amp;quot;+ message,&amp;quot;1&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
        gToggle=!gToggle;&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Main Script==&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
//////////////////////////////////////////// &lt;br /&gt;
// XyzzyText v2.1 Script (Set Line Color) by Huney Jewell&lt;br /&gt;
// XyzzyText v2.0 Script (5 Face, Single Texture) &lt;br /&gt;
//&lt;br /&gt;
//&lt;br /&gt;
// Edited trivially by Joel Cloquet on 1/2011 to use the (relatively)&lt;br /&gt;
// new llSetLinkPrimitiveParamsFast function, thereby removing the need in&lt;br /&gt;
// some cases to use the slave script.&lt;br /&gt;
//&lt;br /&gt;
// Heavily Modified by Thraxis Epsilon, Gigs Taggart 5/2007 and Strife Onizuka 8/2007&lt;br /&gt;
// Rewrite to allow one-script-per-object operation w/ optional slaves&lt;br /&gt;
// Enable prim-label functionality&lt;br /&gt;
// Enabled Banking&lt;br /&gt;
//&lt;br /&gt;
// Modified by Kermitt Quirk 19/01/2006 &lt;br /&gt;
// To add support for 5 face prim instead of 3 &lt;br /&gt;
// &lt;br /&gt;
// Core XyText Originally Written by Xylor Baysklef &lt;br /&gt;
// &lt;br /&gt;
//&lt;br /&gt;
//////////////////////////////////////////// &lt;br /&gt;
&lt;br /&gt;
/////////////// CONSTANTS /////////////////// &lt;br /&gt;
// XyText Message Map. &lt;br /&gt;
integer DISPLAY_STRING      = 204000; &lt;br /&gt;
integer DISPLAY_EXTENDED    = 204001; &lt;br /&gt;
integer REMAP_INDICES       = 204002; &lt;br /&gt;
integer RESET_INDICES       = 204003; &lt;br /&gt;
integer SET_FADE_OPTIONS    = 204004; &lt;br /&gt;
integer SET_FONT_TEXTURE    = 204005; &lt;br /&gt;
integer SET_LINE_COLOR      = 204006; &lt;br /&gt;
integer SET_COLOR           = 204007; &lt;br /&gt;
integer RESCAN_LINKSET      = 204008;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//internal API&lt;br /&gt;
integer REGISTER_SLAVE      = 205000;&lt;br /&gt;
integer SLAVE_RECOGNIZED    = 205001;&lt;br /&gt;
integer SLAVE_DISPLAY       = 205003;&lt;br /&gt;
integer SLAVE_DISPLAY_EXTENDED = 205004;&lt;br /&gt;
integer SLAVE_RESET = 205005;&lt;br /&gt;
&lt;br /&gt;
// This is an extended character escape sequence. &lt;br /&gt;
string  ESCAPE_SEQUENCE = &amp;quot;\\e&amp;quot;; &lt;br /&gt;
&lt;br /&gt;
// This is used to get an index for the extended character. &lt;br /&gt;
string  EXTENDED_INDEX  = &amp;quot;12345&amp;quot;; &lt;br /&gt;
&lt;br /&gt;
// Face numbers. &lt;br /&gt;
integer FACE_1          = 3; &lt;br /&gt;
integer FACE_2          = 7; &lt;br /&gt;
integer FACE_3          = 4; &lt;br /&gt;
integer FACE_4          = 6; &lt;br /&gt;
integer FACE_5          = 1; &lt;br /&gt;
&lt;br /&gt;
// Used to hide the text after a fade-out. &lt;br /&gt;
key     TRANSPARENT     = &amp;quot;701917a8-d614-471f-13dd-5f4644e36e3c&amp;quot;;&lt;br /&gt;
key     null_key        = NULL_KEY;&lt;br /&gt;
///////////// END CONSTANTS //////////////// &lt;br /&gt;
&lt;br /&gt;
///////////// GLOBAL VARIABLES /////////////// &lt;br /&gt;
// This is the key of the font we are displaying. &lt;br /&gt;
key     gFontTexture        = &amp;quot;b2e7394f-5e54-aa12-6e1c-ef327b6bed9e&amp;quot;; &lt;br /&gt;
// All displayable characters.  Default to ASCII order. &lt;br /&gt;
string gCharIndex; &lt;br /&gt;
&lt;br /&gt;
// This is whether or not to use the fade in/out special effect. &lt;br /&gt;
integer gCellUseFading      = FALSE; &lt;br /&gt;
// This is how long to display the text before fading out (if using &lt;br /&gt;
// fading special effect). &lt;br /&gt;
// Note: &amp;lt; 0  means don&#039;t fade out. &lt;br /&gt;
float   gCellHoldDelay      = 1.0; &lt;br /&gt;
&lt;br /&gt;
integer gSlaveRegistered;&lt;br /&gt;
list gSlaveNames;&lt;br /&gt;
&lt;br /&gt;
integer BANK_STRIDE=3; //offset, length, highest_dirty&lt;br /&gt;
list gBankingData;&lt;br /&gt;
&lt;br /&gt;
/////////// END GLOBAL VARIABLES //////////// &lt;br /&gt;
&lt;br /&gt;
ResetCharIndex() { &lt;br /&gt;
   gCharIndex  = &amp;quot; !\&amp;quot;#$%&amp;amp;&#039;()*+,-./0123456789:;&amp;lt;=&amp;gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`&amp;quot;; &lt;br /&gt;
   gCharIndex += &amp;quot;abcdefghijklmnopqrstuvwxyz{|}~&amp;quot;; &lt;br /&gt;
   gCharIndex += &amp;quot;\n\n\n\n\n&amp;quot;; &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
vector GetGridOffset(integer index) { &lt;br /&gt;
   // Calculate the offset needed to display this character. &lt;br /&gt;
   integer Row = index / 10; &lt;br /&gt;
   integer Col = index % 10; &lt;br /&gt;
&lt;br /&gt;
   // Return the offset in the texture. &lt;br /&gt;
   return &amp;lt;-0.45 + 0.1 * Col, 0.45 - 0.1 * Row, 0.0&amp;gt;; &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
ShowChars(integer link,vector grid_offset1, vector grid_offset2, vector grid_offset3, vector grid_offset4, vector grid_offset5) { &lt;br /&gt;
   // Set the primitive textures directly. &lt;br /&gt;
    &lt;br /&gt;
   // &amp;lt;-0.256, 0, 0&amp;gt; &lt;br /&gt;
   // &amp;lt;0, 0, 0&amp;gt; &lt;br /&gt;
   // &amp;lt;0.130, 0, 0&amp;gt; &lt;br /&gt;
   // &amp;lt;0, 0, 0&amp;gt; &lt;br /&gt;
   // &amp;lt;-0.74, 0, 0&amp;gt; &lt;br /&gt;
    &lt;br /&gt;
   llSetLinkPrimitiveParamsFast( link,[ &lt;br /&gt;
        PRIM_TEXTURE, FACE_1, (string)gFontTexture, &amp;lt;0.126, 0.1, 0&amp;gt;, grid_offset1 + &amp;lt;0.037, 0, 0&amp;gt;, 0.0, &lt;br /&gt;
        PRIM_TEXTURE, FACE_2, (string)gFontTexture, &amp;lt;0.05, 0.1, 0&amp;gt;, grid_offset2, 0.0, &lt;br /&gt;
        PRIM_TEXTURE, FACE_3, (string)gFontTexture, &amp;lt;-0.74, 0.1, 0&amp;gt;, grid_offset3 - &amp;lt;0.244, 0, 0&amp;gt;, 0.0, &lt;br /&gt;
        PRIM_TEXTURE, FACE_4, (string)gFontTexture, &amp;lt;0.05, 0.1, 0&amp;gt;, grid_offset4, 0.0, &lt;br /&gt;
        PRIM_TEXTURE, FACE_5, (string)gFontTexture, &amp;lt;0.126, 0.1, 0&amp;gt;, grid_offset5 - &amp;lt;0.037, 0, 0&amp;gt;, 0.0 &lt;br /&gt;
        ]); &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
RenderString(integer link, string str) { &lt;br /&gt;
   // Get the grid positions for each pair of characters. &lt;br /&gt;
   vector GridOffset1 = GetGridOffset( llSubStringIndex(gCharIndex, llGetSubString(str, 0, 0)) ); &lt;br /&gt;
   vector GridOffset2 = GetGridOffset( llSubStringIndex(gCharIndex, llGetSubString(str, 1, 1)) ); &lt;br /&gt;
   vector GridOffset3 = GetGridOffset( llSubStringIndex(gCharIndex, llGetSubString(str, 2, 2)) ); &lt;br /&gt;
   vector GridOffset4 = GetGridOffset( llSubStringIndex(gCharIndex, llGetSubString(str, 3, 3)) ); &lt;br /&gt;
   vector GridOffset5 = GetGridOffset( llSubStringIndex(gCharIndex, llGetSubString(str, 4, 4)) ); &lt;br /&gt;
&lt;br /&gt;
   // Use these grid positions to display the correct textures/offsets. &lt;br /&gt;
   ShowChars(link,GridOffset1, GridOffset2, GridOffset3, GridOffset4, GridOffset5); &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
RenderWithEffects(integer link, string str) { &lt;br /&gt;
   // Get the grid positions for each pair of characters. &lt;br /&gt;
   vector GridOffset1 = GetGridOffset( llSubStringIndex(gCharIndex, llGetSubString(str, 0, 0)) ); &lt;br /&gt;
   vector GridOffset2 = GetGridOffset( llSubStringIndex(gCharIndex, llGetSubString(str, 1, 1)) ); &lt;br /&gt;
   vector GridOffset3 = GetGridOffset( llSubStringIndex(gCharIndex, llGetSubString(str, 2, 2)) ); &lt;br /&gt;
   vector GridOffset4 = GetGridOffset( llSubStringIndex(gCharIndex, llGetSubString(str, 3, 3)) ); &lt;br /&gt;
   vector GridOffset5 = GetGridOffset( llSubStringIndex(gCharIndex, llGetSubString(str, 4, 4)) ); &lt;br /&gt;
&lt;br /&gt;
   // First set the alpha to the lowest possible. &lt;br /&gt;
   llSetLinkAlpha(link,0.05, ALL_SIDES); &lt;br /&gt;
&lt;br /&gt;
   // Use these grid positions to display the correct textures/offsets. &lt;br /&gt;
   ShowChars(link,GridOffset1, GridOffset2, GridOffset3, GridOffset4, GridOffset5);          // Now turn up the alpha until it is at full strength. &lt;br /&gt;
    float Alpha = 0.10; &lt;br /&gt;
    for (; Alpha &amp;lt;= 1.0; Alpha += 0.05) &lt;br /&gt;
       llSetLinkAlpha(link,Alpha, ALL_SIDES); &lt;br /&gt;
          // See if we want to fade out as well. &lt;br /&gt;
   if (gCellHoldDelay &amp;lt; 0.0) &lt;br /&gt;
       // No, bail out. (Just keep showing the string at full strength). &lt;br /&gt;
       return; &lt;br /&gt;
          // Hold the text for a while. &lt;br /&gt;
   llSleep(gCellHoldDelay); &lt;br /&gt;
      // Now fade out. &lt;br /&gt;
   for (Alpha = 0.95; Alpha &amp;gt;= 0.05; Alpha -= 0.05) &lt;br /&gt;
       llSetLinkAlpha(link,Alpha, ALL_SIDES); &lt;br /&gt;
          // Make the text transparent to fully hide it. &lt;br /&gt;
   llSetLinkTexture(link,TRANSPARENT, ALL_SIDES); &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
integer RenderExtended(integer link, string str, integer render) {&lt;br /&gt;
   // Look for escape sequences. &lt;br /&gt;
   integer length = 0;&lt;br /&gt;
   list Parsed       = llParseString2List(str, [], (list)ESCAPE_SEQUENCE); &lt;br /&gt;
   integer ParsedLen = llGetListLength(Parsed); &lt;br /&gt;
&lt;br /&gt;
   // Create a list of index values to work with. &lt;br /&gt;
   list Indices; &lt;br /&gt;
   // We start with room for 5 indices. &lt;br /&gt;
   integer IndicesLeft = 5; &lt;br /&gt;
&lt;br /&gt;
   string Token; &lt;br /&gt;
   integer Clipped; &lt;br /&gt;
   integer LastWasEscapeSequence = FALSE; &lt;br /&gt;
   // Work from left to right. &lt;br /&gt;
   integer i = 0;&lt;br /&gt;
   for (; i &amp;lt; ParsedLen &amp;amp;&amp;amp; IndicesLeft &amp;gt; 0; ++i) { &lt;br /&gt;
       Token = llList2String(Parsed, i); &lt;br /&gt;
&lt;br /&gt;
       // If this is an escape sequence, just set the flag and move on. &lt;br /&gt;
       if (Token == ESCAPE_SEQUENCE) { &lt;br /&gt;
           LastWasEscapeSequence = TRUE; &lt;br /&gt;
       } &lt;br /&gt;
       else { // Token != ESCAPE_SEQUENCE &lt;br /&gt;
           // Otherwise this is a normal token.  Check its length. &lt;br /&gt;
           Clipped = FALSE; &lt;br /&gt;
           integer TokenLength = llStringLength(Token); &lt;br /&gt;
           // Clip if necessary. &lt;br /&gt;
           if (TokenLength &amp;gt; IndicesLeft) { &lt;br /&gt;
               TokenLength = llStringLength(Token = llGetSubString(Token, 0, IndicesLeft - 1)); &lt;br /&gt;
               IndicesLeft = 0; &lt;br /&gt;
               Clipped = TRUE; &lt;br /&gt;
           } &lt;br /&gt;
           else &lt;br /&gt;
               IndicesLeft -= TokenLength; &lt;br /&gt;
&lt;br /&gt;
           // Was the previous token an escape sequence? &lt;br /&gt;
           if (LastWasEscapeSequence) { &lt;br /&gt;
               // Yes, the first character is an escape character, the rest are normal. &lt;br /&gt;
               length += 2 + TokenLength;&lt;br /&gt;
               if(render)&lt;br /&gt;
               {&lt;br /&gt;
                    // This is the extended character. &lt;br /&gt;
                    Indices += (llSubStringIndex(EXTENDED_INDEX, llGetSubString(Token, 0, 0)) + 95);&lt;br /&gt;
                    &lt;br /&gt;
                    // These are the normal characters.&lt;br /&gt;
                    integer j = 1; &lt;br /&gt;
                    for (; j &amp;lt; TokenLength; ++j) &lt;br /&gt;
                    {&lt;br /&gt;
                       Indices += llSubStringIndex(gCharIndex, llGetSubString(Token, j, j)); &lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
           } &lt;br /&gt;
           else { // Normal string. &lt;br /&gt;
               // Just add the characters normally. &lt;br /&gt;
               length += TokenLength;&lt;br /&gt;
               if(render)&lt;br /&gt;
               {               &lt;br /&gt;
                   integer j = 0; &lt;br /&gt;
                   for (; j &amp;lt; TokenLength; ++j) &lt;br /&gt;
                   {                  &lt;br /&gt;
                       Indices += llSubStringIndex(gCharIndex, llGetSubString(Token, j, j));&lt;br /&gt;
                   }&lt;br /&gt;
                }&lt;br /&gt;
           } &lt;br /&gt;
&lt;br /&gt;
           // Unset this flag, since this was not an escape sequence. &lt;br /&gt;
           LastWasEscapeSequence = FALSE; &lt;br /&gt;
       } &lt;br /&gt;
   } &lt;br /&gt;
&lt;br /&gt;
   // Use the indices to create grid positions.&lt;br /&gt;
  if(render)&lt;br /&gt;
  {   &lt;br /&gt;
       vector GridOffset1 = GetGridOffset( llList2Integer(Indices, 0) ); &lt;br /&gt;
       vector GridOffset2 = GetGridOffset( llList2Integer(Indices, 1) ); &lt;br /&gt;
       vector GridOffset3 = GetGridOffset( llList2Integer(Indices, 2) ); &lt;br /&gt;
       vector GridOffset4 = GetGridOffset( llList2Integer(Indices, 3) ); &lt;br /&gt;
       vector GridOffset5 = GetGridOffset( llList2Integer(Indices, 4) ); &lt;br /&gt;
    &lt;br /&gt;
       // Use these grid positions to display the correct textures/offsets. &lt;br /&gt;
       ShowChars(link,GridOffset1, GridOffset2, GridOffset3, GridOffset4, GridOffset5);&lt;br /&gt;
   }&lt;br /&gt;
   return length;&lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
integer ConvertIndex(integer index) { &lt;br /&gt;
   // This converts from an ASCII based index to our indexing scheme. &lt;br /&gt;
   if (index &amp;gt;= 32) // &#039; &#039; or higher &lt;br /&gt;
       index -= 32; &lt;br /&gt;
   else { // index &amp;lt; 32 &lt;br /&gt;
       // Quick bounds check. &lt;br /&gt;
       if (index &amp;gt; 15) &lt;br /&gt;
           index = 15; &lt;br /&gt;
&lt;br /&gt;
       index += 94; // extended characters &lt;br /&gt;
   } &lt;br /&gt;
&lt;br /&gt;
   return index; &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PassToRender(integer render,string message, integer bank)&lt;br /&gt;
{&lt;br /&gt;
//    float time;&lt;br /&gt;
    integer extendedlen = 0;&lt;br /&gt;
    integer link;&lt;br /&gt;
    integer i = 0;&lt;br /&gt;
    integer msgLen = llStringLength(message);&lt;br /&gt;
    string TextToRender;&lt;br /&gt;
    integer num_slaves=llGetListLength(gSlaveNames);&lt;br /&gt;
    string slave_name; //avoids unnecessary casts, keeping it as a string&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    //get the bank offset and length&lt;br /&gt;
    integer bank_offset=llList2Integer(gBankingData, (bank * BANK_STRIDE));&lt;br /&gt;
    integer bank_length=llList2Integer(gBankingData, (bank * BANK_STRIDE) + 1);&lt;br /&gt;
    integer bank_highest_dirty=llList2Integer(gBankingData, (bank * BANK_STRIDE) + 2);&lt;br /&gt;
    &lt;br /&gt;
    integer x = 0;&lt;br /&gt;
    for (;x &amp;lt; msgLen;x = x + 5)&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        if (i &amp;gt;= bank_length)  //we don&#039;t want to run off the end of the bank&lt;br /&gt;
        {&lt;br /&gt;
            //set the dirty to max, and bail out, we&#039;re done&lt;br /&gt;
            gBankingData=llListReplaceList(gBankingData, (list)bank_length, (bank * BANK_STRIDE) + 2, (bank * BANK_STRIDE) + 2);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        link = unpack(gXyTextPrims,(i + bank_offset));&lt;br /&gt;
        TextToRender = llGetSubString(message, x, x + 15);&lt;br /&gt;
        &lt;br /&gt;
        if(gSlaveRegistered &amp;amp;&amp;amp; (link % (num_slaves + 1)))&lt;br /&gt;
        {&lt;br /&gt;
            slave_name=llList2String(gSlaveNames, (link % (num_slaves + 1)) - 1);&lt;br /&gt;
            if (render == 1)&lt;br /&gt;
               llMessageLinked(LINK_THIS, SLAVE_DISPLAY, TextToRender, (key)((string)link + &amp;quot;,&amp;quot; + slave_name));&lt;br /&gt;
            if (render == 2)&lt;br /&gt;
            {&lt;br /&gt;
                //time = llGetAndResetTime();&lt;br /&gt;
                if(llSubStringIndex(TextToRender,&amp;quot;\e&amp;quot;) &amp;gt; x)&lt;br /&gt;
                    extendedlen = 5;&lt;br /&gt;
                else&lt;br /&gt;
                    extendedlen = RenderExtended(link,TextToRender,0);&lt;br /&gt;
                if (extendedlen &amp;gt; 5)&lt;br /&gt;
                {&lt;br /&gt;
                    x += extendedlen - 5;&lt;br /&gt;
                }&lt;br /&gt;
               llMessageLinked(LINK_THIS, SLAVE_DISPLAY_EXTENDED, TextToRender, (key)((string)link + &amp;quot;,&amp;quot; + slave_name));&lt;br /&gt;
              // llOwnerSay((string)llGetAndResetTime());&lt;br /&gt;
            }&lt;br /&gt;
               //sorry, no fade effect with slave&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            if (render == 1)&lt;br /&gt;
                RenderString(link,TextToRender);&lt;br /&gt;
            if (render == 2)&lt;br /&gt;
            {&lt;br /&gt;
                extendedlen = RenderExtended(link,TextToRender,1);&lt;br /&gt;
                if (extendedlen &amp;gt; 5)&lt;br /&gt;
                {&lt;br /&gt;
                    x += extendedlen - 5;&lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
            }&lt;br /&gt;
            if (render == 3)&lt;br /&gt;
                RenderWithEffects(link,TextToRender);&lt;br /&gt;
        }&lt;br /&gt;
        ++i;            &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    if (bank_highest_dirty==0)&lt;br /&gt;
        bank_highest_dirty=bank_length;&lt;br /&gt;
    &lt;br /&gt;
    integer current_highest_dirty=i;&lt;br /&gt;
    while (i &amp;lt; bank_highest_dirty)&lt;br /&gt;
    {&lt;br /&gt;
        link = unpack(gXyTextPrims,(i + bank_offset));&lt;br /&gt;
        &lt;br /&gt;
        if(gSlaveRegistered &amp;amp;&amp;amp; (link % (num_slaves+1) != 0))&lt;br /&gt;
        {&lt;br /&gt;
            slave_name=llList2String(gSlaveNames, (link % (num_slaves + 1)) - 1);&lt;br /&gt;
            llMessageLinked(LINK_THIS, SLAVE_DISPLAY, &amp;quot;     &amp;quot;, (key)((string)link + &amp;quot;,&amp;quot; + slave_name));       &lt;br /&gt;
            //sorry, no fade effect with slave&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            RenderString(link,&amp;quot;     &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        ++i;        &lt;br /&gt;
    }&lt;br /&gt;
    gBankingData=llListReplaceList(gBankingData, (list)current_highest_dirty, (bank * BANK_STRIDE) + 2, (bank * BANK_STRIDE) + 2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Bitwise Voodoo by Gigs Taggart and optimized by Strife Onizuka&lt;br /&gt;
list gXyTextPrims;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
integer get_number_of_prims()&lt;br /&gt;
{//ignores avatars.&lt;br /&gt;
    integer a = llGetNumberOfPrims();&lt;br /&gt;
    //Mono tweak&lt;br /&gt;
    vector size = llGetAgentSize(llGetLinkKey(a));&lt;br /&gt;
    while(size.z &amp;gt; 0)&lt;br /&gt;
    {&lt;br /&gt;
        --a;&lt;br /&gt;
        size = llGetAgentSize(llGetLinkKey(a));&lt;br /&gt;
    }&lt;br /&gt;
    return a;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//functions to pack 8-bit shorts into ints&lt;br /&gt;
list pack_and_insert(list in_list, integer pos, integer value)&lt;br /&gt;
{&lt;br /&gt;
//    //figure out the bitpack position&lt;br /&gt;
//    integer pack = pos &amp;amp; 3; //4 bytes per int&lt;br /&gt;
//    pos=pos &amp;gt;&amp;gt; 2;&lt;br /&gt;
//    integer shifted = value &amp;lt;&amp;lt; (pack &amp;lt;&amp;lt; 3);&lt;br /&gt;
//    integer old_value = llList2Integer(in_list, pos);&lt;br /&gt;
//    shifted = old_value | shifted;&lt;br /&gt;
//    in_list = llListReplaceList(in_list, (list)shifted, pos, pos);&lt;br /&gt;
//    return in_list;&lt;br /&gt;
    //Safe optimized version&lt;br /&gt;
    integer index = pos &amp;gt;&amp;gt; 2;&lt;br /&gt;
    return llListReplaceList(in_list, (list)(llList2Integer(in_list, index) | (value &amp;lt;&amp;lt; ((pos &amp;amp; 3) &amp;lt;&amp;lt; 3))), index, index);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
integer unpack(list in_list, integer pos)&lt;br /&gt;
{&lt;br /&gt;
    return (llList2Integer(in_list, pos &amp;gt;&amp;gt; 2) &amp;gt;&amp;gt; ((pos &amp;amp; 3) &amp;lt;&amp;lt; 3)) &amp;amp; 0x000000FF;//unsigned&lt;br /&gt;
//    return (llList2Integer(in_list, pos &amp;gt;&amp;gt; 2) &amp;lt;&amp;lt; (((~pos) &amp;amp; 3) &amp;lt;&amp;lt; 3)) &amp;gt;&amp;gt; 24;//signed&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
change_color(vector color)&lt;br /&gt;
{&lt;br /&gt;
    integer num_prims=llGetListLength(gXyTextPrims) &amp;lt;&amp;lt; 2;&lt;br /&gt;
    &lt;br /&gt;
    integer i = 0;&lt;br /&gt;
    &lt;br /&gt;
    for (; i&amp;lt;=num_prims; ++i)&lt;br /&gt;
    {&lt;br /&gt;
        integer link = unpack(gXyTextPrims,i);&lt;br /&gt;
        if (!link)&lt;br /&gt;
            return;&lt;br /&gt;
        &lt;br /&gt;
        llSetLinkPrimitiveParamsFast( link,[ &lt;br /&gt;
            PRIM_COLOR, FACE_1, color, 1.0,&lt;br /&gt;
            PRIM_COLOR, FACE_2, color, 1.0,&lt;br /&gt;
            PRIM_COLOR, FACE_3, color, 1.0,&lt;br /&gt;
            PRIM_COLOR, FACE_4, color, 1.0,&lt;br /&gt;
            PRIM_COLOR, FACE_5, color, 1.0&lt;br /&gt;
        ]);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
change_line_color(integer bank, vector color)&lt;br /&gt;
{    &lt;br /&gt;
&lt;br /&gt;
    //get the bank offset and length&lt;br /&gt;
    integer i = llList2Integer(gBankingData, (bank * BANK_STRIDE));&lt;br /&gt;
    integer bank_end = i + llList2Integer(gBankingData, (bank * BANK_STRIDE) + 1);&lt;br /&gt;
&lt;br /&gt;
    for (; i &amp;lt; bank_end; ++i)&lt;br /&gt;
    {     &lt;br /&gt;
        integer link = unpack(gXyTextPrims,i);&lt;br /&gt;
        if (!link)&lt;br /&gt;
            return;&lt;br /&gt;
        &lt;br /&gt;
        llSetLinkPrimitiveParamsFast( link,[ &lt;br /&gt;
            PRIM_COLOR, FACE_1, color, 1.0,&lt;br /&gt;
            PRIM_COLOR, FACE_2, color, 1.0,&lt;br /&gt;
            PRIM_COLOR, FACE_3, color, 1.0,&lt;br /&gt;
            PRIM_COLOR, FACE_4, color, 1.0,&lt;br /&gt;
            PRIM_COLOR, FACE_5, color, 1.0&lt;br /&gt;
        ]);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
init()&lt;br /&gt;
{&lt;br /&gt;
    integer num_prims=get_number_of_prims();&lt;br /&gt;
    string link_name;&lt;br /&gt;
    integer bank=0;&lt;br /&gt;
    integer prims_pointer=0; //&amp;quot;pointer&amp;quot; to the next entry to be used in the gXyTextPrims list.&lt;br /&gt;
    &lt;br /&gt;
    list temp_bank = [];&lt;br /&gt;
    integer temp_bank_stride=2;&lt;br /&gt;
    &lt;br /&gt;
    //FIXME: font texture might should be per-bank&lt;br /&gt;
    llMessageLinked(LINK_THIS, SET_FONT_TEXTURE, &amp;quot;&amp;quot;, gFontTexture);&lt;br /&gt;
    &lt;br /&gt;
    // moving this before the prim scan so that the slaves properly configure themseves before&lt;br /&gt;
    // any requests to display&lt;br /&gt;
    llMessageLinked(LINK_THIS, SLAVE_RESET, &amp;quot;&amp;quot; , null_key);&lt;br /&gt;
 &lt;br /&gt;
    gXyTextPrims=[];&lt;br /&gt;
    integer x=0;&lt;br /&gt;
    for (;x&amp;lt;64;++x)&lt;br /&gt;
    {&lt;br /&gt;
        gXyTextPrims = (gXyTextPrims = []) + gXyTextPrims + 0;  //we need to pad out the list to make it easier to add things in any order later&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    gBankingData = [];&lt;br /&gt;
    @loop;&lt;br /&gt;
    {&lt;br /&gt;
        //loop over all prims, looking for ones in the current bank&lt;br /&gt;
        for(x=0;x&amp;lt;=num_prims;++x)&lt;br /&gt;
        {&lt;br /&gt;
            link_name=llGetLinkName(x);&lt;br /&gt;
            list tmp = llParseString2List(link_name, (list)&amp;quot;-&amp;quot;, []);&lt;br /&gt;
            if(llList2String(tmp,0) == &amp;quot;xyzzytext&amp;quot;)&lt;br /&gt;
            {&lt;br /&gt;
                if (llList2Integer(tmp,1) == bank)&lt;br /&gt;
                {&lt;br /&gt;
                    temp_bank += llList2Integer(tmp,2) + (list)x;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (temp_bank != [])&lt;br /&gt;
        {&lt;br /&gt;
            //sort the current bank&lt;br /&gt;
            temp_bank = llListSort(temp_bank, temp_bank_stride, TRUE);&lt;br /&gt;
            &lt;br /&gt;
            integer temp_len = llGetListLength(temp_bank);&lt;br /&gt;
            &lt;br /&gt;
            //store metadata&lt;br /&gt;
            gBankingData += [prims_pointer, temp_len/temp_bank_stride, 0];&lt;br /&gt;
            &lt;br /&gt;
            //repack the bank into the prim list&lt;br /&gt;
            for (x = 0; x &amp;lt; temp_len; x += temp_bank_stride)&lt;br /&gt;
            {&lt;br /&gt;
                gXyTextPrims = pack_and_insert(gXyTextPrims, prims_pointer, llList2Integer(temp_bank, x + 1));&lt;br /&gt;
                ++prims_pointer;&lt;br /&gt;
            }&lt;br /&gt;
            ++bank;&lt;br /&gt;
            temp_bank=[];&lt;br /&gt;
            jump loop;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    //llOwnerSay((string)llGetFreeMemory());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
default { &lt;br /&gt;
   state_entry() { &lt;br /&gt;
       // Initialize the character index. &lt;br /&gt;
       ResetCharIndex();&lt;br /&gt;
       init();&lt;br /&gt;
   } &lt;br /&gt;
&lt;br /&gt;
   on_rez(integer num)&lt;br /&gt;
   {&lt;br /&gt;
      llResetScript();       &lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   link_message(integer sender, integer channel, string data, key id) { &lt;br /&gt;
        if (id==null_key)&lt;br /&gt;
            id=&amp;quot;0&amp;quot;;&lt;br /&gt;
            &lt;br /&gt;
        if (channel == DISPLAY_STRING) { &lt;br /&gt;
            PassToRender(1,data, (integer)((string)id)); &lt;br /&gt;
        } &lt;br /&gt;
        else if (channel == DISPLAY_EXTENDED) { &lt;br /&gt;
            PassToRender(2,data, (integer)((string)id)); &lt;br /&gt;
        } &lt;br /&gt;
        else if (channel == REMAP_INDICES) { &lt;br /&gt;
            // Parse the message, splitting it up into index values. &lt;br /&gt;
            list Parsed = llCSV2List(data); &lt;br /&gt;
            integer i = 0; &lt;br /&gt;
            // Go through the list and swap each pair of indices. &lt;br /&gt;
            for (; i &amp;lt; llGetListLength(Parsed); i += 2) { &lt;br /&gt;
                integer Index1 = ConvertIndex( llList2Integer(Parsed, i) ); &lt;br /&gt;
                integer Index2 = ConvertIndex( llList2Integer(Parsed, i + 1) ); &lt;br /&gt;
        &lt;br /&gt;
                // Swap these index values. &lt;br /&gt;
                string Value1 = llGetSubString(gCharIndex, Index1, Index1); &lt;br /&gt;
                string Value2 = llGetSubString(gCharIndex, Index2, Index2); &lt;br /&gt;
        &lt;br /&gt;
                gCharIndex = llDeleteSubString(gCharIndex, Index1, Index1); &lt;br /&gt;
                gCharIndex = llInsertString(gCharIndex, Index1, Value2);&lt;br /&gt;
        &lt;br /&gt;
                gCharIndex = llDeleteSubString(gCharIndex, Index2, Index2);&lt;br /&gt;
                gCharIndex = llInsertString(gCharIndex, Index2, Value1);&lt;br /&gt;
            } &lt;br /&gt;
        } &lt;br /&gt;
        else if (channel == RESCAN_LINKSET)&lt;br /&gt;
        {&lt;br /&gt;
            init();&lt;br /&gt;
        }&lt;br /&gt;
        else if (channel == RESET_INDICES) { &lt;br /&gt;
            // Restore the character index back to default settings. &lt;br /&gt;
            ResetCharIndex(); &lt;br /&gt;
        } &lt;br /&gt;
        else if (channel == SET_FADE_OPTIONS) { &lt;br /&gt;
            // Change the channel we listen to for cell commands, the &lt;br /&gt;
            // starting character position to extract from, and &lt;br /&gt;
            // special effect attributes. &lt;br /&gt;
            list Parsed = llCSV2List(data); &lt;br /&gt;
            gCellUseFading      = (integer) llList2String(Parsed, 0); &lt;br /&gt;
            gCellHoldDelay      = (float)   llList2String(Parsed, 1);&lt;br /&gt;
        } &lt;br /&gt;
        else if (channel == SET_FONT_TEXTURE) { &lt;br /&gt;
            // Use the new texture instead of the current one. &lt;br /&gt;
            gFontTexture = id; &lt;br /&gt;
        } &lt;br /&gt;
        else if (channel == SET_COLOR) {&lt;br /&gt;
            change_color((vector)data); &lt;br /&gt;
        }&lt;br /&gt;
        else if (channel == SET_LINE_COLOR) {&lt;br /&gt;
            change_line_color((integer)((string)id), (vector)data); &lt;br /&gt;
        } &lt;br /&gt;
        else if (channel == REGISTER_SLAVE)&lt;br /&gt;
        {&lt;br /&gt;
            if(!~llListFindList(gSlaveNames, (list)data))&lt;br /&gt;
            {//isn&#039;t registered yet&lt;br /&gt;
                gSlaveNames += data;&lt;br /&gt;
                gSlaveRegistered=TRUE;&lt;br /&gt;
                //llOwnerSay((string)llGetListLength(gSlaveNames) + &amp;quot; Slave(s) Recognized: &amp;quot; + data);&lt;br /&gt;
            }&lt;br /&gt;
//            else&lt;br /&gt;
//            {//it already exists&lt;br /&gt;
//                llOwnerSay((string)llGetListLength(gSlaveNames) + &amp;quot; Slave, Existing Slave Recognized: &amp;quot; + data);&lt;br /&gt;
//            }&lt;br /&gt;
            llMessageLinked(LINK_THIS, SLAVE_RECOGNIZED, data , null_key);&lt;br /&gt;
        }&lt;br /&gt;
    } &lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
    changed(integer change)&lt;br /&gt;
    {&lt;br /&gt;
        if(change&amp;amp;CHANGED_INVENTORY)&lt;br /&gt;
        {&lt;br /&gt;
            if(gSlaveRegistered)        &lt;br /&gt;
            {&lt;br /&gt;
                //by using negative indexes they don&#039;t need to be adjusted when an entry is deleted.&lt;br /&gt;
                integer x = ~llGetListLength(gSlaveNames);&lt;br /&gt;
                while(++x)&lt;br /&gt;
                {&lt;br /&gt;
                    if (!~llGetInventoryType(llList2String(gSlaveNames, x)))&lt;br /&gt;
                    {&lt;br /&gt;
                        //llOwnerSay(&amp;quot;Slave Removed: &amp;quot; + llList2String(gSlaveNames, x));&lt;br /&gt;
                        gSlaveNames = llDeleteSubList(gSlaveNames, x, x);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                gSlaveRegistered = !(gSlaveNames == []);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Slave Script==&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
//////////////////////////////////////////// &lt;br /&gt;
// XyText v2.0 SLAVE Script (5 Face, Single Texture) &lt;br /&gt;
//&lt;br /&gt;
// Modified by Thraxis Epsilon and Gigs Taggart 5/2007&lt;br /&gt;
// Rewrite to allow one-script-per-object operation&lt;br /&gt;
//&lt;br /&gt;
// Modified by Kermitt Quirk 19/01/2006 &lt;br /&gt;
// To add support for 5 face prim instead of 3 &lt;br /&gt;
// &lt;br /&gt;
// Originally Written by Xylor Baysklef &lt;br /&gt;
// &lt;br /&gt;
//&lt;br /&gt;
//////////////////////////////////////////// &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
integer REMAP_INDICES       = 204002; &lt;br /&gt;
integer RESET_INDICES       = 204003;&lt;br /&gt;
&lt;br /&gt;
//internal API&lt;br /&gt;
integer REGISTER_SLAVE      = 205000;&lt;br /&gt;
integer SLAVE_RECOGNIZED    = 205001;&lt;br /&gt;
integer SLAVE_DISPLAY       = 205003;&lt;br /&gt;
integer SET_FONT_TEXTURE    = 204005; &lt;br /&gt;
&lt;br /&gt;
integer SLAVE_DISPLAY_EXTENDED = 205004;&lt;br /&gt;
integer SLAVE_RESET = 205005;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// This is an extended character escape sequence. &lt;br /&gt;
string  ESCAPE_SEQUENCE = &amp;quot;\\e&amp;quot;; &lt;br /&gt;
&lt;br /&gt;
// This is used to get an index for the extended character. &lt;br /&gt;
string  EXTENDED_INDEX  = &amp;quot;12345&amp;quot;; &lt;br /&gt;
&lt;br /&gt;
// Face numbers. &lt;br /&gt;
integer FACE_1          = 3; &lt;br /&gt;
integer FACE_2          = 7; &lt;br /&gt;
integer FACE_3          = 4; &lt;br /&gt;
integer FACE_4          = 6; &lt;br /&gt;
integer FACE_5          = 1; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
///////////// GLOBAL VARIABLES /////////////// &lt;br /&gt;
// This is the key of the font we are displaying. &lt;br /&gt;
key     gFontTexture        = &amp;quot;b2e7394f-5e54-aa12-6e1c-ef327b6bed9e&amp;quot;; &lt;br /&gt;
// All displayable characters.  Default to ASCII order. &lt;br /&gt;
string gCharIndex; &lt;br /&gt;
&lt;br /&gt;
integer gActive; //if we are recognized, this is true&lt;br /&gt;
/////////// END GLOBAL VARIABLES //////////// &lt;br /&gt;
&lt;br /&gt;
ResetCharIndex() { &lt;br /&gt;
   gCharIndex  = &amp;quot; !\&amp;quot;#$%&amp;amp;&#039;()*+,-./0123456789:;&amp;lt;=&amp;gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`&amp;quot;; &lt;br /&gt;
   gCharIndex += &amp;quot;abcdefghijklmnopqrstuvwxyz{|}~&amp;quot;; &lt;br /&gt;
   gCharIndex += &amp;quot;\n\n\n\n\n&amp;quot;; &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
vector GetGridOffset(integer index) { &lt;br /&gt;
   // Calculate the offset needed to display this character. &lt;br /&gt;
   integer Row = index / 10; &lt;br /&gt;
   integer Col = index % 10; &lt;br /&gt;
&lt;br /&gt;
   // Return the offset in the texture. &lt;br /&gt;
   return &amp;lt;-0.45 + 0.1 * Col, 0.45 - 0.1 * Row, 0.0&amp;gt;; &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
ShowChars(integer link,vector grid_offset1, vector grid_offset2, vector grid_offset3, vector grid_offset4, vector grid_offset5) { &lt;br /&gt;
   // Set the primitive textures directly. &lt;br /&gt;
    &lt;br /&gt;
   // &amp;lt;-0.256, 0, 0&amp;gt; &lt;br /&gt;
   // &amp;lt;0, 0, 0&amp;gt; &lt;br /&gt;
   // &amp;lt;0.130, 0, 0&amp;gt; &lt;br /&gt;
   // &amp;lt;0, 0, 0&amp;gt; &lt;br /&gt;
   // &amp;lt;-0.74, 0, 0&amp;gt; &lt;br /&gt;
    &lt;br /&gt;
   llSetLinkPrimitiveParamsFast( link,[ &lt;br /&gt;
        PRIM_TEXTURE, FACE_1, (string)gFontTexture, &amp;lt;0.126, 0.1, 0&amp;gt;, grid_offset1 + &amp;lt;0.037, 0, 0&amp;gt;, 0.0, &lt;br /&gt;
        PRIM_TEXTURE, FACE_2, (string)gFontTexture, &amp;lt;0.05, 0.1, 0&amp;gt;, grid_offset2, 0.0, &lt;br /&gt;
        PRIM_TEXTURE, FACE_3, (string)gFontTexture, &amp;lt;-0.74, 0.1, 0&amp;gt;, grid_offset3 - &amp;lt;0.244, 0, 0&amp;gt;, 0.0, &lt;br /&gt;
        PRIM_TEXTURE, FACE_4, (string)gFontTexture, &amp;lt;0.05, 0.1, 0&amp;gt;, grid_offset4, 0.0, &lt;br /&gt;
        PRIM_TEXTURE, FACE_5, (string)gFontTexture, &amp;lt;0.126, 0.1, 0&amp;gt;, grid_offset5 - &amp;lt;0.037, 0, 0&amp;gt;, 0.0 &lt;br /&gt;
        ]); &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
RenderString(integer link, string str) {&lt;br /&gt;
   // Get the grid positions for each pair of characters. &lt;br /&gt;
   vector GridOffset1 = GetGridOffset( llSubStringIndex(gCharIndex, llGetSubString(str, 0, 0)) ); &lt;br /&gt;
   vector GridOffset2 = GetGridOffset( llSubStringIndex(gCharIndex, llGetSubString(str, 1, 1)) ); &lt;br /&gt;
   vector GridOffset3 = GetGridOffset( llSubStringIndex(gCharIndex, llGetSubString(str, 2, 2)) ); &lt;br /&gt;
   vector GridOffset4 = GetGridOffset( llSubStringIndex(gCharIndex, llGetSubString(str, 3, 3)) ); &lt;br /&gt;
   vector GridOffset5 = GetGridOffset( llSubStringIndex(gCharIndex, llGetSubString(str, 4, 4)) ); &lt;br /&gt;
&lt;br /&gt;
   // Use these grid positions to display the correct textures/offsets. &lt;br /&gt;
   ShowChars(link,GridOffset1, GridOffset2, GridOffset3, GridOffset4, GridOffset5); &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
RenderExtended(integer link, string str) { &lt;br /&gt;
   // Look for escape sequences. &lt;br /&gt;
   list Parsed       = llParseString2List(str, [], [ESCAPE_SEQUENCE]); &lt;br /&gt;
   integer ParsedLen = llGetListLength(Parsed); &lt;br /&gt;
&lt;br /&gt;
   // Create a list of index values to work with. &lt;br /&gt;
   list Indices; &lt;br /&gt;
   // We start with room for 5 indices. &lt;br /&gt;
   integer IndicesLeft = 5; &lt;br /&gt;
&lt;br /&gt;
   integer i = 0; &lt;br /&gt;
   string Token; &lt;br /&gt;
   integer Clipped; &lt;br /&gt;
   integer LastWasEscapeSequence = FALSE; &lt;br /&gt;
   // Work from left to right. &lt;br /&gt;
   for (; i &amp;lt; ParsedLen &amp;amp;&amp;amp; IndicesLeft &amp;gt; 0; ++i) { &lt;br /&gt;
       Token = llList2String(Parsed, i); &lt;br /&gt;
&lt;br /&gt;
       // If this is an escape sequence, just set the flag and move on. &lt;br /&gt;
       if (Token == ESCAPE_SEQUENCE) { &lt;br /&gt;
           LastWasEscapeSequence = TRUE; &lt;br /&gt;
       } &lt;br /&gt;
       else { // Token != ESCAPE_SEQUENCE &lt;br /&gt;
           // Otherwise this is a normal token.  Check its length. &lt;br /&gt;
           Clipped = FALSE; &lt;br /&gt;
           integer TokenLength = llStringLength(Token); &lt;br /&gt;
           // Clip if necessary. &lt;br /&gt;
           if (TokenLength &amp;gt; IndicesLeft) { &lt;br /&gt;
               Token = llGetSubString(Token, 0, IndicesLeft - 1); &lt;br /&gt;
               TokenLength = llStringLength(Token); &lt;br /&gt;
               IndicesLeft = 0; &lt;br /&gt;
               Clipped = TRUE; &lt;br /&gt;
           } &lt;br /&gt;
           else &lt;br /&gt;
               IndicesLeft -= TokenLength; &lt;br /&gt;
&lt;br /&gt;
           // Was the previous token an escape sequence? &lt;br /&gt;
           if (LastWasEscapeSequence) { &lt;br /&gt;
               // Yes, the first character is an escape character, the rest are normal. &lt;br /&gt;
&lt;br /&gt;
               // This is the extended character. &lt;br /&gt;
               Indices += (llSubStringIndex(EXTENDED_INDEX, llGetSubString(Token, 0, 0)) + 95); &lt;br /&gt;
&lt;br /&gt;
               // These are the normal characters. &lt;br /&gt;
               integer j = 1; &lt;br /&gt;
               for (; j &amp;lt; TokenLength; ++j) &lt;br /&gt;
                   Indices += llSubStringIndex(gCharIndex, llGetSubString(Token, j, j)); &lt;br /&gt;
           } &lt;br /&gt;
           else { // Normal string. &lt;br /&gt;
               // Just add the characters normally. &lt;br /&gt;
               integer j; &lt;br /&gt;
               for (j = 0; j &amp;lt; TokenLength; ++j) &lt;br /&gt;
                   Indices += llSubStringIndex(gCharIndex, llGetSubString(Token, j, j)); &lt;br /&gt;
           } &lt;br /&gt;
&lt;br /&gt;
           // Unset this flag, since this was not an escape sequence. &lt;br /&gt;
           LastWasEscapeSequence = FALSE; &lt;br /&gt;
       } &lt;br /&gt;
   } &lt;br /&gt;
&lt;br /&gt;
   // Use the indices to create grid positions. &lt;br /&gt;
   vector GridOffset1 = GetGridOffset( llList2Integer(Indices, 0) ); &lt;br /&gt;
   vector GridOffset2 = GetGridOffset( llList2Integer(Indices, 1) ); &lt;br /&gt;
   vector GridOffset3 = GetGridOffset( llList2Integer(Indices, 2) ); &lt;br /&gt;
   vector GridOffset4 = GetGridOffset( llList2Integer(Indices, 3) ); &lt;br /&gt;
   vector GridOffset5 = GetGridOffset( llList2Integer(Indices, 4) ); &lt;br /&gt;
&lt;br /&gt;
   // Use these grid positions to display the correct textures/offsets. &lt;br /&gt;
   ShowChars(link,GridOffset1, GridOffset2, GridOffset3, GridOffset4, GridOffset5); &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
integer ConvertIndex(integer index) { &lt;br /&gt;
   // This converts from an ASCII based index to our indexing scheme. &lt;br /&gt;
   if (index &amp;gt;= 32) // &#039; &#039; or higher &lt;br /&gt;
       index -= 32; &lt;br /&gt;
   else { // index &amp;lt; 32 &lt;br /&gt;
       // Quick bounds check. &lt;br /&gt;
       if (index &amp;gt; 15) &lt;br /&gt;
           index = 15; &lt;br /&gt;
&lt;br /&gt;
       index += 94; // extended characters &lt;br /&gt;
   } &lt;br /&gt;
&lt;br /&gt;
   return index; &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
default &lt;br /&gt;
{ &lt;br /&gt;
    state_entry() &lt;br /&gt;
    { &lt;br /&gt;
        // Initialize the character index. &lt;br /&gt;
        ResetCharIndex();&lt;br /&gt;
        llMessageLinked(LINK_THIS, REGISTER_SLAVE, llGetScriptName() , NULL_KEY);  &lt;br /&gt;
    } &lt;br /&gt;
    &lt;br /&gt;
    on_rez(integer num)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();       &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    link_message(integer sender, integer channel, string data, key id) &lt;br /&gt;
    { &lt;br /&gt;
    &lt;br /&gt;
        if (channel == SLAVE_RECOGNIZED)&lt;br /&gt;
        {&lt;br /&gt;
            if (data == llGetScriptName())&lt;br /&gt;
            {&lt;br /&gt;
                gActive=TRUE;&lt;br /&gt;
            }&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        if (channel == SLAVE_DISPLAY) &lt;br /&gt;
        { &lt;br /&gt;
            if (!gActive)  &lt;br /&gt;
                return;&lt;br /&gt;
                &lt;br /&gt;
            list params=llCSV2List((string)id);&lt;br /&gt;
            if (llList2String(params, 1) != llGetScriptName())&lt;br /&gt;
                return;&lt;br /&gt;
            &lt;br /&gt;
            &lt;br /&gt;
            RenderString(llList2Integer(params, 0),data);&lt;br /&gt;
            return; &lt;br /&gt;
        } &lt;br /&gt;
       &lt;br /&gt;
       if (channel == SLAVE_DISPLAY_EXTENDED) &lt;br /&gt;
       {&lt;br /&gt;
            if (!gActive)  &lt;br /&gt;
                return;&lt;br /&gt;
                &lt;br /&gt;
            list params=llCSV2List((string)id);&lt;br /&gt;
            if (llList2String(params, 1) != llGetScriptName())&lt;br /&gt;
                return;&lt;br /&gt;
                &lt;br /&gt;
            RenderExtended(llList2Integer(params, 0),data);&lt;br /&gt;
       } &lt;br /&gt;
       &lt;br /&gt;
        if (channel == SET_FONT_TEXTURE) &lt;br /&gt;
        { &lt;br /&gt;
           gFontTexture = id; &lt;br /&gt;
           return; &lt;br /&gt;
        } &lt;br /&gt;
       &lt;br /&gt;
        if (channel == REMAP_INDICES) { &lt;br /&gt;
           // Parse the message, splitting it up into index values. &lt;br /&gt;
           list Parsed = llCSV2List(data); &lt;br /&gt;
           integer i; &lt;br /&gt;
           // Go through the list and swap each pair of indices. &lt;br /&gt;
           for (i = 0; i &amp;lt; llGetListLength(Parsed); i += 2) { &lt;br /&gt;
               integer Index1 = ConvertIndex( llList2Integer(Parsed, i) ); &lt;br /&gt;
               integer Index2 = ConvertIndex( llList2Integer(Parsed, i + 1) ); &lt;br /&gt;
        &lt;br /&gt;
               // Swap these index values. &lt;br /&gt;
               string Value1 = llGetSubString(gCharIndex, Index1, Index1); &lt;br /&gt;
               string Value2 = llGetSubString(gCharIndex, Index2, Index2); &lt;br /&gt;
        &lt;br /&gt;
               gCharIndex = llDeleteSubString(gCharIndex, Index1, Index1); &lt;br /&gt;
               gCharIndex = llInsertString(gCharIndex, Index1, Value2); &lt;br /&gt;
        &lt;br /&gt;
               gCharIndex = llDeleteSubString(gCharIndex, Index2, Index2); &lt;br /&gt;
               gCharIndex = llInsertString(gCharIndex, Index2, Value1); &lt;br /&gt;
           } &lt;br /&gt;
           return; &lt;br /&gt;
        } &lt;br /&gt;
        if (channel == RESET_INDICES) { &lt;br /&gt;
           // Restore the character index back to default settings. &lt;br /&gt;
           ResetCharIndex(); &lt;br /&gt;
           return; &lt;br /&gt;
        } &lt;br /&gt;
&lt;br /&gt;
        &lt;br /&gt;
        if (channel == SLAVE_RESET)&lt;br /&gt;
        {&lt;br /&gt;
            ResetCharIndex();&lt;br /&gt;
            gActive=FALSE;&lt;br /&gt;
            llMessageLinked(LINK_THIS, REGISTER_SLAVE, llGetScriptName() , NULL_KEY);&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
    } &lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Prim Setup==&lt;br /&gt;
&#039;&#039;&#039;(Caution!  Not compatible with 5 face double texture Xytext)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// XyzzyText Prim Setup Script (5 Face)&lt;br /&gt;
//&lt;br /&gt;
// Modified by Thraxis Epsilon&lt;br /&gt;
//&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        llSetPrimitiveParams([&lt;br /&gt;
                    PRIM_TYPE, PRIM_TYPE_PRISM, PRIM_HOLE_DEFAULT, &amp;lt;0.199, 0.8, 0.0&amp;gt;, 0.68, &amp;lt;0.0, 0.0, 0.0&amp;gt;, &amp;lt;1.0, 1.0, 0.0&amp;gt;, &amp;lt;0.0, 0.0, 0.0&amp;gt;, &lt;br /&gt;
                    PRIM_SIZE, &amp;lt;0.03, 2.89, 0.5&amp;gt;, &lt;br /&gt;
                    PRIM_TEXTURE, 1, &amp;quot;09b04244-9569-d21f-6de0-4bbcf5552222&amp;quot;, &amp;lt;0.126, 0.10, 0.0&amp;gt;, &amp;lt;-0.740013, 0.0, 0.0&amp;gt;, 0.0, &lt;br /&gt;
                    PRIM_TEXTURE, 6, &amp;quot;09b04244-9569-d21f-6de0-4bbcf5552222&amp;quot;, &amp;lt;0.050, 0.100, 0.00&amp;gt;, &amp;lt;0.0, 0.0, 0.0&amp;gt;, 0.0, &lt;br /&gt;
                    PRIM_TEXTURE, 4, &amp;quot;09b04244-9569-d21f-6de0-4bbcf5552222&amp;quot;, &amp;lt;-0.740, 0.10, 0.00&amp;gt;, &amp;lt;0.130009, 0.0, 0.0&amp;gt;, 0.0, &lt;br /&gt;
                    PRIM_TEXTURE, 7, &amp;quot;09b04244-9569-d21f-6de0-4bbcf5552222&amp;quot;, &amp;lt;0.050, 0.100, 0.00&amp;gt;, &amp;lt;0.0, 0.0, 0.0&amp;gt;, 0.0, &lt;br /&gt;
                    PRIM_TEXTURE, 3, &amp;quot;09b04244-9569-d21f-6de0-4bbcf5552222&amp;quot;, &amp;lt;0.126, 0.10, 0.0&amp;gt;, &amp;lt;-0.255989, 0.0, 0.0&amp;gt;, 0.0]);&lt;br /&gt;
                    &lt;br /&gt;
        llRemoveInventory(llGetScriptName());&lt;br /&gt;
    } &lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= How to produce textures with alternative fonts for 5 character version (Photoshop VBscript version) =&lt;br /&gt;
&lt;br /&gt;
Note: If you need to use XyzzyText for European or UTF-8 other languages, please see the following link: [[XyzzyText-UTF8]]&lt;br /&gt;
Use the following section for GIMP script-fu if you prefer opensource alternative. Use the following link: [[ZZText]] for an alternative international solution (still based on xytext and xyzzytext) using even fewer textures and lag than the xytext solution.&lt;br /&gt;
&lt;br /&gt;
If you need to display with another font, italics or other characters, you can do the following :)&lt;br /&gt;
&lt;br /&gt;
Using Photoshop VB Scripting on windows, just open up Photoshop CS3, and create with notepad the following MakeFonts.vbs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Dim appRef&lt;br /&gt;
Set appRef = CreateObject( &amp;quot;Photoshop.Application&amp;quot; )&lt;br /&gt;
&#039; Remember current unit settings and then set units to&lt;br /&gt;
&#039; the value expected by this script&lt;br /&gt;
Dim originalRulerUnits&lt;br /&gt;
originalRulerUnits = appRef.Preferences.RulerUnits&lt;br /&gt;
appRef.Preferences.RulerUnits = 1 &#039; psPixels&lt;br /&gt;
&#039; Create a new 512*512 pixel document and assign it to a variable.&lt;br /&gt;
Dim docRef&lt;br /&gt;
Dim artLayerRef&lt;br /&gt;
Dim textItemRef&lt;br /&gt;
dim rows(10)&lt;br /&gt;
rows(1)=&amp;quot; !&amp;quot;&amp;quot;#$%&amp;amp;&#039;()&amp;quot;&lt;br /&gt;
rows(2)=&amp;quot;*+,-./0123&amp;quot;&lt;br /&gt;
rows(3)=&amp;quot;456789:;&amp;lt;=&amp;quot;&lt;br /&gt;
rows(4)=&amp;quot;&amp;gt;?@ABCDEFG&amp;quot;&lt;br /&gt;
rows(5)=&amp;quot;HIJKLMNOPQ&amp;quot;&lt;br /&gt;
rows(6)=&amp;quot;RSTUVWXYZ[&amp;quot;&lt;br /&gt;
rows(7)=&amp;quot;\]^_`abcde&amp;quot;&lt;br /&gt;
rows(8)=&amp;quot;fghijklmno&amp;quot;&lt;br /&gt;
rows(9)=&amp;quot;pqrstuvwxy&amp;quot;&lt;br /&gt;
rows(10)=&amp;quot;z{|}~·ΘΩ√&amp;quot;      &lt;br /&gt;
&lt;br /&gt;
dim fontname&lt;br /&gt;
fontname=&amp;quot;Courier&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Set docRef = appRef.Documents.Add(512, 512, 72, &amp;quot;Table for font &amp;quot; &amp;amp; fontname, 2, 3, 1)&lt;br /&gt;
&#039; Create a new art layer containing text&lt;br /&gt;
Dim colorObj&lt;br /&gt;
Set colorObj=CreateObject(&amp;quot;Photoshop.SolidColor&amp;quot;)&lt;br /&gt;
colorObj.RGB.Red=255&lt;br /&gt;
colorObj.RGB.Green=255&lt;br /&gt;
colorObj.RGB.Blue=255&lt;br /&gt;
&#039; Set the contents of the text layer.&lt;br /&gt;
for i=1 to 10&lt;br /&gt;
   for j=1 to 10&lt;br /&gt;
     Set artLayerRef = docRef.ArtLayers.Add&lt;br /&gt;
     artLayerRef.Kind = 2&lt;br /&gt;
     Set textItemRef = artLayerRef.TextItem&lt;br /&gt;
     &#039; textItemRef.Font = fontname&lt;br /&gt;
     textItemRef.Color=colorObj&lt;br /&gt;
     textItemRef.Justification = 2 &lt;br /&gt;
     textItemRef.Font = &amp;quot;A Charming Font&amp;quot;&lt;br /&gt;
     textItemRef.Size = 38&lt;br /&gt;
     textItemRef.Contents = mid(rows(i),j,1)&lt;br /&gt;
     textItemRef.Position = Array((j-1)*51.2+25,i*51.2-7)&lt;br /&gt;
   next&lt;br /&gt;
next&lt;br /&gt;
&#039; Restore unit settingPhotoshop CS3&lt;br /&gt;
appRef.Preferences.RulerUnits = originalRulerUnits&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just click on the file in internet explorer and it will start working with your photoshop (I&#039;ll take a bit to display all the 100 characters, maybe around 1 sec for character).&lt;br /&gt;
&lt;br /&gt;
This will layout the 100 characters in photoshop on 100 different layers. Then do the following:&lt;br /&gt;
&lt;br /&gt;
* select all the layers with text and go to Text tool and change to whatever font (size etc) you want&lt;br /&gt;
* maybe need to add a black layer to see your fonts :) (after you have to hid or delete this)&lt;br /&gt;
* merge all the layers in just one&lt;br /&gt;
* add an alpha channel for transparency (all black)&lt;br /&gt;
* select all in the merged text layer and copy it to alpha channel&lt;br /&gt;
* enable the alpha channel and the RGB channel so that you see your font set and the transparent red&lt;br /&gt;
* save the font as TGA preserving alpha channel&lt;br /&gt;
* upload it to SecondLife 10 L$&lt;br /&gt;
* get the UUID from the inventory and specify it instead of the standard template.&lt;br /&gt;
&lt;br /&gt;
= How to produce textures with alternative fonts for 5 character version (GIMP script-fu version) =&lt;br /&gt;
&lt;br /&gt;
Use the following script for generating characters with GIMP:&lt;br /&gt;
&lt;br /&gt;
To use it you must put under the $HOME/.gimpXXX/scripts directory and name it something.scm.&lt;br /&gt;
Then you will find it under gimp &amp;lt;Toolbox&amp;gt;/Xtns/Script-Fu/Text. Clicking on it you are prompted for font to use (use monospaced fonts Andale Mono for instance). (Change only font and fontsize 50 should be ok, others are hard-coded in the script). Adapt with new unicode characters if you need them.&lt;br /&gt;
&lt;br /&gt;
Note: If you need to use XyzzyText for European or UTF-8 other languages, please see the following link: [[XyzzyText-UTF8]]&lt;br /&gt;
Use the following section for GIMP script-fu if you prefer opensource alternative. Use the following link: [[ZZText]] for an alternative international solution (still based on xytext and xyzzytext) using even fewer textures and lag than the xytext solution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(define (script-fu-xytext-simple inText inFont inFontSize inTextColor)&lt;br /&gt;
   (let*&lt;br /&gt;
       (&lt;br /&gt;
       ; define our local variables&lt;br /&gt;
       ; create a new image:&lt;br /&gt;
       (theImageWidth  512)&lt;br /&gt;
       (theImageHeight 512)&lt;br /&gt;
       (theImage)&lt;br /&gt;
       (theLayer )&lt;br /&gt;
       (x 0)&lt;br /&gt;
       (y 0)&lt;br /&gt;
       (p 32)&lt;br /&gt;
       (theText)&lt;br /&gt;
       (rows #(&lt;br /&gt;
               &amp;quot; !\&amp;quot;#$%&amp;amp;&#039;()&amp;quot;&lt;br /&gt;
               &amp;quot;*+,-./0123&amp;quot;&lt;br /&gt;
               &amp;quot;456789:;&amp;lt;=&amp;quot;&lt;br /&gt;
               &amp;quot;&amp;gt;?@ABCDEFG&amp;quot;&lt;br /&gt;
               &amp;quot;HIJKLMNOPQ&amp;quot;&lt;br /&gt;
               &amp;quot;RSTUVWXYZ[&amp;quot;&lt;br /&gt;
               &amp;quot;\\]^_`abcde&amp;quot;&lt;br /&gt;
               &amp;quot;fghijklmno&amp;quot;&lt;br /&gt;
               &amp;quot;pqrstuvwxy&amp;quot;&lt;br /&gt;
&lt;br /&gt;
               ;&amp;quot;z{|}~·thetaOmegaRadix.o &amp;quot;&lt;br /&gt;
               (list #\z #\{ #\| #\} #\~ #x387 #x3F4 #x3A9r #x221A #x387 )&lt;br /&gt;
              )&lt;br /&gt;
       )&lt;br /&gt;
       (el 0)&lt;br /&gt;
       (ch 0)&lt;br /&gt;
       ) ;end of our local variables&lt;br /&gt;
&lt;br /&gt;
  ; builds image&lt;br /&gt;
  (set! theImage (car    (gimp-image-new theImageWidth theImageHeight RGB)))&lt;br /&gt;
  ; builds layer&lt;br /&gt;
  (set! theLayer (car (gimp-layer-new theImage theImageWidth theImageHeight RGB-IMAGE &amp;quot;layer 1&amp;quot; 100 NORMAL) ) )&lt;br /&gt;
  ; add layer to image&lt;br /&gt;
  (gimp-image-add-layer theImage theLayer 0)&lt;br /&gt;
&lt;br /&gt;
  ; add alpha and set foreground&lt;br /&gt;
  (gimp-layer-add-alpha theLayer)&lt;br /&gt;
  (gimp-palette-set-foreground inTextColor)&lt;br /&gt;
&lt;br /&gt;
  ; clear all the image and remove selection&lt;br /&gt;
  (gimp-selection-all theImage)&lt;br /&gt;
  (gimp-edit-clear theLayer)&lt;br /&gt;
  (gimp-selection-none theImage)&lt;br /&gt;
&lt;br /&gt;
  ; do actual plot of characters&lt;br /&gt;
  (while (&amp;lt; x 10)&lt;br /&gt;
    (while (&amp;lt; y 10)&lt;br /&gt;
      (set! el (vector-ref rows x))&lt;br /&gt;
      (set! ch (if (string? el) (substring el y (+ y 1)) (list-ref el (+ y 1))))&lt;br /&gt;
      (if (integer? ch) (set! ch (integer-&amp;gt;char ch)))&lt;br /&gt;
      (if (char? ch)(set! ch (string ch)))&lt;br /&gt;
      (set! p ch)&lt;br /&gt;
      (set! theText (car (gimp-text-fontname theImage theLayer&lt;br /&gt;
          (+ (* y 51.2) 12) (- (* x 51.2) 7)&lt;br /&gt;
          p    0    TRUE&lt;br /&gt;
          inFontSize PIXELS&lt;br /&gt;
          inFont)))&lt;br /&gt;
&lt;br /&gt;
        ; go on next char&lt;br /&gt;
        ;(set! p (+ p 1))&lt;br /&gt;
        (set! y (+ y 1))&lt;br /&gt;
      )&lt;br /&gt;
&lt;br /&gt;
    (set! y 0)&lt;br /&gt;
    (set! x (+ x 1))&lt;br /&gt;
  )&lt;br /&gt;
&lt;br /&gt;
  ; apply the layers (apply transparence&lt;br /&gt;
  (gimp-image-merge-visible-layers theImage 0)&lt;br /&gt;
&lt;br /&gt;
  (gimp-display-new theImage)&lt;br /&gt;
  )&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
(script-fu-register&lt;br /&gt;
  &amp;quot;script-fu-xytext-simple&amp;quot;           ;func name&lt;br /&gt;
  &amp;quot;XYText-simple&amp;quot;                     ;menu label&lt;br /&gt;
  &amp;quot;Generate font for xytext-simple&amp;quot;   ;description&lt;br /&gt;
  &amp;quot;Salahzar Stenvaag&amp;quot;                 ;author&lt;br /&gt;
  &amp;quot;copyright 2008, Salahzar Stenvaag&amp;quot; ;copyright notice&lt;br /&gt;
  &amp;quot;October 27, 1997&amp;quot;                  ;date created&lt;br /&gt;
  &amp;quot;&amp;quot;                                  ;image type that the script works on&lt;br /&gt;
  SF-STRING      &amp;quot;Text:&amp;quot;         &amp;quot;Text Box&amp;quot;           ;a string variable&lt;br /&gt;
  SF-FONT        &amp;quot;Font:&amp;quot;         &amp;quot;Andale Mono&amp;quot;        ;a fixed font variable&lt;br /&gt;
  SF-ADJUSTMENT  &amp;quot;Font size&amp;quot;     &#039;(50 1 1000 1 10 0 1);a spin-button&lt;br /&gt;
  SF-COLOR       &amp;quot;Color:&amp;quot;        &#039;(255 255 255)       ;color variable&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
(script-fu-menu-register &amp;quot;script-fu-xytext-simple&amp;quot; &amp;quot;&amp;lt;Toolbox&amp;gt;/Xtns/Text&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= XyzzyText - 10 Character =&lt;br /&gt;
&lt;br /&gt;
== Master Script ==&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
//////////////////////////////////////////// &lt;br /&gt;
// XyzzyText v2.1(10-Char) by Thraxis Epsilon&lt;br /&gt;
// XyzzyText v2.1 Script (Set Line Color) by Huney Jewell&lt;br /&gt;
// XyzzyText v2.0 Script (5 Face, Single Texture) &lt;br /&gt;
//&lt;br /&gt;
// Edited trivially by Joel Cloquet on 1/2011 to use the (relatively)&lt;br /&gt;
// new llSetLinkPrimitiveParamsFast function, thereby removing the need in&lt;br /&gt;
// some cases to use the slave script.&lt;br /&gt;
//&lt;br /&gt;
// Heavily Modified by Thraxis Epsilon, Gigs Taggart 5/2007 and Strife Onizuka 8/2007&lt;br /&gt;
// Rewrite to allow one-script-per-object operation w/ optional slaves&lt;br /&gt;
// Enable prim-label functionality&lt;br /&gt;
// Enabled Banking&lt;br /&gt;
// Enabled 10-char per prim&lt;br /&gt;
//&lt;br /&gt;
// Modified by Kermitt Quirk 19/01/2006 &lt;br /&gt;
// To add support for 5 face prim instead of 3 &lt;br /&gt;
// &lt;br /&gt;
// Core XyText Originally Written by Xylor Baysklef &lt;br /&gt;
// &lt;br /&gt;
//&lt;br /&gt;
//////////////////////////////////////////// &lt;br /&gt;
&lt;br /&gt;
/////////////// CONSTANTS /////////////////// &lt;br /&gt;
// XyText Message Map. &lt;br /&gt;
integer DISPLAY_STRING      = 204000; &lt;br /&gt;
integer DISPLAY_EXTENDED    = 204001; &lt;br /&gt;
integer REMAP_INDICES       = 204002; &lt;br /&gt;
integer RESET_INDICES       = 204003; &lt;br /&gt;
integer SET_FADE_OPTIONS    = 204004; &lt;br /&gt;
integer SET_FONT_TEXTURE    = 204005; &lt;br /&gt;
integer SET_LINE_COLOR      = 204006; &lt;br /&gt;
integer SET_COLOR           = 204007; &lt;br /&gt;
integer RESCAN_LINKSET      = 204008;&lt;br /&gt;
&lt;br /&gt;
//internal API&lt;br /&gt;
integer REGISTER_SLAVE      = 205000;&lt;br /&gt;
integer SLAVE_RECOGNIZED    = 205001;&lt;br /&gt;
integer SLAVE_DISPLAY       = 205003;&lt;br /&gt;
integer SLAVE_DISPLAY_EXTENDED = 205004;&lt;br /&gt;
integer SLAVE_RESET         = 205005;&lt;br /&gt;
&lt;br /&gt;
// This is an extended character escape sequence.&lt;br /&gt;
string  ESCAPE_SEQUENCE = &amp;quot;\\e&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// This is used to get an index for the extended character.&lt;br /&gt;
string  EXTENDED_INDEX  = &amp;quot;123456789abcdef&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Face numbers. &lt;br /&gt;
integer FACE_1          = 3; &lt;br /&gt;
integer FACE_2          = 7; &lt;br /&gt;
integer FACE_3          = 4; &lt;br /&gt;
integer FACE_4          = 6; &lt;br /&gt;
integer FACE_5          = 1;&lt;br /&gt;
&lt;br /&gt;
// Used to hide the text after a fade-out. &lt;br /&gt;
key     TRANSPARENT     = &amp;quot;701917a8-d614-471f-13dd-5f4644e36e3c&amp;quot;;&lt;br /&gt;
key     null_key        = NULL_KEY;&lt;br /&gt;
&lt;br /&gt;
// This is a list of textures for all 2-character combinations. &lt;br /&gt;
list    CHARACTER_GRID  = [ &lt;br /&gt;
        &amp;quot;00e9f9f7-0669-181c-c192-7f8e67678c8d&amp;quot;, &lt;br /&gt;
        &amp;quot;347a5cb6-0031-7ec0-2fcf-f298eebf3c0e&amp;quot;, &lt;br /&gt;
        &amp;quot;4e7e689e-37f1-9eca-8596-a958bbd23963&amp;quot;, &lt;br /&gt;
        &amp;quot;19ea9c21-67ba-8f6f-99db-573b1b877eb1&amp;quot;, &lt;br /&gt;
        &amp;quot;dde7b412-cda1-652f-6fc2-73f4641f96e1&amp;quot;, &lt;br /&gt;
        &amp;quot;af6fa3bb-3a6c-9c4f-4bf5-d1c126c830da&amp;quot;, &lt;br /&gt;
        &amp;quot;a201d3a2-364b-43b6-8686-5881c0f82a94&amp;quot;, &lt;br /&gt;
        &amp;quot;b674dec8-fead-99e5-c28d-2db8e4c51540&amp;quot;, &lt;br /&gt;
        &amp;quot;366e05f3-be6b-e5cf-c33b-731dff649caa&amp;quot;, &lt;br /&gt;
        &amp;quot;75c4925c-0427-dc0c-c71c-e28674ff4d27&amp;quot;, &lt;br /&gt;
        &amp;quot;dcbe166b-6a97-efb2-fc8e-e5bc6a8b1be6&amp;quot;, &lt;br /&gt;
        &amp;quot;0dca2feb-fc66-a762-db85-89026a4ecd68&amp;quot;, &lt;br /&gt;
        &amp;quot;a0fca76f-503a-946b-9336-0a918e886f7a&amp;quot;, &lt;br /&gt;
        &amp;quot;67fb375d-89a1-5a4f-8c7a-0cd1c066ffc4&amp;quot;, &lt;br /&gt;
        &amp;quot;300470b2-da34-5470-074c-1b8464ca050c&amp;quot;, &lt;br /&gt;
        &amp;quot;d1f8e91c-ce2b-d85e-2120-930d3b630946&amp;quot;, &lt;br /&gt;
        &amp;quot;2a190e44-7b29-dadb-0bff-c31adaf5a170&amp;quot;, &lt;br /&gt;
        &amp;quot;75d55e71-f6f8-9835-e746-a45f189f30a1&amp;quot;, &lt;br /&gt;
        &amp;quot;300fac33-2b30-3da3-26bc-e2d70428ec19&amp;quot;, &lt;br /&gt;
        &amp;quot;0747c776-011a-53ce-13ee-8b5bb9e87c1e&amp;quot;, &lt;br /&gt;
        &amp;quot;85a855c3-a94f-01ca-33e0-7dde92e727e2&amp;quot;, &lt;br /&gt;
        &amp;quot;cbc1dab2-2d61-2986-1949-7a5235c954e1&amp;quot;, &lt;br /&gt;
        &amp;quot;f7aef047-f266-9596-16df-641010edd8e1&amp;quot;, &lt;br /&gt;
        &amp;quot;4c34ebf7-e5e1-2e1a-579f-e224d9d5e71b&amp;quot;, &lt;br /&gt;
        &amp;quot;4a69e98c-26a5-ad05-e92e-b5b906ad9ef9&amp;quot;, &lt;br /&gt;
        &amp;quot;462a9226-2a97-91ac-2d89-57ab33334b78&amp;quot;, &lt;br /&gt;
        &amp;quot;20b24b3a-8c57-82ee-c6ed-555003f5dbcd&amp;quot;, &lt;br /&gt;
        &amp;quot;9b481daa-9ea8-a9fa-1ee4-ab9a0d38e217&amp;quot;, &lt;br /&gt;
        &amp;quot;c231dbdc-c842-15b0-7aa6-6da14745cfdc&amp;quot;, &lt;br /&gt;
        &amp;quot;c97e3cbb-c9a3-45df-a0ae-955c1f4bf9cf&amp;quot;, &lt;br /&gt;
        &amp;quot;f1e7d030-ff80-a242-cb69-f6951d4eae3b&amp;quot;, &lt;br /&gt;
        &amp;quot;ed32d6c4-d733-c0f1-f242-6df1d222220d&amp;quot;, &lt;br /&gt;
        &amp;quot;88f96a30-dccf-9b20-31ef-da0dfeb23c72&amp;quot;, &lt;br /&gt;
        &amp;quot;252f2595-58b8-4bcc-6515-fa274d0cfb65&amp;quot;, &lt;br /&gt;
        &amp;quot;f2838c4f-de80-cced-dff8-195dfdf36b2c&amp;quot;, &lt;br /&gt;
        &amp;quot;cc2594fe-add2-a3df-cdb3-a61711badf53&amp;quot;, &lt;br /&gt;
        &amp;quot;e0ce2972-da00-955c-129e-3289b3676776&amp;quot;, &lt;br /&gt;
        &amp;quot;3e0d336d-321f-ddfa-5c1b-e26131766f6a&amp;quot;, &lt;br /&gt;
        &amp;quot;d43b1dc4-6b51-76a7-8b90-38865b82bf06&amp;quot;, &lt;br /&gt;
        &amp;quot;06d16cbb-1868-fd1d-5c93-eae42164a37d&amp;quot;, &lt;br /&gt;
        &amp;quot;dd5d98cf-273e-3fd0-f030-48be58ee3a0b&amp;quot;, &lt;br /&gt;
        &amp;quot;0e47c89e-de4a-6233-a2da-cb852aad1b00&amp;quot;, &lt;br /&gt;
        &amp;quot;fb9c4a55-0e13-495b-25c4-f0b459dc06de&amp;quot;, &lt;br /&gt;
        &amp;quot;e3ce8def-312c-735b-0e48-018b6799c883&amp;quot;, &lt;br /&gt;
        &amp;quot;2f713216-4e71-d123-03ed-9c8554710c6b&amp;quot;, &lt;br /&gt;
        &amp;quot;4a417d8a-1f4f-404b-9783-6672f8527911&amp;quot;, &lt;br /&gt;
        &amp;quot;ca5e21ec-5b20-5909-4c31-3f90d7316b33&amp;quot;, &lt;br /&gt;
        &amp;quot;06a4fcc3-e1c4-296d-8817-01f88fbd7367&amp;quot;, &lt;br /&gt;
        &amp;quot;130ac084-6f3c-95de-b5b6-d25c80703474&amp;quot;, &lt;br /&gt;
        &amp;quot;59d540a0-ae9d-3606-5ae0-4f2842b64cfa&amp;quot;, &lt;br /&gt;
        &amp;quot;8612ae9a-f53c-5bf4-2899-8174d7abc4fd&amp;quot;, &lt;br /&gt;
        &amp;quot;12467401-e979-2c49-34e0-6ac761542797&amp;quot;, &lt;br /&gt;
        &amp;quot;d53c3eaa-0404-3860-0675-3e375596c3e3&amp;quot;, &lt;br /&gt;
        &amp;quot;9f5b26bd-81d3-b25e-62fe-5b671d1e3e79&amp;quot;, &lt;br /&gt;
        &amp;quot;f57f0b64-a050-d617-ee00-c8e9e3adc9cb&amp;quot;, &lt;br /&gt;
        &amp;quot;beff166a-f5f3-f05e-e020-98f2b00e27ed&amp;quot;, &lt;br /&gt;
        &amp;quot;02278a65-94ba-6d5e-0d2b-93f2e4f4bf70&amp;quot;, &lt;br /&gt;
        &amp;quot;a707197d-449e-5b58-846c-0c850c61f9d6&amp;quot;, &lt;br /&gt;
        &amp;quot;021d4b1a-9503-a44f-ee2b-976eb5d80e68&amp;quot;, &lt;br /&gt;
        &amp;quot;0ae2ffae-7265-524d-cb76-c2b691992706&amp;quot;];&lt;br /&gt;
list    CHARACTER_GRID2  = [         &lt;br /&gt;
        &amp;quot;f6e41cf2-1104-bd0b-0190-dffad1bac813&amp;quot;, &lt;br /&gt;
        &amp;quot;2b4bb15e-956d-56ae-69f5-d26a20de0ce7&amp;quot;, &lt;br /&gt;
        &amp;quot;f816da2c-51f1-612a-2029-a542db7db882&amp;quot;, &lt;br /&gt;
        &amp;quot;345fea05-c7be-465c-409f-9dcb3bd2aa07&amp;quot;, &lt;br /&gt;
        &amp;quot;b3017e02-c063-5185-acd5-1ef5f9d79b89&amp;quot;, &lt;br /&gt;
        &amp;quot;4dcff365-1971-3c2b-d73c-77e1dc54242a&amp;quot; &lt;br /&gt;
          ]; &lt;br /&gt;
&lt;br /&gt;
///////////// END CONSTANTS ////////////////&lt;br /&gt;
&lt;br /&gt;
///////////// GLOBAL VARIABLES /////////////// &lt;br /&gt;
// All displayable characters.  Default to ASCII order. &lt;br /&gt;
string gCharIndex; &lt;br /&gt;
// This is the channel to listen on while acting &lt;br /&gt;
// as a cell in a larger display. &lt;br /&gt;
integer gCellChannel      = -1; &lt;br /&gt;
// This is the starting character position in the cell channel message &lt;br /&gt;
// to render. &lt;br /&gt;
integer gCellCharPosition = 0;&lt;br /&gt;
// This is whether or not to use the fade in/out special effect. &lt;br /&gt;
integer gCellUseFading      = FALSE; &lt;br /&gt;
// This is how long to display the text before fading out (if using &lt;br /&gt;
// fading special effect). &lt;br /&gt;
// Note: &amp;lt; 0  means don&#039;t fade out. &lt;br /&gt;
float   gCellHoldDelay      = 1.0; &lt;br /&gt;
&lt;br /&gt;
integer gSlaveRegistered;&lt;br /&gt;
list gSlaveNames;&lt;br /&gt;
&lt;br /&gt;
integer BANK_STRIDE=3; //offset, length, highest_dirty&lt;br /&gt;
list gBankingData;&lt;br /&gt;
&lt;br /&gt;
/////////// END GLOBAL VARIABLES //////////// &lt;br /&gt;
&lt;br /&gt;
ResetCharIndex() { &lt;br /&gt;
    gCharIndex  = &amp;quot; !\&amp;quot;#$%&amp;amp;&#039;()*+,-./0123456789:;&amp;lt;=&amp;gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`&amp;quot;; &lt;br /&gt;
    // \&amp;quot; &amp;lt;-- Fixes LSL syntax highlighting bug. &lt;br /&gt;
    gCharIndex += &amp;quot;abcdefghijklmnopqrstuvwxyz{|}~&amp;quot;; &lt;br /&gt;
    gCharIndex += &amp;quot;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n&amp;quot;; &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
vector GetGridPos(integer index1, integer index2) { &lt;br /&gt;
    // There are two ways to use the lookup table... &lt;br /&gt;
    integer Col; &lt;br /&gt;
    integer Row; &lt;br /&gt;
    if (index1 &amp;gt;= index2) { &lt;br /&gt;
        // In this case, the row is the index of the first character: &lt;br /&gt;
        Row = index1; &lt;br /&gt;
        // And the col is the index of the second character (x2) &lt;br /&gt;
        Col = index2 * 2; &lt;br /&gt;
    } &lt;br /&gt;
    else { // Index1 &amp;lt; Index2 &lt;br /&gt;
        // In this case, the row is the index of the second character: &lt;br /&gt;
        Row = index2; &lt;br /&gt;
        // And the col is the index of the first character, x2, offset by 1. &lt;br /&gt;
        Col = index1 * 2 + 1; &lt;br /&gt;
    } &lt;br /&gt;
    return &amp;lt;Col, Row, 0&amp;gt;; &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
string GetGridTexture(vector grid_pos) { &lt;br /&gt;
    // Calculate the texture in the grid to use. &lt;br /&gt;
    integer GridCol = llRound(grid_pos.x) / 20; &lt;br /&gt;
    integer GridRow = llRound(grid_pos.y) / 10; &lt;br /&gt;
&lt;br /&gt;
    // Lookup the texture. &lt;br /&gt;
    key Texture = llList2Key(CHARACTER_GRID, GridRow * (GridRow + 1) / 2 + GridCol); &lt;br /&gt;
    return Texture; &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
vector GetGridOffset(vector grid_pos) { &lt;br /&gt;
    // Zoom in on the texture showing our character pair. &lt;br /&gt;
    integer Col = llRound(grid_pos.x) % 20; &lt;br /&gt;
    integer Row = llRound(grid_pos.y) % 10; &lt;br /&gt;
&lt;br /&gt;
    // Return the offset in the texture. &lt;br /&gt;
    return &amp;lt;-0.45 + 0.05 * Col, 0.45 - 0.1 * Row, 0.0&amp;gt;; &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
ShowChars(integer link,vector grid_pos1, vector grid_pos2, vector grid_pos3, vector grid_pos4, vector grid_pos5) { &lt;br /&gt;
   // Set the primitive textures directly. &lt;br /&gt;
     &lt;br /&gt;
               &lt;br /&gt;
   llSetLinkPrimitiveParamsFast( link , [ &lt;br /&gt;
        PRIM_TEXTURE, FACE_1, GetGridTexture(grid_pos1), &amp;lt;0.25, 0.1, 0&amp;gt;, GetGridOffset(grid_pos1) + &amp;lt;0.075, 0, 0&amp;gt;, 0.0, &lt;br /&gt;
        PRIM_TEXTURE, FACE_2, GetGridTexture(grid_pos2), &amp;lt;0.1, 0.1, 0&amp;gt;, GetGridOffset(grid_pos2), 0.0, &lt;br /&gt;
        PRIM_TEXTURE, FACE_3, GetGridTexture(grid_pos3), &amp;lt;-1.48, 0.1, 0&amp;gt;, GetGridOffset(grid_pos3)+ &amp;lt;0.37, 0, 0&amp;gt;, 0.0, &lt;br /&gt;
        PRIM_TEXTURE, FACE_4, GetGridTexture(grid_pos4), &amp;lt;0.1, 0.1, 0&amp;gt;, GetGridOffset(grid_pos4), 0.0, &lt;br /&gt;
        PRIM_TEXTURE, FACE_5, GetGridTexture(grid_pos5), &amp;lt;0.25, 0.1, 0&amp;gt;, GetGridOffset(grid_pos5) - &amp;lt;0.075, 0, 0&amp;gt;, 0.0 &lt;br /&gt;
        ]); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
RenderString(integer link, string str) {&lt;br /&gt;
    // Get the grid positions for each pair of characters. &lt;br /&gt;
    vector GridPos1 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 0, 0)), &lt;br /&gt;
                                  llSubStringIndex(gCharIndex, llGetSubString(str, 1, 1)) ); &lt;br /&gt;
    vector GridPos2 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 2, 2)), &lt;br /&gt;
                                  llSubStringIndex(gCharIndex, llGetSubString(str, 3, 3)) ); &lt;br /&gt;
    vector GridPos3 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 4, 4)), &lt;br /&gt;
                                  llSubStringIndex(gCharIndex, llGetSubString(str, 5, 5)) ); &lt;br /&gt;
    vector GridPos4 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 6, 6)), &lt;br /&gt;
                                  llSubStringIndex(gCharIndex, llGetSubString(str, 7, 7)) ); &lt;br /&gt;
    vector GridPos5 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 8, 8)), &lt;br /&gt;
                                  llSubStringIndex(gCharIndex, llGetSubString(str, 9, 9)) );                                   &lt;br /&gt;
&lt;br /&gt;
    // Use these grid positions to display the correct textures/offsets. &lt;br /&gt;
    ShowChars(link,GridPos1, GridPos2, GridPos3, GridPos4, GridPos5); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//RenderWithEffects(integer link, string str) { &lt;br /&gt;
//    // Get the grid positions for each pair of characters. &lt;br /&gt;
//    vector GridPos1 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 0, 0)), &lt;br /&gt;
//                                  llSubStringIndex(gCharIndex, llGetSubString(str, 1, 1)) ); &lt;br /&gt;
//    vector GridPos2 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 2, 2)), &lt;br /&gt;
//                                  llSubStringIndex(gCharIndex, llGetSubString(str, 3, 3)) ); &lt;br /&gt;
//    vector GridPos3 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 4, 4)), &lt;br /&gt;
//                                  llSubStringIndex(gCharIndex, llGetSubString(str, 5, 5)) ); &lt;br /&gt;
//    vector GridPos4 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 6, 6)), &lt;br /&gt;
//                                  llSubStringIndex(gCharIndex, llGetSubString(str, 7, 7)) ); &lt;br /&gt;
//    vector GridPos5 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 8, 8)), &lt;br /&gt;
//                                  llSubStringIndex(gCharIndex, llGetSubString(str, 9, 9)) );                          //         &lt;br /&gt;
//&lt;br /&gt;
//      // First set the alpha to the lowest possible. &lt;br /&gt;
//   llSetAlpha(0.05, ALL_SIDES); &lt;br /&gt;
//&lt;br /&gt;
//    // Use these grid positions to display the correct textures/offsets. &lt;br /&gt;
//    ShowChars(link,GridPos1, GridPos2, GridPos3, GridPos4, GridPos5);&lt;br /&gt;
//&lt;br /&gt;
//    float Alpha = 0.10; &lt;br /&gt;
//    for (; Alpha &amp;lt;= 1.0; Alpha += 0.05)  &lt;br /&gt;
//       llSetAlpha(Alpha, ALL_SIDES); &lt;br /&gt;
//          // See if we want to fade out as well. &lt;br /&gt;
//   if (gCellHoldDelay &amp;lt; 0.0) &lt;br /&gt;
//       // No, bail out. (Just keep showing the string at full strength). &lt;br /&gt;
//       return; &lt;br /&gt;
//          // Hold the text for a while. &lt;br /&gt;
//   llSleep(gCellHoldDelay); &lt;br /&gt;
//      // Now fade out. &lt;br /&gt;
//   for (Alpha = 0.95; Alpha &amp;gt;= 0.05; Alpha -= 0.05) &lt;br /&gt;
//       llSetAlpha(Alpha, ALL_SIDES); &lt;br /&gt;
//          // Make the text transparent to fully hide it. &lt;br /&gt;
//   llSetTexture(TRANSPARENT, ALL_SIDES); &lt;br /&gt;
//} &lt;br /&gt;
&lt;br /&gt;
integer RenderExtended(integer link, string str,integer render) {&lt;br /&gt;
    // Look for escape sequences.&lt;br /&gt;
    integer length = 0;&lt;br /&gt;
    list Parsed       = llParseString2List(str, [], (list)ESCAPE_SEQUENCE);&lt;br /&gt;
    integer ParsedLen = llGetListLength(Parsed);&lt;br /&gt;
&lt;br /&gt;
    // Create a list of index values to work with.&lt;br /&gt;
    list Indices;&lt;br /&gt;
    // We start with room for 6 indices.&lt;br /&gt;
    integer IndicesLeft = 10;&lt;br /&gt;
&lt;br /&gt;
    string Token;&lt;br /&gt;
    integer Clipped;&lt;br /&gt;
    integer LastWasEscapeSequence = FALSE;&lt;br /&gt;
    // Work from left to right.&lt;br /&gt;
    integer i=0;&lt;br /&gt;
    for (; i &amp;lt; ParsedLen &amp;amp;&amp;amp; IndicesLeft &amp;gt; 0; ++i) {&lt;br /&gt;
        Token = llList2String(Parsed, i);&lt;br /&gt;
&lt;br /&gt;
        // If this is an escape sequence, just set the flag and move on.&lt;br /&gt;
        if (Token == ESCAPE_SEQUENCE) {&lt;br /&gt;
            LastWasEscapeSequence = TRUE;&lt;br /&gt;
        }&lt;br /&gt;
        else { // Token != ESCAPE_SEQUENCE&lt;br /&gt;
            // Otherwise this is a normal token.  Check its length.&lt;br /&gt;
            Clipped = FALSE;&lt;br /&gt;
            integer TokenLength = llStringLength(Token);&lt;br /&gt;
            // Clip if necessary.&lt;br /&gt;
            if (TokenLength &amp;gt; IndicesLeft) {&lt;br /&gt;
                TokenLength = llStringLength(Token = llGetSubString(Token, 0, IndicesLeft - 1));&lt;br /&gt;
                IndicesLeft = 0;&lt;br /&gt;
                Clipped = TRUE;&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                IndicesLeft -= TokenLength;&lt;br /&gt;
&lt;br /&gt;
            // Was the previous token an escape sequence?&lt;br /&gt;
            if (LastWasEscapeSequence) {&lt;br /&gt;
                // Yes, the first character is an escape character, the rest are normal.&lt;br /&gt;
                length += 2 + TokenLength;&lt;br /&gt;
                if (render)&lt;br /&gt;
                {&lt;br /&gt;
                    // This is the extended character.&lt;br /&gt;
                    Indices += [llSubStringIndex(EXTENDED_INDEX, llGetSubString(Token, 0, 0)) + 95];&lt;br /&gt;
                    &lt;br /&gt;
                    // These are the normal characters.&lt;br /&gt;
                    integer j=1;&lt;br /&gt;
                    for (; j &amp;lt; TokenLength; ++j)&lt;br /&gt;
                    {&lt;br /&gt;
                        Indices += [llSubStringIndex(gCharIndex, llGetSubString(Token, j, j))];&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else { // Normal string.&lt;br /&gt;
                // Just add the characters normally.&lt;br /&gt;
                length += TokenLength;&lt;br /&gt;
                if(render)&lt;br /&gt;
                {&lt;br /&gt;
                    integer j=0;&lt;br /&gt;
                    for (; j &amp;lt; TokenLength; ++j)&lt;br /&gt;
                    {&lt;br /&gt;
                        Indices += [llSubStringIndex(gCharIndex, llGetSubString(Token, j, j))];&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            // Unset this flag, since this was not an escape sequence.&lt;br /&gt;
            LastWasEscapeSequence = FALSE;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if(render)&lt;br /&gt;
    {&lt;br /&gt;
        // Use the indices to create grid positions.&lt;br /&gt;
        vector GridPos1 = GetGridPos( llList2Integer(Indices, 0), llList2Integer(Indices, 1) );&lt;br /&gt;
        vector GridPos2 = GetGridPos( llList2Integer(Indices, 2), llList2Integer(Indices, 3) );&lt;br /&gt;
        vector GridPos3 = GetGridPos( llList2Integer(Indices, 4), llList2Integer(Indices, 5) );&lt;br /&gt;
        vector GridPos4 = GetGridPos( llList2Integer(Indices, 6), llList2Integer(Indices, 7) );&lt;br /&gt;
        vector GridPos5 = GetGridPos( llList2Integer(Indices, 8), llList2Integer(Indices, 9) );&lt;br /&gt;
        &lt;br /&gt;
        // Use these grid positions to display the correct textures/offsets.&lt;br /&gt;
        ShowChars(link,GridPos1, GridPos2, GridPos3, GridPos4, GridPos5);&lt;br /&gt;
    }&lt;br /&gt;
    return length;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
integer ConvertIndex(integer index) {&lt;br /&gt;
    // This converts from an ASCII based index to our indexing scheme.&lt;br /&gt;
    if (index &amp;gt;= 32) // &#039; &#039; or higher&lt;br /&gt;
        index -= 32;&lt;br /&gt;
    else { // index &amp;lt; 32&lt;br /&gt;
        // Quick bounds check.&lt;br /&gt;
        if (index &amp;gt; 15)&lt;br /&gt;
            index = 15;&lt;br /&gt;
&lt;br /&gt;
        index += 94; // extended characters&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return index;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PassToRender(integer render,string message, integer bank)&lt;br /&gt;
{&lt;br /&gt;
    float time;&lt;br /&gt;
    integer extendedlen = 0;&lt;br /&gt;
    integer link;&lt;br /&gt;
    &lt;br /&gt;
    integer i = 0;&lt;br /&gt;
    integer msgLen = llStringLength(message);&lt;br /&gt;
    string TextToRender;&lt;br /&gt;
    integer num_slaves=llGetListLength(gSlaveNames);&lt;br /&gt;
    string slave_name; //avoids unnecessary casts, keeping it as a string&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    //get the bank offset and length&lt;br /&gt;
    integer bank_offset=llList2Integer(gBankingData, (bank * BANK_STRIDE));&lt;br /&gt;
    integer bank_length=llList2Integer(gBankingData, (bank * BANK_STRIDE) + 1);&lt;br /&gt;
    integer bank_highest_dirty=llList2Integer(gBankingData, (bank * BANK_STRIDE) + 2);&lt;br /&gt;
&lt;br /&gt;
    integer x=0;    &lt;br /&gt;
    for (;x &amp;lt; msgLen;x = x + 10)&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        if (i &amp;gt;= bank_length)  //we don&#039;t want to run off the end of the bank&lt;br /&gt;
        {&lt;br /&gt;
            //set the dirty to max, and bail out, we&#039;re done&lt;br /&gt;
            gBankingData=llListReplaceList(gBankingData, [bank_length], (bank * BANK_STRIDE) + 2, (bank * BANK_STRIDE) + 2);&lt;br /&gt;
            return;&lt;br /&gt;
        }   &lt;br /&gt;
        &lt;br /&gt;
        link = unpack(gXyTextPrims,(i + bank_offset));&lt;br /&gt;
        TextToRender = llGetSubString(message, x, x + 20);&lt;br /&gt;
        &lt;br /&gt;
        if(gSlaveRegistered &amp;amp;&amp;amp; (link % (num_slaves +1)))&lt;br /&gt;
        {&lt;br /&gt;
            slave_name=llList2String(gSlaveNames, (link % (num_slaves + 1)) - 1);&lt;br /&gt;
            if (render == 1)&lt;br /&gt;
                llMessageLinked(LINK_THIS, SLAVE_DISPLAY, TextToRender, (key)((string)link + &amp;quot;,&amp;quot; + slave_name));&lt;br /&gt;
            if (render == 2)&lt;br /&gt;
            {&lt;br /&gt;
                if(llSubStringIndex(TextToRender,&amp;quot;\e&amp;quot;)&amp;gt;x+10)&lt;br /&gt;
                {&lt;br /&gt;
                    extendedlen = 10;&lt;br /&gt;
                }&lt;br /&gt;
                else&lt;br /&gt;
                {&lt;br /&gt;
                    extendedlen = RenderExtended(link,TextToRender,0);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                if(extendedlen&amp;gt;10)&lt;br /&gt;
                {&lt;br /&gt;
                    x += extendedlen-10;&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                llMessageLinked(LINK_THIS,SLAVE_DISPLAY_EXTENDED,TextToRender,(key)((string)link+&amp;quot;,&amp;quot;+slave_name));&lt;br /&gt;
            }        &lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            if (render == 1)&lt;br /&gt;
                RenderString(link,TextToRender);&lt;br /&gt;
            if (render == 2)&lt;br /&gt;
            {&lt;br /&gt;
                extendedlen = RenderExtended(link,TextToRender,1);&lt;br /&gt;
                if(extendedlen&amp;gt;10)&lt;br /&gt;
                {&lt;br /&gt;
                    x += extendedlen-10;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
//            if (render == 3)&lt;br /&gt;
//                RenderWithEffects(link,TextToRender);&lt;br /&gt;
        }&lt;br /&gt;
        ++i;            &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    if (bank_highest_dirty==0)&lt;br /&gt;
        bank_highest_dirty=bank_length;&lt;br /&gt;
    &lt;br /&gt;
    integer current_highest_dirty=i;&lt;br /&gt;
    while (i &amp;lt; bank_highest_dirty)&lt;br /&gt;
    {&lt;br /&gt;
        link = unpack(gXyTextPrims,(i + bank_offset));&lt;br /&gt;
        &lt;br /&gt;
        if(gSlaveRegistered &amp;amp;&amp;amp; (link % (num_slaves+1) != 0))&lt;br /&gt;
        {&lt;br /&gt;
            slave_name=llList2String(gSlaveNames, (link % (num_slaves + 1)) - 1);&lt;br /&gt;
            llMessageLinked(LINK_THIS, SLAVE_DISPLAY, &amp;quot;     &amp;quot;, (key)((string)link + &amp;quot;,&amp;quot; + slave_name));       &lt;br /&gt;
            //sorry, no fade effect with slave&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            RenderString(link,&amp;quot;          &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        ++i;        &lt;br /&gt;
    }&lt;br /&gt;
    gBankingData=llListReplaceList(gBankingData, [current_highest_dirty], (bank * BANK_STRIDE) + 2, (bank * BANK_STRIDE) + 2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Bitwise Voodoo by Gigs Taggart and optimized by Strife Onizuka&lt;br /&gt;
list gXyTextPrims;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
integer get_number_of_prims()&lt;br /&gt;
{//ignores avatars.&lt;br /&gt;
    integer a = llGetNumberOfPrims();&lt;br /&gt;
    while(llGetAgentSize(llGetLinkKey(a)))&lt;br /&gt;
        --a;&lt;br /&gt;
    return a;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//functions to pack 8-bit shorts into ints&lt;br /&gt;
list pack_and_insert(list in_list, integer pos, integer value)&lt;br /&gt;
{&lt;br /&gt;
//    //figure out the bitpack position&lt;br /&gt;
//    integer pack = pos &amp;amp; 3; //4 bytes per int&lt;br /&gt;
//    pos=pos &amp;gt;&amp;gt; 2;&lt;br /&gt;
//    integer shifted = value &amp;lt;&amp;lt; (pack &amp;lt;&amp;lt; 3);&lt;br /&gt;
//    integer old_value = llList2Integer(in_list, pos);&lt;br /&gt;
//    shifted = old_value | shifted;&lt;br /&gt;
//    in_list = llListReplaceList(in_list, (list)shifted, pos, pos);&lt;br /&gt;
//    return in_list;&lt;br /&gt;
    //Safe optimized version&lt;br /&gt;
    integer index = pos &amp;gt;&amp;gt; 2;&lt;br /&gt;
    return llListReplaceList(in_list, (list)(llList2Integer(in_list, index) | (value &amp;lt;&amp;lt; ((pos &amp;amp; 3) &amp;lt;&amp;lt; 3))), index, index);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
integer unpack(list in_list, integer pos)&lt;br /&gt;
{&lt;br /&gt;
    return (llList2Integer(in_list, pos &amp;gt;&amp;gt; 2) &amp;gt;&amp;gt; ((pos &amp;amp; 3) &amp;lt;&amp;lt; 3)) &amp;amp; 0x000000FF;//unsigned&lt;br /&gt;
//    return (llList2Integer(in_list, pos &amp;gt;&amp;gt; 2) &amp;lt;&amp;lt; (((~pos) &amp;amp; 3) &amp;lt;&amp;lt; 3)) &amp;gt;&amp;gt; 24;//signed&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
change_color(vector color)&lt;br /&gt;
{&lt;br /&gt;
    integer num_prims=llGetListLength(gXyTextPrims) &amp;lt;&amp;lt; 2;&lt;br /&gt;
    &lt;br /&gt;
    integer i = 0;&lt;br /&gt;
    &lt;br /&gt;
    for (; i&amp;lt;=num_prims; ++i)&lt;br /&gt;
    {&lt;br /&gt;
        integer link = unpack(gXyTextPrims,i);&lt;br /&gt;
        if (!link)&lt;br /&gt;
            return;&lt;br /&gt;
        &lt;br /&gt;
        llSetLinkPrimitiveParamsFast( link,[ &lt;br /&gt;
            PRIM_COLOR, FACE_1, color, 1.0,&lt;br /&gt;
            PRIM_COLOR, FACE_2, color, 1.0,&lt;br /&gt;
            PRIM_COLOR, FACE_3, color, 1.0,&lt;br /&gt;
            PRIM_COLOR, FACE_4, color, 1.0,&lt;br /&gt;
            PRIM_COLOR, FACE_5, color, 1.0&lt;br /&gt;
        ]);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
change_line_color(integer bank, vector color)&lt;br /&gt;
{    &lt;br /&gt;
&lt;br /&gt;
    //get the bank offset and length&lt;br /&gt;
    integer i = llList2Integer(gBankingData, (bank * BANK_STRIDE));&lt;br /&gt;
    integer bank_end = i + llList2Integer(gBankingData, (bank * BANK_STRIDE) + 1);&lt;br /&gt;
&lt;br /&gt;
    for (; i &amp;lt; bank_end; ++i)&lt;br /&gt;
    {     &lt;br /&gt;
        integer link = unpack(gXyTextPrims,i);&lt;br /&gt;
        if (!link)&lt;br /&gt;
            return;&lt;br /&gt;
        &lt;br /&gt;
        llSetLinkPrimitiveParamsFast( link,[ &lt;br /&gt;
            PRIM_COLOR, FACE_1, color, 1.0,&lt;br /&gt;
            PRIM_COLOR, FACE_2, color, 1.0,&lt;br /&gt;
            PRIM_COLOR, FACE_3, color, 1.0,&lt;br /&gt;
            PRIM_COLOR, FACE_4, color, 1.0,&lt;br /&gt;
            PRIM_COLOR, FACE_5, color, 1.0&lt;br /&gt;
        ]);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
init()&lt;br /&gt;
{&lt;br /&gt;
    integer num_prims=get_number_of_prims();&lt;br /&gt;
 &lt;br /&gt;
    string link_name;&lt;br /&gt;
    integer bank=0;&lt;br /&gt;
    integer bank_empty=FALSE;&lt;br /&gt;
    integer prims_pointer=0; //&amp;quot;pointer&amp;quot; to the next entry to be used in the gXyTextPrims list.&lt;br /&gt;
 &lt;br /&gt;
    list temp_bank=[];&lt;br /&gt;
    integer temp_bank_stride=2;&lt;br /&gt;
 &lt;br /&gt;
    // moving this before the prim scan so that the slaves properly configure themseves before&lt;br /&gt;
    // any requests to display&lt;br /&gt;
    llMessageLinked(LINK_THIS, SLAVE_RESET, &amp;quot;&amp;quot; , null_key);&lt;br /&gt;
  &lt;br /&gt;
    gXyTextPrims=[];&lt;br /&gt;
    integer x=0;&lt;br /&gt;
    for (;x&amp;lt;64;++x)&lt;br /&gt;
    {&lt;br /&gt;
        gXyTextPrims= (gXyTextPrims = []) + gXyTextPrims + [0];  //we need to pad out the list to make it easier to add things in any order later&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    gBankingData = [];&lt;br /&gt;
    @loop;&lt;br /&gt;
    {&lt;br /&gt;
        //loop over all prims, looking for ones in the current bank&lt;br /&gt;
        for(x=0;x&amp;lt;=num_prims;++x)&lt;br /&gt;
        {&lt;br /&gt;
            link_name=llGetLinkName(x);&lt;br /&gt;
            list tmp = llParseString2List(link_name, [&amp;quot;-&amp;quot;], []);&lt;br /&gt;
            if(llList2String(tmp,0)== &amp;quot;xyzzytext&amp;quot;)&lt;br /&gt;
            {&lt;br /&gt;
                integer prims_bank=llList2Integer(tmp,1);&lt;br /&gt;
                if (llList2Integer(tmp,1)==bank)&lt;br /&gt;
                {&lt;br /&gt;
                    temp_bank+=llList2Integer(tmp,2) + (list)x;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
 &lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
        if (temp_bank!=[])&lt;br /&gt;
        {&lt;br /&gt;
            //sort the current bank&lt;br /&gt;
            temp_bank=llListSort(temp_bank, temp_bank_stride, TRUE);&lt;br /&gt;
 &lt;br /&gt;
            integer temp_len=llGetListLength(temp_bank);&lt;br /&gt;
 &lt;br /&gt;
            //store metadata&lt;br /&gt;
            gBankingData+=[prims_pointer,temp_len/temp_bank_stride,0];&lt;br /&gt;
 &lt;br /&gt;
            //repack the bank into the prim list&lt;br /&gt;
            for (x=0; x &amp;lt; temp_len; x+=temp_bank_stride)&lt;br /&gt;
            {&lt;br /&gt;
                gXyTextPrims = pack_and_insert(gXyTextPrims, prims_pointer, llList2Integer(temp_bank, x+1));&lt;br /&gt;
                ++prims_pointer;&lt;br /&gt;
            }&lt;br /&gt;
            ++bank;&lt;br /&gt;
            temp_bank=[];&lt;br /&gt;
            jump loop;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default { &lt;br /&gt;
    state_entry() { &lt;br /&gt;
        // Initialize the character index. &lt;br /&gt;
        ResetCharIndex();&lt;br /&gt;
        init();&lt;br /&gt;
    } &lt;br /&gt;
&lt;br /&gt;
   on_rez(integer num)&lt;br /&gt;
   {&lt;br /&gt;
      llResetScript();       &lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
    link_message(integer sender, integer channel, string data, key id) {&lt;br /&gt;
        if(id == null_key)&lt;br /&gt;
            id=&amp;quot;0&amp;quot;;&lt;br /&gt;
        &lt;br /&gt;
        if (channel == DISPLAY_STRING) { &lt;br /&gt;
            PassToRender(1,data, (integer)((string)id)); &lt;br /&gt;
            return; &lt;br /&gt;
        } &lt;br /&gt;
        else if (channel == DISPLAY_EXTENDED) { &lt;br /&gt;
             PassToRender(2,data, (integer)((string)id)); &lt;br /&gt;
            return; &lt;br /&gt;
        }&lt;br /&gt;
        else if (channel == REMAP_INDICES) {&lt;br /&gt;
            // Parse the message, splitting it up into index values.&lt;br /&gt;
            list Parsed = llCSV2List(data);&lt;br /&gt;
            integer i;&lt;br /&gt;
            // Go through the list and swap each pair of indices.&lt;br /&gt;
            for (i = 0; i &amp;lt; llGetListLength(Parsed); i += 2) {&lt;br /&gt;
                integer Index1 = ConvertIndex( llList2Integer(Parsed, i) );&lt;br /&gt;
                integer Index2 = ConvertIndex( llList2Integer(Parsed, i + 1) );&lt;br /&gt;
&lt;br /&gt;
                // Swap these index values.&lt;br /&gt;
                string Value1 = llGetSubString(gCharIndex, Index1, Index1);&lt;br /&gt;
                string Value2 = llGetSubString(gCharIndex, Index2, Index2);&lt;br /&gt;
&lt;br /&gt;
                gCharIndex = llDeleteSubString(gCharIndex, Index1, Index1);&lt;br /&gt;
                gCharIndex = llInsertString(gCharIndex, Index1, Value2);&lt;br /&gt;
&lt;br /&gt;
                gCharIndex = llDeleteSubString(gCharIndex, Index2, Index2);&lt;br /&gt;
                gCharIndex = llInsertString(gCharIndex, Index2, Value1);&lt;br /&gt;
            }&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        else if (channel == RESET_INDICES) {&lt;br /&gt;
            // Restore the character index back to default settings.&lt;br /&gt;
            ResetCharIndex();&lt;br /&gt;
            return;&lt;br /&gt;
        }        &lt;br /&gt;
        else if (channel == RESCAN_LINKSET)&lt;br /&gt;
        {&lt;br /&gt;
            init();&lt;br /&gt;
        }&lt;br /&gt;
        else if (channel == SET_COLOR) {&lt;br /&gt;
            change_color((vector)data); &lt;br /&gt;
        }&lt;br /&gt;
        else if (channel == SET_LINE_COLOR) {&lt;br /&gt;
            change_line_color((integer)((string)id), (vector)data); &lt;br /&gt;
        }     &lt;br /&gt;
        else if (channel == REGISTER_SLAVE)&lt;br /&gt;
        {&lt;br /&gt;
            if(!~llListFindList(gSlaveNames, (list)data))&lt;br /&gt;
            {//isn&#039;t registered yet&lt;br /&gt;
                gSlaveNames += data;&lt;br /&gt;
                gSlaveRegistered=TRUE;&lt;br /&gt;
                //llOwnerSay((string)llGetListLength(gSlaveNames) + &amp;quot; Slave(s) Recognized: &amp;quot; + data);&lt;br /&gt;
            }&lt;br /&gt;
//            else&lt;br /&gt;
//            {//it already exists&lt;br /&gt;
//                llOwnerSay((string)llGetListLength(gSlaveNames) + &amp;quot; Slave, Existing Slave Recognized: &amp;quot; + data);&lt;br /&gt;
//            }&lt;br /&gt;
            llMessageLinked(LINK_THIS, SLAVE_RECOGNIZED, data , null_key);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    changed(integer change)&lt;br /&gt;
    {&lt;br /&gt;
        if(change&amp;amp;CHANGED_INVENTORY)&lt;br /&gt;
        {&lt;br /&gt;
            if(gSlaveRegistered)        &lt;br /&gt;
            {&lt;br /&gt;
                //by using negative indexes they don&#039;t need to be adjusted when an entry is deleted.&lt;br /&gt;
                integer x = ~llGetListLength(gSlaveNames);&lt;br /&gt;
                while(++x)&lt;br /&gt;
                {&lt;br /&gt;
                    if (!~llGetInventoryType(llList2String(gSlaveNames, x)))&lt;br /&gt;
                    {&lt;br /&gt;
                        //llOwnerSay(&amp;quot;Slave Removed: &amp;quot; + llList2String(gSlaveNames, x));&lt;br /&gt;
                        gSlaveNames = llDeleteSubList(gSlaveNames, x, x);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                gSlaveRegistered = !(gSlaveNames == []);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Slave Script ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// XyzzyText v2.1(10-Char) by Thraxis Epsilon&lt;br /&gt;
// XyText v2.0 SLAVE Script (5 Face, Single Texture) &lt;br /&gt;
//&lt;br /&gt;
// Heavily Modified by Thraxis Epsilon, Gigs Taggart 5/2007 and Strife Onizuka 8/2007&lt;br /&gt;
// Rewrite to allow one-script-per-object operation w/ optional slaves&lt;br /&gt;
// Enable prim-label functionality&lt;br /&gt;
// Enabled Banking&lt;br /&gt;
// Enabled 10-char per prim&lt;br /&gt;
//&lt;br /&gt;
// Modified by Kermitt Quirk 19/01/2006 &lt;br /&gt;
// To add support for 5 face prim instead of 3 &lt;br /&gt;
// &lt;br /&gt;
// Originally Written by Xylor Baysklef &lt;br /&gt;
// &lt;br /&gt;
//&lt;br /&gt;
//////////////////////////////////////////// &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
integer REMAP_INDICES       = 204002; &lt;br /&gt;
integer RESET_INDICES       = 204003;&lt;br /&gt;
&lt;br /&gt;
//internal API&lt;br /&gt;
integer REGISTER_SLAVE      = 205000;&lt;br /&gt;
integer SLAVE_RECOGNIZED    = 205001;&lt;br /&gt;
integer SLAVE_DISPLAY       = 205003;&lt;br /&gt;
integer SET_FONT_TEXTURE    = 204005; &lt;br /&gt;
&lt;br /&gt;
integer SLAVE_DISPLAY_EXTENDED = 205004;&lt;br /&gt;
integer SLAVE_RESET = 205005;&lt;br /&gt;
&lt;br /&gt;
// This is an extended character escape sequence.&lt;br /&gt;
string  ESCAPE_SEQUENCE = &amp;quot;\\e&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// This is used to get an index for the extended character.&lt;br /&gt;
string  EXTENDED_INDEX  = &amp;quot;123456789abcdef&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Face numbers. &lt;br /&gt;
integer FACE_1          = 3; &lt;br /&gt;
integer FACE_2          = 7; &lt;br /&gt;
integer FACE_3          = 4; &lt;br /&gt;
integer FACE_4          = 6; &lt;br /&gt;
integer FACE_5          = 1;&lt;br /&gt;
&lt;br /&gt;
// This is a list of textures for all 2-character combinations. &lt;br /&gt;
list    CHARACTER_GRID  = [ &lt;br /&gt;
        &amp;quot;00e9f9f7-0669-181c-c192-7f8e67678c8d&amp;quot;, &lt;br /&gt;
        &amp;quot;347a5cb6-0031-7ec0-2fcf-f298eebf3c0e&amp;quot;, &lt;br /&gt;
        &amp;quot;4e7e689e-37f1-9eca-8596-a958bbd23963&amp;quot;, &lt;br /&gt;
        &amp;quot;19ea9c21-67ba-8f6f-99db-573b1b877eb1&amp;quot;, &lt;br /&gt;
        &amp;quot;dde7b412-cda1-652f-6fc2-73f4641f96e1&amp;quot;, &lt;br /&gt;
        &amp;quot;af6fa3bb-3a6c-9c4f-4bf5-d1c126c830da&amp;quot;, &lt;br /&gt;
        &amp;quot;a201d3a2-364b-43b6-8686-5881c0f82a94&amp;quot;, &lt;br /&gt;
        &amp;quot;b674dec8-fead-99e5-c28d-2db8e4c51540&amp;quot;, &lt;br /&gt;
        &amp;quot;366e05f3-be6b-e5cf-c33b-731dff649caa&amp;quot;, &lt;br /&gt;
        &amp;quot;75c4925c-0427-dc0c-c71c-e28674ff4d27&amp;quot;, &lt;br /&gt;
        &amp;quot;dcbe166b-6a97-efb2-fc8e-e5bc6a8b1be6&amp;quot;, &lt;br /&gt;
        &amp;quot;0dca2feb-fc66-a762-db85-89026a4ecd68&amp;quot;, &lt;br /&gt;
        &amp;quot;a0fca76f-503a-946b-9336-0a918e886f7a&amp;quot;, &lt;br /&gt;
        &amp;quot;67fb375d-89a1-5a4f-8c7a-0cd1c066ffc4&amp;quot;, &lt;br /&gt;
        &amp;quot;300470b2-da34-5470-074c-1b8464ca050c&amp;quot;, &lt;br /&gt;
        &amp;quot;d1f8e91c-ce2b-d85e-2120-930d3b630946&amp;quot;, &lt;br /&gt;
        &amp;quot;2a190e44-7b29-dadb-0bff-c31adaf5a170&amp;quot;, &lt;br /&gt;
        &amp;quot;75d55e71-f6f8-9835-e746-a45f189f30a1&amp;quot;, &lt;br /&gt;
        &amp;quot;300fac33-2b30-3da3-26bc-e2d70428ec19&amp;quot;, &lt;br /&gt;
        &amp;quot;0747c776-011a-53ce-13ee-8b5bb9e87c1e&amp;quot;, &lt;br /&gt;
        &amp;quot;85a855c3-a94f-01ca-33e0-7dde92e727e2&amp;quot;, &lt;br /&gt;
        &amp;quot;cbc1dab2-2d61-2986-1949-7a5235c954e1&amp;quot;, &lt;br /&gt;
        &amp;quot;f7aef047-f266-9596-16df-641010edd8e1&amp;quot;, &lt;br /&gt;
        &amp;quot;4c34ebf7-e5e1-2e1a-579f-e224d9d5e71b&amp;quot;, &lt;br /&gt;
        &amp;quot;4a69e98c-26a5-ad05-e92e-b5b906ad9ef9&amp;quot;, &lt;br /&gt;
        &amp;quot;462a9226-2a97-91ac-2d89-57ab33334b78&amp;quot;, &lt;br /&gt;
        &amp;quot;20b24b3a-8c57-82ee-c6ed-555003f5dbcd&amp;quot;, &lt;br /&gt;
        &amp;quot;9b481daa-9ea8-a9fa-1ee4-ab9a0d38e217&amp;quot;, &lt;br /&gt;
        &amp;quot;c231dbdc-c842-15b0-7aa6-6da14745cfdc&amp;quot;, &lt;br /&gt;
        &amp;quot;c97e3cbb-c9a3-45df-a0ae-955c1f4bf9cf&amp;quot;, &lt;br /&gt;
        &amp;quot;f1e7d030-ff80-a242-cb69-f6951d4eae3b&amp;quot;, &lt;br /&gt;
        &amp;quot;ed32d6c4-d733-c0f1-f242-6df1d222220d&amp;quot;, &lt;br /&gt;
        &amp;quot;88f96a30-dccf-9b20-31ef-da0dfeb23c72&amp;quot;, &lt;br /&gt;
        &amp;quot;252f2595-58b8-4bcc-6515-fa274d0cfb65&amp;quot;, &lt;br /&gt;
        &amp;quot;f2838c4f-de80-cced-dff8-195dfdf36b2c&amp;quot;, &lt;br /&gt;
        &amp;quot;cc2594fe-add2-a3df-cdb3-a61711badf53&amp;quot;, &lt;br /&gt;
        &amp;quot;e0ce2972-da00-955c-129e-3289b3676776&amp;quot;, &lt;br /&gt;
        &amp;quot;3e0d336d-321f-ddfa-5c1b-e26131766f6a&amp;quot;, &lt;br /&gt;
        &amp;quot;d43b1dc4-6b51-76a7-8b90-38865b82bf06&amp;quot;, &lt;br /&gt;
        &amp;quot;06d16cbb-1868-fd1d-5c93-eae42164a37d&amp;quot;, &lt;br /&gt;
        &amp;quot;dd5d98cf-273e-3fd0-f030-48be58ee3a0b&amp;quot;, &lt;br /&gt;
        &amp;quot;0e47c89e-de4a-6233-a2da-cb852aad1b00&amp;quot;, &lt;br /&gt;
        &amp;quot;fb9c4a55-0e13-495b-25c4-f0b459dc06de&amp;quot;, &lt;br /&gt;
        &amp;quot;e3ce8def-312c-735b-0e48-018b6799c883&amp;quot;, &lt;br /&gt;
        &amp;quot;2f713216-4e71-d123-03ed-9c8554710c6b&amp;quot;, &lt;br /&gt;
        &amp;quot;4a417d8a-1f4f-404b-9783-6672f8527911&amp;quot;, &lt;br /&gt;
        &amp;quot;ca5e21ec-5b20-5909-4c31-3f90d7316b33&amp;quot;, &lt;br /&gt;
        &amp;quot;06a4fcc3-e1c4-296d-8817-01f88fbd7367&amp;quot;, &lt;br /&gt;
        &amp;quot;130ac084-6f3c-95de-b5b6-d25c80703474&amp;quot;, &lt;br /&gt;
        &amp;quot;59d540a0-ae9d-3606-5ae0-4f2842b64cfa&amp;quot;, &lt;br /&gt;
        &amp;quot;8612ae9a-f53c-5bf4-2899-8174d7abc4fd&amp;quot;, &lt;br /&gt;
        &amp;quot;12467401-e979-2c49-34e0-6ac761542797&amp;quot;, &lt;br /&gt;
        &amp;quot;d53c3eaa-0404-3860-0675-3e375596c3e3&amp;quot;, &lt;br /&gt;
        &amp;quot;9f5b26bd-81d3-b25e-62fe-5b671d1e3e79&amp;quot;, &lt;br /&gt;
        &amp;quot;f57f0b64-a050-d617-ee00-c8e9e3adc9cb&amp;quot;, &lt;br /&gt;
        &amp;quot;beff166a-f5f3-f05e-e020-98f2b00e27ed&amp;quot;, &lt;br /&gt;
        &amp;quot;02278a65-94ba-6d5e-0d2b-93f2e4f4bf70&amp;quot;, &lt;br /&gt;
        &amp;quot;a707197d-449e-5b58-846c-0c850c61f9d6&amp;quot;, &lt;br /&gt;
        &amp;quot;021d4b1a-9503-a44f-ee2b-976eb5d80e68&amp;quot;, &lt;br /&gt;
        &amp;quot;0ae2ffae-7265-524d-cb76-c2b691992706&amp;quot;, &lt;br /&gt;
        &amp;quot;f6e41cf2-1104-bd0b-0190-dffad1bac813&amp;quot;, &lt;br /&gt;
        &amp;quot;2b4bb15e-956d-56ae-69f5-d26a20de0ce7&amp;quot;, &lt;br /&gt;
        &amp;quot;f816da2c-51f1-612a-2029-a542db7db882&amp;quot;, &lt;br /&gt;
        &amp;quot;345fea05-c7be-465c-409f-9dcb3bd2aa07&amp;quot;];&lt;br /&gt;
list    CHARACTER_GRID2  = [         &lt;br /&gt;
        &amp;quot;b3017e02-c063-5185-acd5-1ef5f9d79b89&amp;quot;, &lt;br /&gt;
        &amp;quot;4dcff365-1971-3c2b-d73c-77e1dc54242a&amp;quot; &lt;br /&gt;
          ]; &lt;br /&gt;
&lt;br /&gt;
///////////// END CONSTANTS ////////////////&lt;br /&gt;
string gCharIndex; &lt;br /&gt;
&lt;br /&gt;
integer gActive; //if we are recognized, this is true&lt;br /&gt;
/////////// END GLOBAL VARIABLES ////////////&lt;br /&gt;
ResetCharIndex() { &lt;br /&gt;
    gCharIndex  = &amp;quot; !\&amp;quot;#$%&amp;amp;&#039;()*+,-./0123456789:;&amp;lt;=&amp;gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`&amp;quot;; &lt;br /&gt;
    // \&amp;quot; &amp;lt;-- Fixes LSL syntax highlighting bug. &lt;br /&gt;
    gCharIndex += &amp;quot;abcdefghijklmnopqrstuvwxyz{|}~&amp;quot;; &lt;br /&gt;
    gCharIndex += &amp;quot;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n&amp;quot;; &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
vector GetGridPos(integer index1, integer index2) { &lt;br /&gt;
    // There are two ways to use the lookup table... &lt;br /&gt;
    integer Col; &lt;br /&gt;
    integer Row; &lt;br /&gt;
    if (index1 &amp;gt;= index2) { &lt;br /&gt;
        // In this case, the row is the index of the first character: &lt;br /&gt;
        Row = index1; &lt;br /&gt;
        // And the col is the index of the second character (x2) &lt;br /&gt;
        Col = index2 * 2; &lt;br /&gt;
    } &lt;br /&gt;
    else { // Index1 &amp;lt; Index2 &lt;br /&gt;
        // In this case, the row is the index of the second character: &lt;br /&gt;
        Row = index2; &lt;br /&gt;
        // And the col is the index of the first character, x2, offset by 1. &lt;br /&gt;
        Col = index1 * 2 + 1; &lt;br /&gt;
    } &lt;br /&gt;
    return &amp;lt;Col, Row, 0&amp;gt;; &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
string GetGridTexture(vector grid_pos) { &lt;br /&gt;
    // Calculate the texture in the grid to use. &lt;br /&gt;
    integer GridCol = llRound(grid_pos.x) / 20; &lt;br /&gt;
    integer GridRow = llRound(grid_pos.y) / 10; &lt;br /&gt;
&lt;br /&gt;
    // Lookup the texture. &lt;br /&gt;
    key Texture = llList2Key(CHARACTER_GRID, GridRow * (GridRow + 1) / 2 + GridCol); &lt;br /&gt;
    return Texture; &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
vector GetGridOffset(vector grid_pos) { &lt;br /&gt;
    // Zoom in on the texture showing our character pair. &lt;br /&gt;
    integer Col = llRound(grid_pos.x) % 20; &lt;br /&gt;
    integer Row = llRound(grid_pos.y) % 10; &lt;br /&gt;
&lt;br /&gt;
    // Return the offset in the texture. &lt;br /&gt;
    return &amp;lt;-0.45 + 0.05 * Col, 0.45 - 0.1 * Row, 0.0&amp;gt;; &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
ShowChars(integer link,vector grid_pos1, vector grid_pos2, vector grid_pos3, vector grid_pos4, vector grid_pos5) { &lt;br /&gt;
   // Set the primitive textures directly. &lt;br /&gt;
     &lt;br /&gt;
               &lt;br /&gt;
   llSetLinkPrimitiveParamsFast( link , [ &lt;br /&gt;
        PRIM_TEXTURE, FACE_1, GetGridTexture(grid_pos1), &amp;lt;0.25, 0.1, 0&amp;gt;, GetGridOffset(grid_pos1) + &amp;lt;0.075, 0, 0&amp;gt;, 0.0, &lt;br /&gt;
        PRIM_TEXTURE, FACE_2, GetGridTexture(grid_pos2), &amp;lt;0.1, 0.1, 0&amp;gt;, GetGridOffset(grid_pos2), 0.0, &lt;br /&gt;
        PRIM_TEXTURE, FACE_3, GetGridTexture(grid_pos3), &amp;lt;-1.48, 0.1, 0&amp;gt;, GetGridOffset(grid_pos3)+ &amp;lt;0.37, 0, 0&amp;gt;, 0.0, &lt;br /&gt;
        PRIM_TEXTURE, FACE_4, GetGridTexture(grid_pos4), &amp;lt;0.1, 0.1, 0&amp;gt;, GetGridOffset(grid_pos4), 0.0, &lt;br /&gt;
        PRIM_TEXTURE, FACE_5, GetGridTexture(grid_pos5), &amp;lt;0.25, 0.1, 0&amp;gt;, GetGridOffset(grid_pos5) - &amp;lt;0.075, 0, 0&amp;gt;, 0.0 &lt;br /&gt;
        ]); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
RenderString(integer link, string str) {&lt;br /&gt;
    // Get the grid positions for each pair of characters. &lt;br /&gt;
    vector GridPos1 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 0, 0)), &lt;br /&gt;
                                  llSubStringIndex(gCharIndex, llGetSubString(str, 1, 1)) ); &lt;br /&gt;
    vector GridPos2 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 2, 2)), &lt;br /&gt;
                                  llSubStringIndex(gCharIndex, llGetSubString(str, 3, 3)) ); &lt;br /&gt;
    vector GridPos3 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 4, 4)), &lt;br /&gt;
                                  llSubStringIndex(gCharIndex, llGetSubString(str, 5, 5)) ); &lt;br /&gt;
    vector GridPos4 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 6, 6)), &lt;br /&gt;
                                  llSubStringIndex(gCharIndex, llGetSubString(str, 7, 7)) ); &lt;br /&gt;
    vector GridPos5 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 8, 8)), &lt;br /&gt;
                                  llSubStringIndex(gCharIndex, llGetSubString(str, 9, 9)) );                                   &lt;br /&gt;
&lt;br /&gt;
    // Use these grid positions to display the correct textures/offsets. &lt;br /&gt;
    ShowChars(link,GridPos1, GridPos2, GridPos3, GridPos4, GridPos5); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
RenderExtended(integer link, string str) {&lt;br /&gt;
    // Look for escape sequences.&lt;br /&gt;
    list Parsed       = llParseString2List(str, [], (list)ESCAPE_SEQUENCE);&lt;br /&gt;
    integer ParsedLen = llGetListLength(Parsed);&lt;br /&gt;
&lt;br /&gt;
    // Create a list of index values to work with.&lt;br /&gt;
    list Indices;&lt;br /&gt;
    // We start with room for 6 indices.&lt;br /&gt;
    integer IndicesLeft = 10;&lt;br /&gt;
&lt;br /&gt;
    string Token;&lt;br /&gt;
    integer Clipped;&lt;br /&gt;
    integer LastWasEscapeSequence = FALSE;&lt;br /&gt;
    // Work from left to right.&lt;br /&gt;
    integer i=0;&lt;br /&gt;
    for (; i &amp;lt; ParsedLen &amp;amp;&amp;amp; IndicesLeft &amp;gt; 0; ++i) {&lt;br /&gt;
        Token = llList2String(Parsed, i);&lt;br /&gt;
&lt;br /&gt;
        // If this is an escape sequence, just set the flag and move on.&lt;br /&gt;
        if (Token == ESCAPE_SEQUENCE) {&lt;br /&gt;
            LastWasEscapeSequence = TRUE;&lt;br /&gt;
        }&lt;br /&gt;
        else { // Token != ESCAPE_SEQUENCE&lt;br /&gt;
            // Otherwise this is a normal token.  Check its length.&lt;br /&gt;
            Clipped = FALSE;&lt;br /&gt;
            integer TokenLength = llStringLength(Token);&lt;br /&gt;
            // Clip if necessary.&lt;br /&gt;
            if (TokenLength &amp;gt; IndicesLeft) {&lt;br /&gt;
                TokenLength = llStringLength(Token = llGetSubString(Token, 0, IndicesLeft - 1));&lt;br /&gt;
                IndicesLeft = 0;&lt;br /&gt;
                Clipped = TRUE;&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                IndicesLeft -= TokenLength;&lt;br /&gt;
&lt;br /&gt;
            // Was the previous token an escape sequence?&lt;br /&gt;
            if (LastWasEscapeSequence) {&lt;br /&gt;
                // Yes, the first character is an escape character, the rest are normal.&lt;br /&gt;
                // This is the extended character.&lt;br /&gt;
                Indices += [llSubStringIndex(EXTENDED_INDEX, llGetSubString(Token, 0, 0)) + 95];&lt;br /&gt;
                &lt;br /&gt;
                // These are the normal characters.&lt;br /&gt;
                integer j=1;&lt;br /&gt;
                for (; j &amp;lt; TokenLength; ++j)&lt;br /&gt;
                {&lt;br /&gt;
                    Indices += [llSubStringIndex(gCharIndex, llGetSubString(Token, j, j))];&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else { // Normal string.&lt;br /&gt;
                // Just add the characters normally.&lt;br /&gt;
                integer j=0;&lt;br /&gt;
                for (; j &amp;lt; TokenLength; ++j)&lt;br /&gt;
                {&lt;br /&gt;
                    Indices += [llSubStringIndex(gCharIndex, llGetSubString(Token, j, j))];&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            // Unset this flag, since this was not an escape sequence.&lt;br /&gt;
            LastWasEscapeSequence = FALSE;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Use the indices to create grid positions.&lt;br /&gt;
    vector GridPos1 = GetGridPos( llList2Integer(Indices, 0), llList2Integer(Indices, 1) );&lt;br /&gt;
    vector GridPos2 = GetGridPos( llList2Integer(Indices, 2), llList2Integer(Indices, 3) );&lt;br /&gt;
    vector GridPos3 = GetGridPos( llList2Integer(Indices, 4), llList2Integer(Indices, 5) );&lt;br /&gt;
    vector GridPos4 = GetGridPos( llList2Integer(Indices, 6), llList2Integer(Indices, 7) );&lt;br /&gt;
    vector GridPos5 = GetGridPos( llList2Integer(Indices, 8), llList2Integer(Indices, 9) );&lt;br /&gt;
    &lt;br /&gt;
    // Use these grid positions to display the correct textures/offsets.&lt;br /&gt;
    ShowChars(link,GridPos1, GridPos2, GridPos3, GridPos4, GridPos5);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
integer ConvertIndex(integer index) {&lt;br /&gt;
    // This converts from an ASCII based index to our indexing scheme.&lt;br /&gt;
    if (index &amp;gt;= 32) // &#039; &#039; or higher&lt;br /&gt;
        index -= 32;&lt;br /&gt;
    else { // index &amp;lt; 32&lt;br /&gt;
        // Quick bounds check.&lt;br /&gt;
        if (index &amp;gt; 15)&lt;br /&gt;
            index = 15;&lt;br /&gt;
&lt;br /&gt;
        index += 94; // extended characters&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return index;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
default { &lt;br /&gt;
    state_entry() &lt;br /&gt;
    { &lt;br /&gt;
        // Initialize the character index. &lt;br /&gt;
        ResetCharIndex();&lt;br /&gt;
        llMessageLinked(LINK_THIS, REGISTER_SLAVE, llGetScriptName() , NULL_KEY);  &lt;br /&gt;
    } &lt;br /&gt;
&lt;br /&gt;
   on_rez(integer num)&lt;br /&gt;
   {&lt;br /&gt;
      llResetScript();       &lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
    link_message(integer sender, integer channel, string data, key id) { &lt;br /&gt;
        if (channel == SLAVE_RECOGNIZED)&lt;br /&gt;
        {&lt;br /&gt;
            if (data == llGetScriptName())&lt;br /&gt;
            {&lt;br /&gt;
                gActive=TRUE;&lt;br /&gt;
            }&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        else if (channel == SLAVE_DISPLAY) &lt;br /&gt;
        { &lt;br /&gt;
            if (!gActive)  &lt;br /&gt;
                return;&lt;br /&gt;
                &lt;br /&gt;
            list params=llCSV2List((string)id);&lt;br /&gt;
            if (llList2String(params, 1) != llGetScriptName())&lt;br /&gt;
                return;&lt;br /&gt;
            &lt;br /&gt;
            &lt;br /&gt;
            RenderString(llList2Integer(params, 0),data);&lt;br /&gt;
            return; &lt;br /&gt;
        } &lt;br /&gt;
    &lt;br /&gt;
       else if (channel == SLAVE_DISPLAY_EXTENDED) &lt;br /&gt;
       {&lt;br /&gt;
            if (!gActive)  &lt;br /&gt;
                return;&lt;br /&gt;
                &lt;br /&gt;
            list params=llCSV2List((string)id);&lt;br /&gt;
            if (llList2String(params, 1) != llGetScriptName())&lt;br /&gt;
                return;&lt;br /&gt;
                &lt;br /&gt;
            RenderExtended(llList2Integer(params, 0),data);&lt;br /&gt;
    }&lt;br /&gt;
        else if (channel == REMAP_INDICES) {&lt;br /&gt;
            // Parse the message, splitting it up into index values.&lt;br /&gt;
            list Parsed = llCSV2List(data);&lt;br /&gt;
            integer i;&lt;br /&gt;
            // Go through the list and swap each pair of indices.&lt;br /&gt;
            for (i = 0; i &amp;lt; llGetListLength(Parsed); i += 2) {&lt;br /&gt;
                integer Index1 = ConvertIndex( llList2Integer(Parsed, i) );&lt;br /&gt;
                integer Index2 = ConvertIndex( llList2Integer(Parsed, i + 1) );&lt;br /&gt;
&lt;br /&gt;
                // Swap these index values.&lt;br /&gt;
                string Value1 = llGetSubString(gCharIndex, Index1, Index1);&lt;br /&gt;
                string Value2 = llGetSubString(gCharIndex, Index2, Index2);&lt;br /&gt;
&lt;br /&gt;
                gCharIndex = llDeleteSubString(gCharIndex, Index1, Index1);&lt;br /&gt;
                gCharIndex = llInsertString(gCharIndex, Index1, Value2);&lt;br /&gt;
&lt;br /&gt;
                gCharIndex = llDeleteSubString(gCharIndex, Index2, Index2);&lt;br /&gt;
                gCharIndex = llInsertString(gCharIndex, Index2, Value1);&lt;br /&gt;
            }&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        else if (channel == RESET_INDICES) {&lt;br /&gt;
            // Restore the character index back to default settings.&lt;br /&gt;
            ResetCharIndex();&lt;br /&gt;
            return;&lt;br /&gt;
        }                 &lt;br /&gt;
       else if (channel == SLAVE_RESET)&lt;br /&gt;
        {&lt;br /&gt;
            ResetCharIndex();&lt;br /&gt;
            gActive=FALSE;&lt;br /&gt;
            llMessageLinked(LINK_THIS, REGISTER_SLAVE, llGetScriptName() , NULL_KEY);&lt;br /&gt;
        }&lt;br /&gt;
    }    &lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 10-Char Prim Setup ==&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// XyzzyText Prim Setup Script (5 Face)&lt;br /&gt;
//&lt;br /&gt;
// Modified by Thraxis Epsilon&lt;br /&gt;
//&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        llSetPrimitiveParams([&lt;br /&gt;
                    PRIM_TYPE, PRIM_TYPE_PRISM, 32, &amp;lt;0.199, 0.8, 0.0&amp;gt;, 0.30, &amp;lt;0.0, 0.0, 0.0&amp;gt;, &amp;lt;1.0, 1.0, 0.0&amp;gt;, &amp;lt;0.0, 0.0, 0.0&amp;gt;,&lt;br /&gt;
                    PRIM_SIZE, &amp;lt;0.03, 2.89, 0.5&amp;gt;, &lt;br /&gt;
                    PRIM_TEXTURE, 1, &amp;quot;09b04244-9569-d21f-6de0-4bbcf5552222&amp;quot;, &amp;lt;2.48, 1.0, 0.0&amp;gt;, &amp;lt;-0.74, 0.0, 0.0&amp;gt;, 0.0, &lt;br /&gt;
                    PRIM_TEXTURE, 6, &amp;quot;09b04244-9569-d21f-6de0-4bbcf5552222&amp;quot;, &amp;lt;1.0, 1.0, 0.0&amp;gt;, &amp;lt;0.0, 0.0, 0.0&amp;gt;, 0.0, &lt;br /&gt;
                    PRIM_TEXTURE, 4, &amp;quot;09b04244-9569-d21f-6de0-4bbcf5552222&amp;quot;, &amp;lt;14.75, 1.0, 0.0&amp;gt;, &amp;lt;0.27, 0.0, 0.0&amp;gt;, 0.0, &lt;br /&gt;
                    PRIM_TEXTURE, 7, &amp;quot;09b04244-9569-d21f-6de0-4bbcf5552222&amp;quot;, &amp;lt;1.0, 1.0, 0.0&amp;gt;, &amp;lt;0.0, 0.0, 0.0&amp;gt;, 0.0, &lt;br /&gt;
                    PRIM_TEXTURE, 3, &amp;quot;09b04244-9569-d21f-6de0-4bbcf5552222&amp;quot;, &amp;lt;2.48, 1.0, 0.0&amp;gt;, &amp;lt;-0.25, 0.0, 0.0&amp;gt;, 0.0]);&lt;br /&gt;
                    &lt;br /&gt;
        llRemoveInventory(llGetScriptName());&lt;br /&gt;
    } &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= XyzzyText - 16 Character MESH PLANE (Modification by Traven Sachs) =&lt;br /&gt;
&lt;br /&gt;
== Master Script ==&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
//////////////////////////////////////////// &lt;br /&gt;
// XyzzyText v2.1m (16-Char MESH) by Traven Sachs 29-November-2012&lt;br /&gt;
// XyzzyText v2.1(10-Char) by Thraxis Epsilon&lt;br /&gt;
// XyzzyText v2.1 Script (Set Line Color) by Huney Jewell&lt;br /&gt;
// XyzzyText v2.0 Script (5 Face, Single Texture) &lt;br /&gt;
//&lt;br /&gt;
// Heavily Modified by Thraxis Epsilon, Gigs Taggart 5/2007 and Strife Onizuka 8/2007&lt;br /&gt;
// Rewrite to allow one-script-per-object operation w/ optional slaves&lt;br /&gt;
// Enable prim-label functionality&lt;br /&gt;
// Enabled Banking&lt;br /&gt;
// Enabled 10-char per prim&lt;br /&gt;
// Enabled 16-Char on an 8 Face Mesh Plane Prim&lt;br /&gt;
//&lt;br /&gt;
// Modified by Kermitt Quirk 19/01/2006 &lt;br /&gt;
// To add support for 5 face prim instead of 3 &lt;br /&gt;
// &lt;br /&gt;
// Core XyText Originally Written by Xylor Baysklef &lt;br /&gt;
//&lt;br /&gt;
//////////////////////////////////////////// &lt;br /&gt;
&lt;br /&gt;
/////////////// CONSTANTS /////////////////// &lt;br /&gt;
// XyText Message Map. &lt;br /&gt;
integer DISPLAY_STRING      = 204000; &lt;br /&gt;
integer DISPLAY_EXTENDED    = 204001; &lt;br /&gt;
integer REMAP_INDICES       = 204002; &lt;br /&gt;
integer RESET_INDICES       = 204003; &lt;br /&gt;
integer SET_FADE_OPTIONS    = 204004; &lt;br /&gt;
integer SET_FONT_TEXTURE    = 204005; &lt;br /&gt;
integer SET_LINE_COLOR      = 204006; &lt;br /&gt;
integer SET_COLOR           = 204007; &lt;br /&gt;
integer RESCAN_LINKSET      = 204008;&lt;br /&gt;
&lt;br /&gt;
//internal API&lt;br /&gt;
integer REGISTER_SLAVE      = 205000;&lt;br /&gt;
integer SLAVE_RECOGNIZED    = 205001;&lt;br /&gt;
integer SLAVE_DISPLAY       = 205003;&lt;br /&gt;
integer SLAVE_DISPLAY_EXTENDED = 205004;&lt;br /&gt;
integer SLAVE_RESET         = 205005;&lt;br /&gt;
&lt;br /&gt;
// This is an extended character escape sequence.&lt;br /&gt;
string  ESCAPE_SEQUENCE = &amp;quot;\\e&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// This is used to get an index for the extended character.&lt;br /&gt;
string  EXTENDED_INDEX  = &amp;quot;123456789abcdef&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Face numbers. &lt;br /&gt;
integer FACE_1          = 0; &lt;br /&gt;
integer FACE_2          = 1; &lt;br /&gt;
integer FACE_3          = 2; &lt;br /&gt;
integer FACE_4          = 3; &lt;br /&gt;
integer FACE_5          = 4;&lt;br /&gt;
integer FACE_6          = 5;&lt;br /&gt;
integer FACE_7          = 6;&lt;br /&gt;
integer FACE_8          = 7;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Used to hide the text after a fade-out. &lt;br /&gt;
key     TRANSPARENT     = &amp;quot;f54a0c32-3cd1-d49a-5b4f-7b792bebc204&amp;quot;;&lt;br /&gt;
key     null_key        = NULL_KEY;&lt;br /&gt;
&lt;br /&gt;
// This is a list of textures for all 2-character combinations. &lt;br /&gt;
list    CHARACTER_GRID  = [ &lt;br /&gt;
        &amp;quot;00e9f9f7-0669-181c-c192-7f8e67678c8d&amp;quot;, &lt;br /&gt;
        &amp;quot;347a5cb6-0031-7ec0-2fcf-f298eebf3c0e&amp;quot;, &lt;br /&gt;
        &amp;quot;4e7e689e-37f1-9eca-8596-a958bbd23963&amp;quot;, &lt;br /&gt;
        &amp;quot;19ea9c21-67ba-8f6f-99db-573b1b877eb1&amp;quot;, &lt;br /&gt;
        &amp;quot;dde7b412-cda1-652f-6fc2-73f4641f96e1&amp;quot;, &lt;br /&gt;
        &amp;quot;af6fa3bb-3a6c-9c4f-4bf5-d1c126c830da&amp;quot;, &lt;br /&gt;
        &amp;quot;a201d3a2-364b-43b6-8686-5881c0f82a94&amp;quot;, &lt;br /&gt;
        &amp;quot;b674dec8-fead-99e5-c28d-2db8e4c51540&amp;quot;, &lt;br /&gt;
        &amp;quot;366e05f3-be6b-e5cf-c33b-731dff649caa&amp;quot;, &lt;br /&gt;
        &amp;quot;75c4925c-0427-dc0c-c71c-e28674ff4d27&amp;quot;, &lt;br /&gt;
        &amp;quot;dcbe166b-6a97-efb2-fc8e-e5bc6a8b1be6&amp;quot;, &lt;br /&gt;
        &amp;quot;0dca2feb-fc66-a762-db85-89026a4ecd68&amp;quot;, &lt;br /&gt;
        &amp;quot;a0fca76f-503a-946b-9336-0a918e886f7a&amp;quot;, &lt;br /&gt;
        &amp;quot;67fb375d-89a1-5a4f-8c7a-0cd1c066ffc4&amp;quot;, &lt;br /&gt;
        &amp;quot;300470b2-da34-5470-074c-1b8464ca050c&amp;quot;, &lt;br /&gt;
        &amp;quot;d1f8e91c-ce2b-d85e-2120-930d3b630946&amp;quot;, &lt;br /&gt;
        &amp;quot;2a190e44-7b29-dadb-0bff-c31adaf5a170&amp;quot;, &lt;br /&gt;
        &amp;quot;75d55e71-f6f8-9835-e746-a45f189f30a1&amp;quot;, &lt;br /&gt;
        &amp;quot;300fac33-2b30-3da3-26bc-e2d70428ec19&amp;quot;, &lt;br /&gt;
        &amp;quot;0747c776-011a-53ce-13ee-8b5bb9e87c1e&amp;quot;, &lt;br /&gt;
        &amp;quot;85a855c3-a94f-01ca-33e0-7dde92e727e2&amp;quot;, &lt;br /&gt;
        &amp;quot;cbc1dab2-2d61-2986-1949-7a5235c954e1&amp;quot;, &lt;br /&gt;
        &amp;quot;f7aef047-f266-9596-16df-641010edd8e1&amp;quot;, &lt;br /&gt;
        &amp;quot;4c34ebf7-e5e1-2e1a-579f-e224d9d5e71b&amp;quot;, &lt;br /&gt;
        &amp;quot;4a69e98c-26a5-ad05-e92e-b5b906ad9ef9&amp;quot;, &lt;br /&gt;
        &amp;quot;462a9226-2a97-91ac-2d89-57ab33334b78&amp;quot;, &lt;br /&gt;
        &amp;quot;20b24b3a-8c57-82ee-c6ed-555003f5dbcd&amp;quot;, &lt;br /&gt;
        &amp;quot;9b481daa-9ea8-a9fa-1ee4-ab9a0d38e217&amp;quot;, &lt;br /&gt;
        &amp;quot;c231dbdc-c842-15b0-7aa6-6da14745cfdc&amp;quot;, &lt;br /&gt;
        &amp;quot;c97e3cbb-c9a3-45df-a0ae-955c1f4bf9cf&amp;quot;, &lt;br /&gt;
        &amp;quot;f1e7d030-ff80-a242-cb69-f6951d4eae3b&amp;quot;, &lt;br /&gt;
        &amp;quot;ed32d6c4-d733-c0f1-f242-6df1d222220d&amp;quot;, &lt;br /&gt;
        &amp;quot;88f96a30-dccf-9b20-31ef-da0dfeb23c72&amp;quot;, &lt;br /&gt;
        &amp;quot;252f2595-58b8-4bcc-6515-fa274d0cfb65&amp;quot;, &lt;br /&gt;
        &amp;quot;f2838c4f-de80-cced-dff8-195dfdf36b2c&amp;quot;, &lt;br /&gt;
        &amp;quot;cc2594fe-add2-a3df-cdb3-a61711badf53&amp;quot;, &lt;br /&gt;
        &amp;quot;e0ce2972-da00-955c-129e-3289b3676776&amp;quot;, &lt;br /&gt;
        &amp;quot;3e0d336d-321f-ddfa-5c1b-e26131766f6a&amp;quot;, &lt;br /&gt;
        &amp;quot;d43b1dc4-6b51-76a7-8b90-38865b82bf06&amp;quot;, &lt;br /&gt;
        &amp;quot;06d16cbb-1868-fd1d-5c93-eae42164a37d&amp;quot;, &lt;br /&gt;
        &amp;quot;dd5d98cf-273e-3fd0-f030-48be58ee3a0b&amp;quot;, &lt;br /&gt;
        &amp;quot;0e47c89e-de4a-6233-a2da-cb852aad1b00&amp;quot;, &lt;br /&gt;
        &amp;quot;fb9c4a55-0e13-495b-25c4-f0b459dc06de&amp;quot;, &lt;br /&gt;
        &amp;quot;e3ce8def-312c-735b-0e48-018b6799c883&amp;quot;, &lt;br /&gt;
        &amp;quot;2f713216-4e71-d123-03ed-9c8554710c6b&amp;quot;, &lt;br /&gt;
        &amp;quot;4a417d8a-1f4f-404b-9783-6672f8527911&amp;quot;, &lt;br /&gt;
        &amp;quot;ca5e21ec-5b20-5909-4c31-3f90d7316b33&amp;quot;, &lt;br /&gt;
        &amp;quot;06a4fcc3-e1c4-296d-8817-01f88fbd7367&amp;quot;, &lt;br /&gt;
        &amp;quot;130ac084-6f3c-95de-b5b6-d25c80703474&amp;quot;, &lt;br /&gt;
        &amp;quot;59d540a0-ae9d-3606-5ae0-4f2842b64cfa&amp;quot;, &lt;br /&gt;
        &amp;quot;8612ae9a-f53c-5bf4-2899-8174d7abc4fd&amp;quot;, &lt;br /&gt;
        &amp;quot;12467401-e979-2c49-34e0-6ac761542797&amp;quot;, &lt;br /&gt;
        &amp;quot;d53c3eaa-0404-3860-0675-3e375596c3e3&amp;quot;, &lt;br /&gt;
        &amp;quot;9f5b26bd-81d3-b25e-62fe-5b671d1e3e79&amp;quot;, &lt;br /&gt;
        &amp;quot;f57f0b64-a050-d617-ee00-c8e9e3adc9cb&amp;quot;, &lt;br /&gt;
        &amp;quot;beff166a-f5f3-f05e-e020-98f2b00e27ed&amp;quot;, &lt;br /&gt;
        &amp;quot;02278a65-94ba-6d5e-0d2b-93f2e4f4bf70&amp;quot;, &lt;br /&gt;
        &amp;quot;a707197d-449e-5b58-846c-0c850c61f9d6&amp;quot;, &lt;br /&gt;
        &amp;quot;021d4b1a-9503-a44f-ee2b-976eb5d80e68&amp;quot;, &lt;br /&gt;
        &amp;quot;0ae2ffae-7265-524d-cb76-c2b691992706&amp;quot;];&lt;br /&gt;
list    CHARACTER_GRID2  = [         &lt;br /&gt;
        &amp;quot;f6e41cf2-1104-bd0b-0190-dffad1bac813&amp;quot;, &lt;br /&gt;
        &amp;quot;2b4bb15e-956d-56ae-69f5-d26a20de0ce7&amp;quot;, &lt;br /&gt;
        &amp;quot;f816da2c-51f1-612a-2029-a542db7db882&amp;quot;, &lt;br /&gt;
        &amp;quot;345fea05-c7be-465c-409f-9dcb3bd2aa07&amp;quot;, &lt;br /&gt;
        &amp;quot;b3017e02-c063-5185-acd5-1ef5f9d79b89&amp;quot;, &lt;br /&gt;
        &amp;quot;4dcff365-1971-3c2b-d73c-77e1dc54242a&amp;quot; &lt;br /&gt;
          ]; &lt;br /&gt;
&lt;br /&gt;
///////////// END CONSTANTS ////////////////&lt;br /&gt;
&lt;br /&gt;
///////////// GLOBAL VARIABLES /////////////// &lt;br /&gt;
// All displayable characters.  Default to ASCII order. &lt;br /&gt;
string gCharIndex; &lt;br /&gt;
// This is the channel to listen on while acting &lt;br /&gt;
// as a cell in a larger display. &lt;br /&gt;
integer gCellChannel      = -1; &lt;br /&gt;
// This is the starting character position in the cell channel message &lt;br /&gt;
// to render. &lt;br /&gt;
integer gCellCharPosition = 0;&lt;br /&gt;
// This is whether or not to use the fade in/out special effect. &lt;br /&gt;
integer gCellUseFading      = FALSE; &lt;br /&gt;
// This is how long to display the text before fading out (if using &lt;br /&gt;
// fading special effect). &lt;br /&gt;
// Note: &amp;lt; 0  means don&#039;t fade out. &lt;br /&gt;
float   gCellHoldDelay      = 1.0; &lt;br /&gt;
&lt;br /&gt;
integer gSlaveRegistered;&lt;br /&gt;
list gSlaveNames;&lt;br /&gt;
&lt;br /&gt;
integer BANK_STRIDE = 3; //offset, length, highest_dirty&lt;br /&gt;
list gBankingData;&lt;br /&gt;
&lt;br /&gt;
/////////// END GLOBAL VARIABLES //////////// &lt;br /&gt;
&lt;br /&gt;
ResetCharIndex() { &lt;br /&gt;
    gCharIndex  = &amp;quot; !\&amp;quot;#$%&amp;amp;&#039;()*+,-./0123456789:;&amp;lt;=&amp;gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`&amp;quot;; &lt;br /&gt;
    // \&amp;quot; &amp;lt;-- Fixes LSL syntax highlighting bug. &lt;br /&gt;
    gCharIndex += &amp;quot;abcdefghijklmnopqrstuvwxyz{|}~&amp;quot;; &lt;br /&gt;
    gCharIndex += &amp;quot;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n&amp;quot;; &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
vector GetGridPos(integer index1, integer index2) { &lt;br /&gt;
    // There are two ways to use the lookup table... &lt;br /&gt;
    integer Col; &lt;br /&gt;
    integer Row; &lt;br /&gt;
    if (index1 &amp;gt;= index2) { &lt;br /&gt;
        // In this case, the row is the index of the first character: &lt;br /&gt;
        Row = index1; &lt;br /&gt;
        // And the col is the index of the second character (x2) &lt;br /&gt;
        Col = index2 * 2; &lt;br /&gt;
    } &lt;br /&gt;
    else { // Index1 &amp;lt; Index2 &lt;br /&gt;
        // In this case, the row is the index of the second character: &lt;br /&gt;
        Row = index2; &lt;br /&gt;
        // And the col is the index of the first character, x2, offset by 1. &lt;br /&gt;
        Col = index1 * 2 + 1; &lt;br /&gt;
    } &lt;br /&gt;
    return &amp;lt;Col, Row, 0&amp;gt;; &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
string GetGridTexture(vector grid_pos) { &lt;br /&gt;
    // Calculate the texture in the grid to use. &lt;br /&gt;
    integer GridCol = llRound(grid_pos.x) / 20; &lt;br /&gt;
    integer GridRow = llRound(grid_pos.y) / 10; &lt;br /&gt;
&lt;br /&gt;
    // Lookup the texture. &lt;br /&gt;
    key Texture = llList2Key(CHARACTER_GRID, GridRow * (GridRow + 1) / 2 + GridCol); &lt;br /&gt;
    return Texture; &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
vector GetGridOffset(vector grid_pos) { &lt;br /&gt;
    // Zoom in on the texture showing our character pair. &lt;br /&gt;
    integer Col = llRound(grid_pos.x) % 20; &lt;br /&gt;
    integer Row = llRound(grid_pos.y) % 10; &lt;br /&gt;
&lt;br /&gt;
    // Return the offset in the texture. &lt;br /&gt;
    return &amp;lt;-0.45 + 0.05 * Col, 0.45 - 0.1 * Row, 0.0&amp;gt;; &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
ShowChars(integer link,vector grid_pos1, vector grid_pos2, vector grid_pos3, vector grid_pos4, vector grid_pos5, vector grid_pos6, vector grid_pos7, vector grid_pos8) { &lt;br /&gt;
   // Set the primitive textures directly. &lt;br /&gt;
     &lt;br /&gt;
//integer face, string name, vector repeats, vector offsets, float rotation                &lt;br /&gt;
   llSetLinkPrimitiveParamsFast( link , [ &lt;br /&gt;
        PRIM_TEXTURE, FACE_1, GetGridTexture(grid_pos1), &amp;lt;0.1, 0.1, 0&amp;gt;, GetGridOffset(grid_pos1), 0.0, &lt;br /&gt;
        PRIM_TEXTURE, FACE_2, GetGridTexture(grid_pos2), &amp;lt;0.1, 0.1, 0&amp;gt;, GetGridOffset(grid_pos2), 0.0, &lt;br /&gt;
        PRIM_TEXTURE, FACE_3, GetGridTexture(grid_pos3), &amp;lt;0.1, 0.1, 0&amp;gt;, GetGridOffset(grid_pos3), 0.0, &lt;br /&gt;
        PRIM_TEXTURE, FACE_4, GetGridTexture(grid_pos4), &amp;lt;0.1, 0.1, 0&amp;gt;, GetGridOffset(grid_pos4), 0.0, &lt;br /&gt;
        PRIM_TEXTURE, FACE_5, GetGridTexture(grid_pos5), &amp;lt;0.1, 0.1, 0&amp;gt;, GetGridOffset(grid_pos5), 0.0,&lt;br /&gt;
        PRIM_TEXTURE, FACE_6, GetGridTexture(grid_pos6), &amp;lt;0.1, 0.1, 0&amp;gt;, GetGridOffset(grid_pos6), 0.0,&lt;br /&gt;
        PRIM_TEXTURE, FACE_7, GetGridTexture(grid_pos7), &amp;lt;0.1, 0.1, 0&amp;gt;, GetGridOffset(grid_pos7), 0.0,&lt;br /&gt;
        PRIM_TEXTURE, FACE_8, GetGridTexture(grid_pos8), &amp;lt;0.1, 0.1, 0&amp;gt;, GetGridOffset(grid_pos8), 0.0 &lt;br /&gt;
        ]); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
RenderString(integer link, string str) {&lt;br /&gt;
    // Get the grid positions for each pair of characters. &lt;br /&gt;
    vector GridPos1 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 0, 0)), &lt;br /&gt;
                                  llSubStringIndex(gCharIndex, llGetSubString(str, 1, 1)) ); &lt;br /&gt;
    vector GridPos2 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 2, 2)), &lt;br /&gt;
                                  llSubStringIndex(gCharIndex, llGetSubString(str, 3, 3)) ); &lt;br /&gt;
    vector GridPos3 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 4, 4)), &lt;br /&gt;
                                  llSubStringIndex(gCharIndex, llGetSubString(str, 5, 5)) ); &lt;br /&gt;
    vector GridPos4 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 6, 6)), &lt;br /&gt;
                                  llSubStringIndex(gCharIndex, llGetSubString(str, 7, 7)) ); &lt;br /&gt;
    vector GridPos5 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 8, 8)), &lt;br /&gt;
                                  llSubStringIndex(gCharIndex, llGetSubString(str, 9, 9)) );&lt;br /&gt;
    vector GridPos6 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 10, 10)), &lt;br /&gt;
                                  llSubStringIndex(gCharIndex, llGetSubString(str, 11, 11)) );&lt;br /&gt;
    vector GridPos7 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 12, 12)), &lt;br /&gt;
                                  llSubStringIndex(gCharIndex, llGetSubString(str, 13, 13)) );&lt;br /&gt;
    vector GridPos8 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 14, 14)), &lt;br /&gt;
                                  llSubStringIndex(gCharIndex, llGetSubString(str, 15, 15)) );                                   &lt;br /&gt;
&lt;br /&gt;
    // Use these grid positions to display the correct textures/offsets. &lt;br /&gt;
    ShowChars(link,GridPos1, GridPos2, GridPos3, GridPos4, GridPos5, GridPos6, GridPos7, GridPos8); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//RenderWithEffects(integer link, string str) { &lt;br /&gt;
//    // Get the grid positions for each pair of characters. &lt;br /&gt;
//    vector GridPos1 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 0, 0)), &lt;br /&gt;
//                                  llSubStringIndex(gCharIndex, llGetSubString(str, 1, 1)) ); &lt;br /&gt;
//    vector GridPos2 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 2, 2)), &lt;br /&gt;
//                                  llSubStringIndex(gCharIndex, llGetSubString(str, 3, 3)) ); &lt;br /&gt;
//    vector GridPos3 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 4, 4)), &lt;br /&gt;
//                                  llSubStringIndex(gCharIndex, llGetSubString(str, 5, 5)) ); &lt;br /&gt;
//    vector GridPos4 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 6, 6)), &lt;br /&gt;
//                                  llSubStringIndex(gCharIndex, llGetSubString(str, 7, 7)) ); &lt;br /&gt;
//    vector GridPos5 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 8, 8)), &lt;br /&gt;
//                                  llSubStringIndex(gCharIndex, llGetSubString(str, 9, 9)) );                          //         &lt;br /&gt;
//&lt;br /&gt;
//      // First set the alpha to the lowest possible. &lt;br /&gt;
//   llSetAlpha(0.05, ALL_SIDES); &lt;br /&gt;
//&lt;br /&gt;
//    // Use these grid positions to display the correct textures/offsets. &lt;br /&gt;
//    ShowChars(link,GridPos1, GridPos2, GridPos3, GridPos4, GridPos5);&lt;br /&gt;
//&lt;br /&gt;
//    float Alpha = 0.10; &lt;br /&gt;
//    for (; Alpha &amp;lt;= 1.0; Alpha += 0.05)  &lt;br /&gt;
//       llSetAlpha(Alpha, ALL_SIDES); &lt;br /&gt;
//          // See if we want to fade out as well. &lt;br /&gt;
//   if (gCellHoldDelay &amp;lt; 0.0) &lt;br /&gt;
//       // No, bail out. (Just keep showing the string at full strength). &lt;br /&gt;
//       return; &lt;br /&gt;
//          // Hold the text for a while. &lt;br /&gt;
//   llSleep(gCellHoldDelay); &lt;br /&gt;
//      // Now fade out. &lt;br /&gt;
//   for (Alpha = 0.95; Alpha &amp;gt;= 0.05; Alpha -= 0.05) &lt;br /&gt;
//       llSetAlpha(Alpha, ALL_SIDES); &lt;br /&gt;
//          // Make the text transparent to fully hide it. &lt;br /&gt;
//   llSetTexture(TRANSPARENT, ALL_SIDES); &lt;br /&gt;
//} &lt;br /&gt;
&lt;br /&gt;
integer RenderExtended(integer link, string str,integer render) {&lt;br /&gt;
    // Look for escape sequences.&lt;br /&gt;
    integer length = 0;&lt;br /&gt;
    list Parsed       = llParseString2List(str, [], (list)ESCAPE_SEQUENCE);&lt;br /&gt;
    integer ParsedLen = llGetListLength(Parsed);&lt;br /&gt;
&lt;br /&gt;
    // Create a list of index values to work with.&lt;br /&gt;
    list Indices;&lt;br /&gt;
    // We start with room for 6 indices.&lt;br /&gt;
    integer IndicesLeft = 16;&lt;br /&gt;
&lt;br /&gt;
    string Token;&lt;br /&gt;
    integer Clipped;&lt;br /&gt;
    integer LastWasEscapeSequence = FALSE;&lt;br /&gt;
    // Work from left to right.&lt;br /&gt;
    integer i=0;&lt;br /&gt;
    for (; i &amp;lt; ParsedLen &amp;amp;&amp;amp; IndicesLeft &amp;gt; 0; ++i) {&lt;br /&gt;
        Token = llList2String(Parsed, i);&lt;br /&gt;
&lt;br /&gt;
        // If this is an escape sequence, just set the flag and move on.&lt;br /&gt;
        if (Token == ESCAPE_SEQUENCE) {&lt;br /&gt;
            LastWasEscapeSequence = TRUE;&lt;br /&gt;
        }&lt;br /&gt;
        else { // Token != ESCAPE_SEQUENCE&lt;br /&gt;
            // Otherwise this is a normal token.  Check its length.&lt;br /&gt;
            Clipped = FALSE;&lt;br /&gt;
            integer TokenLength = llStringLength(Token);&lt;br /&gt;
            // Clip if necessary.&lt;br /&gt;
            if (TokenLength &amp;gt; IndicesLeft) {&lt;br /&gt;
                TokenLength = llStringLength(Token = llGetSubString(Token, 0, IndicesLeft - 1));&lt;br /&gt;
                IndicesLeft = 0;&lt;br /&gt;
                Clipped = TRUE;&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                IndicesLeft -= TokenLength;&lt;br /&gt;
&lt;br /&gt;
            // Was the previous token an escape sequence?&lt;br /&gt;
            if (LastWasEscapeSequence) {&lt;br /&gt;
                // Yes, the first character is an escape character, the rest are normal.&lt;br /&gt;
                length += 2 + TokenLength;&lt;br /&gt;
                if (render)&lt;br /&gt;
                {&lt;br /&gt;
                    // This is the extended character.&lt;br /&gt;
                    Indices += [llSubStringIndex(EXTENDED_INDEX, llGetSubString(Token, 0, 0)) + 95];&lt;br /&gt;
                    &lt;br /&gt;
                    // These are the normal characters.&lt;br /&gt;
                    integer j=1;&lt;br /&gt;
                    for (; j &amp;lt; TokenLength; ++j)&lt;br /&gt;
                    {&lt;br /&gt;
                        Indices += [llSubStringIndex(gCharIndex, llGetSubString(Token, j, j))];&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else { // Normal string.&lt;br /&gt;
                // Just add the characters normally.&lt;br /&gt;
                length += TokenLength;&lt;br /&gt;
                if(render)&lt;br /&gt;
                {&lt;br /&gt;
                    integer j=0;&lt;br /&gt;
                    for (; j &amp;lt; TokenLength; ++j)&lt;br /&gt;
                    {&lt;br /&gt;
                        Indices += [llSubStringIndex(gCharIndex, llGetSubString(Token, j, j))];&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            // Unset this flag, since this was not an escape sequence.&lt;br /&gt;
            LastWasEscapeSequence = FALSE;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if(render)&lt;br /&gt;
    {&lt;br /&gt;
        // Use the indices to create grid positions.&lt;br /&gt;
        vector GridPos1 = GetGridPos( llList2Integer(Indices, 0), llList2Integer(Indices, 1) );&lt;br /&gt;
        vector GridPos2 = GetGridPos( llList2Integer(Indices, 2), llList2Integer(Indices, 3) );&lt;br /&gt;
        vector GridPos3 = GetGridPos( llList2Integer(Indices, 4), llList2Integer(Indices, 5) );&lt;br /&gt;
        vector GridPos4 = GetGridPos( llList2Integer(Indices, 6), llList2Integer(Indices, 7) );&lt;br /&gt;
        vector GridPos5 = GetGridPos( llList2Integer(Indices, 8), llList2Integer(Indices, 9) );&lt;br /&gt;
        vector GridPos6 = GetGridPos( llList2Integer(Indices, 10), llList2Integer(Indices, 11) );&lt;br /&gt;
        vector GridPos7 = GetGridPos( llList2Integer(Indices, 12), llList2Integer(Indices, 13) );&lt;br /&gt;
        vector GridPos8 = GetGridPos( llList2Integer(Indices, 14), llList2Integer(Indices, 15) );&lt;br /&gt;
        &lt;br /&gt;
        // Use these grid positions to display the correct textures/offsets.&lt;br /&gt;
        ShowChars(link, GridPos1, GridPos2, GridPos3, GridPos4, GridPos5, GridPos6, GridPos7, GridPos8);&lt;br /&gt;
    }&lt;br /&gt;
    return length;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
integer ConvertIndex(integer index) {&lt;br /&gt;
    // This converts from an ASCII based index to our indexing scheme.&lt;br /&gt;
    if (index &amp;gt;= 32) // &#039; &#039; or higher&lt;br /&gt;
        index -= 32;&lt;br /&gt;
    else { // index &amp;lt; 32&lt;br /&gt;
        // Quick bounds check.&lt;br /&gt;
        if (index &amp;gt; 15)&lt;br /&gt;
            index = 15;&lt;br /&gt;
&lt;br /&gt;
        index += 94; // extended characters&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return index;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PassToRender(integer render,string message, integer bank)&lt;br /&gt;
{&lt;br /&gt;
    float time;&lt;br /&gt;
    integer extendedlen = 0;&lt;br /&gt;
    integer link;&lt;br /&gt;
    &lt;br /&gt;
    integer i = 0;&lt;br /&gt;
    integer msgLen = llStringLength(message);&lt;br /&gt;
    string TextToRender;&lt;br /&gt;
    integer num_slaves=llGetListLength(gSlaveNames);&lt;br /&gt;
    string slave_name; //avoids unnecessary casts, keeping it as a string&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    //get the bank offset and length&lt;br /&gt;
    integer bank_offset=llList2Integer(gBankingData, (bank * BANK_STRIDE));&lt;br /&gt;
    integer bank_length=llList2Integer(gBankingData, (bank * BANK_STRIDE) + 1);&lt;br /&gt;
    integer bank_highest_dirty=llList2Integer(gBankingData, (bank * BANK_STRIDE) + 2);&lt;br /&gt;
&lt;br /&gt;
    integer x=0;    &lt;br /&gt;
    for (;x &amp;lt; msgLen;x = x + 16)&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        if (i &amp;gt;= bank_length)  //we don&#039;t want to run off the end of the bank&lt;br /&gt;
        {&lt;br /&gt;
            //set the dirty to max, and bail out, we&#039;re done&lt;br /&gt;
            gBankingData=llListReplaceList(gBankingData, [bank_length], (bank * BANK_STRIDE) + 2, (bank * BANK_STRIDE) + 2);&lt;br /&gt;
            return;&lt;br /&gt;
        }   &lt;br /&gt;
        &lt;br /&gt;
        link = unpack(gXyTextPrims,(i + bank_offset));&lt;br /&gt;
        TextToRender = llGetSubString(message, x, x + 32);&lt;br /&gt;
        &lt;br /&gt;
        if(gSlaveRegistered &amp;amp;&amp;amp; (link % (num_slaves +1)))&lt;br /&gt;
        {&lt;br /&gt;
            slave_name=llList2String(gSlaveNames, (link % (num_slaves + 1)) - 1);&lt;br /&gt;
            if (render == 1)&lt;br /&gt;
                llMessageLinked(LINK_THIS, SLAVE_DISPLAY, TextToRender, (key)((string)link + &amp;quot;,&amp;quot; + slave_name));&lt;br /&gt;
            if (render == 2)&lt;br /&gt;
            {&lt;br /&gt;
                if(llSubStringIndex(TextToRender,&amp;quot;\e&amp;quot;)&amp;gt;x+16)&lt;br /&gt;
                {&lt;br /&gt;
                    extendedlen = 16;&lt;br /&gt;
                }&lt;br /&gt;
                else&lt;br /&gt;
                {&lt;br /&gt;
                    extendedlen = RenderExtended(link,TextToRender,0);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                if(extendedlen&amp;gt;16)&lt;br /&gt;
                {&lt;br /&gt;
                    x += extendedlen-16;&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                llMessageLinked(LINK_THIS,SLAVE_DISPLAY_EXTENDED,TextToRender,(key)((string)link+&amp;quot;,&amp;quot;+slave_name));&lt;br /&gt;
            }        &lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            if (render == 1)&lt;br /&gt;
                RenderString(link,TextToRender);&lt;br /&gt;
            if (render == 2)&lt;br /&gt;
            {&lt;br /&gt;
                extendedlen = RenderExtended(link,TextToRender,1);&lt;br /&gt;
                if(extendedlen&amp;gt;16)&lt;br /&gt;
                {&lt;br /&gt;
                    x += extendedlen-16;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
//            if (render == 3)&lt;br /&gt;
//                RenderWithEffects(link,TextToRender);&lt;br /&gt;
        }&lt;br /&gt;
        ++i;            &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    if (bank_highest_dirty==0)&lt;br /&gt;
        bank_highest_dirty=bank_length;&lt;br /&gt;
    &lt;br /&gt;
    integer current_highest_dirty=i;&lt;br /&gt;
    while (i &amp;lt; bank_highest_dirty)&lt;br /&gt;
    {&lt;br /&gt;
        link = unpack(gXyTextPrims,(i + bank_offset));&lt;br /&gt;
        &lt;br /&gt;
        if(gSlaveRegistered &amp;amp;&amp;amp; (link % (num_slaves+1) != 0))&lt;br /&gt;
        {&lt;br /&gt;
            slave_name=llList2String(gSlaveNames, (link % (num_slaves + 1)) - 1);&lt;br /&gt;
            llMessageLinked(LINK_THIS, SLAVE_DISPLAY, &amp;quot;     &amp;quot;, (key)((string)link + &amp;quot;,&amp;quot; + slave_name));       &lt;br /&gt;
            //sorry, no fade effect with slave&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            RenderString(link,&amp;quot;          &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        ++i;        &lt;br /&gt;
    }&lt;br /&gt;
    gBankingData=llListReplaceList(gBankingData, [current_highest_dirty], (bank * BANK_STRIDE) + 2, (bank * BANK_STRIDE) + 2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Bitwise Voodoo by Gigs Taggart and optimized by Strife Onizuka&lt;br /&gt;
list gXyTextPrims;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
integer get_number_of_prims()&lt;br /&gt;
{//ignores avatars.&lt;br /&gt;
    integer a = llGetNumberOfPrims();&lt;br /&gt;
    while(llGetAgentSize(llGetLinkKey(a)))&lt;br /&gt;
        --a;&lt;br /&gt;
    return a;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//functions to pack 8-bit shorts into ints&lt;br /&gt;
list pack_and_insert(list in_list, integer pos, integer value)&lt;br /&gt;
{&lt;br /&gt;
//    //figure out the bitpack position&lt;br /&gt;
//    integer pack = pos &amp;amp; 3; //4 bytes per int&lt;br /&gt;
//    pos=pos &amp;gt;&amp;gt; 2;&lt;br /&gt;
//    integer shifted = value &amp;lt;&amp;lt; (pack &amp;lt;&amp;lt; 3);&lt;br /&gt;
//    integer old_value = llList2Integer(in_list, pos);&lt;br /&gt;
//    shifted = old_value | shifted;&lt;br /&gt;
//    in_list = llListReplaceList(in_list, (list)shifted, pos, pos);&lt;br /&gt;
//    return in_list;&lt;br /&gt;
    //Safe optimized version&lt;br /&gt;
    integer index = pos &amp;gt;&amp;gt; 2;&lt;br /&gt;
    return llListReplaceList(in_list, (list)(llList2Integer(in_list, index) | (value &amp;lt;&amp;lt; ((pos &amp;amp; 3) &amp;lt;&amp;lt; 3))), index, index);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
integer unpack(list in_list, integer pos)&lt;br /&gt;
{&lt;br /&gt;
    return (llList2Integer(in_list, pos &amp;gt;&amp;gt; 2) &amp;gt;&amp;gt; ((pos &amp;amp; 3) &amp;lt;&amp;lt; 3)) &amp;amp; 0x000000FF;//unsigned&lt;br /&gt;
//    return (llList2Integer(in_list, pos &amp;gt;&amp;gt; 2) &amp;lt;&amp;lt; (((~pos) &amp;amp; 3) &amp;lt;&amp;lt; 3)) &amp;gt;&amp;gt; 24;//signed&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
change_color(vector color)&lt;br /&gt;
{&lt;br /&gt;
    integer num_prims=llGetListLength(gXyTextPrims) &amp;lt;&amp;lt; 2;&lt;br /&gt;
    &lt;br /&gt;
    integer i = 0;&lt;br /&gt;
    &lt;br /&gt;
    for (; i&amp;lt;=num_prims; ++i)&lt;br /&gt;
    {&lt;br /&gt;
        integer link = unpack(gXyTextPrims,i);&lt;br /&gt;
        if (!link)&lt;br /&gt;
            return;&lt;br /&gt;
        &lt;br /&gt;
        llSetLinkPrimitiveParamsFast( link,[ &lt;br /&gt;
            PRIM_COLOR, FACE_1, color, 1.0,&lt;br /&gt;
            PRIM_COLOR, FACE_2, color, 1.0,&lt;br /&gt;
            PRIM_COLOR, FACE_3, color, 1.0,&lt;br /&gt;
            PRIM_COLOR, FACE_4, color, 1.0,&lt;br /&gt;
            PRIM_COLOR, FACE_5, color, 1.0,&lt;br /&gt;
            PRIM_COLOR, FACE_6, color, 1.0,&lt;br /&gt;
            PRIM_COLOR, FACE_7, color, 1.0,&lt;br /&gt;
            PRIM_COLOR, FACE_8, color, 1.0            &lt;br /&gt;
        ]);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
change_line_color(integer bank, vector color)&lt;br /&gt;
{    &lt;br /&gt;
&lt;br /&gt;
    //get the bank offset and length&lt;br /&gt;
    integer i = llList2Integer(gBankingData, (bank * BANK_STRIDE));&lt;br /&gt;
    integer bank_end = i + llList2Integer(gBankingData, (bank * BANK_STRIDE) + 1);&lt;br /&gt;
&lt;br /&gt;
    for (; i &amp;lt; bank_end; ++i)&lt;br /&gt;
    {     &lt;br /&gt;
        integer link = unpack(gXyTextPrims,i);&lt;br /&gt;
        if (!link)&lt;br /&gt;
            return;&lt;br /&gt;
        &lt;br /&gt;
        llSetLinkPrimitiveParamsFast( link,[ &lt;br /&gt;
            PRIM_COLOR, FACE_1, color, 1.0,&lt;br /&gt;
            PRIM_COLOR, FACE_2, color, 1.0,&lt;br /&gt;
            PRIM_COLOR, FACE_3, color, 1.0,&lt;br /&gt;
            PRIM_COLOR, FACE_4, color, 1.0,&lt;br /&gt;
            PRIM_COLOR, FACE_5, color, 1.0,&lt;br /&gt;
            PRIM_COLOR, FACE_6, color, 1.0,&lt;br /&gt;
            PRIM_COLOR, FACE_7, color, 1.0,&lt;br /&gt;
            PRIM_COLOR, FACE_8, color, 1.0&lt;br /&gt;
        ]);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
init()&lt;br /&gt;
{&lt;br /&gt;
    integer num_prims=get_number_of_prims();&lt;br /&gt;
&lt;br /&gt;
    string link_name;&lt;br /&gt;
    integer bank=0;&lt;br /&gt;
    integer bank_empty=FALSE;&lt;br /&gt;
    integer prims_pointer=0; //&amp;quot;pointer&amp;quot; to the next entry to be used in the gXyTextPrims list.&lt;br /&gt;
    &lt;br /&gt;
    list temp_bank=[];&lt;br /&gt;
    integer temp_bank_stride=2;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
    gXyTextPrims=[];&lt;br /&gt;
    integer x=0;&lt;br /&gt;
    for (;x&amp;lt;64;++x)&lt;br /&gt;
    {&lt;br /&gt;
        gXyTextPrims= (gXyTextPrims = []) + gXyTextPrims + [0];  //we need to pad out the list to make it easier to add things in any order later&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    @loop;&lt;br /&gt;
    &lt;br /&gt;
    {&lt;br /&gt;
       &lt;br /&gt;
        //loop over all prims, looking for ones in the current bank&lt;br /&gt;
        for(x=0;x&amp;lt;=num_prims;++x)&lt;br /&gt;
        {&lt;br /&gt;
            link_name=llGetLinkName(x);&lt;br /&gt;
            list tmp = llParseString2List(link_name, [&amp;quot;-&amp;quot;], []);&lt;br /&gt;
            if(llList2String(tmp,0)== &amp;quot;xyzzytext&amp;quot;)&lt;br /&gt;
            {&lt;br /&gt;
                integer prims_bank=llList2Integer(tmp,1);&lt;br /&gt;
                if (llList2Integer(tmp,1)==bank)&lt;br /&gt;
                {&lt;br /&gt;
                    temp_bank+=llList2Integer(tmp,2) + (list)x;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
        if (temp_bank!=[])&lt;br /&gt;
        {&lt;br /&gt;
            //sort the current bank&lt;br /&gt;
            temp_bank=llListSort(temp_bank, temp_bank_stride, TRUE);&lt;br /&gt;
            &lt;br /&gt;
            integer temp_len=llGetListLength(temp_bank);&lt;br /&gt;
            &lt;br /&gt;
            //store metadata&lt;br /&gt;
            gBankingData+=[prims_pointer,temp_len/temp_bank_stride,0];&lt;br /&gt;
            &lt;br /&gt;
            //repack the bank into the prim list&lt;br /&gt;
            for (x=0; x &amp;lt; temp_len; x+=temp_bank_stride)&lt;br /&gt;
            {&lt;br /&gt;
                gXyTextPrims = pack_and_insert(gXyTextPrims, prims_pointer, llList2Integer(temp_bank, x+1));&lt;br /&gt;
                ++prims_pointer;&lt;br /&gt;
            }&lt;br /&gt;
            ++bank;&lt;br /&gt;
            temp_bank=[];&lt;br /&gt;
            jump loop;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    llMessageLinked(LINK_THIS, SLAVE_RESET, &amp;quot;&amp;quot; , null_key);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default { &lt;br /&gt;
    state_entry() { &lt;br /&gt;
        // Initialize the character index. &lt;br /&gt;
        ResetCharIndex();&lt;br /&gt;
        init();&lt;br /&gt;
    } &lt;br /&gt;
&lt;br /&gt;
   on_rez(integer num)&lt;br /&gt;
   {&lt;br /&gt;
      llResetScript();       &lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
    link_message(integer sender, integer channel, string data, key id) {&lt;br /&gt;
        if(id == null_key)&lt;br /&gt;
            id=&amp;quot;0&amp;quot;;&lt;br /&gt;
        &lt;br /&gt;
        if (channel == DISPLAY_STRING) { &lt;br /&gt;
            PassToRender(1,data, (integer)((string)id)); &lt;br /&gt;
            return; &lt;br /&gt;
        } &lt;br /&gt;
        else if (channel == DISPLAY_EXTENDED) { &lt;br /&gt;
             PassToRender(2,data, (integer)((string)id)); &lt;br /&gt;
            return; &lt;br /&gt;
        }&lt;br /&gt;
        else if (channel == REMAP_INDICES) {&lt;br /&gt;
            // Parse the message, splitting it up into index values.&lt;br /&gt;
            list Parsed = llCSV2List(data);&lt;br /&gt;
            integer i;&lt;br /&gt;
            // Go through the list and swap each pair of indices.&lt;br /&gt;
            for (i = 0; i &amp;lt; llGetListLength(Parsed); i += 2) {&lt;br /&gt;
                integer Index1 = ConvertIndex( llList2Integer(Parsed, i) );&lt;br /&gt;
                integer Index2 = ConvertIndex( llList2Integer(Parsed, i + 1) );&lt;br /&gt;
&lt;br /&gt;
                // Swap these index values.&lt;br /&gt;
                string Value1 = llGetSubString(gCharIndex, Index1, Index1);&lt;br /&gt;
                string Value2 = llGetSubString(gCharIndex, Index2, Index2);&lt;br /&gt;
&lt;br /&gt;
                gCharIndex = llDeleteSubString(gCharIndex, Index1, Index1);&lt;br /&gt;
                gCharIndex = llInsertString(gCharIndex, Index1, Value2);&lt;br /&gt;
&lt;br /&gt;
                gCharIndex = llDeleteSubString(gCharIndex, Index2, Index2);&lt;br /&gt;
                gCharIndex = llInsertString(gCharIndex, Index2, Value1);&lt;br /&gt;
            }&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        else if (channel == RESET_INDICES) {&lt;br /&gt;
            // Restore the character index back to default settings.&lt;br /&gt;
            ResetCharIndex();&lt;br /&gt;
            return;&lt;br /&gt;
        }        &lt;br /&gt;
        else if (channel == RESCAN_LINKSET)&lt;br /&gt;
        {&lt;br /&gt;
            init();&lt;br /&gt;
        }&lt;br /&gt;
        else if (channel == SET_COLOR) {&lt;br /&gt;
            change_color((vector)data); &lt;br /&gt;
        }&lt;br /&gt;
        else if (channel == SET_LINE_COLOR) {&lt;br /&gt;
            change_line_color((integer)((string)id), (vector)data); &lt;br /&gt;
        }     &lt;br /&gt;
        else if (channel == REGISTER_SLAVE)&lt;br /&gt;
        {&lt;br /&gt;
            if(!~llListFindList(gSlaveNames, (list)data))&lt;br /&gt;
            {//isn&#039;t registered yet&lt;br /&gt;
                gSlaveNames += data;&lt;br /&gt;
                gSlaveRegistered=TRUE;&lt;br /&gt;
                //llOwnerSay((string)llGetListLength(gSlaveNames) + &amp;quot; Slave(s) Recognized: &amp;quot; + data);&lt;br /&gt;
            }&lt;br /&gt;
//            else&lt;br /&gt;
//            {//it already exists&lt;br /&gt;
//                llOwnerSay((string)llGetListLength(gSlaveNames) + &amp;quot; Slave, Existing Slave Recognized: &amp;quot; + data);&lt;br /&gt;
//            }&lt;br /&gt;
            llMessageLinked(LINK_THIS, SLAVE_RECOGNIZED, data , null_key);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    changed(integer change)&lt;br /&gt;
    {&lt;br /&gt;
        if(change&amp;amp;CHANGED_INVENTORY)&lt;br /&gt;
        {&lt;br /&gt;
            if(gSlaveRegistered)        &lt;br /&gt;
            {&lt;br /&gt;
                //by using negative indexes they don&#039;t need to be adjusted when an entry is deleted.&lt;br /&gt;
                integer x = ~llGetListLength(gSlaveNames);&lt;br /&gt;
                while(++x)&lt;br /&gt;
                {&lt;br /&gt;
                    if (!~llGetInventoryType(llList2String(gSlaveNames, x)))&lt;br /&gt;
                    {&lt;br /&gt;
                        //llOwnerSay(&amp;quot;Slave Removed: &amp;quot; + llList2String(gSlaveNames, x));&lt;br /&gt;
                        gSlaveNames = llDeleteSubList(gSlaveNames, x, x);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                gSlaveRegistered = !(gSlaveNames == []);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Slave Script ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// XyzzyText v2.1m (16-Char MESH) by Traven Sachs 29-November-2012&lt;br /&gt;
// XyzzyText v2.1(10-Char) by Thraxis Epsilon&lt;br /&gt;
// XyText v2.0 SLAVE Script (5 Face, Single Texture) &lt;br /&gt;
//&lt;br /&gt;
// Heavily Modified by Thraxis Epsilon, Gigs Taggart 5/2007 and Strife Onizuka 8/2007&lt;br /&gt;
// Rewrite to allow one-script-per-object operation w/ optional slaves&lt;br /&gt;
// Enable prim-label functionality&lt;br /&gt;
// Enabled Banking&lt;br /&gt;
// Enabled 10-char per prim&lt;br /&gt;
// Enabled 16-Char on an 8 Face Mesh Plane Prim&lt;br /&gt;
//&lt;br /&gt;
// Modified by Kermitt Quirk 19/01/2006 &lt;br /&gt;
// To add support for 5 face prim instead of 3 &lt;br /&gt;
// &lt;br /&gt;
// Originally Written by Xylor Baysklef &lt;br /&gt;
// &lt;br /&gt;
//&lt;br /&gt;
//////////////////////////////////////////// &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
integer REMAP_INDICES       = 204002; &lt;br /&gt;
integer RESET_INDICES       = 204003;&lt;br /&gt;
&lt;br /&gt;
//internal API&lt;br /&gt;
integer REGISTER_SLAVE      = 205000;&lt;br /&gt;
integer SLAVE_RECOGNIZED    = 205001;&lt;br /&gt;
integer SLAVE_DISPLAY       = 205003;&lt;br /&gt;
integer SET_FONT_TEXTURE    = 204005; &lt;br /&gt;
&lt;br /&gt;
integer SLAVE_DISPLAY_EXTENDED = 205004;&lt;br /&gt;
integer SLAVE_RESET = 205005;&lt;br /&gt;
&lt;br /&gt;
// This is an extended character escape sequence.&lt;br /&gt;
string  ESCAPE_SEQUENCE = &amp;quot;\\e&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// This is used to get an index for the extended character.&lt;br /&gt;
string  EXTENDED_INDEX  = &amp;quot;123456789abcdef&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Face numbers. &lt;br /&gt;
integer FACE_1          = 0; &lt;br /&gt;
integer FACE_2          = 1; &lt;br /&gt;
integer FACE_3          = 2; &lt;br /&gt;
integer FACE_4          = 3; &lt;br /&gt;
integer FACE_5          = 4;&lt;br /&gt;
integer FACE_6          = 5;&lt;br /&gt;
integer FACE_7          = 6;&lt;br /&gt;
integer FACE_8          = 7;&lt;br /&gt;
&lt;br /&gt;
// This is a list of textures for all 2-character combinations. &lt;br /&gt;
list    CHARACTER_GRID  = [ &lt;br /&gt;
        &amp;quot;00e9f9f7-0669-181c-c192-7f8e67678c8d&amp;quot;, &lt;br /&gt;
        &amp;quot;347a5cb6-0031-7ec0-2fcf-f298eebf3c0e&amp;quot;, &lt;br /&gt;
        &amp;quot;4e7e689e-37f1-9eca-8596-a958bbd23963&amp;quot;, &lt;br /&gt;
        &amp;quot;19ea9c21-67ba-8f6f-99db-573b1b877eb1&amp;quot;, &lt;br /&gt;
        &amp;quot;dde7b412-cda1-652f-6fc2-73f4641f96e1&amp;quot;, &lt;br /&gt;
        &amp;quot;af6fa3bb-3a6c-9c4f-4bf5-d1c126c830da&amp;quot;, &lt;br /&gt;
        &amp;quot;a201d3a2-364b-43b6-8686-5881c0f82a94&amp;quot;, &lt;br /&gt;
        &amp;quot;b674dec8-fead-99e5-c28d-2db8e4c51540&amp;quot;, &lt;br /&gt;
        &amp;quot;366e05f3-be6b-e5cf-c33b-731dff649caa&amp;quot;, &lt;br /&gt;
        &amp;quot;75c4925c-0427-dc0c-c71c-e28674ff4d27&amp;quot;, &lt;br /&gt;
        &amp;quot;dcbe166b-6a97-efb2-fc8e-e5bc6a8b1be6&amp;quot;, &lt;br /&gt;
        &amp;quot;0dca2feb-fc66-a762-db85-89026a4ecd68&amp;quot;, &lt;br /&gt;
        &amp;quot;a0fca76f-503a-946b-9336-0a918e886f7a&amp;quot;, &lt;br /&gt;
        &amp;quot;67fb375d-89a1-5a4f-8c7a-0cd1c066ffc4&amp;quot;, &lt;br /&gt;
        &amp;quot;300470b2-da34-5470-074c-1b8464ca050c&amp;quot;, &lt;br /&gt;
        &amp;quot;d1f8e91c-ce2b-d85e-2120-930d3b630946&amp;quot;, &lt;br /&gt;
        &amp;quot;2a190e44-7b29-dadb-0bff-c31adaf5a170&amp;quot;, &lt;br /&gt;
        &amp;quot;75d55e71-f6f8-9835-e746-a45f189f30a1&amp;quot;, &lt;br /&gt;
        &amp;quot;300fac33-2b30-3da3-26bc-e2d70428ec19&amp;quot;, &lt;br /&gt;
        &amp;quot;0747c776-011a-53ce-13ee-8b5bb9e87c1e&amp;quot;, &lt;br /&gt;
        &amp;quot;85a855c3-a94f-01ca-33e0-7dde92e727e2&amp;quot;, &lt;br /&gt;
        &amp;quot;cbc1dab2-2d61-2986-1949-7a5235c954e1&amp;quot;, &lt;br /&gt;
        &amp;quot;f7aef047-f266-9596-16df-641010edd8e1&amp;quot;, &lt;br /&gt;
        &amp;quot;4c34ebf7-e5e1-2e1a-579f-e224d9d5e71b&amp;quot;, &lt;br /&gt;
        &amp;quot;4a69e98c-26a5-ad05-e92e-b5b906ad9ef9&amp;quot;, &lt;br /&gt;
        &amp;quot;462a9226-2a97-91ac-2d89-57ab33334b78&amp;quot;, &lt;br /&gt;
        &amp;quot;20b24b3a-8c57-82ee-c6ed-555003f5dbcd&amp;quot;, &lt;br /&gt;
        &amp;quot;9b481daa-9ea8-a9fa-1ee4-ab9a0d38e217&amp;quot;, &lt;br /&gt;
        &amp;quot;c231dbdc-c842-15b0-7aa6-6da14745cfdc&amp;quot;, &lt;br /&gt;
        &amp;quot;c97e3cbb-c9a3-45df-a0ae-955c1f4bf9cf&amp;quot;, &lt;br /&gt;
        &amp;quot;f1e7d030-ff80-a242-cb69-f6951d4eae3b&amp;quot;, &lt;br /&gt;
        &amp;quot;ed32d6c4-d733-c0f1-f242-6df1d222220d&amp;quot;, &lt;br /&gt;
        &amp;quot;88f96a30-dccf-9b20-31ef-da0dfeb23c72&amp;quot;, &lt;br /&gt;
        &amp;quot;252f2595-58b8-4bcc-6515-fa274d0cfb65&amp;quot;, &lt;br /&gt;
        &amp;quot;f2838c4f-de80-cced-dff8-195dfdf36b2c&amp;quot;, &lt;br /&gt;
        &amp;quot;cc2594fe-add2-a3df-cdb3-a61711badf53&amp;quot;, &lt;br /&gt;
        &amp;quot;e0ce2972-da00-955c-129e-3289b3676776&amp;quot;, &lt;br /&gt;
        &amp;quot;3e0d336d-321f-ddfa-5c1b-e26131766f6a&amp;quot;, &lt;br /&gt;
        &amp;quot;d43b1dc4-6b51-76a7-8b90-38865b82bf06&amp;quot;, &lt;br /&gt;
        &amp;quot;06d16cbb-1868-fd1d-5c93-eae42164a37d&amp;quot;, &lt;br /&gt;
        &amp;quot;dd5d98cf-273e-3fd0-f030-48be58ee3a0b&amp;quot;, &lt;br /&gt;
        &amp;quot;0e47c89e-de4a-6233-a2da-cb852aad1b00&amp;quot;, &lt;br /&gt;
        &amp;quot;fb9c4a55-0e13-495b-25c4-f0b459dc06de&amp;quot;, &lt;br /&gt;
        &amp;quot;e3ce8def-312c-735b-0e48-018b6799c883&amp;quot;, &lt;br /&gt;
        &amp;quot;2f713216-4e71-d123-03ed-9c8554710c6b&amp;quot;, &lt;br /&gt;
        &amp;quot;4a417d8a-1f4f-404b-9783-6672f8527911&amp;quot;, &lt;br /&gt;
        &amp;quot;ca5e21ec-5b20-5909-4c31-3f90d7316b33&amp;quot;, &lt;br /&gt;
        &amp;quot;06a4fcc3-e1c4-296d-8817-01f88fbd7367&amp;quot;, &lt;br /&gt;
        &amp;quot;130ac084-6f3c-95de-b5b6-d25c80703474&amp;quot;, &lt;br /&gt;
        &amp;quot;59d540a0-ae9d-3606-5ae0-4f2842b64cfa&amp;quot;, &lt;br /&gt;
        &amp;quot;8612ae9a-f53c-5bf4-2899-8174d7abc4fd&amp;quot;, &lt;br /&gt;
        &amp;quot;12467401-e979-2c49-34e0-6ac761542797&amp;quot;, &lt;br /&gt;
        &amp;quot;d53c3eaa-0404-3860-0675-3e375596c3e3&amp;quot;, &lt;br /&gt;
        &amp;quot;9f5b26bd-81d3-b25e-62fe-5b671d1e3e79&amp;quot;, &lt;br /&gt;
        &amp;quot;f57f0b64-a050-d617-ee00-c8e9e3adc9cb&amp;quot;, &lt;br /&gt;
        &amp;quot;beff166a-f5f3-f05e-e020-98f2b00e27ed&amp;quot;, &lt;br /&gt;
        &amp;quot;02278a65-94ba-6d5e-0d2b-93f2e4f4bf70&amp;quot;, &lt;br /&gt;
        &amp;quot;a707197d-449e-5b58-846c-0c850c61f9d6&amp;quot;, &lt;br /&gt;
        &amp;quot;021d4b1a-9503-a44f-ee2b-976eb5d80e68&amp;quot;, &lt;br /&gt;
        &amp;quot;0ae2ffae-7265-524d-cb76-c2b691992706&amp;quot;, &lt;br /&gt;
        &amp;quot;f6e41cf2-1104-bd0b-0190-dffad1bac813&amp;quot;, &lt;br /&gt;
        &amp;quot;2b4bb15e-956d-56ae-69f5-d26a20de0ce7&amp;quot;, &lt;br /&gt;
        &amp;quot;f816da2c-51f1-612a-2029-a542db7db882&amp;quot;, &lt;br /&gt;
        &amp;quot;345fea05-c7be-465c-409f-9dcb3bd2aa07&amp;quot;];&lt;br /&gt;
list    CHARACTER_GRID2  = [         &lt;br /&gt;
        &amp;quot;b3017e02-c063-5185-acd5-1ef5f9d79b89&amp;quot;, &lt;br /&gt;
        &amp;quot;4dcff365-1971-3c2b-d73c-77e1dc54242a&amp;quot; &lt;br /&gt;
          ]; &lt;br /&gt;
&lt;br /&gt;
///////////// END CONSTANTS ////////////////&lt;br /&gt;
string gCharIndex; &lt;br /&gt;
&lt;br /&gt;
integer gActive; //if we are recognized, this is true&lt;br /&gt;
/////////// END GLOBAL VARIABLES ////////////&lt;br /&gt;
ResetCharIndex() { &lt;br /&gt;
    gCharIndex  = &amp;quot; !\&amp;quot;#$%&amp;amp;&#039;()*+,-./0123456789:;&amp;lt;=&amp;gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`&amp;quot;; &lt;br /&gt;
    // \&amp;quot; &amp;lt;-- Fixes LSL syntax highlighting bug. &lt;br /&gt;
    gCharIndex += &amp;quot;abcdefghijklmnopqrstuvwxyz{|}~&amp;quot;; &lt;br /&gt;
    gCharIndex += &amp;quot;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n&amp;quot;; &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
vector GetGridPos(integer index1, integer index2) { &lt;br /&gt;
    // There are two ways to use the lookup table... &lt;br /&gt;
    integer Col; &lt;br /&gt;
    integer Row; &lt;br /&gt;
    if (index1 &amp;gt;= index2) { &lt;br /&gt;
        // In this case, the row is the index of the first character: &lt;br /&gt;
        Row = index1; &lt;br /&gt;
        // And the col is the index of the second character (x2) &lt;br /&gt;
        Col = index2 * 2; &lt;br /&gt;
    } &lt;br /&gt;
    else { // Index1 &amp;lt; Index2 &lt;br /&gt;
        // In this case, the row is the index of the second character: &lt;br /&gt;
        Row = index2; &lt;br /&gt;
        // And the col is the index of the first character, x2, offset by 1. &lt;br /&gt;
        Col = index1 * 2 + 1; &lt;br /&gt;
    } &lt;br /&gt;
    return &amp;lt;Col, Row, 0&amp;gt;; &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
string GetGridTexture(vector grid_pos) { &lt;br /&gt;
    // Calculate the texture in the grid to use. &lt;br /&gt;
    integer GridCol = llRound(grid_pos.x) / 20; &lt;br /&gt;
    integer GridRow = llRound(grid_pos.y) / 10; &lt;br /&gt;
&lt;br /&gt;
    // Lookup the texture. &lt;br /&gt;
    key Texture = llList2Key(CHARACTER_GRID, GridRow * (GridRow + 1) / 2 + GridCol); &lt;br /&gt;
    return Texture; &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
vector GetGridOffset(vector grid_pos) { &lt;br /&gt;
    // Zoom in on the texture showing our character pair. &lt;br /&gt;
    integer Col = llRound(grid_pos.x) % 20; &lt;br /&gt;
    integer Row = llRound(grid_pos.y) % 10; &lt;br /&gt;
&lt;br /&gt;
    // Return the offset in the texture. &lt;br /&gt;
    return &amp;lt;-0.45 + 0.05 * Col, 0.45 - 0.1 * Row, 0.0&amp;gt;; &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
ShowChars(integer link,vector grid_pos1, vector grid_pos2, vector grid_pos3, vector grid_pos4, vector grid_pos5, vector grid_pos6, vector grid_pos7, vector grid_pos8) { &lt;br /&gt;
   // Set the primitive textures directly. &lt;br /&gt;
     &lt;br /&gt;
               &lt;br /&gt;
   llSetLinkPrimitiveParamsFast( link , [ &lt;br /&gt;
        PRIM_TEXTURE, FACE_1, GetGridTexture(grid_pos1), &amp;lt;0.1, 0.1, 0&amp;gt;, GetGridOffset(grid_pos1), 0.0, &lt;br /&gt;
        PRIM_TEXTURE, FACE_2, GetGridTexture(grid_pos2), &amp;lt;0.1, 0.1, 0&amp;gt;, GetGridOffset(grid_pos2), 0.0, &lt;br /&gt;
        PRIM_TEXTURE, FACE_3, GetGridTexture(grid_pos3), &amp;lt;0.1, 0.1, 0&amp;gt;, GetGridOffset(grid_pos3), 0.0, &lt;br /&gt;
        PRIM_TEXTURE, FACE_4, GetGridTexture(grid_pos4), &amp;lt;0.1, 0.1, 0&amp;gt;, GetGridOffset(grid_pos4), 0.0, &lt;br /&gt;
        PRIM_TEXTURE, FACE_5, GetGridTexture(grid_pos5), &amp;lt;0.1, 0.1, 0&amp;gt;, GetGridOffset(grid_pos5), 0.0,&lt;br /&gt;
        PRIM_TEXTURE, FACE_6, GetGridTexture(grid_pos6), &amp;lt;0.1, 0.1, 0&amp;gt;, GetGridOffset(grid_pos6), 0.0,&lt;br /&gt;
        PRIM_TEXTURE, FACE_7, GetGridTexture(grid_pos7), &amp;lt;0.1, 0.1, 0&amp;gt;, GetGridOffset(grid_pos7), 0.0,&lt;br /&gt;
        PRIM_TEXTURE, FACE_8, GetGridTexture(grid_pos8), &amp;lt;0.1, 0.1, 0&amp;gt;, GetGridOffset(grid_pos8), 0.0&lt;br /&gt;
        ]); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
RenderString(integer link, string str) {&lt;br /&gt;
    // Get the grid positions for each pair of characters. &lt;br /&gt;
    vector GridPos1 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 0, 0)), &lt;br /&gt;
                                  llSubStringIndex(gCharIndex, llGetSubString(str, 1, 1)) ); &lt;br /&gt;
    vector GridPos2 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 2, 2)), &lt;br /&gt;
                                  llSubStringIndex(gCharIndex, llGetSubString(str, 3, 3)) ); &lt;br /&gt;
    vector GridPos3 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 4, 4)), &lt;br /&gt;
                                  llSubStringIndex(gCharIndex, llGetSubString(str, 5, 5)) ); &lt;br /&gt;
    vector GridPos4 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 6, 6)), &lt;br /&gt;
                                  llSubStringIndex(gCharIndex, llGetSubString(str, 7, 7)) ); &lt;br /&gt;
    vector GridPos5 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 8, 8)), &lt;br /&gt;
                                  llSubStringIndex(gCharIndex, llGetSubString(str, 9, 9)) );&lt;br /&gt;
    vector GridPos6 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 10, 10)), &lt;br /&gt;
                                  llSubStringIndex(gCharIndex, llGetSubString(str, 11, 11)) );&lt;br /&gt;
    vector GridPos7 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 12, 12)), &lt;br /&gt;
                                  llSubStringIndex(gCharIndex, llGetSubString(str, 13, 13)) );&lt;br /&gt;
    vector GridPos8 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 14, 14)), &lt;br /&gt;
                                  llSubStringIndex(gCharIndex, llGetSubString(str, 15, 15)) );                                   &lt;br /&gt;
&lt;br /&gt;
    // Use these grid positions to display the correct textures/offsets. &lt;br /&gt;
    ShowChars(link,GridPos1, GridPos2, GridPos3, GridPos4, GridPos5, GridPos6, GridPos7, GridPos8); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
RenderExtended(integer link, string str) {&lt;br /&gt;
    // Look for escape sequences.&lt;br /&gt;
    list Parsed       = llParseString2List(str, [], (list)ESCAPE_SEQUENCE);&lt;br /&gt;
    integer ParsedLen = llGetListLength(Parsed);&lt;br /&gt;
&lt;br /&gt;
    // Create a list of index values to work with.&lt;br /&gt;
    list Indices;&lt;br /&gt;
    // We start with room for 16 indices.&lt;br /&gt;
    integer IndicesLeft = 16;&lt;br /&gt;
&lt;br /&gt;
    string Token;&lt;br /&gt;
    integer Clipped;&lt;br /&gt;
    integer LastWasEscapeSequence = FALSE;&lt;br /&gt;
    // Work from left to right.&lt;br /&gt;
    integer i=0;&lt;br /&gt;
    for (; i &amp;lt; ParsedLen &amp;amp;&amp;amp; IndicesLeft &amp;gt; 0; ++i) {&lt;br /&gt;
        Token = llList2String(Parsed, i);&lt;br /&gt;
&lt;br /&gt;
        // If this is an escape sequence, just set the flag and move on.&lt;br /&gt;
        if (Token == ESCAPE_SEQUENCE) {&lt;br /&gt;
            LastWasEscapeSequence = TRUE;&lt;br /&gt;
        }&lt;br /&gt;
        else { // Token != ESCAPE_SEQUENCE&lt;br /&gt;
            // Otherwise this is a normal token.  Check its length.&lt;br /&gt;
            Clipped = FALSE;&lt;br /&gt;
            integer TokenLength = llStringLength(Token);&lt;br /&gt;
            // Clip if necessary.&lt;br /&gt;
            if (TokenLength &amp;gt; IndicesLeft) {&lt;br /&gt;
                TokenLength = llStringLength(Token = llGetSubString(Token, 0, IndicesLeft - 1));&lt;br /&gt;
                IndicesLeft = 0;&lt;br /&gt;
                Clipped = TRUE;&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                IndicesLeft -= TokenLength;&lt;br /&gt;
&lt;br /&gt;
            // Was the previous token an escape sequence?&lt;br /&gt;
            if (LastWasEscapeSequence) {&lt;br /&gt;
                // Yes, the first character is an escape character, the rest are normal.&lt;br /&gt;
                // This is the extended character.&lt;br /&gt;
                Indices += [llSubStringIndex(EXTENDED_INDEX, llGetSubString(Token, 0, 0)) + 95];&lt;br /&gt;
                &lt;br /&gt;
                // These are the normal characters.&lt;br /&gt;
                integer j=1;&lt;br /&gt;
                for (; j &amp;lt; TokenLength; ++j)&lt;br /&gt;
                {&lt;br /&gt;
                    Indices += [llSubStringIndex(gCharIndex, llGetSubString(Token, j, j))];&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else { // Normal string.&lt;br /&gt;
                // Just add the characters normally.&lt;br /&gt;
                integer j=0;&lt;br /&gt;
                for (; j &amp;lt; TokenLength; ++j)&lt;br /&gt;
                {&lt;br /&gt;
                    Indices += [llSubStringIndex(gCharIndex, llGetSubString(Token, j, j))];&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            // Unset this flag, since this was not an escape sequence.&lt;br /&gt;
            LastWasEscapeSequence = FALSE;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Use the indices to create grid positions.&lt;br /&gt;
    vector GridPos1 = GetGridPos( llList2Integer(Indices, 0), llList2Integer(Indices, 1) );&lt;br /&gt;
    vector GridPos2 = GetGridPos( llList2Integer(Indices, 2), llList2Integer(Indices, 3) );&lt;br /&gt;
    vector GridPos3 = GetGridPos( llList2Integer(Indices, 4), llList2Integer(Indices, 5) );&lt;br /&gt;
    vector GridPos4 = GetGridPos( llList2Integer(Indices, 6), llList2Integer(Indices, 7) );&lt;br /&gt;
    vector GridPos5 = GetGridPos( llList2Integer(Indices, 8), llList2Integer(Indices, 9) );&lt;br /&gt;
    vector GridPos6 = GetGridPos( llList2Integer(Indices, 10), llList2Integer(Indices, 11) );&lt;br /&gt;
    vector GridPos7 = GetGridPos( llList2Integer(Indices, 12), llList2Integer(Indices, 13) );&lt;br /&gt;
    vector GridPos8 = GetGridPos( llList2Integer(Indices, 14), llList2Integer(Indices, 15) );&lt;br /&gt;
    &lt;br /&gt;
    // Use these grid positions to display the correct textures/offsets.&lt;br /&gt;
    ShowChars(link,GridPos1, GridPos2, GridPos3, GridPos4, GridPos5, GridPos6, GridPos7, GridPos8);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
integer ConvertIndex(integer index) {&lt;br /&gt;
    // This converts from an ASCII based index to our indexing scheme.&lt;br /&gt;
    if (index &amp;gt;= 32) // &#039; &#039; or higher&lt;br /&gt;
        index -= 32;&lt;br /&gt;
    else { // index &amp;lt; 32&lt;br /&gt;
        // Quick bounds check.&lt;br /&gt;
        if (index &amp;gt; 15)&lt;br /&gt;
            index = 15;&lt;br /&gt;
&lt;br /&gt;
        index += 94; // extended characters&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return index;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
default { &lt;br /&gt;
    state_entry() &lt;br /&gt;
    { &lt;br /&gt;
        // Initialize the character index. &lt;br /&gt;
        ResetCharIndex();&lt;br /&gt;
        llMessageLinked(LINK_THIS, REGISTER_SLAVE, llGetScriptName() , NULL_KEY);  &lt;br /&gt;
    } &lt;br /&gt;
&lt;br /&gt;
   on_rez(integer num)&lt;br /&gt;
   {&lt;br /&gt;
      llResetScript();       &lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
    link_message(integer sender, integer channel, string data, key id) { &lt;br /&gt;
        if (channel == SLAVE_RECOGNIZED)&lt;br /&gt;
        {&lt;br /&gt;
            if (data == llGetScriptName())&lt;br /&gt;
            {&lt;br /&gt;
                gActive=TRUE;&lt;br /&gt;
            }&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
    &lt;br /&gt;
        else if (channel == SLAVE_DISPLAY) &lt;br /&gt;
        { &lt;br /&gt;
            if (!gActive)  &lt;br /&gt;
                return;&lt;br /&gt;
                &lt;br /&gt;
            list params=llCSV2List((string)id);&lt;br /&gt;
            if (llList2String(params, 1) != llGetScriptName())&lt;br /&gt;
                return;&lt;br /&gt;
            &lt;br /&gt;
            &lt;br /&gt;
            RenderString(llList2Integer(params, 0),data);&lt;br /&gt;
            return; &lt;br /&gt;
        } &lt;br /&gt;
    &lt;br /&gt;
       else if (channel == SLAVE_DISPLAY_EXTENDED) &lt;br /&gt;
       {&lt;br /&gt;
            if (!gActive)  &lt;br /&gt;
                return;&lt;br /&gt;
                &lt;br /&gt;
            list params=llCSV2List((string)id);&lt;br /&gt;
            if (llList2String(params, 1) != llGetScriptName())&lt;br /&gt;
                return;&lt;br /&gt;
                &lt;br /&gt;
            RenderExtended(llList2Integer(params, 0),data);&lt;br /&gt;
    }&lt;br /&gt;
        else if (channel == REMAP_INDICES) {&lt;br /&gt;
            // Parse the message, splitting it up into index values.&lt;br /&gt;
            list Parsed = llCSV2List(data);&lt;br /&gt;
            integer i;&lt;br /&gt;
            // Go through the list and swap each pair of indices.&lt;br /&gt;
            for (i = 0; i &amp;lt; llGetListLength(Parsed); i += 2) {&lt;br /&gt;
                integer Index1 = ConvertIndex( llList2Integer(Parsed, i) );&lt;br /&gt;
                integer Index2 = ConvertIndex( llList2Integer(Parsed, i + 1) );&lt;br /&gt;
&lt;br /&gt;
                // Swap these index values.&lt;br /&gt;
                string Value1 = llGetSubString(gCharIndex, Index1, Index1);&lt;br /&gt;
                string Value2 = llGetSubString(gCharIndex, Index2, Index2);&lt;br /&gt;
&lt;br /&gt;
                gCharIndex = llDeleteSubString(gCharIndex, Index1, Index1);&lt;br /&gt;
                gCharIndex = llInsertString(gCharIndex, Index1, Value2);&lt;br /&gt;
&lt;br /&gt;
                gCharIndex = llDeleteSubString(gCharIndex, Index2, Index2);&lt;br /&gt;
                gCharIndex = llInsertString(gCharIndex, Index2, Value1);&lt;br /&gt;
            }&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        else if (channel == RESET_INDICES) {&lt;br /&gt;
            // Restore the character index back to default settings.&lt;br /&gt;
            ResetCharIndex();&lt;br /&gt;
            return;&lt;br /&gt;
        }                 &lt;br /&gt;
       else if (channel == SLAVE_RESET)&lt;br /&gt;
        {&lt;br /&gt;
            ResetCharIndex();&lt;br /&gt;
            gActive=FALSE;&lt;br /&gt;
            llMessageLinked(LINK_THIS, REGISTER_SLAVE, llGetScriptName() , NULL_KEY);&lt;br /&gt;
        }&lt;br /&gt;
    }    &lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 16-Char MESH Prim Setup ==&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
//There really isn&#039;t a Prim Setup for these &lt;br /&gt;
//You can get a full perm 8 face plane mesh here for L$10&lt;br /&gt;
//https://marketplace.secondlife.com/p/Mesh-8-Faces-8x1/3014457 [1]&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
[https://marketplace.secondlife.com/p/Mesh-8-Faces-8x1/3014457 https://marketplace.secondlife.com/p/Mesh-8-Faces-8x1/3014457]&lt;br /&gt;
{{LSLC|Library}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:sort|XyzzyText 2.1}}&lt;/div&gt;</summary>
		<author><name>Traven Sachs</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Hippo&amp;diff=1163259</id>
		<title>Hippo</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Hippo&amp;diff=1163259"/>
		<updated>2012-02-17T19:59:26Z</updated>

		<summary type="html">&lt;p&gt;Traven Sachs: Added factoid about breedable virtual pet hippos in Second Life as well as Jira to have them added to marketplace.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Help|Glossary=*}}&lt;br /&gt;
The hippo is the unofficial Second Life Mascot.&lt;br /&gt;
&lt;br /&gt;
All started with [[User:Darwin Appleby|Darwin Appleby]]&#039;s [http://forums-archive.secondlife.com/120/24/1727/1.html thread] about hippo. Progressively, hippo overran the grid :&lt;br /&gt;
* Hippo could be found in the [[User:Hikaru Yamamoto|Hikaru Yamamoto]] &#039;s zoo.&lt;br /&gt;
* Hippo statues and hippo avatars became very popular in Second Life.&lt;br /&gt;
* Hippo mania touched Lindens themselves (read this [http://forums-archive.secondlife.com/3/b4/4658/1.html Example]).&lt;br /&gt;
* You could see the word hippos in the menus/lists while they where still loading, on some occasions.[http://forums.secondlife.com/showpost.php?p=871223]&lt;br /&gt;
{{Quotation|A way I&#039;ve found to reproduce this more easily at times is to artificially induce HEAVY packet loss by downloading and doing lots of other things on your Net connection while on SL. Sometimes when there&#039;s a loading delay, the (hippos) will shine their curried favors on you again.|Torley(before he became a Linden)|02-01-2006, 12:00 AM| SL Forum}}&lt;br /&gt;
* An SL National Hippo Day was declared for February 15th.&lt;br /&gt;
* An hippo-easter-egg was added to the viewer (press {{KeyCombo|ctrl=*|alt=*|shift=*|H}})!{{footnote|2=The Easter egg has been re-added to viewer 2. See VWR-11118|1=The Easter egg has been re-added to viewer 2. See {{Jira|VWR-11118}}}} &lt;br /&gt;
&lt;br /&gt;
Whenever bugs were found, hippos would be unleashed and they would skip through SL stopping bugs and evil gnomes (who planted bugs)!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Oh the great hippo! Stomper of gnomes! Savior of all Second Life! How we worship thee!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hippos are now a breedable pet animal in Second Life!&lt;br /&gt;
* [https://marketplace.secondlife.com/p/Precious-Hippos-Starter-Kit/3098885 Precious Hippos]&lt;br /&gt;
&lt;br /&gt;
Vote for the JIRA to get them added as an actual category on the marketplace.  See [https://jira.secondlife.com/browse/WEB-4495 Jira WEB-4495]&lt;br /&gt;
&lt;br /&gt;
== Footnotes == &lt;br /&gt;
{{footnotes}}&lt;br /&gt;
==See Also ==&lt;br /&gt;
* [[Hippotropolis]]&lt;br /&gt;
* [[Hippo Awards]]&lt;br /&gt;
* [http://secondlife.wikia.com/wiki/Hippo Second Life Wikia: Hippo]&lt;br /&gt;
* [http://lslwiki.net/lslwiki/wakka.php?wakka=Hippo LSLWiki.net: Hippo]&lt;br /&gt;
* [http://forums.secondlife.com/showthread.php?t=9153 Forum Link: Febuary 15th declared SL National Hippo Day]&lt;br /&gt;
[[Category:Culture]]&lt;/div&gt;</summary>
		<author><name>Traven Sachs</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlTransferLindenDollars&amp;diff=1162023</id>
		<title>LlTransferLindenDollars</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlTransferLindenDollars&amp;diff=1162023"/>
		<updated>2012-01-24T19:10:36Z</updated>

		<summary type="html">&lt;p&gt;Traven Sachs: Added notation to script comments regarding L$ display results on the viewer.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function&lt;br /&gt;
|inject-2={{LSL_Function/permission|PERMISSION_DEBIT|grant=the owner}}{{LSL Function/avatar|destination}}&lt;br /&gt;
|func_id=?|func_sleep=0.0|func_energy&lt;br /&gt;
|func=llTransferLindenDollars&lt;br /&gt;
|return_type=key|return_text=used in a matching [[transaction_result]] event for the success or failure of the transfer. If the transaction is successful, this key will show in the [https://secondlife.com/my/account/transactions.php transaction history].&lt;br /&gt;
|p1_type=key|p1_name=destination&lt;br /&gt;
|p2_type=integer|p2_name=amount|p2_desc=number of L$, must be greater than zero, (&#039;&#039;&#039;amount&#039;&#039;&#039; &amp;amp;gt; 0)&lt;br /&gt;
|func_desc=Transfer &#039;&#039;&#039;amount&#039;&#039;&#039; of L$ money from script owner to &#039;&#039;&#039;destination&#039;&#039;&#039; avatar.&lt;br /&gt;
|func_footnote=If you aren&#039;t going to use the return value or the resulting [[transaction_result]] event consider using [[llGiveMoney]] instead of this function.&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*An object cannot pay another object.&lt;br /&gt;
*Objects deeded to groups cannot give money (the permission cannot be granted).&lt;br /&gt;
*Use is limited to 30 payments in a 30 second interval for all scripts owned by that resident on a region. Sustained overage will produce a script error and halt payments while the rate remains excessive. Historically, faster payments have failed intermittently.&lt;br /&gt;
*Once a script has the [[PERMISSION_DEBIT]] permission it can empty an account of L$.&lt;br /&gt;
**Fraud &amp;amp; theft are both {{LL|TOS}} violations and crimes. Misuse this function and you risk being banned and legal action. In addition LL may freeze the accounts of anyone the money is transferred to and restore it to it&#039;s rightful owners. This may involve retrieving it from third party exchanges and accounts on those exchanges being frozen. The system is not designed to be friendly towards fraud.&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;/*&lt;br /&gt;
* A simple piggy bank, anyone can pay in money and anyone can click it to get money out.&lt;br /&gt;
*&lt;br /&gt;
* TO DO:&lt;br /&gt;
*  - handle different errors differently based upon CSV output&lt;br /&gt;
*&lt;br /&gt;
* original by Strife Onizuka&lt;br /&gt;
*&lt;br /&gt;
* modified by Kireji Haiku:&lt;br /&gt;
*  - because weird things happen in LSL when using more than one state&lt;br /&gt;
*  - one should say thanks when being payed&lt;br /&gt;
*  - added 0 L$ payment when bank is empty, to show failed payment notifications&lt;br /&gt;
*  - added target UUID and L$ amount into transaction history, too&lt;br /&gt;
*&lt;br /&gt;
* Note from Traven Sachs:&lt;br /&gt;
* In testing this script using an account with no funds - it has been noted that when the INSUFFICIENT FUNDS&lt;br /&gt;
* error occurs on Transaction Results that the Display of L$ on the account attempting to transfer funds will&lt;br /&gt;
* read as -1 on some viewers, even if the account has funds less than the transaction amount available to it.&lt;br /&gt;
* (i.e. if account has 7L and attempts to pay 10L the viewer display will read -1 L until the next L$ transaction&lt;br /&gt;
* occurs that is actually valid.  Don&#039;t know if this is a viewer glitch or back end glitch but felt it should&lt;br /&gt;
* be mentioned.)&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
integer hasBeenGrantedDebitPerms;&lt;br /&gt;
&lt;br /&gt;
integer amountGivenAwayOnClick;&lt;br /&gt;
integer totalLindenDollarsInBank;&lt;br /&gt;
&lt;br /&gt;
list listOfTransactionRecords;&lt;br /&gt;
&lt;br /&gt;
update_floattext()&lt;br /&gt;
{&lt;br /&gt;
    string floattext = &amp;quot;I have no L$ to give away :(&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    if (amountGivenAwayOnClick &amp;lt;= totalLindenDollarsInBank&lt;br /&gt;
        &amp;amp;&amp;amp; hasBeenGrantedDebitPerms)&lt;br /&gt;
    {&lt;br /&gt;
        floattext = &amp;quot;I have L$ &amp;quot;+ (string)totalLindenDollarsInBank + &amp;quot; to give away!&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    llSetText(floattext, &amp;lt;1.0, 1.0, 1.0&amp;gt;, (float)TRUE);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer start_param)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    changed(integer change)&lt;br /&gt;
    {&lt;br /&gt;
        if (change &amp;amp; CHANGED_OWNER)&lt;br /&gt;
            llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        // how much money to give away each time?&lt;br /&gt;
&lt;br /&gt;
        amountGivenAwayOnClick = 10;&lt;br /&gt;
&lt;br /&gt;
        // how much money do we initially &amp;quot;have&amp;quot; in the bank?&lt;br /&gt;
&lt;br /&gt;
        totalLindenDollarsInBank = 50;&lt;br /&gt;
&lt;br /&gt;
        update_floattext();&lt;br /&gt;
&lt;br /&gt;
        // request permissions to give away money, otherwise this won&#039;t work&lt;br /&gt;
&lt;br /&gt;
        key owner = llGetOwner();&lt;br /&gt;
        llRequestPermissions(owner, PERMISSION_DEBIT);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer num_detected)&lt;br /&gt;
    {&lt;br /&gt;
        // if the script has been granted debit permissions&lt;br /&gt;
        if (hasBeenGrantedDebitPerms)&lt;br /&gt;
        {&lt;br /&gt;
            key id = llDetectedKey(0);&lt;br /&gt;
&lt;br /&gt;
            // if we have at least as much money in the bank as we would be giving away&lt;br /&gt;
            if (amountGivenAwayOnClick &amp;lt;= totalLindenDollarsInBank)&lt;br /&gt;
            {&lt;br /&gt;
                // we add the transaction ID, the target avatar UUID and the L$ amount to a list&lt;br /&gt;
                listOfTransactionRecords = (listOfTransactionRecords = []) + listOfTransactionRecords + llTransferLindenDollars(id, amountGivenAwayOnClick) + id + amountGivenAwayOnClick;&lt;br /&gt;
&lt;br /&gt;
                // we take the money from the bank&lt;br /&gt;
                totalLindenDollarsInBank -= amountGivenAwayOnClick;&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                // will not work, cause paying 0 L$!&lt;br /&gt;
                // will send a &amp;quot;failed payment&amp;quot; notification!&lt;br /&gt;
                // only for DEMO purposes, usually you should do something like:&lt;br /&gt;
                // llSay(PUBLIC_CHANNEL, &amp;quot;Sorry, no money in the bank!&amp;quot;);&lt;br /&gt;
                // instead !!!&lt;br /&gt;
&lt;br /&gt;
                listOfTransactionRecords = (listOfTransactionRecords = []) + listOfTransactionRecords + llTransferLindenDollars(id, 0) + id + 0;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        update_floattext();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    money(key id, integer amount)&lt;br /&gt;
    {&lt;br /&gt;
        // someone payed the bank!&lt;br /&gt;
&lt;br /&gt;
        totalLindenDollarsInBank += amount;&lt;br /&gt;
&lt;br /&gt;
        // be nice, say thanks&lt;br /&gt;
        llInstantMessage(id, &amp;quot;Thanks a bunch!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        update_floattext();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    transaction_result(key id, integer success, string data)&lt;br /&gt;
    {&lt;br /&gt;
        integer index = llListFindList(listOfTransactionRecords, [id]);&lt;br /&gt;
&lt;br /&gt;
        //if the ID was found in our list&lt;br /&gt;
        if (~index)&lt;br /&gt;
        {&lt;br /&gt;
            // if payment failed, give notice&lt;br /&gt;
            if (!success)&lt;br /&gt;
            {&lt;br /&gt;
                key targetUUID = llList2Key(listOfTransactionRecords, index + 1);&lt;br /&gt;
                integer amountNotPayed = llList2Integer(listOfTransactionRecords, index + 2);&lt;br /&gt;
&lt;br /&gt;
                llSay(PUBLIC_CHANNEL, &amp;quot;\n \nSorry, somehow the transaction has failed!&amp;quot;&lt;br /&gt;
                    + &amp;quot;\ntransaction ID: &amp;quot; + (string)id&lt;br /&gt;
                    + &amp;quot;\ntarget UUID: &amp;quot; + (string)targetUUID&lt;br /&gt;
                    + &amp;quot;\namount not payed: &amp;quot; + (string)amountNotPayed);&lt;br /&gt;
&lt;br /&gt;
                // if the amount that wasn&#039;t payed is more than 0 L$, put the money back into the bank&lt;br /&gt;
                if (amountNotPayed)&lt;br /&gt;
                    totalLindenDollarsInBank += amountNotPayed;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            // remove the entry again [transaction ID, target UUID, L$ amount]&lt;br /&gt;
            listOfTransactionRecords = llDeleteSubList(listOfTransactionRecords, index, index + 2);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // total amount could have changed again...&lt;br /&gt;
        update_floattext();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    run_time_permissions (integer perm)&lt;br /&gt;
    {&lt;br /&gt;
        // when owner granted debit perms, enable piggy bank functionality&lt;br /&gt;
        if(perm &amp;amp; PERMISSION_DEBIT)&lt;br /&gt;
            hasBeenGrantedDebitPerms = TRUE;&lt;br /&gt;
&lt;br /&gt;
        update_floattext();&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions=&lt;br /&gt;
{{LSL DefineRow||[[llGiveMoney]]}}&lt;br /&gt;
{{LSL DefineRow||[[llSetPayPrice]]}}&lt;br /&gt;
|also_events=&lt;br /&gt;
{{LSL DefineRow||[[transaction_result]]|}}&lt;br /&gt;
{{LSL DefineRow||[[money]]|}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes=*released on main server channel on 3-Dec-2011&lt;br /&gt;
|cat1=Avatar&lt;br /&gt;
|cat2=Money&lt;br /&gt;
|cat3=Transfer&lt;br /&gt;
|cat4&lt;br /&gt;
|cat5&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Traven Sachs</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Input_number_of_seconds,_get_a_string_back_that_shows_days,_hours,_minutes,_seconds&amp;diff=1134783</id>
		<title>Input number of seconds, get a string back that shows days, hours, minutes, seconds</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Input_number_of_seconds,_get_a_string_back_that_shows_days,_hours,_minutes,_seconds&amp;diff=1134783"/>
		<updated>2011-02-19T19:06:45Z</updated>

		<summary type="html">&lt;p&gt;Traven Sachs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;lsl&amp;gt;  /*&lt;br /&gt;
  *  Submitted Opensource under GPL 3.0&lt;br /&gt;
  *  2010 Fire Centaur&lt;br /&gt;
  *  Description: &lt;br /&gt;
  *  &lt;br /&gt;
  *  Input number of seconds, function will return a string with Days, Hours, Minutes, Seconds&lt;br /&gt;
  *  Corrections by Traven Sachs to Display Correct Output allowing for 0 seconds or more than 1 day &lt;br /&gt;
  *     and improve readability with whitespace 19-Feb-2011&lt;br /&gt;
  */&lt;br /&gt;
&lt;br /&gt;
string getTime(integer secs)&lt;br /&gt;
{&lt;br /&gt;
    string timeStr;&lt;br /&gt;
    integer days;&lt;br /&gt;
    integer hours;&lt;br /&gt;
    integer minutes;&lt;br /&gt;
 &lt;br /&gt;
    if (secs&amp;gt;=86400)&lt;br /&gt;
    {&lt;br /&gt;
        days=llFloor(secs/86400);&lt;br /&gt;
        secs=secs%86400;&lt;br /&gt;
        timeStr+=(string)days+&amp;quot; day&amp;quot;;&lt;br /&gt;
        if (days&amp;gt;1) &lt;br /&gt;
        {&lt;br /&gt;
            timeStr+=&amp;quot;s&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
        if(secs&amp;gt;0) &lt;br /&gt;
        {&lt;br /&gt;
            timeStr+=&amp;quot;, &amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    if(secs&amp;gt;=3600)&lt;br /&gt;
    {&lt;br /&gt;
        hours=llFloor(secs/3600);&lt;br /&gt;
        secs=secs%3600;&lt;br /&gt;
        timeStr+=(string)hours+&amp;quot; hour&amp;quot;;&lt;br /&gt;
        if(hours!=1)&lt;br /&gt;
        {&lt;br /&gt;
            timeStr+=&amp;quot;s&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
        if(secs&amp;gt;0)&lt;br /&gt;
        {&lt;br /&gt;
            timeStr+=&amp;quot;, &amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    if(secs&amp;gt;=60)&lt;br /&gt;
    {&lt;br /&gt;
        minutes=llFloor(secs/60);&lt;br /&gt;
        secs=secs%60;&lt;br /&gt;
        timeStr+=(string)minutes+&amp;quot; minute&amp;quot;;&lt;br /&gt;
        if(minutes!=1)&lt;br /&gt;
        {&lt;br /&gt;
            timeStr+=&amp;quot;s&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
        if(secs&amp;gt;0)&lt;br /&gt;
        {&lt;br /&gt;
            timeStr+=&amp;quot;, &amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    if (secs&amp;gt;0)&lt;br /&gt;
    {&lt;br /&gt;
        timeStr+=(string)secs+&amp;quot; second&amp;quot;;&lt;br /&gt;
        if(secs!=1)&lt;br /&gt;
        {&lt;br /&gt;
            timeStr+=&amp;quot;s&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    return timeStr;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;/div&gt;</summary>
		<author><name>Traven Sachs</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Input_number_of_seconds,_get_a_string_back_that_shows_days,_hours,_minutes,_seconds&amp;diff=1134782</id>
		<title>Input number of seconds, get a string back that shows days, hours, minutes, seconds</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Input_number_of_seconds,_get_a_string_back_that_shows_days,_hours,_minutes,_seconds&amp;diff=1134782"/>
		<updated>2011-02-19T18:59:01Z</updated>

		<summary type="html">&lt;p&gt;Traven Sachs: Corrections by Traven Sachs to Display Correct Output allowing for 0 seconds or more than 1 day 19-Feb-2011&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;lsl&amp;gt;  /*&lt;br /&gt;
  *  Submitted Opensource under GPL 3.0&lt;br /&gt;
  *  2010 Fire Centaur&lt;br /&gt;
  *  Description: &lt;br /&gt;
  *  &lt;br /&gt;
  *  Input number of seconds, function will return a string with Days, Hours, Minutes, Seconds&lt;br /&gt;
  *  Corrections by Traven Sachs to Display Correct Output allowing for 0 seconds or more than 1 day 19-Feb-2011&lt;br /&gt;
  */&lt;br /&gt;
&lt;br /&gt;
string getTime(integer secs){&lt;br /&gt;
    string timeStr;&lt;br /&gt;
    integer days;&lt;br /&gt;
    integer hours;&lt;br /&gt;
    integer minutes;&lt;br /&gt;
 &lt;br /&gt;
    if (secs&amp;gt;=86400){&lt;br /&gt;
        days=llFloor(secs/86400);&lt;br /&gt;
        secs=secs%86400;&lt;br /&gt;
        timeStr+=(string)days+&amp;quot; day&amp;quot;;&lt;br /&gt;
        if (days&amp;gt;1) {timeStr+=&amp;quot;s&amp;quot;;}&lt;br /&gt;
        if(secs&amp;gt;0) {timeStr+=&amp;quot;, &amp;quot;;}&lt;br /&gt;
    }&lt;br /&gt;
    if(secs&amp;gt;=3600){&lt;br /&gt;
        hours=llFloor(secs/3600);&lt;br /&gt;
        secs=secs%3600;&lt;br /&gt;
        timeStr+=(string)hours+&amp;quot; hour&amp;quot;;&lt;br /&gt;
        if(hours!=1){timeStr+=&amp;quot;s&amp;quot;;}&lt;br /&gt;
        if(secs&amp;gt;0){timeStr+=&amp;quot;, &amp;quot;;}&lt;br /&gt;
    }&lt;br /&gt;
    if(secs&amp;gt;=60){&lt;br /&gt;
        minutes=llFloor(secs/60);&lt;br /&gt;
        secs=secs%60;&lt;br /&gt;
        timeStr+=(string)minutes+&amp;quot; minute&amp;quot;;&lt;br /&gt;
        if(minutes!=1){timeStr+=&amp;quot;s&amp;quot;;}&lt;br /&gt;
    }&lt;br /&gt;
    if (secs&amp;gt;0){&lt;br /&gt;
    timeStr+=&amp;quot;, &amp;quot;;&lt;br /&gt;
    timeStr+=(string)secs+&amp;quot; second&amp;quot;;&lt;br /&gt;
    if(secs!=1){timeStr+=&amp;quot;s&amp;quot;;}&lt;br /&gt;
    }&lt;br /&gt;
    return timeStr;&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;/div&gt;</summary>
		<author><name>Traven Sachs</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=SL_Certification/List_of_Resident_Participants&amp;diff=18535</id>
		<title>SL Certification/List of Resident Participants</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=SL_Certification/List_of_Resident_Participants&amp;diff=18535"/>
		<updated>2007-04-26T15:33:02Z</updated>

		<summary type="html">&lt;p&gt;Traven Sachs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Certification]]&lt;br /&gt;
Add yourself to the &#039;&#039;&#039;bottom&#039;&#039;&#039; of this list using the following Wiki code:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;* ~~~&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[User:Ceera Murakami|Ceera Murakami]] (Fox and Ground Construction Company) Texture Artist&lt;br /&gt;
* [[User:Elle74 Zaftig|Elle74 Zaftig]] (Bellissima!/Shoppe74) build/model/textures&lt;br /&gt;
* [[User:Keiki Lemieux|Keiki Lemieux]] (HUDDLES Games &amp;amp; Gadgets) Building, Scripting, Animations, Textures&lt;br /&gt;
* [[User:Tre Giles|Tre Giles]] (GiTech/Action Village Paintball) Building, Scripting, Animation, Photography&lt;br /&gt;
* [[User:Alexander Regent|Alexander Regent]] (MageTech LLC) Scripting, website integration, cellphone integration, in-world building&lt;br /&gt;
* [[User:Sitearm Madonna|Sitearm Madonna]] (Siterma): Sim Scale Project Planning and Management; Structural Builds and Simulator Performance Management; Social Builds and Community Growth Management; Modeling - Architecture, Terraforming, Waterscaping, Landscaping, Soundscaping&lt;br /&gt;
* [[User:Hugo Dalgleish|Hugo Dalgleish]]&lt;br /&gt;
* [[User:Kenn Nilsson|Kenn Nilsson]] (NDE)&lt;br /&gt;
* [[User:Ravanne Sullivan|Ravanne Sullivan]] (Ravanne&#039;s Dance Poles and Animations) Animations and Scripting&lt;br /&gt;
* [[User:Fox Diller|Fox Diller]] (Crystal Studio/Magrathean Technologies) Anything Second Life.&lt;br /&gt;
* [[User:MSo Lambert|MSo Lambert]] ([http://www.synthetik-on.net/ Synthetik]) Scripting, Web Integration, project management&lt;br /&gt;
* [[User:Rael Delcon|Rael Delcon]]&lt;br /&gt;
* [[User:Dytska Vieria|Dytska Vieria]] (residential design/builds)&lt;br /&gt;
* [[User:Skye McArdle|Skye McArdle]] - Modeling, Animation, Textures, AV Customization&lt;br /&gt;
* [[User:Eladon Galsworthy|Eladon Galsworthy]] (PondLife - building and scripting)&lt;br /&gt;
* [[User:Oz Spade|Oz Spade]]&lt;br /&gt;
* [[User:Max Case|Max Case]]&lt;br /&gt;
* [[User:Newfie Pendragon|Newfie Pendragon]] (Reality Check, LSL Scripting)&lt;br /&gt;
* [[User:Gigs Taggart|Gigs Taggart]]&lt;br /&gt;
* [[User:Peekay Semyorka|Peekay Semyorka]]&lt;br /&gt;
* [[User:Osgeld Barmy|Osgeld Barmy]]  (biulding textures lsl)&lt;br /&gt;
* [[User:Nargus Asturias|Nargus Asturias]] (Avatar building, animations, scripts)&lt;br /&gt;
* [[User:ForestMist Skjellerup|ForestMist Skjellerup]]&lt;br /&gt;
* [[User:Rraven Moonlight|Rraven Moonlight]] (Terraforming Raw files, Texture developer, Large Scale Architectural Builds)&lt;br /&gt;
* [[User:Xylo Quisling|Xylo Quisling]]&lt;br /&gt;
* [[User:Thunderclap Morgridge|Thunderclap Morgridge]] (Texture artist, and nascent builder)&lt;br /&gt;
* [[User:Hiro Pendragon|Hiro Pendragon]] (CTO, Infinite Vision Media) LSL scripting, modeling&lt;br /&gt;
* [[User:Ethan Therian|Ethan Therian]] (Creative Director, Infinite Vision Media) modeling, texturing&lt;br /&gt;
* [[User:Ciemaar Flintoff|Ciemaar Flintoff]] (associate, Infinite Vision Media) lsl scripting, web-to-SL-to-web scripting&lt;br /&gt;
* [[User:Nimrodina Wayne|Nimrodina Wayne]] (build, animate, machinima)&lt;br /&gt;
* [[User:Lias Leandros|Lias Leandros]] (VooDoo Corp.)Sim Scale Project Planning and Management; Social Builds and Community Growth Management&lt;br /&gt;
* [[User:Erin Talamasca|Erin Talamasca]]&lt;br /&gt;
* [[User:Till Stirling|Till Stirling]] (Scripter, Builder, Consultant)&lt;br /&gt;
* [[User:Kri Ayakashi|Kri Ayakashi]] (AyakashiTEC) - LSL Scripting, Web2.0 integration, distributed programming (C/C++/C#, Python), in-world building, consultancy&lt;br /&gt;
* [[User:Alison Wheels|Alison Wheels]] ([http://secondlife.creative.org.uk/ Creative Organisation]) Scripting, FL/SL Integration issues, construction, terraforming, design&lt;br /&gt;
* [[User:FlipperPA Peregrine|FlipperPA Peregrine]] (Peregrine Salon/ESC) - LSL Scripting, Web integration, lots of other stuff. Creator of SLBoutique.com and SLTrivia.com.&lt;br /&gt;
* [[User:Strife Onizuka|Strife Onizuka]] (Scripter, Builder, Consultant)&lt;br /&gt;
* [[User:Porky Gorky|Porky Gorky]] - Hydro Homes : Prefabricated &amp;amp; customised building &amp;amp; architectural design.&lt;br /&gt;
* [[User:Bru Yang|Bru Yang]]&lt;br /&gt;
* [[User:Dirk Talamasca|Dirk Talamasca]] (Building, Custom Textures, Land/Estate Management. Internet Abuse Remediation, Sim Scale Layout, Planning and Development)&lt;br /&gt;
* [[User:Aimee Weber|Aimee Weber]]&lt;br /&gt;
* [[User:Banana Stein|Banana Stein]] (SL Brand) Builder, Textures, Sim Scale Project&lt;br /&gt;
* [[User:Linnian Sugar|Linnian Sugar]] (*Lollipop Shop owner* Builder, Clothing and textures, scripting, animations)&lt;br /&gt;
* [[User:Siobhan Taylor|Siobhan Taylor]] Building, Scripting.&lt;br /&gt;
* [[User:Taco Rubio|Taco Rubio]] (Media Management) &lt;br /&gt;
* [[User:RobbyRacoon Olmstead|RobbyRacoon Olmstead]] (Scripting, Building, C:SI Developer)&lt;br /&gt;
* [[User:Dnali Anabuki|Dnali Anabuki]] (Structure,Process,Organizing of Cert) Satorifilmservices.com&lt;br /&gt;
* [[User:Detect Surface|Detect Surface]] - (**D&amp;amp;D Creative Lab/The Brain Game/City of Abaddon** Building, Texturing, Skins, Texture-Mapping/Zoning, AV Design, Clothing, Sim Design and Construction, Architecture, Weapons, Vehicles, Furniture, Animation, Graphic Design, Artist and Pretty Flower Arranging.)&lt;br /&gt;
* [[User:Meade Paravane|Meade Paravane]] (Script monkey, Builder)&lt;br /&gt;
* [[User:Orange Montagne|Orange Montagne]]&lt;br /&gt;
* [[User:Joshua Nightshade|Joshua Nightshade]] (Builder, avatar design - primarily smaller-than-normal avatars)&lt;br /&gt;
* [[User:Zorena Deckard|Zorena Deckard]] (builder,textures,modeling)&lt;br /&gt;
* [[User:Bartiloux Desmoulins|Bartiloux Desmoulins]] (Scripting, modeling and animations)&lt;br /&gt;
* [[User:Ravenelle Zugzwang|Ravenelle Zugzwang]]&lt;br /&gt;
* [[User:Little Penguin|Little Penguin]] Building, Scripting&lt;br /&gt;
* [[User:Pol Tabla|Pol Tabla]]&lt;br /&gt;
* [[User:Jade Opel|Jade Opel]] (Brides &amp;amp; Blooms by Jade Opel)  Building, terra-forming, textures, particles, modeling&lt;br /&gt;
* [[User:Auron Havercamp|Auron Havercamp]] ([http://www.kenthavercamp.com/ Kent-Havercamp Enterprises, Ltd.]) - Scripting, Web Interaction, Data Storage&lt;br /&gt;
* [[User:Schuyler Kent|Schuyler Kent]] ([http://www.kenthavercamp.com/ Kent-Havercamp Enterprises, Ltd.]) - Building, Scripting, Consulting&lt;br /&gt;
* [[User:Vincent Nacon|Vincent Nacon]] (all above)&lt;br /&gt;
* [[User:Aradia Aridian|Aradia Aridian]] (Modeling, Land/Estate Management, Business Management, Marketing to the Virtual Customer)&lt;br /&gt;
* [[User:Scarlet Singer|Scarlet Singer]] (Textures/Graphics) &amp;lt;3&lt;br /&gt;
* [[User:Will Webb|Will Webb]]&lt;br /&gt;
* [[Cocoanut Koala]]  (Coco&#039;s Cottages) Builder&lt;br /&gt;
* Illya Sullivan&lt;br /&gt;
*[[User:Frans Charming|Frans Charming]] ([http://www.thevesuviusgroup.com The Vesuvius Group])Project Planning and Management, 3D Modeling/Building, Scripting, Texturing, etc&lt;br /&gt;
* [[User:Nomasha Syaka|Nomasha Syaka]] build/model/textures&lt;br /&gt;
*[[User:Rhiannon Chatnoir|Rhiannon Chatnoir]] ([http://www.thevesuviusgroup.com The Vesuvius Group])Creative Director of The Vesuvius Group (Project Management, Planning, Textures, Terraforming, machinima), also SL and web dev for Global Kids, Inc. and a RL professional graphic designer.&lt;br /&gt;
* [[User:Shockwave Yareach|Shockwave Yareach]] (Textures/Scripting/Building)&lt;br /&gt;
* [[User:Rebel Television|Rebel Television]] ([http://www.slexchange.com/modules.php?name=Marketplace&amp;amp;file=item&amp;amp;ItemID=147428 Airfoil]) Scripting, Animation, Vehicles, Avatars, Building, In-world RSS Feed Displays&lt;br /&gt;
* [[User:Storm Thunders|Storm Thunders]]&lt;br /&gt;
* [[Rocky Merosi]] (Objects, Furnishings/Interior Design, Weapons and Vehicles, Asset Managment, Movement, Attachments, Setting Properties, Communications)&lt;br /&gt;
*[[User:Moriz Gupte|Moriz Gupte]] ([http://www.play2train.org Play2Train])Producer, Scripter, Builder SL educator&lt;br /&gt;
*([http://homepage.mac.com/salazarjack/ Salazar Jack]) - Kahruvel Design - Environments, Landscapes, Forest Preservation, Terraforming, Architecture, Archeological Restoration, Furnishings/Interior Design, Objects, Textures&lt;br /&gt;
*[[User:Raven Pennyfeather|Raven Pennyfeather]] Owner/operator for House of RFyre LLC,clothing and avatar development, textures building, business analyst, gragphic design.&lt;br /&gt;
*[[User:Thraxis Epsilon|Thraxis Epsilon]] (Resume in Profile)&lt;br /&gt;
*[[User:Angelica Puff|Angelica Puff]] (Communications, External &amp;lt;-&amp;gt; Inworld data, Asset Management)&lt;br /&gt;
*[[User:Jeff Kelley|Jeff Kelley]] (Communications, Networking, Display, Data storage &amp;amp; access)&lt;br /&gt;
*[[User:Ace Albion|Ace Albion]] (Ace&#039;s Spaces)  prefab builder&lt;br /&gt;
*[[User:SunShine Kukulcan|SunShine Kukulcan]] (Mercury Dev Studios - Music and Media Services, Sim planning)&lt;br /&gt;
*[[User:Klink Epsilon|Klink Epsilon]] (Mercury Dev Studios - Builder, Custom Textures, Sim Design and planning, Media Services)&lt;br /&gt;
*[[User:Parker McTeague|Parker McTeague]] (BLIP) building, textures&lt;br /&gt;
*[[Demian Caldera]] Architecture, Furnishings/Interior Design, Objects, Landscaping, Terra Forming, Event Organizing, Event Set Building.&lt;br /&gt;
*[[User:Rainbow Drake|Rainbow Drake]] Director of Education - [http://raindancer.ca/NCI New Citizens Incorporated]&lt;br /&gt;
*[[User:Kamael Xevious|Kamael Xevious]] - Radio Babylonia/Batak Island Traders - Architecture, Furnishings and Interior Design, Media, Community Development and Region Construction, Education.&lt;br /&gt;
*[[User:Pipe Hesse|Pipe Hesse]] Scripting, Building&lt;br /&gt;
* [[User:Abramelin Wolfe|Abramelin Wolfe]] (Abramelin Studios Ltd / Abranimations) script/build/texture/animation/mocap/web integration&lt;br /&gt;
* [[User:katykiwi Moonflower|katykiwi Moonflower]] interior design/furnishings/building/texturing/terraforming&lt;br /&gt;
*[[User:Jade Jensen|Jade Jensen]] (Jaded Visions) Clothing Design, Avatar Creation/Design, Texturing, Graphics Design&lt;br /&gt;
*[[Darien Caldwell]] Builder/Scripter&lt;br /&gt;
*[[User:Azrazael Dhara|Azrazael Dhara]] Building, Terraforming, Sim Design, Landscaping, Instructing, Photography&lt;br /&gt;
*[[User:Andreas Isachenko|Andreas Isachenko]] Building, Scripting, DB access&lt;br /&gt;
*[[User:Jason Keegan|Jason Keegan]] (K-tech) Scripting&lt;br /&gt;
*[[User:Gaius Goodliffe|Gaius Goodliffe]] (Second Skies) Vehicles, scripting, back-end server/website integration&lt;br /&gt;
*[[User:Pericat Aquitaine|Pericat Aquitaine]] (Elf Harbour Boatyard) Vehicles, scripting, terraforming, general building&lt;br /&gt;
*[[User:Karsten Rutledge|Karsten Rutledge]] (Play2Train/K.R. Engineering) Scripting, building.&lt;br /&gt;
*[[User:Bubba Biberman|Bubba Biberman]] Building, textures, machinima&lt;br /&gt;
*[[User:Kerian Bunin|Kerian Bunin]] (uʍop əpı̣sdn) Building, Scripting, Estate Management &lt;br /&gt;
*[[User:Tsukasa Keiko|Tsukasa Keiko]] Building, Scripting&lt;br /&gt;
*[[User:Morph Wollongong|Morph Wollongong]] Gadgets, Scripting&lt;br /&gt;
*[[User:Ordinal Malaprop|Ordinal Malaprop]] - scripting, some building&lt;br /&gt;
*[[User:Donnagh McDonnagh|Donnagh McDonnagh]] - Undergraduate education (School of Communication), machinima, scripting, general building, avatar skins/clothes, 3d textures, animation, web integration, vehicles, huds, event management, orientation, inworld collaboration&lt;br /&gt;
*[[User:Able Whitman|Able Whitman]] - scripting, some building&lt;br /&gt;
*[[User:Adri Saarinen|Adri Saarinen]] - ([http://www.metaversatility.com Metaversatility]) scripting, building, presence development&lt;br /&gt;
*[[User:Curious Rousselot|Curious Rousselot]] - Scripting, Building&lt;br /&gt;
*[[User:otakup0pe Neumann|otakup0pe Neumann]] - Pleiades Consulting &amp;amp; libsecondlife. Rich Educational Content, tech integration, libsl powered services&lt;br /&gt;
*[[User:Damek Tretiak|Damek Tretiak]] - ([http://www.tretiakmedia.com Tretiak Media])/([http://www.slquery.com SLQuery.com]) scripting, building, project management&lt;br /&gt;
* [[User:Jacques Groshomme|Jacques Groshomme]] - Building/Scripting&lt;br /&gt;
* [[User:Iris Bourdeille|Iris Bourdeille]] - Building/Scripting/Texturing/Animation&lt;br /&gt;
* [[User:Fallon Winnfield|Fallon Winnfield]] - ([http://www.centric.com Centric])/([http://www.secondtalk.com Second Talk]) - Business development, building, scripting&lt;br /&gt;
* [[User:Adam Rakosi|Adam Rakosi]] - ([http://www.centric.com Centric])/([http://www.secondtalk.com Second Talk]) - Building/Scripting&lt;br /&gt;
* [[User:Neko Longduk|Neko Longduk]] - ([http://www.centric.com Centric])/([http://www.secondtalk.com Second Talk]) - Business Development, scripting&lt;br /&gt;
* [[User:Weasel Gough|Weasel Gough]] - ([http://www.centric.com Centric])/([http://www.secondtalk.com Second Talk]) - Building/Scripting/Texturing/Animation&lt;br /&gt;
* [[User:Chime Bellman|Chime Bellman]] strategy/build/model/promote&lt;br /&gt;
*[[User:Sage Duncan|Sage Duncan]] - animation/machinima/motion/media management/live performance&lt;br /&gt;
* [[User:Economic Mip|Economic Mip]] -imagine/dream&lt;br /&gt;
* [[User:Talarus Luan|Talarus Luan]] - Archaean Designs / Council of Wyrms - Scripting, Building, Consulting&lt;br /&gt;
* [[User:Dustin Widget|Dustin Widget]] Builder/Scripter/Mentor/Lots More&lt;br /&gt;
* [[User:Tab Scott|Tab Scott]] - Terry Beaubois, Montana State University - College of Art &amp;amp; Architecture - Art, Music, Architecture, Film - Sustainable Community Design&lt;br /&gt;
* [[User:Hiro Market|Hiro Market]] - ([http://www.slicr.net Slicr]) Slicr - Scripting, Consulting&lt;br /&gt;
* [[User:Scorpio Galatea|Scorpio Galatea]] - Builder (Phoenix), Texture Creator&lt;br /&gt;
* [[User:Sylvia Trilling|Sylvia Trilling]] - Modeling, Scripting, Animating, Texturing&lt;br /&gt;
* [[User:Earnest Candour|Earnest Candour]] - ([http://www.metaverseenterprises.com Metaverse Enterprises])&lt;br /&gt;
* [[User:Carl Metropolitan|Carl Metropolitan]] - Building, Site Developement, Project Management, Marketing, Graphic Design, Event Hosting, Terraforming, Teaching&lt;br /&gt;
* [[User:Lecktor Hannibal|Lecktor Hannibal]] - (Landscaping, Estate Management, Modeling, Media Streaming, Event Management)&lt;br /&gt;
* [[User:Destiny Niles|Destiny Niles]] - Scripter/Mentor&lt;br /&gt;
*[[User:Kim Anubis|Kim Anubis]], ([http://www.themagicians.us The Magicians])&lt;br /&gt;
* [[User:Bobble Bertone|Bobble Bertone]] - ([http://www.coolbananas.com.au Cool Bananas Ventures]) - Building, Scripting, Terra forming, Project management, Networking with RL businesses.&lt;br /&gt;
* [[User:Logan Bauer|Logan Bauer]] - Building/Texturing/Scripting/Ect.&lt;br /&gt;
* [[User:In Kenzo|In Kenzo]] ([http://www.amoration.org Amoration]) Design, Building, Machinima, Events, Immersive Experiences for nonprofits and education&lt;br /&gt;
* [[User:Gearsawe Stonecutter|Gearsawe Stonecutter]] - Scripting, HUDs, Building, complex prim transformations, single script simplification&lt;br /&gt;
* [[User:Apollo Case|Apollo Case]] - (Armory Island and Armory Xtreme)- Virtual Weapons, Combat Items and Gadgets - Conceptualization, Testing, Marketing, Communication, Distribution, and Retailing - Combat Sim Owner and Developer&lt;br /&gt;
* Sindy Tsure (Scripting, Buidling)&lt;br /&gt;
* Huns Valen - ([http://valenheavy.com Valen Heavy Industries]) - Aircraft physics &amp;amp; avionics. Efficient interprocess communication. Remote business logic. Heuristic algorithms. Cryptography. User interfaces.&lt;br /&gt;
* [[User:Damanios Thetan|Damanios Thetan]] - ([http://www.damanicorp.com Damani]) - Modeling, Building, Texturing, Scripting, External server comms.&lt;br /&gt;
* [[User:Mary Edison|Mary Edison]] - (Phase 5) - Modeling, Building, Texturing, Design.&lt;br /&gt;
* Catty Loon  - Building/Scripting&lt;br /&gt;
* [[User:Phelan Corrimal|Phelan Corrimal]] - ROCKCLIFFE UNIVERSITY - Please note that we are already more than 50% of the way there to having this already developed as we&#039;ve been working on this since November 2006 when Linden Labs pulled out from financially supporting education. We are most interested in providing full support behind this initiative and would welcome people to come have a look at what we have to offer currently and where we are planning to be come end of August, 2007.&lt;br /&gt;
* [[User:Restorator Ristow|Restorator Ristow]] - Promotion and Marketing, novice builder&lt;br /&gt;
* [[User:Scout Detritus|Scout Detritus]] - Scripting, Building, Sounds, Animations, Clothing/Textures, Marketing, Sim Design.&lt;br /&gt;
* [[User:Nylon Pinkney|Nylon Pinkney]] - Texturing&lt;br /&gt;
* [[User:Alessio0108 Beck|Alessio0108 Beck]] - Nogravity - Full service italian agency - scripting - building - SltoRl web applications - design - sl real estate&lt;br /&gt;
* [[User:Osprey Therian|Osprey Therian]] - building, texturing, machinima&lt;br /&gt;
* [[User:Max Pitre|Max Pitre]] - building, texturing, scripting&lt;br /&gt;
* [[User:Gus Poutine|Gus Poutine]] - Instructional Designer A.S.K. Learning&lt;br /&gt;
* [[User:Lucian Overlord|Lucian Overlord]] - building, texturing,modeling, animations,sim design&lt;br /&gt;
* [[User:Lordfly Digeridoo|Lordfly Digeridoo]] - Digeridoodesigns.com -- building, architecture, sim planning&lt;br /&gt;
* [[User:Jauani Wu|Jauani Wu]] - second life is just like real life ... if you replace &amp;quot;second&amp;quot; with &amp;quot;no&amp;quot;&lt;br /&gt;
* [[User:MadamG Zagato|MadamG Zagato]] - ([http://www.never30.com Never 30 &amp;amp; N30 Studios]) Residential and commercial building, Web &amp;lt;---&amp;gt; LSL Communications, SL to RL Fashion, Furniture and Interior Design [UMPIRE], Photography [N30].&lt;br /&gt;
* [[User:Aradia Dielli|Aradia Dielli]] - Building, Modeling, Interior design, Photography.&lt;br /&gt;
* [[User:PajVar Kerensky|PajVar Kerensky]] - DESHADOW CUSTOMS - Custom Building, Scripting, Sim Development, Business Consultation, Community Development, WWW Portals, WWW Sites, In-World Community tools.&lt;br /&gt;
* [[User:Bobby Berwick|Bobby Berwick]] (QHB - Quality Home Builders) Scripting, Building&lt;br /&gt;
* [[User:SignpostMarv Martin|SignpostMarv Martin]]  - geek. Does all kinds of things.&lt;br /&gt;
* [[User:Dnel DaSilva|D&#039;Nel DaSilva]] (Xessories by D&#039;Nel DaSilva) Builder, specializing in jewelry and other avatar accessories including the scripts used in them.&lt;br /&gt;
* [[User:Joshua Perenti|Joshua Perenti]] - Live Helper, Sim Designer, Landscaper &amp;amp; Builder&lt;br /&gt;
* [[User:Lucius Nesterov|Lucius Nesterov]] - ([http://lucius-games.blogspot.com/ Development Blog]) In-world game development&lt;br /&gt;
* [[User:Lewis Nerd|Lewis Nerd]] - ([http://www.lewisnerd.com website]) - Construction, development, landscaping and consultation&lt;br /&gt;
* [[User:Zal Chevalier|Zal Chevalier]] - Architect&lt;br /&gt;
* [[User:Casu Capra|Casu Capra]]&lt;br /&gt;
* [[User:Dalian Hansen|Dalian Hansen]] - Creative Director  ([http://tretiakmedia.com/ Tretiak Media]) full service sim design and construction, SL &amp;gt; RL integration (advertising, marketing, internet/web design) ([http://www.cafepress.com/hantranslation/ Han Translation])  - Photography, Design/Translation in Japanese/Mandarin&lt;br /&gt;
* [[User:Kami Harbinger|Kami Harbinger]] - Developer of many scripted devices and the Pellucidar adventure game.&lt;br /&gt;
* [[User:Top Tank|Top Tank]] - Scripting, product design&lt;br /&gt;
* [[User:Whispering Hush|Whispering Hush]] Custom scripting boats, cars, push and non push weapons, prim torture, and general building.&lt;br /&gt;
* [[User:Nex Brannan|Nex Brannan]] Brutal Gear [http://gearshop.blogspot.com.com/ GearShop]) Clothing, Hair, Accesories, Building.&lt;br /&gt;
* [[User:HatHead Rickenbacker|HatHead Rickenbacker]] [http://hatheadinc.com/ HatHead Incubators] Modeling, Scripting.&lt;br /&gt;
* [[User:Desideria Stockton|Desideria Stockton]] (Literature Alive!) College Educator, Web 2.0, 3.0&lt;br /&gt;
* [[User:Isandra Willunga|Isandra_Willunga]] - IDS - scripting, texturing, lowprim building, general guidance.&lt;br /&gt;
* [[User:Derin Swenson|Derin Swenson]] ([http://www.olemissbusiness.com/ University of Mississippi, School of Business]) Building, Scripting, RL -&amp;gt; SL integration&lt;br /&gt;
* [[User:Escort DeFarge|Escort DeFarge]] (Together Systems) All aspects of scripting&lt;br /&gt;
* [[User:Davidorban Agnon|Davidorban Agnon]] ([http://www.questar.eu/secondlife Questar] and [http://vulca.no Vulcano])&lt;br /&gt;
* [[User:Mevo Syaka|Mevo Syaka]] - LSL Scripting, Modelling, Texturing, Custom Work&lt;br /&gt;
* [[User:Uccello Poultry|Uccello Poultry]] - Building, Texturing (including sign graphics), Clothing, Landscaping, Contract/On-Demand Work&lt;br /&gt;
* [[User:Itazura Radio|Itazura Radio]] - Modeling Architecture and Furnishings/Interior Design as well as Avatars, Terraforming, and Land/Estate Management. Photoshop and custom graphics skills.&lt;br /&gt;
* [[User:Phish Frye|Phish Frye]] - LSL scripter and expert programmer, specializing in connecting in-world objects to real world servers [http://www.purplestripe.com/ Purple Stripe]&lt;br /&gt;
* [[User:Haterot Okina|Haterot Okina]] - LSL scripter and builder extraordinaire. [http://www.purplestripe.com/ Purple Stripe]&lt;br /&gt;
* Noramyr Gullwing - ExtroVirtual (Flights of Fantasy) Builder, texturer, designer, graphic arts and development&lt;br /&gt;
* [[User:Gregory McLeod|Gregory McLeod]] Scripter of Games.&lt;br /&gt;
* [[User:Timeless Prototype|Timeless Prototype]] - Creator of the Multi Gadget&lt;br /&gt;
* [[User:Zayn Till|Zayn Till]] ([http://www.metaverseunlimited.com/ Metaverse Unlimited]) Building, Texturing, Content &amp;amp; Concept Creation, Sim design &amp;amp; Management, Real life business solutions&lt;br /&gt;
* [[User:Actionworx Pro|Actionworx Pro]] - MySQL, PHP, HTTP, LSL, XML.&lt;br /&gt;
* [[User:Ipenda Keynes|Ipenda Keynes]] ([http://paws-above.com/ Paws Above University]) Founder of PAU, creator of widely accepted &amp;quot;content standards&amp;quot;. Certified, K-12 Educator with skills in LSL, and general SL knowledge.&lt;br /&gt;
* [[User:Yumi Murakami|Yumi Murakami]] - Scripting, Newbie helper volunteer, NCI contributor, RL education experience.&lt;br /&gt;
* [[User:Arthur Fermi|Arthur Fermi]] - Scripting, Building, Fermi Sandbox, Landscaping [http://fermidesigns.com/ Fermi Designs]&lt;br /&gt;
* [[User:Gatz Morang|Gatz Morang]] - Texture artist, builder&lt;br /&gt;
* [[Jessica Ornitz]] - Architecture, Sim Planning, Texturing, Landscaping and Interior design&lt;br /&gt;
* [[User:Fleep Tuque|Fleep Tuque]] - Faculty Educator, Concierge Member, Chilbo Community Building Project&lt;br /&gt;
* [[User:Pumpkin Tripsa|Pumpkin Tripsa]] - (UV Taxidermy/ The Steamed Palette)- Custom Av Texturing and Shaping; Building, Scripting, Texturing&lt;br /&gt;
* [[User:Ro Gastel|Ro Gastel]] - Liquid Prims, Scipting, Builder&lt;br /&gt;
* [[User:AHG Hallard|AHG Hallard]] - Scripting, Design, Content and Concept creation, Building, Real Life educational, training and business solutions&lt;br /&gt;
* [[User:SL Mathilde|SL Mathilde]] - Scripting, Building, Real Life educational, training and business solutions&lt;br /&gt;
* [[Roderick Runo]] Builder/Scripter&lt;br /&gt;
* [[User:Equitus Bosch|Equitus Bosch]] Architect and Planner, Mojo Business Ventures&lt;br /&gt;
* [[Threshin Barnett]] - Terraforming, Building, Decorating, Landscaping, Animations, Design, Texturing, Land/Estate managment&lt;br /&gt;
* [[Laylah Mistral]] ([http://www.get-inkd.com/ Get InkD!]) Tattoos, photography, graphic design/textures, and marketing for SL and RL ([http://www.slmarketing.us/ SL Marketing]).&lt;br /&gt;
* [[Torment Thorn]]  - Wicked, Inc. since 2004, Wicked stuff for Wicked folks.  Childrens to Goreans we have something for everyone.  Avatars, clothing, houses, furniture and more.&lt;br /&gt;
* [[User:Charlene Trudeau|Charlene Trudeau]] - Building/Architecture.&lt;br /&gt;
* [[User:Matthew Dowd|Matthew Dowd]] - Scripting, some building&lt;br /&gt;
* [[User:Fumon Kubo|Fumon Kubo]] Frelance contract and while-you-wait scripter (MySQL, LSL, PHP, HTML, Java, C++), SL educator (RL/SL math + programming), Technical Advisor and Jack of all other trades.&lt;br /&gt;
* [[User:Joker Opus|Joker Opus]] LSL,PHP,vB,BAISIC,Javascript,Perl, CSS scripter. Live Helper, Mentor, Instructor. Linden Test Dummy =P (Kick at will sire ;))&lt;br /&gt;
* [[User:Lothaniel Yellowknife|Lothaniel Yellowknife]] LSL, Design/Texturing. Mentor, Live Helper, Instructor, Estate manager. Freelance Journalist and Photographer.&lt;br /&gt;
* [[User:Grady Echegaray|Grady Echegaray]] - Building/Architecture/Exhibitions and Curatorial&lt;br /&gt;
* [[User:Ceeq Laborde|Ceeq Laborde]] - Developer&lt;br /&gt;
* [[User:Stephanie Misfit|Stephanie Misfit]]&lt;br /&gt;
* [[User:Little Gray|Little Gray]] ([http://slurl.com/secondlife/Jinn/243/110/231/ Little Shop of Scripts &#039;n Things)] - Scripts, Builds, Contractor, &amp;amp; Legal Srvcs.&lt;br /&gt;
* [[User:Dnate Mars|Dnate Mars]] - nobody&lt;br /&gt;
* [[User:Wolf Yohei|Wolf Yohei]] - Builder, scripter, designer, MIB&lt;br /&gt;
* [[User:Geuis Dassin|Geuis Dassin]] (Mannea, Filming Path Studios) Scripter, Machinimatographer, Builder&lt;br /&gt;
* [[User:Rob Arten|Rob Arten]] - Project Management, Architecture.&lt;br /&gt;
* [[User:Cory Edo|Cory Edo]] - building, texture creation, project management&lt;br /&gt;
* [[User:Komuso Tokugawa|Komuso Tokugawa]]&lt;br /&gt;
* [[User:Anna Gulaev|Anna Gulaev]] - builder, scripter, designer, programmer - Vengeance Studio&lt;br /&gt;
* [[User:David Cartier|David Cartier]] - Period Architecture and Interior Design, Landscaping, Texture Designs. Member of the Artist Friends Collaborative.&lt;br /&gt;
* [[User:Upshaw Underhill|Upshaw Underhill]] - Builder and Scripter. Member of the Artist Friends Collaborative.&lt;br /&gt;
* [[User:Roseann Flora|Roseann Flora]] - Buildings, Clothing, Textures and Objects. Member of the Artist Friends Collaborative.&lt;br /&gt;
* [[User:Traven Sachs|Traven Sachs]] ([http://www.wolfhavenproductions.com/ Wolfhaven Productions - Shubelik (128,95,232)]) Scripting, Building, Texturing, Content &amp;amp; Concept Creation, Sim design &amp;amp; Management/Terraforming, Business &amp;amp; Point of Sales Solutions.&lt;/div&gt;</summary>
		<author><name>Traven Sachs</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=SL_Certification/List_of_Resident_Participants&amp;diff=18534</id>
		<title>SL Certification/List of Resident Participants</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=SL_Certification/List_of_Resident_Participants&amp;diff=18534"/>
		<updated>2007-04-26T15:31:21Z</updated>

		<summary type="html">&lt;p&gt;Traven Sachs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Certification]]&lt;br /&gt;
Add yourself to the &#039;&#039;&#039;bottom&#039;&#039;&#039; of this list using the following Wiki code:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;* ~~~&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[User:Ceera Murakami|Ceera Murakami]] (Fox and Ground Construction Company) Texture Artist&lt;br /&gt;
* [[User:Elle74 Zaftig|Elle74 Zaftig]] (Bellissima!/Shoppe74) build/model/textures&lt;br /&gt;
* [[User:Keiki Lemieux|Keiki Lemieux]] (HUDDLES Games &amp;amp; Gadgets) Building, Scripting, Animations, Textures&lt;br /&gt;
* [[User:Tre Giles|Tre Giles]] (GiTech/Action Village Paintball) Building, Scripting, Animation, Photography&lt;br /&gt;
* [[User:Alexander Regent|Alexander Regent]] (MageTech LLC) Scripting, website integration, cellphone integration, in-world building&lt;br /&gt;
* [[User:Sitearm Madonna|Sitearm Madonna]] (Siterma): Sim Scale Project Planning and Management; Structural Builds and Simulator Performance Management; Social Builds and Community Growth Management; Modeling - Architecture, Terraforming, Waterscaping, Landscaping, Soundscaping&lt;br /&gt;
* [[User:Hugo Dalgleish|Hugo Dalgleish]]&lt;br /&gt;
* [[User:Kenn Nilsson|Kenn Nilsson]] (NDE)&lt;br /&gt;
* [[User:Ravanne Sullivan|Ravanne Sullivan]] (Ravanne&#039;s Dance Poles and Animations) Animations and Scripting&lt;br /&gt;
* [[User:Fox Diller|Fox Diller]] (Crystal Studio/Magrathean Technologies) Anything Second Life.&lt;br /&gt;
* [[User:MSo Lambert|MSo Lambert]] ([http://www.synthetik-on.net/ Synthetik]) Scripting, Web Integration, project management&lt;br /&gt;
* [[User:Rael Delcon|Rael Delcon]]&lt;br /&gt;
* [[User:Dytska Vieria|Dytska Vieria]] (residential design/builds)&lt;br /&gt;
* [[User:Skye McArdle|Skye McArdle]] - Modeling, Animation, Textures, AV Customization&lt;br /&gt;
* [[User:Eladon Galsworthy|Eladon Galsworthy]] (PondLife - building and scripting)&lt;br /&gt;
* [[User:Oz Spade|Oz Spade]]&lt;br /&gt;
* [[User:Max Case|Max Case]]&lt;br /&gt;
* [[User:Newfie Pendragon|Newfie Pendragon]] (Reality Check, LSL Scripting)&lt;br /&gt;
* [[User:Gigs Taggart|Gigs Taggart]]&lt;br /&gt;
* [[User:Peekay Semyorka|Peekay Semyorka]]&lt;br /&gt;
* [[User:Osgeld Barmy|Osgeld Barmy]]  (biulding textures lsl)&lt;br /&gt;
* [[User:Nargus Asturias|Nargus Asturias]] (Avatar building, animations, scripts)&lt;br /&gt;
* [[User:ForestMist Skjellerup|ForestMist Skjellerup]]&lt;br /&gt;
* [[User:Rraven Moonlight|Rraven Moonlight]] (Terraforming Raw files, Texture developer, Large Scale Architectural Builds)&lt;br /&gt;
* [[User:Xylo Quisling|Xylo Quisling]]&lt;br /&gt;
* [[User:Thunderclap Morgridge|Thunderclap Morgridge]] (Texture artist, and nascent builder)&lt;br /&gt;
* [[User:Hiro Pendragon|Hiro Pendragon]] (CTO, Infinite Vision Media) LSL scripting, modeling&lt;br /&gt;
* [[User:Ethan Therian|Ethan Therian]] (Creative Director, Infinite Vision Media) modeling, texturing&lt;br /&gt;
* [[User:Ciemaar Flintoff|Ciemaar Flintoff]] (associate, Infinite Vision Media) lsl scripting, web-to-SL-to-web scripting&lt;br /&gt;
* [[User:Nimrodina Wayne|Nimrodina Wayne]] (build, animate, machinima)&lt;br /&gt;
* [[User:Lias Leandros|Lias Leandros]] (VooDoo Corp.)Sim Scale Project Planning and Management; Social Builds and Community Growth Management&lt;br /&gt;
* [[User:Erin Talamasca|Erin Talamasca]]&lt;br /&gt;
* [[User:Till Stirling|Till Stirling]] (Scripter, Builder, Consultant)&lt;br /&gt;
* [[User:Kri Ayakashi|Kri Ayakashi]] (AyakashiTEC) - LSL Scripting, Web2.0 integration, distributed programming (C/C++/C#, Python), in-world building, consultancy&lt;br /&gt;
* [[User:Alison Wheels|Alison Wheels]] ([http://secondlife.creative.org.uk/ Creative Organisation]) Scripting, FL/SL Integration issues, construction, terraforming, design&lt;br /&gt;
* [[User:FlipperPA Peregrine|FlipperPA Peregrine]] (Peregrine Salon/ESC) - LSL Scripting, Web integration, lots of other stuff. Creator of SLBoutique.com and SLTrivia.com.&lt;br /&gt;
* [[User:Strife Onizuka|Strife Onizuka]] (Scripter, Builder, Consultant)&lt;br /&gt;
* [[User:Porky Gorky|Porky Gorky]] - Hydro Homes : Prefabricated &amp;amp; customised building &amp;amp; architectural design.&lt;br /&gt;
* [[User:Bru Yang|Bru Yang]]&lt;br /&gt;
* [[User:Dirk Talamasca|Dirk Talamasca]] (Building, Custom Textures, Land/Estate Management. Internet Abuse Remediation, Sim Scale Layout, Planning and Development)&lt;br /&gt;
* [[User:Aimee Weber|Aimee Weber]]&lt;br /&gt;
* [[User:Banana Stein|Banana Stein]] (SL Brand) Builder, Textures, Sim Scale Project&lt;br /&gt;
* [[User:Linnian Sugar|Linnian Sugar]] (*Lollipop Shop owner* Builder, Clothing and textures, scripting, animations)&lt;br /&gt;
* [[User:Siobhan Taylor|Siobhan Taylor]] Building, Scripting.&lt;br /&gt;
* [[User:Taco Rubio|Taco Rubio]] (Media Management) &lt;br /&gt;
* [[User:RobbyRacoon Olmstead|RobbyRacoon Olmstead]] (Scripting, Building, C:SI Developer)&lt;br /&gt;
* [[User:Dnali Anabuki|Dnali Anabuki]] (Structure,Process,Organizing of Cert) Satorifilmservices.com&lt;br /&gt;
* [[User:Detect Surface|Detect Surface]] - (**D&amp;amp;D Creative Lab/The Brain Game/City of Abaddon** Building, Texturing, Skins, Texture-Mapping/Zoning, AV Design, Clothing, Sim Design and Construction, Architecture, Weapons, Vehicles, Furniture, Animation, Graphic Design, Artist and Pretty Flower Arranging.)&lt;br /&gt;
* [[User:Meade Paravane|Meade Paravane]] (Script monkey, Builder)&lt;br /&gt;
* [[User:Orange Montagne|Orange Montagne]]&lt;br /&gt;
* [[User:Joshua Nightshade|Joshua Nightshade]] (Builder, avatar design - primarily smaller-than-normal avatars)&lt;br /&gt;
* [[User:Zorena Deckard|Zorena Deckard]] (builder,textures,modeling)&lt;br /&gt;
* [[User:Bartiloux Desmoulins|Bartiloux Desmoulins]] (Scripting, modeling and animations)&lt;br /&gt;
* [[User:Ravenelle Zugzwang|Ravenelle Zugzwang]]&lt;br /&gt;
* [[User:Little Penguin|Little Penguin]] Building, Scripting&lt;br /&gt;
* [[User:Pol Tabla|Pol Tabla]]&lt;br /&gt;
* [[User:Jade Opel|Jade Opel]] (Brides &amp;amp; Blooms by Jade Opel)  Building, terra-forming, textures, particles, modeling&lt;br /&gt;
* [[User:Auron Havercamp|Auron Havercamp]] ([http://www.kenthavercamp.com/ Kent-Havercamp Enterprises, Ltd.]) - Scripting, Web Interaction, Data Storage&lt;br /&gt;
* [[User:Schuyler Kent|Schuyler Kent]] ([http://www.kenthavercamp.com/ Kent-Havercamp Enterprises, Ltd.]) - Building, Scripting, Consulting&lt;br /&gt;
* [[User:Vincent Nacon|Vincent Nacon]] (all above)&lt;br /&gt;
* [[User:Aradia Aridian|Aradia Aridian]] (Modeling, Land/Estate Management, Business Management, Marketing to the Virtual Customer)&lt;br /&gt;
* [[User:Scarlet Singer|Scarlet Singer]] (Textures/Graphics) &amp;lt;3&lt;br /&gt;
* [[User:Will Webb|Will Webb]]&lt;br /&gt;
* [[Cocoanut Koala]]  (Coco&#039;s Cottages) Builder&lt;br /&gt;
* Illya Sullivan&lt;br /&gt;
*[[User:Frans Charming|Frans Charming]] ([http://www.thevesuviusgroup.com The Vesuvius Group])Project Planning and Management, 3D Modeling/Building, Scripting, Texturing, etc&lt;br /&gt;
* [[User:Nomasha Syaka|Nomasha Syaka]] build/model/textures&lt;br /&gt;
*[[User:Rhiannon Chatnoir|Rhiannon Chatnoir]] ([http://www.thevesuviusgroup.com The Vesuvius Group])Creative Director of The Vesuvius Group (Project Management, Planning, Textures, Terraforming, machinima), also SL and web dev for Global Kids, Inc. and a RL professional graphic designer.&lt;br /&gt;
* [[User:Shockwave Yareach|Shockwave Yareach]] (Textures/Scripting/Building)&lt;br /&gt;
* [[User:Rebel Television|Rebel Television]] ([http://www.slexchange.com/modules.php?name=Marketplace&amp;amp;file=item&amp;amp;ItemID=147428 Airfoil]) Scripting, Animation, Vehicles, Avatars, Building, In-world RSS Feed Displays&lt;br /&gt;
* [[User:Storm Thunders|Storm Thunders]]&lt;br /&gt;
* [[Rocky Merosi]] (Objects, Furnishings/Interior Design, Weapons and Vehicles, Asset Managment, Movement, Attachments, Setting Properties, Communications)&lt;br /&gt;
*[[User:Moriz Gupte|Moriz Gupte]] ([http://www.play2train.org Play2Train])Producer, Scripter, Builder SL educator&lt;br /&gt;
*([http://homepage.mac.com/salazarjack/ Salazar Jack]) - Kahruvel Design - Environments, Landscapes, Forest Preservation, Terraforming, Architecture, Archeological Restoration, Furnishings/Interior Design, Objects, Textures&lt;br /&gt;
*[[User:Raven Pennyfeather|Raven Pennyfeather]] Owner/operator for House of RFyre LLC,clothing and avatar development, textures building, business analyst, gragphic design.&lt;br /&gt;
*[[User:Thraxis Epsilon|Thraxis Epsilon]] (Resume in Profile)&lt;br /&gt;
*[[User:Angelica Puff|Angelica Puff]] (Communications, External &amp;lt;-&amp;gt; Inworld data, Asset Management)&lt;br /&gt;
*[[User:Jeff Kelley|Jeff Kelley]] (Communications, Networking, Display, Data storage &amp;amp; access)&lt;br /&gt;
*[[User:Ace Albion|Ace Albion]] (Ace&#039;s Spaces)  prefab builder&lt;br /&gt;
*[[User:SunShine Kukulcan|SunShine Kukulcan]] (Mercury Dev Studios - Music and Media Services, Sim planning)&lt;br /&gt;
*[[User:Klink Epsilon|Klink Epsilon]] (Mercury Dev Studios - Builder, Custom Textures, Sim Design and planning, Media Services)&lt;br /&gt;
*[[User:Parker McTeague|Parker McTeague]] (BLIP) building, textures&lt;br /&gt;
*[[Demian Caldera]] Architecture, Furnishings/Interior Design, Objects, Landscaping, Terra Forming, Event Organizing, Event Set Building.&lt;br /&gt;
*[[User:Rainbow Drake|Rainbow Drake]] Director of Education - [http://raindancer.ca/NCI New Citizens Incorporated]&lt;br /&gt;
*[[User:Kamael Xevious|Kamael Xevious]] - Radio Babylonia/Batak Island Traders - Architecture, Furnishings and Interior Design, Media, Community Development and Region Construction, Education.&lt;br /&gt;
*[[User:Pipe Hesse|Pipe Hesse]] Scripting, Building&lt;br /&gt;
* [[User:Abramelin Wolfe|Abramelin Wolfe]] (Abramelin Studios Ltd / Abranimations) script/build/texture/animation/mocap/web integration&lt;br /&gt;
* [[User:katykiwi Moonflower|katykiwi Moonflower]] interior design/furnishings/building/texturing/terraforming&lt;br /&gt;
*[[User:Jade Jensen|Jade Jensen]] (Jaded Visions) Clothing Design, Avatar Creation/Design, Texturing, Graphics Design&lt;br /&gt;
*[[Darien Caldwell]] Builder/Scripter&lt;br /&gt;
*[[User:Azrazael Dhara|Azrazael Dhara]] Building, Terraforming, Sim Design, Landscaping, Instructing, Photography&lt;br /&gt;
*[[User:Andreas Isachenko|Andreas Isachenko]] Building, Scripting, DB access&lt;br /&gt;
*[[User:Jason Keegan|Jason Keegan]] (K-tech) Scripting&lt;br /&gt;
*[[User:Gaius Goodliffe|Gaius Goodliffe]] (Second Skies) Vehicles, scripting, back-end server/website integration&lt;br /&gt;
*[[User:Pericat Aquitaine|Pericat Aquitaine]] (Elf Harbour Boatyard) Vehicles, scripting, terraforming, general building&lt;br /&gt;
*[[User:Karsten Rutledge|Karsten Rutledge]] (Play2Train/K.R. Engineering) Scripting, building.&lt;br /&gt;
*[[User:Bubba Biberman|Bubba Biberman]] Building, textures, machinima&lt;br /&gt;
*[[User:Kerian Bunin|Kerian Bunin]] (uʍop əpı̣sdn) Building, Scripting, Estate Management &lt;br /&gt;
*[[User:Tsukasa Keiko|Tsukasa Keiko]] Building, Scripting&lt;br /&gt;
*[[User:Morph Wollongong|Morph Wollongong]] Gadgets, Scripting&lt;br /&gt;
*[[User:Ordinal Malaprop|Ordinal Malaprop]] - scripting, some building&lt;br /&gt;
*[[User:Donnagh McDonnagh|Donnagh McDonnagh]] - Undergraduate education (School of Communication), machinima, scripting, general building, avatar skins/clothes, 3d textures, animation, web integration, vehicles, huds, event management, orientation, inworld collaboration&lt;br /&gt;
*[[User:Able Whitman|Able Whitman]] - scripting, some building&lt;br /&gt;
*[[User:Adri Saarinen|Adri Saarinen]] - ([http://www.metaversatility.com Metaversatility]) scripting, building, presence development&lt;br /&gt;
*[[User:Curious Rousselot|Curious Rousselot]] - Scripting, Building&lt;br /&gt;
*[[User:otakup0pe Neumann|otakup0pe Neumann]] - Pleiades Consulting &amp;amp; libsecondlife. Rich Educational Content, tech integration, libsl powered services&lt;br /&gt;
*[[User:Damek Tretiak|Damek Tretiak]] - ([http://www.tretiakmedia.com Tretiak Media])/([http://www.slquery.com SLQuery.com]) scripting, building, project management&lt;br /&gt;
* [[User:Jacques Groshomme|Jacques Groshomme]] - Building/Scripting&lt;br /&gt;
* [[User:Iris Bourdeille|Iris Bourdeille]] - Building/Scripting/Texturing/Animation&lt;br /&gt;
* [[User:Fallon Winnfield|Fallon Winnfield]] - ([http://www.centric.com Centric])/([http://www.secondtalk.com Second Talk]) - Business development, building, scripting&lt;br /&gt;
* [[User:Adam Rakosi|Adam Rakosi]] - ([http://www.centric.com Centric])/([http://www.secondtalk.com Second Talk]) - Building/Scripting&lt;br /&gt;
* [[User:Neko Longduk|Neko Longduk]] - ([http://www.centric.com Centric])/([http://www.secondtalk.com Second Talk]) - Business Development, scripting&lt;br /&gt;
* [[User:Weasel Gough|Weasel Gough]] - ([http://www.centric.com Centric])/([http://www.secondtalk.com Second Talk]) - Building/Scripting/Texturing/Animation&lt;br /&gt;
* [[User:Chime Bellman|Chime Bellman]] strategy/build/model/promote&lt;br /&gt;
*[[User:Sage Duncan|Sage Duncan]] - animation/machinima/motion/media management/live performance&lt;br /&gt;
* [[User:Economic Mip|Economic Mip]] -imagine/dream&lt;br /&gt;
* [[User:Talarus Luan|Talarus Luan]] - Archaean Designs / Council of Wyrms - Scripting, Building, Consulting&lt;br /&gt;
* [[User:Dustin Widget|Dustin Widget]] Builder/Scripter/Mentor/Lots More&lt;br /&gt;
* [[User:Tab Scott|Tab Scott]] - Terry Beaubois, Montana State University - College of Art &amp;amp; Architecture - Art, Music, Architecture, Film - Sustainable Community Design&lt;br /&gt;
* [[User:Hiro Market|Hiro Market]] - ([http://www.slicr.net Slicr]) Slicr - Scripting, Consulting&lt;br /&gt;
* [[User:Scorpio Galatea|Scorpio Galatea]] - Builder (Phoenix), Texture Creator&lt;br /&gt;
* [[User:Sylvia Trilling|Sylvia Trilling]] - Modeling, Scripting, Animating, Texturing&lt;br /&gt;
* [[User:Earnest Candour|Earnest Candour]] - ([http://www.metaverseenterprises.com Metaverse Enterprises])&lt;br /&gt;
* [[User:Carl Metropolitan|Carl Metropolitan]] - Building, Site Developement, Project Management, Marketing, Graphic Design, Event Hosting, Terraforming, Teaching&lt;br /&gt;
* [[User:Lecktor Hannibal|Lecktor Hannibal]] - (Landscaping, Estate Management, Modeling, Media Streaming, Event Management)&lt;br /&gt;
* [[User:Destiny Niles|Destiny Niles]] - Scripter/Mentor&lt;br /&gt;
*[[User:Kim Anubis|Kim Anubis]], ([http://www.themagicians.us The Magicians])&lt;br /&gt;
* [[User:Bobble Bertone|Bobble Bertone]] - ([http://www.coolbananas.com.au Cool Bananas Ventures]) - Building, Scripting, Terra forming, Project management, Networking with RL businesses.&lt;br /&gt;
* [[User:Logan Bauer|Logan Bauer]] - Building/Texturing/Scripting/Ect.&lt;br /&gt;
* [[User:In Kenzo|In Kenzo]] ([http://www.amoration.org Amoration]) Design, Building, Machinima, Events, Immersive Experiences for nonprofits and education&lt;br /&gt;
* [[User:Gearsawe Stonecutter|Gearsawe Stonecutter]] - Scripting, HUDs, Building, complex prim transformations, single script simplification&lt;br /&gt;
* [[User:Apollo Case|Apollo Case]] - (Armory Island and Armory Xtreme)- Virtual Weapons, Combat Items and Gadgets - Conceptualization, Testing, Marketing, Communication, Distribution, and Retailing - Combat Sim Owner and Developer&lt;br /&gt;
* Sindy Tsure (Scripting, Buidling)&lt;br /&gt;
* Huns Valen - ([http://valenheavy.com Valen Heavy Industries]) - Aircraft physics &amp;amp; avionics. Efficient interprocess communication. Remote business logic. Heuristic algorithms. Cryptography. User interfaces.&lt;br /&gt;
* [[User:Damanios Thetan|Damanios Thetan]] - ([http://www.damanicorp.com Damani]) - Modeling, Building, Texturing, Scripting, External server comms.&lt;br /&gt;
* [[User:Mary Edison|Mary Edison]] - (Phase 5) - Modeling, Building, Texturing, Design.&lt;br /&gt;
* Catty Loon  - Building/Scripting&lt;br /&gt;
* [[User:Phelan Corrimal|Phelan Corrimal]] - ROCKCLIFFE UNIVERSITY - Please note that we are already more than 50% of the way there to having this already developed as we&#039;ve been working on this since November 2006 when Linden Labs pulled out from financially supporting education. We are most interested in providing full support behind this initiative and would welcome people to come have a look at what we have to offer currently and where we are planning to be come end of August, 2007.&lt;br /&gt;
* [[User:Restorator Ristow|Restorator Ristow]] - Promotion and Marketing, novice builder&lt;br /&gt;
* [[User:Scout Detritus|Scout Detritus]] - Scripting, Building, Sounds, Animations, Clothing/Textures, Marketing, Sim Design.&lt;br /&gt;
* [[User:Nylon Pinkney|Nylon Pinkney]] - Texturing&lt;br /&gt;
* [[User:Alessio0108 Beck|Alessio0108 Beck]] - Nogravity - Full service italian agency - scripting - building - SltoRl web applications - design - sl real estate&lt;br /&gt;
* [[User:Osprey Therian|Osprey Therian]] - building, texturing, machinima&lt;br /&gt;
* [[User:Max Pitre|Max Pitre]] - building, texturing, scripting&lt;br /&gt;
* [[User:Gus Poutine|Gus Poutine]] - Instructional Designer A.S.K. Learning&lt;br /&gt;
* [[User:Lucian Overlord|Lucian Overlord]] - building, texturing,modeling, animations,sim design&lt;br /&gt;
* [[User:Lordfly Digeridoo|Lordfly Digeridoo]] - Digeridoodesigns.com -- building, architecture, sim planning&lt;br /&gt;
* [[User:Jauani Wu|Jauani Wu]] - second life is just like real life ... if you replace &amp;quot;second&amp;quot; with &amp;quot;no&amp;quot;&lt;br /&gt;
* [[User:MadamG Zagato|MadamG Zagato]] - ([http://www.never30.com Never 30 &amp;amp; N30 Studios]) Residential and commercial building, Web &amp;lt;---&amp;gt; LSL Communications, SL to RL Fashion, Furniture and Interior Design [UMPIRE], Photography [N30].&lt;br /&gt;
* [[User:Aradia Dielli|Aradia Dielli]] - Building, Modeling, Interior design, Photography.&lt;br /&gt;
* [[User:PajVar Kerensky|PajVar Kerensky]] - DESHADOW CUSTOMS - Custom Building, Scripting, Sim Development, Business Consultation, Community Development, WWW Portals, WWW Sites, In-World Community tools.&lt;br /&gt;
* [[User:Bobby Berwick|Bobby Berwick]] (QHB - Quality Home Builders) Scripting, Building&lt;br /&gt;
* [[User:SignpostMarv Martin|SignpostMarv Martin]]  - geek. Does all kinds of things.&lt;br /&gt;
* [[User:Dnel DaSilva|D&#039;Nel DaSilva]] (Xessories by D&#039;Nel DaSilva) Builder, specializing in jewelry and other avatar accessories including the scripts used in them.&lt;br /&gt;
* [[User:Joshua Perenti|Joshua Perenti]] - Live Helper, Sim Designer, Landscaper &amp;amp; Builder&lt;br /&gt;
* [[User:Lucius Nesterov|Lucius Nesterov]] - ([http://lucius-games.blogspot.com/ Development Blog]) In-world game development&lt;br /&gt;
* [[User:Lewis Nerd|Lewis Nerd]] - ([http://www.lewisnerd.com website]) - Construction, development, landscaping and consultation&lt;br /&gt;
* [[User:Zal Chevalier|Zal Chevalier]] - Architect&lt;br /&gt;
* [[User:Casu Capra|Casu Capra]]&lt;br /&gt;
* [[User:Dalian Hansen|Dalian Hansen]] - Creative Director  ([http://tretiakmedia.com/ Tretiak Media]) full service sim design and construction, SL &amp;gt; RL integration (advertising, marketing, internet/web design) ([http://www.cafepress.com/hantranslation/ Han Translation])  - Photography, Design/Translation in Japanese/Mandarin&lt;br /&gt;
* [[User:Kami Harbinger|Kami Harbinger]] - Developer of many scripted devices and the Pellucidar adventure game.&lt;br /&gt;
* [[User:Top Tank|Top Tank]] - Scripting, product design&lt;br /&gt;
* [[User:Whispering Hush|Whispering Hush]] Custom scripting boats, cars, push and non push weapons, prim torture, and general building.&lt;br /&gt;
* [[User:Nex Brannan|Nex Brannan]] Brutal Gear [http://gearshop.blogspot.com.com/ GearShop]) Clothing, Hair, Accesories, Building.&lt;br /&gt;
* [[User:HatHead Rickenbacker|HatHead Rickenbacker]] [http://hatheadinc.com/ HatHead Incubators] Modeling, Scripting.&lt;br /&gt;
* [[User:Desideria Stockton|Desideria Stockton]] (Literature Alive!) College Educator, Web 2.0, 3.0&lt;br /&gt;
* [[User:Isandra Willunga|Isandra_Willunga]] - IDS - scripting, texturing, lowprim building, general guidance.&lt;br /&gt;
* [[User:Derin Swenson|Derin Swenson]] ([http://www.olemissbusiness.com/ University of Mississippi, School of Business]) Building, Scripting, RL -&amp;gt; SL integration&lt;br /&gt;
* [[User:Escort DeFarge|Escort DeFarge]] (Together Systems) All aspects of scripting&lt;br /&gt;
* [[User:Davidorban Agnon|Davidorban Agnon]] ([http://www.questar.eu/secondlife Questar] and [http://vulca.no Vulcano])&lt;br /&gt;
* [[User:Mevo Syaka|Mevo Syaka]] - LSL Scripting, Modelling, Texturing, Custom Work&lt;br /&gt;
* [[User:Uccello Poultry|Uccello Poultry]] - Building, Texturing (including sign graphics), Clothing, Landscaping, Contract/On-Demand Work&lt;br /&gt;
* [[User:Itazura Radio|Itazura Radio]] - Modeling Architecture and Furnishings/Interior Design as well as Avatars, Terraforming, and Land/Estate Management. Photoshop and custom graphics skills.&lt;br /&gt;
* [[User:Phish Frye|Phish Frye]] - LSL scripter and expert programmer, specializing in connecting in-world objects to real world servers [http://www.purplestripe.com/ Purple Stripe]&lt;br /&gt;
* [[User:Haterot Okina|Haterot Okina]] - LSL scripter and builder extraordinaire. [http://www.purplestripe.com/ Purple Stripe]&lt;br /&gt;
* Noramyr Gullwing - ExtroVirtual (Flights of Fantasy) Builder, texturer, designer, graphic arts and development&lt;br /&gt;
* [[User:Gregory McLeod|Gregory McLeod]] Scripter of Games.&lt;br /&gt;
* [[User:Timeless Prototype|Timeless Prototype]] - Creator of the Multi Gadget&lt;br /&gt;
* [[User:Zayn Till|Zayn Till]] ([http://www.metaverseunlimited.com/ Metaverse Unlimited]) Building, Texturing, Content &amp;amp; Concept Creation, Sim design &amp;amp; Management, Real life business solutions&lt;br /&gt;
* [[User:Actionworx Pro|Actionworx Pro]] - MySQL, PHP, HTTP, LSL, XML.&lt;br /&gt;
* [[User:Ipenda Keynes|Ipenda Keynes]] ([http://paws-above.com/ Paws Above University]) Founder of PAU, creator of widely accepted &amp;quot;content standards&amp;quot;. Certified, K-12 Educator with skills in LSL, and general SL knowledge.&lt;br /&gt;
* [[User:Yumi Murakami|Yumi Murakami]] - Scripting, Newbie helper volunteer, NCI contributor, RL education experience.&lt;br /&gt;
* [[User:Arthur Fermi|Arthur Fermi]] - Scripting, Building, Fermi Sandbox, Landscaping [http://fermidesigns.com/ Fermi Designs]&lt;br /&gt;
* [[User:Gatz Morang|Gatz Morang]] - Texture artist, builder&lt;br /&gt;
* [[Jessica Ornitz]] - Architecture, Sim Planning, Texturing, Landscaping and Interior design&lt;br /&gt;
* [[User:Fleep Tuque|Fleep Tuque]] - Faculty Educator, Concierge Member, Chilbo Community Building Project&lt;br /&gt;
* [[User:Pumpkin Tripsa|Pumpkin Tripsa]] - (UV Taxidermy/ The Steamed Palette)- Custom Av Texturing and Shaping; Building, Scripting, Texturing&lt;br /&gt;
* [[User:Ro Gastel|Ro Gastel]] - Liquid Prims, Scipting, Builder&lt;br /&gt;
* [[User:AHG Hallard|AHG Hallard]] - Scripting, Design, Content and Concept creation, Building, Real Life educational, training and business solutions&lt;br /&gt;
* [[User:SL Mathilde|SL Mathilde]] - Scripting, Building, Real Life educational, training and business solutions&lt;br /&gt;
* [[Roderick Runo]] Builder/Scripter&lt;br /&gt;
* [[User:Equitus Bosch|Equitus Bosch]] Architect and Planner, Mojo Business Ventures&lt;br /&gt;
* [[Threshin Barnett]] - Terraforming, Building, Decorating, Landscaping, Animations, Design, Texturing, Land/Estate managment&lt;br /&gt;
* [[Laylah Mistral]] ([http://www.get-inkd.com/ Get InkD!]) Tattoos, photography, graphic design/textures, and marketing for SL and RL ([http://www.slmarketing.us/ SL Marketing]).&lt;br /&gt;
* [[Torment Thorn]]  - Wicked, Inc. since 2004, Wicked stuff for Wicked folks.  Childrens to Goreans we have something for everyone.  Avatars, clothing, houses, furniture and more.&lt;br /&gt;
* [[User:Charlene Trudeau|Charlene Trudeau]] - Building/Architecture.&lt;br /&gt;
* [[User:Matthew Dowd|Matthew Dowd]] - Scripting, some building&lt;br /&gt;
* [[User:Fumon Kubo|Fumon Kubo]] Frelance contract and while-you-wait scripter (MySQL, LSL, PHP, HTML, Java, C++), SL educator (RL/SL math + programming), Technical Advisor and Jack of all other trades.&lt;br /&gt;
* [[User:Joker Opus|Joker Opus]] LSL,PHP,vB,BAISIC,Javascript,Perl, CSS scripter. Live Helper, Mentor, Instructor. Linden Test Dummy =P (Kick at will sire ;))&lt;br /&gt;
* [[User:Lothaniel Yellowknife|Lothaniel Yellowknife]] LSL, Design/Texturing. Mentor, Live Helper, Instructor, Estate manager. Freelance Journalist and Photographer.&lt;br /&gt;
* [[User:Grady Echegaray|Grady Echegaray]] - Building/Architecture/Exhibitions and Curatorial&lt;br /&gt;
* [[User:Ceeq Laborde|Ceeq Laborde]] - Developer&lt;br /&gt;
* [[User:Stephanie Misfit|Stephanie Misfit]]&lt;br /&gt;
* [[User:Little Gray|Little Gray]] ([http://slurl.com/secondlife/Jinn/243/110/231/ Little Shop of Scripts &#039;n Things)] - Scripts, Builds, Contractor, &amp;amp; Legal Srvcs.&lt;br /&gt;
* [[User:Dnate Mars|Dnate Mars]] - nobody&lt;br /&gt;
* [[User:Wolf Yohei|Wolf Yohei]] - Builder, scripter, designer, MIB&lt;br /&gt;
* [[User:Geuis Dassin|Geuis Dassin]] (Mannea, Filming Path Studios) Scripter, Machinimatographer, Builder&lt;br /&gt;
* [[User:Rob Arten|Rob Arten]] - Project Management, Architecture.&lt;br /&gt;
* [[User:Cory Edo|Cory Edo]] - building, texture creation, project management&lt;br /&gt;
* [[User:Komuso Tokugawa|Komuso Tokugawa]]&lt;br /&gt;
* [[User:Anna Gulaev|Anna Gulaev]] - builder, scripter, designer, programmer - Vengeance Studio&lt;br /&gt;
* [[User:David Cartier|David Cartier]] - Period Architecture and Interior Design, Landscaping, Texture Designs. Member of the Artist Friends Collaborative.&lt;br /&gt;
* [[User:Upshaw Underhill|Upshaw Underhill]] - Builder and Scripter. Member of the Artist Friends Collaborative.&lt;br /&gt;
* [[User:Roseann Flora|Roseann Flora]] - Buildings, Clothing, Textures and Objects. Member of the Artist Friends Collaborative.&lt;br /&gt;
* [[User:Traven Sachs|Traven Sachs]] ([Wolfhaven Productions http://www.wolfhavenproductions.com/]) Scripting, Building, Texturing, Content &amp;amp; Concept Creation, Sim design &amp;amp; Management/Terraforming, Business &amp;amp; Point of Sales Solutions.&lt;/div&gt;</summary>
		<author><name>Traven Sachs</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=SL_Certification/List_of_Resident_Participants&amp;diff=18533</id>
		<title>SL Certification/List of Resident Participants</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=SL_Certification/List_of_Resident_Participants&amp;diff=18533"/>
		<updated>2007-04-26T15:30:12Z</updated>

		<summary type="html">&lt;p&gt;Traven Sachs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Certification]]&lt;br /&gt;
Add yourself to the &#039;&#039;&#039;bottom&#039;&#039;&#039; of this list using the following Wiki code:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;* ~~~&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[User:Ceera Murakami|Ceera Murakami]] (Fox and Ground Construction Company) Texture Artist&lt;br /&gt;
* [[User:Elle74 Zaftig|Elle74 Zaftig]] (Bellissima!/Shoppe74) build/model/textures&lt;br /&gt;
* [[User:Keiki Lemieux|Keiki Lemieux]] (HUDDLES Games &amp;amp; Gadgets) Building, Scripting, Animations, Textures&lt;br /&gt;
* [[User:Tre Giles|Tre Giles]] (GiTech/Action Village Paintball) Building, Scripting, Animation, Photography&lt;br /&gt;
* [[User:Alexander Regent|Alexander Regent]] (MageTech LLC) Scripting, website integration, cellphone integration, in-world building&lt;br /&gt;
* [[User:Sitearm Madonna|Sitearm Madonna]] (Siterma): Sim Scale Project Planning and Management; Structural Builds and Simulator Performance Management; Social Builds and Community Growth Management; Modeling - Architecture, Terraforming, Waterscaping, Landscaping, Soundscaping&lt;br /&gt;
* [[User:Hugo Dalgleish|Hugo Dalgleish]]&lt;br /&gt;
* [[User:Kenn Nilsson|Kenn Nilsson]] (NDE)&lt;br /&gt;
* [[User:Ravanne Sullivan|Ravanne Sullivan]] (Ravanne&#039;s Dance Poles and Animations) Animations and Scripting&lt;br /&gt;
* [[User:Fox Diller|Fox Diller]] (Crystal Studio/Magrathean Technologies) Anything Second Life.&lt;br /&gt;
* [[User:MSo Lambert|MSo Lambert]] ([http://www.synthetik-on.net/ Synthetik]) Scripting, Web Integration, project management&lt;br /&gt;
* [[User:Rael Delcon|Rael Delcon]]&lt;br /&gt;
* [[User:Dytska Vieria|Dytska Vieria]] (residential design/builds)&lt;br /&gt;
* [[User:Skye McArdle|Skye McArdle]] - Modeling, Animation, Textures, AV Customization&lt;br /&gt;
* [[User:Eladon Galsworthy|Eladon Galsworthy]] (PondLife - building and scripting)&lt;br /&gt;
* [[User:Oz Spade|Oz Spade]]&lt;br /&gt;
* [[User:Max Case|Max Case]]&lt;br /&gt;
* [[User:Newfie Pendragon|Newfie Pendragon]] (Reality Check, LSL Scripting)&lt;br /&gt;
* [[User:Gigs Taggart|Gigs Taggart]]&lt;br /&gt;
* [[User:Peekay Semyorka|Peekay Semyorka]]&lt;br /&gt;
* [[User:Osgeld Barmy|Osgeld Barmy]]  (biulding textures lsl)&lt;br /&gt;
* [[User:Nargus Asturias|Nargus Asturias]] (Avatar building, animations, scripts)&lt;br /&gt;
* [[User:ForestMist Skjellerup|ForestMist Skjellerup]]&lt;br /&gt;
* [[User:Rraven Moonlight|Rraven Moonlight]] (Terraforming Raw files, Texture developer, Large Scale Architectural Builds)&lt;br /&gt;
* [[User:Xylo Quisling|Xylo Quisling]]&lt;br /&gt;
* [[User:Thunderclap Morgridge|Thunderclap Morgridge]] (Texture artist, and nascent builder)&lt;br /&gt;
* [[User:Hiro Pendragon|Hiro Pendragon]] (CTO, Infinite Vision Media) LSL scripting, modeling&lt;br /&gt;
* [[User:Ethan Therian|Ethan Therian]] (Creative Director, Infinite Vision Media) modeling, texturing&lt;br /&gt;
* [[User:Ciemaar Flintoff|Ciemaar Flintoff]] (associate, Infinite Vision Media) lsl scripting, web-to-SL-to-web scripting&lt;br /&gt;
* [[User:Nimrodina Wayne|Nimrodina Wayne]] (build, animate, machinima)&lt;br /&gt;
* [[User:Lias Leandros|Lias Leandros]] (VooDoo Corp.)Sim Scale Project Planning and Management; Social Builds and Community Growth Management&lt;br /&gt;
* [[User:Erin Talamasca|Erin Talamasca]]&lt;br /&gt;
* [[User:Till Stirling|Till Stirling]] (Scripter, Builder, Consultant)&lt;br /&gt;
* [[User:Kri Ayakashi|Kri Ayakashi]] (AyakashiTEC) - LSL Scripting, Web2.0 integration, distributed programming (C/C++/C#, Python), in-world building, consultancy&lt;br /&gt;
* [[User:Alison Wheels|Alison Wheels]] ([http://secondlife.creative.org.uk/ Creative Organisation]) Scripting, FL/SL Integration issues, construction, terraforming, design&lt;br /&gt;
* [[User:FlipperPA Peregrine|FlipperPA Peregrine]] (Peregrine Salon/ESC) - LSL Scripting, Web integration, lots of other stuff. Creator of SLBoutique.com and SLTrivia.com.&lt;br /&gt;
* [[User:Strife Onizuka|Strife Onizuka]] (Scripter, Builder, Consultant)&lt;br /&gt;
* [[User:Porky Gorky|Porky Gorky]] - Hydro Homes : Prefabricated &amp;amp; customised building &amp;amp; architectural design.&lt;br /&gt;
* [[User:Bru Yang|Bru Yang]]&lt;br /&gt;
* [[User:Dirk Talamasca|Dirk Talamasca]] (Building, Custom Textures, Land/Estate Management. Internet Abuse Remediation, Sim Scale Layout, Planning and Development)&lt;br /&gt;
* [[User:Aimee Weber|Aimee Weber]]&lt;br /&gt;
* [[User:Banana Stein|Banana Stein]] (SL Brand) Builder, Textures, Sim Scale Project&lt;br /&gt;
* [[User:Linnian Sugar|Linnian Sugar]] (*Lollipop Shop owner* Builder, Clothing and textures, scripting, animations)&lt;br /&gt;
* [[User:Siobhan Taylor|Siobhan Taylor]] Building, Scripting.&lt;br /&gt;
* [[User:Taco Rubio|Taco Rubio]] (Media Management) &lt;br /&gt;
* [[User:RobbyRacoon Olmstead|RobbyRacoon Olmstead]] (Scripting, Building, C:SI Developer)&lt;br /&gt;
* [[User:Dnali Anabuki|Dnali Anabuki]] (Structure,Process,Organizing of Cert) Satorifilmservices.com&lt;br /&gt;
* [[User:Detect Surface|Detect Surface]] - (**D&amp;amp;D Creative Lab/The Brain Game/City of Abaddon** Building, Texturing, Skins, Texture-Mapping/Zoning, AV Design, Clothing, Sim Design and Construction, Architecture, Weapons, Vehicles, Furniture, Animation, Graphic Design, Artist and Pretty Flower Arranging.)&lt;br /&gt;
* [[User:Meade Paravane|Meade Paravane]] (Script monkey, Builder)&lt;br /&gt;
* [[User:Orange Montagne|Orange Montagne]]&lt;br /&gt;
* [[User:Joshua Nightshade|Joshua Nightshade]] (Builder, avatar design - primarily smaller-than-normal avatars)&lt;br /&gt;
* [[User:Zorena Deckard|Zorena Deckard]] (builder,textures,modeling)&lt;br /&gt;
* [[User:Bartiloux Desmoulins|Bartiloux Desmoulins]] (Scripting, modeling and animations)&lt;br /&gt;
* [[User:Ravenelle Zugzwang|Ravenelle Zugzwang]]&lt;br /&gt;
* [[User:Little Penguin|Little Penguin]] Building, Scripting&lt;br /&gt;
* [[User:Pol Tabla|Pol Tabla]]&lt;br /&gt;
* [[User:Jade Opel|Jade Opel]] (Brides &amp;amp; Blooms by Jade Opel)  Building, terra-forming, textures, particles, modeling&lt;br /&gt;
* [[User:Auron Havercamp|Auron Havercamp]] ([http://www.kenthavercamp.com/ Kent-Havercamp Enterprises, Ltd.]) - Scripting, Web Interaction, Data Storage&lt;br /&gt;
* [[User:Schuyler Kent|Schuyler Kent]] ([http://www.kenthavercamp.com/ Kent-Havercamp Enterprises, Ltd.]) - Building, Scripting, Consulting&lt;br /&gt;
* [[User:Vincent Nacon|Vincent Nacon]] (all above)&lt;br /&gt;
* [[User:Aradia Aridian|Aradia Aridian]] (Modeling, Land/Estate Management, Business Management, Marketing to the Virtual Customer)&lt;br /&gt;
* [[User:Scarlet Singer|Scarlet Singer]] (Textures/Graphics) &amp;lt;3&lt;br /&gt;
* [[User:Will Webb|Will Webb]]&lt;br /&gt;
* [[Cocoanut Koala]]  (Coco&#039;s Cottages) Builder&lt;br /&gt;
* Illya Sullivan&lt;br /&gt;
*[[User:Frans Charming|Frans Charming]] ([http://www.thevesuviusgroup.com The Vesuvius Group])Project Planning and Management, 3D Modeling/Building, Scripting, Texturing, etc&lt;br /&gt;
* [[User:Nomasha Syaka|Nomasha Syaka]] build/model/textures&lt;br /&gt;
*[[User:Rhiannon Chatnoir|Rhiannon Chatnoir]] ([http://www.thevesuviusgroup.com The Vesuvius Group])Creative Director of The Vesuvius Group (Project Management, Planning, Textures, Terraforming, machinima), also SL and web dev for Global Kids, Inc. and a RL professional graphic designer.&lt;br /&gt;
* [[User:Shockwave Yareach|Shockwave Yareach]] (Textures/Scripting/Building)&lt;br /&gt;
* [[User:Rebel Television|Rebel Television]] ([http://www.slexchange.com/modules.php?name=Marketplace&amp;amp;file=item&amp;amp;ItemID=147428 Airfoil]) Scripting, Animation, Vehicles, Avatars, Building, In-world RSS Feed Displays&lt;br /&gt;
* [[User:Storm Thunders|Storm Thunders]]&lt;br /&gt;
* [[Rocky Merosi]] (Objects, Furnishings/Interior Design, Weapons and Vehicles, Asset Managment, Movement, Attachments, Setting Properties, Communications)&lt;br /&gt;
*[[User:Moriz Gupte|Moriz Gupte]] ([http://www.play2train.org Play2Train])Producer, Scripter, Builder SL educator&lt;br /&gt;
*([http://homepage.mac.com/salazarjack/ Salazar Jack]) - Kahruvel Design - Environments, Landscapes, Forest Preservation, Terraforming, Architecture, Archeological Restoration, Furnishings/Interior Design, Objects, Textures&lt;br /&gt;
*[[User:Raven Pennyfeather|Raven Pennyfeather]] Owner/operator for House of RFyre LLC,clothing and avatar development, textures building, business analyst, gragphic design.&lt;br /&gt;
*[[User:Thraxis Epsilon|Thraxis Epsilon]] (Resume in Profile)&lt;br /&gt;
*[[User:Angelica Puff|Angelica Puff]] (Communications, External &amp;lt;-&amp;gt; Inworld data, Asset Management)&lt;br /&gt;
*[[User:Jeff Kelley|Jeff Kelley]] (Communications, Networking, Display, Data storage &amp;amp; access)&lt;br /&gt;
*[[User:Ace Albion|Ace Albion]] (Ace&#039;s Spaces)  prefab builder&lt;br /&gt;
*[[User:SunShine Kukulcan|SunShine Kukulcan]] (Mercury Dev Studios - Music and Media Services, Sim planning)&lt;br /&gt;
*[[User:Klink Epsilon|Klink Epsilon]] (Mercury Dev Studios - Builder, Custom Textures, Sim Design and planning, Media Services)&lt;br /&gt;
*[[User:Parker McTeague|Parker McTeague]] (BLIP) building, textures&lt;br /&gt;
*[[Demian Caldera]] Architecture, Furnishings/Interior Design, Objects, Landscaping, Terra Forming, Event Organizing, Event Set Building.&lt;br /&gt;
*[[User:Rainbow Drake|Rainbow Drake]] Director of Education - [http://raindancer.ca/NCI New Citizens Incorporated]&lt;br /&gt;
*[[User:Kamael Xevious|Kamael Xevious]] - Radio Babylonia/Batak Island Traders - Architecture, Furnishings and Interior Design, Media, Community Development and Region Construction, Education.&lt;br /&gt;
*[[User:Pipe Hesse|Pipe Hesse]] Scripting, Building&lt;br /&gt;
* [[User:Abramelin Wolfe|Abramelin Wolfe]] (Abramelin Studios Ltd / Abranimations) script/build/texture/animation/mocap/web integration&lt;br /&gt;
* [[User:katykiwi Moonflower|katykiwi Moonflower]] interior design/furnishings/building/texturing/terraforming&lt;br /&gt;
*[[User:Jade Jensen|Jade Jensen]] (Jaded Visions) Clothing Design, Avatar Creation/Design, Texturing, Graphics Design&lt;br /&gt;
*[[Darien Caldwell]] Builder/Scripter&lt;br /&gt;
*[[User:Azrazael Dhara|Azrazael Dhara]] Building, Terraforming, Sim Design, Landscaping, Instructing, Photography&lt;br /&gt;
*[[User:Andreas Isachenko|Andreas Isachenko]] Building, Scripting, DB access&lt;br /&gt;
*[[User:Jason Keegan|Jason Keegan]] (K-tech) Scripting&lt;br /&gt;
*[[User:Gaius Goodliffe|Gaius Goodliffe]] (Second Skies) Vehicles, scripting, back-end server/website integration&lt;br /&gt;
*[[User:Pericat Aquitaine|Pericat Aquitaine]] (Elf Harbour Boatyard) Vehicles, scripting, terraforming, general building&lt;br /&gt;
*[[User:Karsten Rutledge|Karsten Rutledge]] (Play2Train/K.R. Engineering) Scripting, building.&lt;br /&gt;
*[[User:Bubba Biberman|Bubba Biberman]] Building, textures, machinima&lt;br /&gt;
*[[User:Kerian Bunin|Kerian Bunin]] (uʍop əpı̣sdn) Building, Scripting, Estate Management &lt;br /&gt;
*[[User:Tsukasa Keiko|Tsukasa Keiko]] Building, Scripting&lt;br /&gt;
*[[User:Morph Wollongong|Morph Wollongong]] Gadgets, Scripting&lt;br /&gt;
*[[User:Ordinal Malaprop|Ordinal Malaprop]] - scripting, some building&lt;br /&gt;
*[[User:Donnagh McDonnagh|Donnagh McDonnagh]] - Undergraduate education (School of Communication), machinima, scripting, general building, avatar skins/clothes, 3d textures, animation, web integration, vehicles, huds, event management, orientation, inworld collaboration&lt;br /&gt;
*[[User:Able Whitman|Able Whitman]] - scripting, some building&lt;br /&gt;
*[[User:Adri Saarinen|Adri Saarinen]] - ([http://www.metaversatility.com Metaversatility]) scripting, building, presence development&lt;br /&gt;
*[[User:Curious Rousselot|Curious Rousselot]] - Scripting, Building&lt;br /&gt;
*[[User:otakup0pe Neumann|otakup0pe Neumann]] - Pleiades Consulting &amp;amp; libsecondlife. Rich Educational Content, tech integration, libsl powered services&lt;br /&gt;
*[[User:Damek Tretiak|Damek Tretiak]] - ([http://www.tretiakmedia.com Tretiak Media])/([http://www.slquery.com SLQuery.com]) scripting, building, project management&lt;br /&gt;
* [[User:Jacques Groshomme|Jacques Groshomme]] - Building/Scripting&lt;br /&gt;
* [[User:Iris Bourdeille|Iris Bourdeille]] - Building/Scripting/Texturing/Animation&lt;br /&gt;
* [[User:Fallon Winnfield|Fallon Winnfield]] - ([http://www.centric.com Centric])/([http://www.secondtalk.com Second Talk]) - Business development, building, scripting&lt;br /&gt;
* [[User:Adam Rakosi|Adam Rakosi]] - ([http://www.centric.com Centric])/([http://www.secondtalk.com Second Talk]) - Building/Scripting&lt;br /&gt;
* [[User:Neko Longduk|Neko Longduk]] - ([http://www.centric.com Centric])/([http://www.secondtalk.com Second Talk]) - Business Development, scripting&lt;br /&gt;
* [[User:Weasel Gough|Weasel Gough]] - ([http://www.centric.com Centric])/([http://www.secondtalk.com Second Talk]) - Building/Scripting/Texturing/Animation&lt;br /&gt;
* [[User:Chime Bellman|Chime Bellman]] strategy/build/model/promote&lt;br /&gt;
*[[User:Sage Duncan|Sage Duncan]] - animation/machinima/motion/media management/live performance&lt;br /&gt;
* [[User:Economic Mip|Economic Mip]] -imagine/dream&lt;br /&gt;
* [[User:Talarus Luan|Talarus Luan]] - Archaean Designs / Council of Wyrms - Scripting, Building, Consulting&lt;br /&gt;
* [[User:Dustin Widget|Dustin Widget]] Builder/Scripter/Mentor/Lots More&lt;br /&gt;
* [[User:Tab Scott|Tab Scott]] - Terry Beaubois, Montana State University - College of Art &amp;amp; Architecture - Art, Music, Architecture, Film - Sustainable Community Design&lt;br /&gt;
* [[User:Hiro Market|Hiro Market]] - ([http://www.slicr.net Slicr]) Slicr - Scripting, Consulting&lt;br /&gt;
* [[User:Scorpio Galatea|Scorpio Galatea]] - Builder (Phoenix), Texture Creator&lt;br /&gt;
* [[User:Sylvia Trilling|Sylvia Trilling]] - Modeling, Scripting, Animating, Texturing&lt;br /&gt;
* [[User:Earnest Candour|Earnest Candour]] - ([http://www.metaverseenterprises.com Metaverse Enterprises])&lt;br /&gt;
* [[User:Carl Metropolitan|Carl Metropolitan]] - Building, Site Developement, Project Management, Marketing, Graphic Design, Event Hosting, Terraforming, Teaching&lt;br /&gt;
* [[User:Lecktor Hannibal|Lecktor Hannibal]] - (Landscaping, Estate Management, Modeling, Media Streaming, Event Management)&lt;br /&gt;
* [[User:Destiny Niles|Destiny Niles]] - Scripter/Mentor&lt;br /&gt;
*[[User:Kim Anubis|Kim Anubis]], ([http://www.themagicians.us The Magicians])&lt;br /&gt;
* [[User:Bobble Bertone|Bobble Bertone]] - ([http://www.coolbananas.com.au Cool Bananas Ventures]) - Building, Scripting, Terra forming, Project management, Networking with RL businesses.&lt;br /&gt;
* [[User:Logan Bauer|Logan Bauer]] - Building/Texturing/Scripting/Ect.&lt;br /&gt;
* [[User:In Kenzo|In Kenzo]] ([http://www.amoration.org Amoration]) Design, Building, Machinima, Events, Immersive Experiences for nonprofits and education&lt;br /&gt;
* [[User:Gearsawe Stonecutter|Gearsawe Stonecutter]] - Scripting, HUDs, Building, complex prim transformations, single script simplification&lt;br /&gt;
* [[User:Apollo Case|Apollo Case]] - (Armory Island and Armory Xtreme)- Virtual Weapons, Combat Items and Gadgets - Conceptualization, Testing, Marketing, Communication, Distribution, and Retailing - Combat Sim Owner and Developer&lt;br /&gt;
* Sindy Tsure (Scripting, Buidling)&lt;br /&gt;
* Huns Valen - ([http://valenheavy.com Valen Heavy Industries]) - Aircraft physics &amp;amp; avionics. Efficient interprocess communication. Remote business logic. Heuristic algorithms. Cryptography. User interfaces.&lt;br /&gt;
* [[User:Damanios Thetan|Damanios Thetan]] - ([http://www.damanicorp.com Damani]) - Modeling, Building, Texturing, Scripting, External server comms.&lt;br /&gt;
* [[User:Mary Edison|Mary Edison]] - (Phase 5) - Modeling, Building, Texturing, Design.&lt;br /&gt;
* Catty Loon  - Building/Scripting&lt;br /&gt;
* [[User:Phelan Corrimal|Phelan Corrimal]] - ROCKCLIFFE UNIVERSITY - Please note that we are already more than 50% of the way there to having this already developed as we&#039;ve been working on this since November 2006 when Linden Labs pulled out from financially supporting education. We are most interested in providing full support behind this initiative and would welcome people to come have a look at what we have to offer currently and where we are planning to be come end of August, 2007.&lt;br /&gt;
* [[User:Restorator Ristow|Restorator Ristow]] - Promotion and Marketing, novice builder&lt;br /&gt;
* [[User:Scout Detritus|Scout Detritus]] - Scripting, Building, Sounds, Animations, Clothing/Textures, Marketing, Sim Design.&lt;br /&gt;
* [[User:Nylon Pinkney|Nylon Pinkney]] - Texturing&lt;br /&gt;
* [[User:Alessio0108 Beck|Alessio0108 Beck]] - Nogravity - Full service italian agency - scripting - building - SltoRl web applications - design - sl real estate&lt;br /&gt;
* [[User:Osprey Therian|Osprey Therian]] - building, texturing, machinima&lt;br /&gt;
* [[User:Max Pitre|Max Pitre]] - building, texturing, scripting&lt;br /&gt;
* [[User:Gus Poutine|Gus Poutine]] - Instructional Designer A.S.K. Learning&lt;br /&gt;
* [[User:Lucian Overlord|Lucian Overlord]] - building, texturing,modeling, animations,sim design&lt;br /&gt;
* [[User:Lordfly Digeridoo|Lordfly Digeridoo]] - Digeridoodesigns.com -- building, architecture, sim planning&lt;br /&gt;
* [[User:Jauani Wu|Jauani Wu]] - second life is just like real life ... if you replace &amp;quot;second&amp;quot; with &amp;quot;no&amp;quot;&lt;br /&gt;
* [[User:MadamG Zagato|MadamG Zagato]] - ([http://www.never30.com Never 30 &amp;amp; N30 Studios]) Residential and commercial building, Web &amp;lt;---&amp;gt; LSL Communications, SL to RL Fashion, Furniture and Interior Design [UMPIRE], Photography [N30].&lt;br /&gt;
* [[User:Aradia Dielli|Aradia Dielli]] - Building, Modeling, Interior design, Photography.&lt;br /&gt;
* [[User:PajVar Kerensky|PajVar Kerensky]] - DESHADOW CUSTOMS - Custom Building, Scripting, Sim Development, Business Consultation, Community Development, WWW Portals, WWW Sites, In-World Community tools.&lt;br /&gt;
* [[User:Bobby Berwick|Bobby Berwick]] (QHB - Quality Home Builders) Scripting, Building&lt;br /&gt;
* [[User:SignpostMarv Martin|SignpostMarv Martin]]  - geek. Does all kinds of things.&lt;br /&gt;
* [[User:Dnel DaSilva|D&#039;Nel DaSilva]] (Xessories by D&#039;Nel DaSilva) Builder, specializing in jewelry and other avatar accessories including the scripts used in them.&lt;br /&gt;
* [[User:Joshua Perenti|Joshua Perenti]] - Live Helper, Sim Designer, Landscaper &amp;amp; Builder&lt;br /&gt;
* [[User:Lucius Nesterov|Lucius Nesterov]] - ([http://lucius-games.blogspot.com/ Development Blog]) In-world game development&lt;br /&gt;
* [[User:Lewis Nerd|Lewis Nerd]] - ([http://www.lewisnerd.com website]) - Construction, development, landscaping and consultation&lt;br /&gt;
* [[User:Zal Chevalier|Zal Chevalier]] - Architect&lt;br /&gt;
* [[User:Casu Capra|Casu Capra]]&lt;br /&gt;
* [[User:Dalian Hansen|Dalian Hansen]] - Creative Director  ([http://tretiakmedia.com/ Tretiak Media]) full service sim design and construction, SL &amp;gt; RL integration (advertising, marketing, internet/web design) ([http://www.cafepress.com/hantranslation/ Han Translation])  - Photography, Design/Translation in Japanese/Mandarin&lt;br /&gt;
* [[User:Kami Harbinger|Kami Harbinger]] - Developer of many scripted devices and the Pellucidar adventure game.&lt;br /&gt;
* [[User:Top Tank|Top Tank]] - Scripting, product design&lt;br /&gt;
* [[User:Whispering Hush|Whispering Hush]] Custom scripting boats, cars, push and non push weapons, prim torture, and general building.&lt;br /&gt;
* [[User:Nex Brannan|Nex Brannan]] Brutal Gear [http://gearshop.blogspot.com.com/ GearShop]) Clothing, Hair, Accesories, Building.&lt;br /&gt;
* [[User:HatHead Rickenbacker|HatHead Rickenbacker]] [http://hatheadinc.com/ HatHead Incubators] Modeling, Scripting.&lt;br /&gt;
* [[User:Desideria Stockton|Desideria Stockton]] (Literature Alive!) College Educator, Web 2.0, 3.0&lt;br /&gt;
* [[User:Isandra Willunga|Isandra_Willunga]] - IDS - scripting, texturing, lowprim building, general guidance.&lt;br /&gt;
* [[User:Derin Swenson|Derin Swenson]] ([http://www.olemissbusiness.com/ University of Mississippi, School of Business]) Building, Scripting, RL -&amp;gt; SL integration&lt;br /&gt;
* [[User:Escort DeFarge|Escort DeFarge]] (Together Systems) All aspects of scripting&lt;br /&gt;
* [[User:Davidorban Agnon|Davidorban Agnon]] ([http://www.questar.eu/secondlife Questar] and [http://vulca.no Vulcano])&lt;br /&gt;
* [[User:Mevo Syaka|Mevo Syaka]] - LSL Scripting, Modelling, Texturing, Custom Work&lt;br /&gt;
* [[User:Uccello Poultry|Uccello Poultry]] - Building, Texturing (including sign graphics), Clothing, Landscaping, Contract/On-Demand Work&lt;br /&gt;
* [[User:Itazura Radio|Itazura Radio]] - Modeling Architecture and Furnishings/Interior Design as well as Avatars, Terraforming, and Land/Estate Management. Photoshop and custom graphics skills.&lt;br /&gt;
* [[User:Phish Frye|Phish Frye]] - LSL scripter and expert programmer, specializing in connecting in-world objects to real world servers [http://www.purplestripe.com/ Purple Stripe]&lt;br /&gt;
* [[User:Haterot Okina|Haterot Okina]] - LSL scripter and builder extraordinaire. [http://www.purplestripe.com/ Purple Stripe]&lt;br /&gt;
* Noramyr Gullwing - ExtroVirtual (Flights of Fantasy) Builder, texturer, designer, graphic arts and development&lt;br /&gt;
* [[User:Gregory McLeod|Gregory McLeod]] Scripter of Games.&lt;br /&gt;
* [[User:Timeless Prototype|Timeless Prototype]] - Creator of the Multi Gadget&lt;br /&gt;
* [[User:Zayn Till|Zayn Till]] ([http://www.metaverseunlimited.com/ Metaverse Unlimited]) Building, Texturing, Content &amp;amp; Concept Creation, Sim design &amp;amp; Management, Real life business solutions&lt;br /&gt;
* [[User:Actionworx Pro|Actionworx Pro]] - MySQL, PHP, HTTP, LSL, XML.&lt;br /&gt;
* [[User:Ipenda Keynes|Ipenda Keynes]] ([http://paws-above.com/ Paws Above University]) Founder of PAU, creator of widely accepted &amp;quot;content standards&amp;quot;. Certified, K-12 Educator with skills in LSL, and general SL knowledge.&lt;br /&gt;
* [[User:Yumi Murakami|Yumi Murakami]] - Scripting, Newbie helper volunteer, NCI contributor, RL education experience.&lt;br /&gt;
* [[User:Arthur Fermi|Arthur Fermi]] - Scripting, Building, Fermi Sandbox, Landscaping [http://fermidesigns.com/ Fermi Designs]&lt;br /&gt;
* [[User:Gatz Morang|Gatz Morang]] - Texture artist, builder&lt;br /&gt;
* [[Jessica Ornitz]] - Architecture, Sim Planning, Texturing, Landscaping and Interior design&lt;br /&gt;
* [[User:Fleep Tuque|Fleep Tuque]] - Faculty Educator, Concierge Member, Chilbo Community Building Project&lt;br /&gt;
* [[User:Pumpkin Tripsa|Pumpkin Tripsa]] - (UV Taxidermy/ The Steamed Palette)- Custom Av Texturing and Shaping; Building, Scripting, Texturing&lt;br /&gt;
* [[User:Ro Gastel|Ro Gastel]] - Liquid Prims, Scipting, Builder&lt;br /&gt;
* [[User:AHG Hallard|AHG Hallard]] - Scripting, Design, Content and Concept creation, Building, Real Life educational, training and business solutions&lt;br /&gt;
* [[User:SL Mathilde|SL Mathilde]] - Scripting, Building, Real Life educational, training and business solutions&lt;br /&gt;
* [[Roderick Runo]] Builder/Scripter&lt;br /&gt;
* [[User:Equitus Bosch|Equitus Bosch]] Architect and Planner, Mojo Business Ventures&lt;br /&gt;
* [[Threshin Barnett]] - Terraforming, Building, Decorating, Landscaping, Animations, Design, Texturing, Land/Estate managment&lt;br /&gt;
* [[Laylah Mistral]] ([http://www.get-inkd.com/ Get InkD!]) Tattoos, photography, graphic design/textures, and marketing for SL and RL ([http://www.slmarketing.us/ SL Marketing]).&lt;br /&gt;
* [[Torment Thorn]]  - Wicked, Inc. since 2004, Wicked stuff for Wicked folks.  Childrens to Goreans we have something for everyone.  Avatars, clothing, houses, furniture and more.&lt;br /&gt;
* [[User:Charlene Trudeau|Charlene Trudeau]] - Building/Architecture.&lt;br /&gt;
* [[User:Matthew Dowd|Matthew Dowd]] - Scripting, some building&lt;br /&gt;
* [[User:Fumon Kubo|Fumon Kubo]] Frelance contract and while-you-wait scripter (MySQL, LSL, PHP, HTML, Java, C++), SL educator (RL/SL math + programming), Technical Advisor and Jack of all other trades.&lt;br /&gt;
* [[User:Joker Opus|Joker Opus]] LSL,PHP,vB,BAISIC,Javascript,Perl, CSS scripter. Live Helper, Mentor, Instructor. Linden Test Dummy =P (Kick at will sire ;))&lt;br /&gt;
* [[User:Lothaniel Yellowknife|Lothaniel Yellowknife]] LSL, Design/Texturing. Mentor, Live Helper, Instructor, Estate manager. Freelance Journalist and Photographer.&lt;br /&gt;
* [[User:Grady Echegaray|Grady Echegaray]] - Building/Architecture/Exhibitions and Curatorial&lt;br /&gt;
* [[User:Ceeq Laborde|Ceeq Laborde]] - Developer&lt;br /&gt;
* [[User:Stephanie Misfit|Stephanie Misfit]]&lt;br /&gt;
* [[User:Little Gray|Little Gray]] ([http://slurl.com/secondlife/Jinn/243/110/231/ Little Shop of Scripts &#039;n Things)] - Scripts, Builds, Contractor, &amp;amp; Legal Srvcs.&lt;br /&gt;
* [[User:Dnate Mars|Dnate Mars]] - nobody&lt;br /&gt;
* [[User:Wolf Yohei|Wolf Yohei]] - Builder, scripter, designer, MIB&lt;br /&gt;
* [[User:Geuis Dassin|Geuis Dassin]] (Mannea, Filming Path Studios) Scripter, Machinimatographer, Builder&lt;br /&gt;
* [[User:Rob Arten|Rob Arten]] - Project Management, Architecture.&lt;br /&gt;
* [[User:Cory Edo|Cory Edo]] - building, texture creation, project management&lt;br /&gt;
* [[User:Komuso Tokugawa|Komuso Tokugawa]]&lt;br /&gt;
* [[User:Anna Gulaev|Anna Gulaev]] - builder, scripter, designer, programmer - Vengeance Studio&lt;br /&gt;
* [[User:David Cartier|David Cartier]] - Period Architecture and Interior Design, Landscaping, Texture Designs. Member of the Artist Friends Collaborative.&lt;br /&gt;
* [[User:Upshaw Underhill|Upshaw Underhill]] - Builder and Scripter. Member of the Artist Friends Collaborative.&lt;br /&gt;
* [[User:Roseann Flora|Roseann Flora]] - Buildings, Clothing, Textures and Objects. Member of the Artist Friends Collaborative.&lt;br /&gt;
* [[User:Traven Sachs|Traven Sachs]] ([http://www.wolfhavenproductions.com/]) Scripting, Building, Texturing, Content &amp;amp; Concept Creation, Sim design &amp;amp; Management/Terraforming, Business &amp;amp; Point of Sales Solutions.&lt;/div&gt;</summary>
		<author><name>Traven Sachs</name></author>
	</entry>
</feed>