<?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=Tdub+Dowler</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=Tdub+Dowler"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/wiki/Special:Contributions/Tdub_Dowler"/>
	<updated>2026-07-28T05:56:52Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Tdub_Dowler&amp;diff=15821</id>
		<title>User:Tdub Dowler</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Tdub_Dowler&amp;diff=15821"/>
		<updated>2007-03-21T04:10:10Z</updated>

		<summary type="html">&lt;p&gt;Tdub Dowler: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I enjoy scripting. It&#039;s the only reason I play SL anymore.&lt;/div&gt;</summary>
		<author><name>Tdub Dowler</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=XyText_1.5&amp;diff=14518</id>
		<title>XyText 1.5</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=XyText_1.5&amp;diff=14518"/>
		<updated>2007-03-04T00:20:23Z</updated>

		<summary type="html">&lt;p&gt;Tdub Dowler: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
This is a variation of XyText allowing up to 10 characters on a prim. All scripts are included.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The prim size script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// XyText v1.0.3 Prim Setup Script (5 Face, Multi Texture)&lt;br /&gt;
//&lt;br /&gt;
// Rewritten by Tdub Dowler&lt;br /&gt;
//&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
string FACE_TEXTURE = &amp;quot;09b04244-9569-d21f-6de0-4bbcf5552222&amp;quot;;&lt;br /&gt;
string  TRANSPARENT = &amp;quot;701917a8-d614-471f-13dd-5f4644e36e3c&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetPrimitiveParams([&lt;br /&gt;
          PRIM_TYPE, PRIM_TYPE_PRISM, PRIM_HOLE_SQUARE, &amp;lt;0.199, 0.8, 0.0&amp;gt;, 0.30,&lt;br /&gt;
            ZERO_VECTOR, &amp;lt;1.0, 1.0, 0.0&amp;gt;, ZERO_VECTOR,&lt;br /&gt;
            &lt;br /&gt;
          // display a default face texture&lt;br /&gt;
          PRIM_TEXTURE, 1, FACE_TEXTURE, &amp;lt;2.48, 1.0, 0.0&amp;gt;, &amp;lt;-0.740013, 0.0, 0.0&amp;gt;, 0.0,&lt;br /&gt;
          PRIM_TEXTURE, 6, FACE_TEXTURE, &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, FACE_TEXTURE, &amp;lt;-14.75, 1.0, 0.0&amp;gt;, &amp;lt;0.130009, 0.0, 0.0&amp;gt;, 0.0,&lt;br /&gt;
          PRIM_TEXTURE, 7, FACE_TEXTURE, &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, FACE_TEXTURE, &amp;lt;2.48, 1.0, 0.0&amp;gt;, &amp;lt;-0.255989, 0.0, 0.0&amp;gt;, 0.0,&lt;br /&gt;
&lt;br /&gt;
          // show transparent textures for the other sides&lt;br /&gt;
          PRIM_TEXTURE, 0, TRANSPARENT, &amp;lt;0.1, 0.1, 0&amp;gt;, ZERO_VECTOR, 0.0,&lt;br /&gt;
          PRIM_TEXTURE, 2, TRANSPARENT, &amp;lt;0.1, 0.1, 0&amp;gt;, ZERO_VECTOR, 0.0,&lt;br /&gt;
          PRIM_TEXTURE, 5, TRANSPARENT, &amp;lt;0.1, 0.1, 0&amp;gt;, ZERO_VECTOR, 0.0,&lt;br /&gt;
&lt;br /&gt;
          PRIM_SIZE, &amp;lt;0.03, 2.89, 0.5&amp;gt;&lt;br /&gt;
        ]);&lt;br /&gt;
&lt;br /&gt;
        // Remove ourselves from inventory.&lt;br /&gt;
        llRemoveInventory(llGetScriptName());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The modified xyText cell script (written by Xylor Baysklef):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// XyText v1.0.3 Script (5 Face, Multi Texture)&lt;br /&gt;
//&lt;br /&gt;
// Written by Xylor Baysklef&lt;br /&gt;
//&lt;br /&gt;
// Modified by Thraxis Epsilon January 20, 2006&lt;br /&gt;
// Added Support for 5 Face Prim, based on modification&lt;br /&gt;
// of XyText v1.1.1 by Kermitt Quick for Single Texture.&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_CELL_INFO       = 204004;&lt;br /&gt;
integer SET_THICKNESS       = 204006;&lt;br /&gt;
integer SET_COLOR           = 204007;&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;
// 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;
// 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;
        &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;
/////////// 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(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;
   llSetPrimitiveParams( [&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(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(GridPos1, GridPos2, GridPos3, GridPos4, GridPos5);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
RenderWithEffects(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(GridPos1, GridPos2, GridPos3, GridPos4, GridPos5);&lt;br /&gt;
&lt;br /&gt;
    float Alpha;&lt;br /&gt;
    for (Alpha = 0.10; 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;
RenderExtended(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 6 indices.&lt;br /&gt;
    integer IndicesLeft = 10;&lt;br /&gt;
&lt;br /&gt;
    integer i;&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 = 0; 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;&lt;br /&gt;
                for (j = 1; 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 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(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;
default {&lt;br /&gt;
    state_entry() {&lt;br /&gt;
        // Initialize the character index.&lt;br /&gt;
        ResetCharIndex();&lt;br /&gt;
&lt;br /&gt;
        //llSay(0, &amp;quot;Free Memory: &amp;quot; + (string) llGetFreeMemory());&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    link_message(integer sender, integer channel, string data, key id) {&lt;br /&gt;
        if (channel == DISPLAY_STRING) {&lt;br /&gt;
            RenderString(data);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (channel == DISPLAY_EXTENDED) {&lt;br /&gt;
            RenderExtended(data);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (channel == gCellChannel) {&lt;br /&gt;
            // Extract the characters we are interested in, and use those to render.&lt;br /&gt;
            string TextToRender = llGetSubString(data, gCellCharPosition, gCellCharPosition + 9);&lt;br /&gt;
            if (gCellUseFading)&lt;br /&gt;
               RenderWithEffects( TextToRender );&lt;br /&gt;
            else // !gCellUseFading&lt;br /&gt;
                RenderString( TextToRender );&lt;br /&gt;
            return;&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;
        if (channel == SET_CELL_INFO) {&lt;br /&gt;
            // Change the channel we listen to for cell commands, and the&lt;br /&gt;
            // starting character position to extract from.&lt;br /&gt;
            list Parsed = llCSV2List(data);&lt;br /&gt;
            gCellChannel        = (integer) llList2String(Parsed, 0);&lt;br /&gt;
            gCellCharPosition   = (integer) llList2String(Parsed, 1);&lt;br /&gt;
           gCellUseFading      = (integer) llList2String(Parsed, 2);&lt;br /&gt;
           gCellHoldDelay      = (float)   llList2String(Parsed, 3);             &lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (channel == SET_THICKNESS) {&lt;br /&gt;
           // Set our z scale to thickness, while staying fixed&lt;br /&gt;
           // in position relative the prim below us.&lt;br /&gt;
           vector Scale    = llGetScale();&lt;br /&gt;
           float Thickness = (float) data;&lt;br /&gt;
                      // Reposition only if this isn&#039;t the root prim.&lt;br /&gt;
           integer ThisLink = llGetLinkNumber();&lt;br /&gt;
           if (ThisLink != 0 || ThisLink != 1) {&lt;br /&gt;
               // This is not the root prim.&lt;br /&gt;
               vector Up = llRot2Up(llGetLocalRot());&lt;br /&gt;
               float DistanceToMove = Thickness / 2.0 - Scale.z / 2.0;&lt;br /&gt;
               vector Pos = llGetLocalPos();&lt;br /&gt;
               llSetPos(Pos + DistanceToMove * Up);&lt;br /&gt;
           }&lt;br /&gt;
           // Apply the new thickness.&lt;br /&gt;
           Scale.z = Thickness;&lt;br /&gt;
           llSetScale(Scale);&lt;br /&gt;
           return;&lt;br /&gt;
        }&lt;br /&gt;
        if (channel == SET_COLOR) {&lt;br /&gt;
           vector newColor = (vector)data;&lt;br /&gt;
           llSetColor(newColor, ALL_SIDES);&lt;br /&gt;
        }         &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The last script is the script that I tweaked to allow up to 500 characters on 50 cells. It WILL work with a lower amount of cells though. The script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// &lt;br /&gt;
//&lt;br /&gt;
// Written by Tdub Dowler&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
/////////////// CONSTANTS ///////////////////&lt;br /&gt;
// XyText Message Map.&lt;br /&gt;
integer SET_LINE_CHANNEL = 100100;&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_CELL_INFO       = 204004;&lt;br /&gt;
string  MSG                 = &amp;quot;Testing, 1,2,3&amp;quot;;&lt;br /&gt;
///////////// END CONSTANTS ////////////////&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer start)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        integer ThisLink = llGetLinkNumber();&lt;br /&gt;
        llMessageLinked(LINK_SET, DISPLAY_STRING, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
        //Now time to set the cell info&lt;br /&gt;
        llMessageLinked(ThisLink , SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 0]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 1, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 10]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 2, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 20]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 3, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 30]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 4, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 40]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 5, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 50]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 6, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 60]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 7, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 70]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 8, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 80]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 9, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 90]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 10, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 100]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 11, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 110]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 12, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 120]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 13, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 130]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 14, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 140]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 15, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 150]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 16, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 160]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 17, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 170]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 18, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 180]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 19, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 190]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 20, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 200]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 21, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 210]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 22, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 220]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 23, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 230]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 24, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 240]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 25, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 250]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 26, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 260]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 27, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 270]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 28, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 280]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 29, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 290]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 30, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 300]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 31, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 310]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 32, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 320]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 33, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 340]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 34, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 350]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 35, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 360]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 36, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 370]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 37, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 380]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 38, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 390]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 39, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 400]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 40, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 410]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 41, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 420]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 42, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 430]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 43, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 440]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 44, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 450]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 45, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 460]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 46, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 470]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 47, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 480]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llSleep(1);&lt;br /&gt;
        //Send the message&lt;br /&gt;
        llMessageLinked(LINK_SET, SET_LINE_CHANNEL, MSG, &amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Many thanks to Xylor Baysklef and Kermitt Quick.&lt;br /&gt;
{{#vardefine:sort|Key Pad Door}}{{LSLC|Library}}{{LSLC|Examples}}&lt;/div&gt;</summary>
		<author><name>Tdub Dowler</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_Library&amp;diff=14517</id>
		<title>LSL Library</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_Library&amp;diff=14517"/>
		<updated>2007-03-04T00:16:50Z</updated>

		<summary type="html">&lt;p&gt;Tdub Dowler: /* Rules for posting: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
==Script Library==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em 0.5em 1.5em&amp;quot;&amp;gt;&lt;br /&gt;
There are many [[script|scripts]] that have become buried in the [http://forums.secondlife.com/forumdisplay.php?f=15 Scripting Library forum], were lost with the death of the scripting forums, or sit idle in [[inventory|inventories]] that could be useful and should be more accessible.&lt;br /&gt;
&lt;br /&gt;
Other scripters may be in the same situation. This wiki is a well-suited medium for a script library. Feel free to add your scripts to the script library by creating new pages for them and linking to those pages here.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rules for posting: ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
#Your script must be tested and working. If it&#039;s not, stick it in your user-space until it is. This is a list of working, usable scripts.&lt;br /&gt;
#Add a link to your script&#039;s page here. Link back to this page from your script&#039;s page.&lt;br /&gt;
#Do not add scripts that duplicate the same functionality as an existing script. If yours does, explain why.&lt;br /&gt;
#Do not post simple scripts to the library. Simple scripts should be posted to the Examples list.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| {{Prettytable}}&lt;br /&gt;
|-&lt;br /&gt;
|{{Hl2}}| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
|{{Hl2}}| &#039;&#039;&#039;Creator&#039;&#039;&#039;&lt;br /&gt;
|{{Hl2}}| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|| [[LSL Library/Hello Avatar|Hello Avatar]]&lt;br /&gt;
|| Linden Lab&lt;br /&gt;
|| SL&#039;s [[default]] script&lt;br /&gt;
|-&lt;br /&gt;
|| [[LSL Library/Chat Logger (GPL)|Chat Logger (GPL)]]&lt;br /&gt;
|| [[User:Nobody Fugazi|Nobody Fugazi]]&lt;br /&gt;
|| Chat logger which requests permission from participants before recording them.&lt;br /&gt;
|-&lt;br /&gt;
||[[LSL Library/Day of the Week|Day of the Week]]&lt;br /&gt;
||[[User:DoteDote Edison|DoteDote Edison]]&lt;br /&gt;
||Function to get day of the week from [[llGetUnixTime]].&lt;br /&gt;
|-&lt;br /&gt;
||[[LSL Library/Dialog NumberPad|Dialog Number Pad]]&lt;br /&gt;
||[[User:DoteDote Edison|DoteDote Edison]]&lt;br /&gt;
||Use a dialog to accept positive integer input from users.&lt;br /&gt;
|-&lt;br /&gt;
||[[LSL Library/Float2Hex|Float2Hex]]&lt;br /&gt;
||[[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
||Very useful for transporting [[float|floats]].&lt;br /&gt;
|-&lt;br /&gt;
||[[LSL Library/Timer Module|Timer Module]]&lt;br /&gt;
||[[User:Isabelle Aquitaine|Isabelle Aquitaine]]&lt;br /&gt;
||Manage multiple timers via linked messages.&lt;br /&gt;
|-&lt;br /&gt;
||[http://forums.secondlife.com/showthread.php?t=12156 XyText]&lt;br /&gt;
||[[User:Xylor Baysklef|Xylor Baysklef]]&lt;br /&gt;
|| Display text (up to 6 characters) on a prim&lt;br /&gt;
|-&lt;br /&gt;
||[[LSL Library/XyText 1.5|XyText 1.5]]&lt;br /&gt;
||[[User:Tdub Dowler|Tdub Dowler]]&lt;br /&gt;
|| Display text (up to 10 characters) on a prim. Use as many prims as desired.&lt;br /&gt;
|-&lt;br /&gt;
||[[LSL Library/Date Library|Date Library]]&lt;br /&gt;
||[[User:Corto Maltese|Corto Maltese]]&lt;br /&gt;
|| Date library, based on number of day since march 3rd 1600, can be used to calculate weekday, date differences, and date offset, and date formating.&lt;br /&gt;
|-&lt;br /&gt;
||[[LSL Library/Secure HTTP Post|Secure HTTP Post]]&lt;br /&gt;
||[[User:Corto Maltese|Corto Maltese]]&lt;br /&gt;
|| This small library allow you to send Secure requests to your website with a security mechanism aimed to stop hacking.&lt;br /&gt;
|-&lt;br /&gt;
||[[LSL Library/Basic Encryption Modules|Basic Encryption Modules]]&lt;br /&gt;
||[[User:Beverly Larkin|Beverly Larkin]]&lt;br /&gt;
||Basic encryption scripts, allows you to encrypt a float, and shout it to another prim on a randomly chosen channel.&lt;br /&gt;
|-&lt;br /&gt;
||[[LSL Library/Self Upgrading Script Enhanced|Self Upgrading Script Enhanced]]&lt;br /&gt;
||[[User:Cron Stardust|Cron Stardust]]&lt;br /&gt;
|| Keeps only latest version of the script on prim (Even with multiple adds of the same script!)&lt;br /&gt;
|-&lt;br /&gt;
||[[LSL Library/Key Pad Door|Tdub&#039;s Keypad Door]]&lt;br /&gt;
||[[User:Tdub Dowler|Tdub Dowler]]&lt;br /&gt;
|| Door and keypad with changable code. Follow instructions carefully!&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Support Script Library==&lt;br /&gt;
These are scripts in other languages, intended to be run on other systems that support scripts written in LSL&lt;br /&gt;
&lt;br /&gt;
{| {{Prettytable}}&lt;br /&gt;
|-&lt;br /&gt;
|{{Hl2}}| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
|{{Hl2}}| &#039;&#039;&#039;Creator&#039;&#039;&#039;&lt;br /&gt;
|{{Hl2}}| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|| Silo&lt;br /&gt;
|| [[User:Zero_Linden|Zero Linden]]&lt;br /&gt;
|| General purpose data store in PHP.  Use this to persist arbitrary data from LSL via [[llHTTPRequest]].  See:&lt;br /&gt;
* [http://www.notabene-sl.com/misc/silo-README.txt README] file&lt;br /&gt;
* [http://www.notabene-sl.com/misc/silo.tgz silo.tgz] tarball&lt;br /&gt;
* forum post [http://forums.secondlife.com/showthread.php?t=119570 Announcement].&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Tdub Dowler</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=XyText_1.5&amp;diff=14516</id>
		<title>XyText 1.5</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=XyText_1.5&amp;diff=14516"/>
		<updated>2007-03-04T00:12:03Z</updated>

		<summary type="html">&lt;p&gt;Tdub Dowler: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a variation of XyText allowing up to 10 characters on a prim. All scripts are included.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The prim size script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// XyText v1.0.3 Prim Setup Script (5 Face, Multi Texture)&lt;br /&gt;
//&lt;br /&gt;
// Rewritten by Tdub Dowler&lt;br /&gt;
//&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
string FACE_TEXTURE = &amp;quot;09b04244-9569-d21f-6de0-4bbcf5552222&amp;quot;;&lt;br /&gt;
string  TRANSPARENT = &amp;quot;701917a8-d614-471f-13dd-5f4644e36e3c&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetPrimitiveParams([&lt;br /&gt;
          PRIM_TYPE, PRIM_TYPE_PRISM, PRIM_HOLE_SQUARE, &amp;lt;0.199, 0.8, 0.0&amp;gt;, 0.30,&lt;br /&gt;
            ZERO_VECTOR, &amp;lt;1.0, 1.0, 0.0&amp;gt;, ZERO_VECTOR,&lt;br /&gt;
            &lt;br /&gt;
          // display a default face texture&lt;br /&gt;
          PRIM_TEXTURE, 1, FACE_TEXTURE, &amp;lt;2.48, 1.0, 0.0&amp;gt;, &amp;lt;-0.740013, 0.0, 0.0&amp;gt;, 0.0,&lt;br /&gt;
          PRIM_TEXTURE, 6, FACE_TEXTURE, &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, FACE_TEXTURE, &amp;lt;-14.75, 1.0, 0.0&amp;gt;, &amp;lt;0.130009, 0.0, 0.0&amp;gt;, 0.0,&lt;br /&gt;
          PRIM_TEXTURE, 7, FACE_TEXTURE, &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, FACE_TEXTURE, &amp;lt;2.48, 1.0, 0.0&amp;gt;, &amp;lt;-0.255989, 0.0, 0.0&amp;gt;, 0.0,&lt;br /&gt;
&lt;br /&gt;
          // show transparent textures for the other sides&lt;br /&gt;
          PRIM_TEXTURE, 0, TRANSPARENT, &amp;lt;0.1, 0.1, 0&amp;gt;, ZERO_VECTOR, 0.0,&lt;br /&gt;
          PRIM_TEXTURE, 2, TRANSPARENT, &amp;lt;0.1, 0.1, 0&amp;gt;, ZERO_VECTOR, 0.0,&lt;br /&gt;
          PRIM_TEXTURE, 5, TRANSPARENT, &amp;lt;0.1, 0.1, 0&amp;gt;, ZERO_VECTOR, 0.0,&lt;br /&gt;
&lt;br /&gt;
          PRIM_SIZE, &amp;lt;0.03, 2.89, 0.5&amp;gt;&lt;br /&gt;
        ]);&lt;br /&gt;
&lt;br /&gt;
        // Remove ourselves from inventory.&lt;br /&gt;
        llRemoveInventory(llGetScriptName());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The modified xyText cell script (written by Xylor Baysklef):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// XyText v1.0.3 Script (5 Face, Multi Texture)&lt;br /&gt;
//&lt;br /&gt;
// Written by Xylor Baysklef&lt;br /&gt;
//&lt;br /&gt;
// Modified by Thraxis Epsilon January 20, 2006&lt;br /&gt;
// Added Support for 5 Face Prim, based on modification&lt;br /&gt;
// of XyText v1.1.1 by Kermitt Quick for Single Texture.&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_CELL_INFO       = 204004;&lt;br /&gt;
integer SET_THICKNESS       = 204006;&lt;br /&gt;
integer SET_COLOR           = 204007;&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;
// 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;
// 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;
        &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;
/////////// 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(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;
   llSetPrimitiveParams( [&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(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(GridPos1, GridPos2, GridPos3, GridPos4, GridPos5);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
RenderWithEffects(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(GridPos1, GridPos2, GridPos3, GridPos4, GridPos5);&lt;br /&gt;
&lt;br /&gt;
    float Alpha;&lt;br /&gt;
    for (Alpha = 0.10; 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;
RenderExtended(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 6 indices.&lt;br /&gt;
    integer IndicesLeft = 10;&lt;br /&gt;
&lt;br /&gt;
    integer i;&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 = 0; 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;&lt;br /&gt;
                for (j = 1; 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 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(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;
default {&lt;br /&gt;
    state_entry() {&lt;br /&gt;
        // Initialize the character index.&lt;br /&gt;
        ResetCharIndex();&lt;br /&gt;
&lt;br /&gt;
        //llSay(0, &amp;quot;Free Memory: &amp;quot; + (string) llGetFreeMemory());&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    link_message(integer sender, integer channel, string data, key id) {&lt;br /&gt;
        if (channel == DISPLAY_STRING) {&lt;br /&gt;
            RenderString(data);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (channel == DISPLAY_EXTENDED) {&lt;br /&gt;
            RenderExtended(data);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (channel == gCellChannel) {&lt;br /&gt;
            // Extract the characters we are interested in, and use those to render.&lt;br /&gt;
            string TextToRender = llGetSubString(data, gCellCharPosition, gCellCharPosition + 9);&lt;br /&gt;
            if (gCellUseFading)&lt;br /&gt;
               RenderWithEffects( TextToRender );&lt;br /&gt;
            else // !gCellUseFading&lt;br /&gt;
                RenderString( TextToRender );&lt;br /&gt;
            return;&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;
        if (channel == SET_CELL_INFO) {&lt;br /&gt;
            // Change the channel we listen to for cell commands, and the&lt;br /&gt;
            // starting character position to extract from.&lt;br /&gt;
            list Parsed = llCSV2List(data);&lt;br /&gt;
            gCellChannel        = (integer) llList2String(Parsed, 0);&lt;br /&gt;
            gCellCharPosition   = (integer) llList2String(Parsed, 1);&lt;br /&gt;
           gCellUseFading      = (integer) llList2String(Parsed, 2);&lt;br /&gt;
           gCellHoldDelay      = (float)   llList2String(Parsed, 3);             &lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if (channel == SET_THICKNESS) {&lt;br /&gt;
           // Set our z scale to thickness, while staying fixed&lt;br /&gt;
           // in position relative the prim below us.&lt;br /&gt;
           vector Scale    = llGetScale();&lt;br /&gt;
           float Thickness = (float) data;&lt;br /&gt;
                      // Reposition only if this isn&#039;t the root prim.&lt;br /&gt;
           integer ThisLink = llGetLinkNumber();&lt;br /&gt;
           if (ThisLink != 0 || ThisLink != 1) {&lt;br /&gt;
               // This is not the root prim.&lt;br /&gt;
               vector Up = llRot2Up(llGetLocalRot());&lt;br /&gt;
               float DistanceToMove = Thickness / 2.0 - Scale.z / 2.0;&lt;br /&gt;
               vector Pos = llGetLocalPos();&lt;br /&gt;
               llSetPos(Pos + DistanceToMove * Up);&lt;br /&gt;
           }&lt;br /&gt;
           // Apply the new thickness.&lt;br /&gt;
           Scale.z = Thickness;&lt;br /&gt;
           llSetScale(Scale);&lt;br /&gt;
           return;&lt;br /&gt;
        }&lt;br /&gt;
        if (channel == SET_COLOR) {&lt;br /&gt;
           vector newColor = (vector)data;&lt;br /&gt;
           llSetColor(newColor, ALL_SIDES);&lt;br /&gt;
        }         &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The last script is the script that I tweaked to allow up to 500 characters on 50 cells. It WILL work with a lower amount of cells though. The script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
// &lt;br /&gt;
//&lt;br /&gt;
// Written by Tdub Dowler&lt;br /&gt;
////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
/////////////// CONSTANTS ///////////////////&lt;br /&gt;
// XyText Message Map.&lt;br /&gt;
integer SET_LINE_CHANNEL = 100100;&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_CELL_INFO       = 204004;&lt;br /&gt;
string  MSG                 = &amp;quot;Testing, 1,2,3&amp;quot;;&lt;br /&gt;
///////////// END CONSTANTS ////////////////&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer start)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        integer ThisLink = llGetLinkNumber();&lt;br /&gt;
        llMessageLinked(LINK_SET, DISPLAY_STRING, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
        //Now time to set the cell info&lt;br /&gt;
        llMessageLinked(ThisLink , SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 0]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 1, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 10]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 2, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 20]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 3, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 30]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 4, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 40]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 5, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 50]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 6, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 60]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 7, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 70]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 8, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 80]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 9, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 90]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 10, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 100]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 11, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 110]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 12, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 120]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 13, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 130]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 14, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 140]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 15, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 150]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 16, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 160]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 17, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 170]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 18, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 180]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 19, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 190]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 20, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 200]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 21, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 210]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 22, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 220]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 23, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 230]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 24, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 240]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 25, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 250]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 26, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 260]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 27, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 270]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 28, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 280]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 29, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 290]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 30, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 300]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 31, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 310]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 32, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 320]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 33, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 340]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 34, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 350]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 35, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 360]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 36, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 370]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 37, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 380]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 38, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 390]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 39, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 400]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 40, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 410]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 41, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 420]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 42, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 430]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 43, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 440]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 44, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 450]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 45, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 460]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 46, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 470]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llMessageLinked(ThisLink + 47, SET_CELL_INFO, llList2CSV([SET_LINE_CHANNEL, 480]), &amp;quot;&amp;quot;);&lt;br /&gt;
        llSleep(1);&lt;br /&gt;
        //Send the message&lt;br /&gt;
        llMessageLinked(LINK_SET, SET_LINE_CHANNEL, MSG, &amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Many thanks to Xylor Baysklef and Kermitt Quick.&lt;/div&gt;</summary>
		<author><name>Tdub Dowler</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_Library&amp;diff=14514</id>
		<title>LSL Library</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_Library&amp;diff=14514"/>
		<updated>2007-03-03T23:52:59Z</updated>

		<summary type="html">&lt;p&gt;Tdub Dowler: /* Rules for posting: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
==Script Library==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em 0.5em 1.5em&amp;quot;&amp;gt;&lt;br /&gt;
There are many [[script|scripts]] that have become buried in the [http://forums.secondlife.com/forumdisplay.php?f=15 Scripting Library forum], were lost with the death of the scripting forums, or sit idle in [[inventory|inventories]] that could be useful and should be more accessible.&lt;br /&gt;
&lt;br /&gt;
Other scripters may be in the same situation. This wiki is a well-suited medium for a script library. Feel free to add your scripts to the script library by creating new pages for them and linking to those pages here.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;box&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rules for posting: ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0.5em&amp;quot;&amp;gt;&lt;br /&gt;
#Your script must be tested and working. If it&#039;s not, stick it in your user-space until it is. This is a list of working, usable scripts.&lt;br /&gt;
#Add a link to your script&#039;s page here. Link back to this page from your script&#039;s page.&lt;br /&gt;
#Do not add scripts that duplicate the same functionality as an existing script. If yours does, explain why.&lt;br /&gt;
#Do not post simple scripts to the library. Simple scripts should be posted to the Examples list.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| {{Prettytable}}&lt;br /&gt;
|-&lt;br /&gt;
|{{Hl2}}| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
|{{Hl2}}| &#039;&#039;&#039;Creator&#039;&#039;&#039;&lt;br /&gt;
|{{Hl2}}| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|| [[LSL Library/Hello Avatar|Hello Avatar]]&lt;br /&gt;
|| Linden Lab&lt;br /&gt;
|| SL&#039;s [[default]] script&lt;br /&gt;
|-&lt;br /&gt;
|| [[LSL Library/Chat Logger (GPL)|Chat Logger (GPL)]]&lt;br /&gt;
|| [[User:Nobody Fugazi|Nobody Fugazi]]&lt;br /&gt;
|| Chat logger which requests permission from participants before recording them.&lt;br /&gt;
|-&lt;br /&gt;
||[[LSL Library/Day of the Week|Day of the Week]]&lt;br /&gt;
||[[User:DoteDote Edison|DoteDote Edison]]&lt;br /&gt;
||Function to get day of the week from [[llGetUnixTime]].&lt;br /&gt;
|-&lt;br /&gt;
||[[LSL Library/Dialog NumberPad|Dialog Number Pad]]&lt;br /&gt;
||[[User:DoteDote Edison|DoteDote Edison]]&lt;br /&gt;
||Use a dialog to accept positive integer input from users.&lt;br /&gt;
|-&lt;br /&gt;
||[[LSL Library/Float2Hex|Float2Hex]]&lt;br /&gt;
||[[User:Strife Onizuka|Strife Onizuka]]&lt;br /&gt;
||Very useful for transporting [[float|floats]].&lt;br /&gt;
|-&lt;br /&gt;
||[[LSL Library/Timer Module|Timer Module]]&lt;br /&gt;
||[[User:Isabelle Aquitaine|Isabelle Aquitaine]]&lt;br /&gt;
||Manage multiple timers via linked messages.&lt;br /&gt;
|-&lt;br /&gt;
||[http://forums.secondlife.com/showthread.php?t=12156 XyText]&lt;br /&gt;
||[[User:Xylor Baysklef|Xylor Baysklef]]&lt;br /&gt;
|| Display text (up to 6 characters) on a prim&lt;br /&gt;
|-&lt;br /&gt;
||[[LSL Library/Date Library|Date Library]]&lt;br /&gt;
||[[User:Corto Maltese|Corto Maltese]]&lt;br /&gt;
|| Date library, based on number of day since march 3rd 1600, can be used to calculate weekday, date differences, and date offset, and date formating.&lt;br /&gt;
|-&lt;br /&gt;
||[[LSL Library/Secure HTTP Post|Secure HTTP Post]]&lt;br /&gt;
||[[User:Corto Maltese|Corto Maltese]]&lt;br /&gt;
|| This small library allow you to send Secure requests to your website with a security mechanism aimed to stop hacking.&lt;br /&gt;
|-&lt;br /&gt;
||[[LSL Library/Basic Encryption Modules|Basic Encryption Modules]]&lt;br /&gt;
||[[User:Beverly Larkin|Beverly Larkin]]&lt;br /&gt;
||Basic encryption scripts, allows you to encrypt a float, and shout it to another prim on a randomly chosen channel.&lt;br /&gt;
|-&lt;br /&gt;
||[[LSL Library/Self Upgrading Script Enhanced|Self Upgrading Script Enhanced]]&lt;br /&gt;
||[[User:Cron Stardust|Cron Stardust]]&lt;br /&gt;
|| Keeps only latest version of the script on prim (Even with multiple adds of the same script!)&lt;br /&gt;
|-&lt;br /&gt;
||[[LSL Library/Key Pad Door|Tdub&#039;s Keypad Door]]&lt;br /&gt;
||[[User:Tdub Dowler|Tdub Dowler]]&lt;br /&gt;
|| Door and keypad with changable code. Follow instructions carefully!&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Support Script Library==&lt;br /&gt;
These are scripts in other languages, intended to be run on other systems that support scripts written in LSL&lt;br /&gt;
&lt;br /&gt;
{| {{Prettytable}}&lt;br /&gt;
|-&lt;br /&gt;
|{{Hl2}}| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
|{{Hl2}}| &#039;&#039;&#039;Creator&#039;&#039;&#039;&lt;br /&gt;
|{{Hl2}}| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|| Silo&lt;br /&gt;
|| [[User:Zero_Linden|Zero Linden]]&lt;br /&gt;
|| General purpose data store in PHP.  Use this to persist arbitrary data from LSL via [[llHTTPRequest]].  See:&lt;br /&gt;
* [http://www.notabene-sl.com/misc/silo-README.txt README] file&lt;br /&gt;
* [http://www.notabene-sl.com/misc/silo.tgz silo.tgz] tarball&lt;br /&gt;
* forum post [http://forums.secondlife.com/showthread.php?t=119570 Announcement].&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Tdub Dowler</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Key_Pad_Door&amp;diff=14513</id>
		<title>Key Pad Door</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Key_Pad_Door&amp;diff=14513"/>
		<updated>2007-03-03T23:48:58Z</updated>

		<summary type="html">&lt;p&gt;Tdub Dowler: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
This keypad Door is composed of 3 scripts, one for the door, one for the keypad, and one for each keypad button.&lt;br /&gt;
Below is the script for the button:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Put this script in each button. Make 11 buttons and name them the following: &amp;quot;Reset&amp;quot;,&amp;quot;Enter&amp;quot;,and the numbers 1-9.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//Button Script&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        llMessageLinked(LINK_ROOT,1,llGetObjectName(),NULL_KEY);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Then mount the buttons on a root prim and call the root prim &amp;quot;Key Pad&amp;quot; (without quotes) and put the following script in it. On rez it will ask you what you want the code to be, say it in the form x,y,z with as many digits as desired. After 15 seconds of not anwsering, it we default to 1,2,3,4.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
integer channel = 3800; //If you change this remeber to change it in the door script as well&lt;br /&gt;
list temp;&lt;br /&gt;
list code = [1,2,3,4];&lt;br /&gt;
integer handle;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer param)&lt;br /&gt;
    {&lt;br /&gt;
        handle = llListen(0,&amp;quot;&amp;quot;,llGetOwner(),&amp;quot;&amp;quot;);&lt;br /&gt;
        llOwnerSay(&amp;quot;What do you wish the code to be?&amp;quot;);&lt;br /&gt;
        llSetTimerEvent(15);&lt;br /&gt;
    }&lt;br /&gt;
    link_message(integer send_num, integer num, string msg, key id)&lt;br /&gt;
    {&lt;br /&gt;
        if(msg == &amp;quot;Reset&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            temp = [];&lt;br /&gt;
        }&lt;br /&gt;
        if(msg == &amp;quot;Enter&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            if(temp != code)&lt;br /&gt;
            {&lt;br /&gt;
                llWhisper(0,&amp;quot;Incorrect Code!!&amp;quot;);&lt;br /&gt;
                temp = [];&lt;br /&gt;
            }&lt;br /&gt;
            if(llList2CSV(temp) == llList2CSV(code))&lt;br /&gt;
            {&lt;br /&gt;
                llWhisper(channel,&amp;quot;open&amp;quot;);&lt;br /&gt;
                llWhisper(0,&amp;quot;You may enter.&amp;quot;);&lt;br /&gt;
                temp = [];&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        if(msg != &amp;quot;Reset&amp;quot; &amp;amp;&amp;amp; msg != &amp;quot;Enter&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            temp += [(integer)msg];&lt;br /&gt;
            if(llGetListLength(temp) &amp;gt; llGetListLength(code))&lt;br /&gt;
            {&lt;br /&gt;
                temp = [];&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        llOwnerSay(&amp;quot;You have run out of time. Setting default &amp;quot; + llList2CSV(code));&lt;br /&gt;
        llListenRemove(handle);&lt;br /&gt;
        llSetTimerEvent(0);&lt;br /&gt;
    }&lt;br /&gt;
    listen(integer chan, string name, key id, string msg)&lt;br /&gt;
    {&lt;br /&gt;
        llListenRemove(handle);&lt;br /&gt;
        code = llCSV2List(msg);&lt;br /&gt;
        llOwnerSay(&amp;quot;Code set to &amp;quot; + llList2CSV(code) + &amp;quot;.&amp;quot;);&lt;br /&gt;
        llSetTimerEvent(0);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Now the door script. The door can be called anything. Script is as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
integer channel = 3800; //Must be the same as in the key pad script&lt;br /&gt;
float open_time = 3; //Change to how long you want it to stay open&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llListen(3800,&amp;quot;Key Pad&amp;quot;,NULL_KEY,&amp;quot;open&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    listen(integer chan, string name, key id, string msg)&lt;br /&gt;
    {&lt;br /&gt;
        llSetStatus(STATUS_PHANTOM,TRUE);&lt;br /&gt;
        llSetAlpha(0.1,ALL_SIDES);&lt;br /&gt;
        llSleep(open_time);&lt;br /&gt;
        llSetAlpha(1.0,ALL_SIDES);&lt;br /&gt;
        llSetStatus(STATUS_PHANTOM,FALSE);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
If you want the completed object with key pad and door, you can buy it at http://www.tslemporium.com for 30 L$. I will not give support to people who use the scripts on this page for thier own door, only paying customers.&lt;br /&gt;
{{#vardefine:sort|Key Pad Door}}{{LSLC|Library}}{{LSLC|Examples}}&lt;/div&gt;</summary>
		<author><name>Tdub Dowler</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Key_Pad_Door&amp;diff=14507</id>
		<title>Key Pad Door</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Key_Pad_Door&amp;diff=14507"/>
		<updated>2007-03-03T23:25:26Z</updated>

		<summary type="html">&lt;p&gt;Tdub Dowler: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
This keypad Door is composed of 3 scripts, one for the door, one for the keypad, and one for each keypad button.&lt;br /&gt;
Below is the script for the button:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Hello, Avatar!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Touched.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:sort|Hello Avatar}}{{LSLC|Library}}{{LSLC|Examples}}&lt;/div&gt;</summary>
		<author><name>Tdub Dowler</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Key_Pad_Door&amp;diff=14503</id>
		<title>Key Pad Door</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Key_Pad_Door&amp;diff=14503"/>
		<updated>2007-03-03T23:19:10Z</updated>

		<summary type="html">&lt;p&gt;Tdub Dowler: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Hello, Avatar!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Touched.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:sort|Hello Avatar}}{{LSLC|Library}}{{LSLC|Examples}}&lt;/div&gt;</summary>
		<author><name>Tdub Dowler</name></author>
	</entry>
</feed>