Jump to content

Leo Cloud

Resident
  • Posts

    52
  • Joined

  • Last visited

Posts posted by Leo Cloud

  1. 1 hour ago, Sabrina Tamerlane said:

    Don't edit those master and slave scripts, just make sure you have them. Do that in your own script.

    ok that is done now getting this error

    forum.png

  2. 30 minutes ago, Sabrina Tamerlane said:

    Okay, then under:

    
    llSetText(gBuildText, <1,1,1>, 1);

    add this line:

    
    llMessageLinked(LINK_THIS,DISPLAY_STRING, gBuildText,"0");

    in the master or slave scriptI looked thought slave script and could not find it

     

  3. 47 minutes ago, Sabrina Tamerlane said:

    For that you will need to add 2 scripts (master and slave) as explained here: http://wiki.secondlife.com/wiki/XyzzyText

    And then you will use link messages to display the text as shown on the top of the page.

     

    ETA: if you already have the board ready then you only need the link message.

     

    that makes sense in my head but doing it on paper is a little hard lol this is the slave script also attached is the a photo of what scripts the board came with

     

    ////////////////////////////////////////////
    // XyzzyText v2.1m (16-Char MESH) by Traven Sachs 29-November-2012
    // XyzzyText v2.1(10-Char) by Thraxis Epsilon
    // XyText v2.0 SLAVE Script (5 Face, Single Texture)
    //
    // Heavily Modified by Thraxis Epsilon, Gigs Taggart 5/2007 and Strife Onizuka 8/2007
    // Rewrite to allow one-script-per-object operation w/ optional slaves
    // Enable prim-label functionality
    // Enabled Banking
    // Enabled 10-char per prim
    // Enabled 16-Char on an 8 Face Mesh Plane Prim
    //
    // Modified by Kermitt Quirk 19/01/2006
    // To add support for 5 face prim instead of 3
    //
    // Originally Written by Xylor Baysklef
    //
    //
    ////////////////////////////////////////////


    integer REMAP_INDICES       = 204002;
    integer RESET_INDICES       = 204003;

    //internal API
    integer REGISTER_SLAVE      = 205000;
    integer SLAVE_RECOGNIZED    = 205001;
    integer SLAVE_DISPLAY       = 205003;
    integer SET_FONT_TEXTURE    = 204005;

    integer SLAVE_DISPLAY_EXTENDED = 205004;
    integer SLAVE_RESET = 205005;

    // This is an extended character escape sequence.
    string  ESCAPE_SEQUENCE = "\\e";

    // This is used to get an index for the extended character.
    string  EXTENDED_INDEX  = "123456789abcdef";

    // Face numbers.
    integer FACE_1          = 0;
    integer FACE_2          = 1;
    integer FACE_3          = 2;
    integer FACE_4          = 3;
    integer FACE_5          = 4;
    integer FACE_6          = 5;
    integer FACE_7          = 6;
    integer FACE_8          = 7;

    // This is a list of textures for all 2-character combinations.
    list    CHARACTER_GRID  = [
            "00e9f9f7-0669-181c-c192-7f8e67678c8d",
            "347a5cb6-0031-7ec0-2fcf-f298eebf3c0e",
            "4e7e689e-37f1-9eca-8596-a958bbd23963",
            "19ea9c21-67ba-8f6f-99db-573b1b877eb1",
            "dde7b412-cda1-652f-6fc2-73f4641f96e1",
            "af6fa3bb-3a6c-9c4f-4bf5-d1c126c830da",
            "a201d3a2-364b-43b6-8686-5881c0f82a94",
            "b674dec8-fead-99e5-c28d-2db8e4c51540",
            "366e05f3-be6b-e5cf-c33b-731dff649caa",
            "75c4925c-0427-dc0c-c71c-e28674ff4d27",
            "dcbe166b-6a97-efb2-fc8e-e5bc6a8b1be6",
            "0dca2feb-fc66-a762-db85-89026a4ecd68",
            "a0fca76f-503a-946b-9336-0a918e886f7a",
            "67fb375d-89a1-5a4f-8c7a-0cd1c066ffc4",
            "300470b2-da34-5470-074c-1b8464ca050c",
            "d1f8e91c-ce2b-d85e-2120-930d3b630946",
            "2a190e44-7b29-dadb-0bff-c31adaf5a170",
            "75d55e71-f6f8-9835-e746-a45f189f30a1",
            "300fac33-2b30-3da3-26bc-e2d70428ec19",
            "0747c776-011a-53ce-13ee-8b5bb9e87c1e",
            "85a855c3-a94f-01ca-33e0-7dde92e727e2",
            "cbc1dab2-2d61-2986-1949-7a5235c954e1",
            "f7aef047-f266-9596-16df-641010edd8e1",
            "4c34ebf7-e5e1-2e1a-579f-e224d9d5e71b",
            "4a69e98c-26a5-ad05-e92e-b5b906ad9ef9",
            "462a9226-2a97-91ac-2d89-57ab33334b78",
            "20b24b3a-8c57-82ee-c6ed-555003f5dbcd",
            "9b481daa-9ea8-a9fa-1ee4-ab9a0d38e217",
            "c231dbdc-c842-15b0-7aa6-6da14745cfdc",
            "c97e3cbb-c9a3-45df-a0ae-955c1f4bf9cf",
            "f1e7d030-ff80-a242-cb69-f6951d4eae3b",
            "ed32d6c4-d733-c0f1-f242-6df1d222220d",
            "88f96a30-dccf-9b20-31ef-da0dfeb23c72",
            "252f2595-58b8-4bcc-6515-fa274d0cfb65",
            "f2838c4f-de80-cced-dff8-195dfdf36b2c",
            "cc2594fe-add2-a3df-cdb3-a61711badf53",
            "e0ce2972-da00-955c-129e-3289b3676776",
            "3e0d336d-321f-ddfa-5c1b-e26131766f6a",
            "d43b1dc4-6b51-76a7-8b90-38865b82bf06",
            "06d16cbb-1868-fd1d-5c93-eae42164a37d",
            "dd5d98cf-273e-3fd0-f030-48be58ee3a0b",
            "0e47c89e-de4a-6233-a2da-cb852aad1b00",
            "fb9c4a55-0e13-495b-25c4-f0b459dc06de",
            "e3ce8def-312c-735b-0e48-018b6799c883",
            "2f713216-4e71-d123-03ed-9c8554710c6b",
            "4a417d8a-1f4f-404b-9783-6672f8527911",
            "ca5e21ec-5b20-5909-4c31-3f90d7316b33",
            "06a4fcc3-e1c4-296d-8817-01f88fbd7367",
            "130ac084-6f3c-95de-b5b6-d25c80703474",
            "59d540a0-ae9d-3606-5ae0-4f2842b64cfa",
            "8612ae9a-f53c-5bf4-2899-8174d7abc4fd",
            "12467401-e979-2c49-34e0-6ac761542797",
            "d53c3eaa-0404-3860-0675-3e375596c3e3",
            "9f5b26bd-81d3-b25e-62fe-5b671d1e3e79",
            "f57f0b64-a050-d617-ee00-c8e9e3adc9cb",
            "beff166a-f5f3-f05e-e020-98f2b00e27ed",
            "02278a65-94ba-6d5e-0d2b-93f2e4f4bf70",
            "a707197d-449e-5b58-846c-0c850c61f9d6",
            "021d4b1a-9503-a44f-ee2b-976eb5d80e68",
            "0ae2ffae-7265-524d-cb76-c2b691992706",
            "f6e41cf2-1104-bd0b-0190-dffad1bac813",
            "2b4bb15e-956d-56ae-69f5-d26a20de0ce7",
            "f816da2c-51f1-612a-2029-a542db7db882",
            "345fea05-c7be-465c-409f-9dcb3bd2aa07"];
    list    CHARACTER_GRID2  = [         
            "b3017e02-c063-5185-acd5-1ef5f9d79b89",
            "4dcff365-1971-3c2b-d73c-77e1dc54242a"
              ];

    ///////////// END CONSTANTS ////////////////
    string gCharIndex;

    integer gActive; //if we are recognized, this is true
    /////////// END GLOBAL VARIABLES ////////////
    ResetCharIndex() {
        gCharIndex  = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`";
        // \" <-- Fixes LSL syntax highlighting bug.
        gCharIndex += "abcdefghijklmnopqrstuvwxyz{|}~";
        gCharIndex += "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n";
    }

    vector GetGridPos(integer index1, integer index2) {
        // There are two ways to use the lookup table...
        integer Col;
        integer Row;
        if (index1 >= index2) {
            // In this case, the row is the index of the first character:
            Row = index1;
            // And the col is the index of the second character (x2)
            Col = index2 * 2;
        }
        else { // Index1 < Index2
            // In this case, the row is the index of the second character:
            Row = index2;
            // And the col is the index of the first character, x2, offset by 1.
            Col = index1 * 2 + 1;
        }
        return <Col, Row, 0>;
    }

    string GetGridTexture(vector grid_pos) {
        // Calculate the texture in the grid to use.
        integer GridCol = llRound(grid_pos.x) / 20;
        integer GridRow = llRound(grid_pos.y) / 10;

        // Lookup the texture.
        key Texture = llList2Key(CHARACTER_GRID, GridRow * (GridRow + 1) / 2 + GridCol);
        return Texture;
    }

    vector GetGridOffset(vector grid_pos) {
        // Zoom in on the texture showing our character pair.
        integer Col = llRound(grid_pos.x) % 20;
        integer Row = llRound(grid_pos.y) % 10;

        // Return the offset in the texture.
        return <-0.45 + 0.05 * Col, 0.45 - 0.1 * Row, 0.0>;
    }

    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) {
       // Set the primitive textures directly.
         
                   
       llSetLinkPrimitiveParamsFast( link , [
            PRIM_TEXTURE, FACE_1, GetGridTexture(grid_pos1), <0.1, 0.1, 0>, GetGridOffset(grid_pos1), 0.0,
            PRIM_TEXTURE, FACE_2, GetGridTexture(grid_pos2), <0.1, 0.1, 0>, GetGridOffset(grid_pos2), 0.0,
            PRIM_TEXTURE, FACE_3, GetGridTexture(grid_pos3), <0.1, 0.1, 0>, GetGridOffset(grid_pos3), 0.0,
            PRIM_TEXTURE, FACE_4, GetGridTexture(grid_pos4), <0.1, 0.1, 0>, GetGridOffset(grid_pos4), 0.0,
            PRIM_TEXTURE, FACE_5, GetGridTexture(grid_pos5), <0.1, 0.1, 0>, GetGridOffset(grid_pos5), 0.0,
            PRIM_TEXTURE, FACE_6, GetGridTexture(grid_pos6), <0.1, 0.1, 0>, GetGridOffset(grid_pos6), 0.0,
            PRIM_TEXTURE, FACE_7, GetGridTexture(grid_pos7), <0.1, 0.1, 0>, GetGridOffset(grid_pos7), 0.0,
            PRIM_TEXTURE, FACE_8, GetGridTexture(grid_pos8), <0.1, 0.1, 0>, GetGridOffset(grid_pos8), 0.0
            ]);
    }

    RenderString(integer link, string str) {
        // Get the grid positions for each pair of characters.
        vector GridPos1 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 0, 0)),
                                      llSubStringIndex(gCharIndex, llGetSubString(str, 1, 1)) );
        vector GridPos2 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 2, 2)),
                                      llSubStringIndex(gCharIndex, llGetSubString(str, 3, 3)) );
        vector GridPos3 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 4, 4)),
                                      llSubStringIndex(gCharIndex, llGetSubString(str, 5, 5)) );
        vector GridPos4 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 6, 6)),
                                      llSubStringIndex(gCharIndex, llGetSubString(str, 7, 7)) );
        vector GridPos5 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 8, 8)),
                                      llSubStringIndex(gCharIndex, llGetSubString(str, 9, 9)) );
        vector GridPos6 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 10, 10)),
                                      llSubStringIndex(gCharIndex, llGetSubString(str, 11, 11)) );
        vector GridPos7 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 12, 12)),
                                      llSubStringIndex(gCharIndex, llGetSubString(str, 13, 13)) );
        vector GridPos8 = GetGridPos( llSubStringIndex(gCharIndex, llGetSubString(str, 14, 14)),
                                      llSubStringIndex(gCharIndex, llGetSubString(str, 15, 15)) );                                   

        // Use these grid positions to display the correct textures/offsets.
        ShowChars(link,GridPos1, GridPos2, GridPos3, GridPos4, GridPos5, GridPos6, GridPos7, GridPos8);
    }

    RenderExtended(integer link, string str) {
        // Look for escape sequences.
        list Parsed       = llParseString2List(str, [], (list)ESCAPE_SEQUENCE);
        integer ParsedLen = llGetListLength(Parsed);

        // Create a list of index values to work with.
        list Indices;
        // We start with room for 16 indices.
        integer IndicesLeft = 16;

        string Token;
        integer Clipped;
        integer LastWasEscapeSequence = FALSE;
        // Work from left to right.
        integer i=0;
        for (; i < ParsedLen && IndicesLeft > 0; ++i) {
            Token = llList2String(Parsed, i);

            // If this is an escape sequence, just set the flag and move on.
            if (Token == ESCAPE_SEQUENCE) {
                LastWasEscapeSequence = TRUE;
            }
            else { // Token != ESCAPE_SEQUENCE
                // Otherwise this is a normal token.  Check its length.
                Clipped = FALSE;
                integer TokenLength = llStringLength(Token);
                // Clip if necessary.
                if (TokenLength > IndicesLeft) {
                    TokenLength = llStringLength(Token = llGetSubString(Token, 0, IndicesLeft - 1));
                    IndicesLeft = 0;
                    Clipped = TRUE;
                }
                else
                    IndicesLeft -= TokenLength;

                // Was the previous token an escape sequence?
                if (LastWasEscapeSequence) {
                    // Yes, the first character is an escape character, the rest are normal.
                    // This is the extended character.
                    Indices += [llSubStringIndex(EXTENDED_INDEX, llGetSubString(Token, 0, 0)) + 95];
                    
                    // These are the normal characters.
                    integer j=1;
                    for (; j < TokenLength; ++j)
                    {
                        Indices += [llSubStringIndex(gCharIndex, llGetSubString(Token, j, j))];
                    }
                }
                else { // Normal string.
                    // Just add the characters normally.
                    integer j=0;
                    for (; j < TokenLength; ++j)
                    {
                        Indices += [llSubStringIndex(gCharIndex, llGetSubString(Token, j, j))];
                    }
                }

                // Unset this flag, since this was not an escape sequence.
                LastWasEscapeSequence = FALSE;
            }
        }

        // Use the indices to create grid positions.
        vector GridPos1 = GetGridPos( llList2Integer(Indices, 0), llList2Integer(Indices, 1) );
        vector GridPos2 = GetGridPos( llList2Integer(Indices, 2), llList2Integer(Indices, 3) );
        vector GridPos3 = GetGridPos( llList2Integer(Indices, 4), llList2Integer(Indices, 5) );
        vector GridPos4 = GetGridPos( llList2Integer(Indices, 6), llList2Integer(Indices, 7) );
        vector GridPos5 = GetGridPos( llList2Integer(Indices, 8), llList2Integer(Indices, 9) );
        vector GridPos6 = GetGridPos( llList2Integer(Indices, 10), llList2Integer(Indices, 11) );
        vector GridPos7 = GetGridPos( llList2Integer(Indices, 12), llList2Integer(Indices, 13) );
        vector GridPos8 = GetGridPos( llList2Integer(Indices, 14), llList2Integer(Indices, 15) );
        
        // Use these grid positions to display the correct textures/offsets.
        ShowChars(link,GridPos1, GridPos2, GridPos3, GridPos4, GridPos5, GridPos6, GridPos7, GridPos8);
    }

    integer ConvertIndex(integer index) {
        // This converts from an ASCII based index to our indexing scheme.
        if (index >= 32) // ' ' or higher
            index -= 32;
        else { // index < 32
            // Quick bounds check.
            if (index > 15)
                index = 15;

            index += 94; // extended characters
        }

        return index;
    }


    default {
        state_entry()
        {
            // Initialize the character index.
            ResetCharIndex();
            llMessageLinked(LINK_THIS, REGISTER_SLAVE, llGetScriptName() , NULL_KEY);  
        }

       on_rez(integer num)
       {
          llResetScript();       
       }
       
        link_message(integer sender, integer channel, string data, key id) {
            if (channel == SLAVE_RECOGNIZED)
            {
                if (data == llGetScriptName())
                {
                    gActive=TRUE;
                }
                return;
            }
        
            else if (channel == SLAVE_DISPLAY)
            {
                if (!gActive)  
                    return;
                    
                list params=llCSV2List((string)id);
                if (llList2String(params, 1) != llGetScriptName())
                    return;
                
                
                RenderString(llList2Integer(params, 0),data);
                return;
            }
        
           else if (channel == SLAVE_DISPLAY_EXTENDED)
           {
                if (!gActive)  
                    return;
                    
                list params=llCSV2List((string)id);
                if (llList2String(params, 1) != llGetScriptName())
                    return;
                    
                RenderExtended(llList2Integer(params, 0),data);
        }
            else if (channel == REMAP_INDICES) {
                // Parse the message, splitting it up into index values.
                list Parsed = llCSV2List(data);
                integer i;
                // Go through the list and swap each pair of indices.
                for (i = 0; i < llGetListLength(Parsed); i += 2) {
                    integer Index1 = ConvertIndex( llList2Integer(Parsed, i) );
                    integer Index2 = ConvertIndex( llList2Integer(Parsed, i + 1) );

                    // Swap these index values.
                    string Value1 = llGetSubString(gCharIndex, Index1, Index1);
                    string Value2 = llGetSubString(gCharIndex, Index2, Index2);

                    gCharIndex = llDeleteSubString(gCharIndex, Index1, Index1);
                    gCharIndex = llInsertString(gCharIndex, Index1, Value2);

                    gCharIndex = llDeleteSubString(gCharIndex, Index2, Index2);
                    gCharIndex = llInsertString(gCharIndex, Index2, Value1);
                }
                return;
            }
            else if (channel == RESET_INDICES) {
                // Restore the character index back to default settings.
                ResetCharIndex();
                return;
            }                 
           else if (channel == SLAVE_RESET)
            {
                ResetCharIndex();
                gActive=FALSE;
                llMessageLinked(LINK_THIS, REGISTER_SLAVE, llGetScriptName() , NULL_KEY);
            }
        }    
    }

     

     

     

    forum.png

  4. 1 hour ago, Sabrina Tamerlane said:

    //This program is an example of how Xyzzytext can work! //XyzzyChat - Local Chat to Text Board v1.0 by Traven Sachs //Free to use as you wish! (Credit would be nice... ;-> ) integer DISPLAY_STRING = 204000; integer DISPLAY_EXTENDED = 204001; integer REMAP_INDICES = 204002; integer RESET_INDICES = 204003; integer SET_FADE_OPTIONS = 204004; integer SET_FONT_TEXTURE = 204005; integer SET_LINE_COLOR = 204006; integer SET_COLOR = 204007; integer RESCAN_LINKSET = 204008; key gHttpRequestId1; key gHttpRequestId2; string gBuildText; checkData() { gBuildText = ""; gHttpRequestId1 = llHTTPRequest("http://secondlife.com/xmlhttp/secondlife.php", [HTTP_BODY_MAXLENGTH, 4096], ""); } string cutString(string theData, string theTag) { integer cutStart = llSubStringIndex(theData, "<" + theTag + ">") + llStringLength("<" + theTag + ">"); integer cutEnd = llSubStringIndex(theData, "</" + theTag + ">") - 1; return llGetSubString(theData, cutStart, cutEnd); } default { state_entry () { llSetTimerEvent(3600); checkData(); } on_rez(integer sp) { llResetScript(); } timer() { checkData(); } touch_start(integer sp) { key targetAvatar = llDetectedKey(0); if (llGetAgentSize(targetAvatar) != ZERO_VECTOR) { llRegionSayTo(targetAvatar, 0, gBuildText); } else { llInstantMessage(targetAvatar, gBuildText); } } http_response(key request_id, integer status, list metadata, string body) { if (request_id == gHttpRequestId1) { gBuildText += "Updated: " + llGetTimestamp(); if (status == 200 && llSubStringIndex(body, "<status>") != -1) { gBuildText += "\nGrid: " + cutString(body, "status"); gBuildText += " | Inworld: " + cutString(body, "inworld"); gBuildText += "\nSignups: " + cutString(body, "signups"); gBuildText += " | Logged in past 60 days: " + cutString(body, "logged_in_last_60"); } gHttpRequestId2 = llHTTPRequest("http://status.secondlifegrid.net/history.rss", [HTTP_BODY_MAXLENGTH, 4096], ""); } else if (request_id == gHttpRequestId2) { if (status == 200 && llSubStringIndex(body, "<item>") != -1) { string commitData = cutString(body, "item"); gBuildText += "\n---\n" + cutString(commitData, "title"); gBuildText += "\n" + cutString(commitData, "link"); gBuildText += "\n" + cutString(commitData, "pubDate"); } llSetText(gBuildText, <1,1,1>, 1); } } }

    thankyou that did work but I dont want it to be read off the hover text I would like it to be read by the board

    forum.png

  5. I added the quotation mark and I am getting the same error

     

    http_response(key request_id, integer status, list metadata, string body)
        {
            if ("request_id == gHttpRequestId1)
            {
                gBuildText += Updated: + llGetTimestamp();
                if (status == 200 && llSubStringIndex(body, "<status>") != -1)
                {
                    gBuildText += " \nGrid: " + cutString(body, "status");
                    gBuildText += " | Inworld: " + cutString(body, "inworld");
                    gBuildText += "\nSignups: " + cutString(body, "signups");
                    gBuildText += " | Logged in past 60 days: " + cutString(body, "logged_in_last_60");
                }
                gHttpRequestId2 = llHTTPRequest("http://status.secondlifegrid.net/history.rss", [HTTP_BODY_MAXLENGTH, 4096], "");
            }
            else if (request_id == gHttpRequestId2)
            {
                if (status == 200 && llSubStringIndex(body, "<item>") != -1)

        }
     
    }

  6. 1 hour ago, Rolig Loon said:

    Take a good look at the code you posted.

    There's nothing following that second  if test and the first one opens with a curly bracket that is never closed.  You obviously meant to finish writing the code, but never did.  Nearly everyone I know forgets to match brackets or parentheses occasionally.  It's a pretty common mistake.  That's where an editor like Sublime Text, which highlights matching brackets for you, can help.  It won't help you with missing a whole block of code, though.  ;)

    that is fixed but now I get    an error with this code gBuildText += \nGrid: " + cutString(body,"status")

    I dont see anything wrong with this line do you?

  7. 9 hours ago, Rolig Loon said:

    You're  missing a curly bracket to close your last else if test (plus whatever that test was meant to trigger).  Add them and things should work.

    BTW, I know that Xyzzy text has been around for a long time in various versions, but I think you'll probably find Furware Text easier to use.  

     

    thanks again for the reply from where do I put the curly bracket when i do this i get another error

  8. hey guys just an update i have been at this for hours and i keep getting an error when entering the text into the Xyzzy text board (81,4) error:syntax error I am trying to finish off the script with no luck can someone please look over this for me and finish this off thank you in short  I am trying to close the script bellow  is the script

    //This program is an example of how Xyzzytext can work!
    //XyzzyChat - Local Chat to Text Board v1.0 by Traven Sachs
    //Free to use as you wish!  (Credit would be nice... ;-> )

    integer DISPLAY_STRING      = 204000;
    integer DISPLAY_EXTENDED    = 204001;
    integer REMAP_INDICES       = 204002;
    integer RESET_INDICES       = 204003;
    integer SET_FADE_OPTIONS    = 204004;
    integer SET_FONT_TEXTURE    = 204005;
    integer SET_LINE_COLOR      = 204006;
    integer SET_COLOR           = 204007;
    integer RESCAN_LINKSET      = 204008;

    key gHttpRequestId1;
    key gHttpRequestId2;
    string gBuildText;

    checkData()
    {
        gBuildText = "";
        gHttpRequestId1 = llHTTPRequest("http://secondlife.com/xmlhttp/secondlife.php", [HTTP_BODY_MAXLENGTH, 4096], "");
    }

    string cutString(string theData, string theTag)
    {
        integer cutStart = llSubStringIndex(theData, "<" + theTag + ">") + llStringLength("<" + theTag + ">");
        integer cutEnd = llSubStringIndex(theData, "</" + theTag + ">") - 1;
        return llGetSubString(theData, cutStart, cutEnd);
    }

    default
    {

        state_entry ()
        {
            llSetTimerEvent(3600);
            checkData();
        }

        on_rez(integer sp)
        {
            llResetScript();
        }

        timer()
        {
            checkData();
        }

        touch_start(integer sp)
        {
            key targetAvatar = llDetectedKey(0);
            if (llGetAgentSize(targetAvatar) != ZERO_VECTOR)
            {
                llRegionSayTo(targetAvatar, 0, gBuildText);
            }
            else
            {
                llInstantMessage(targetAvatar, gBuildText);
            }
        }

        http_response(key request_id, integer status, list metadata, string body)
        {
            if (request_id == gHttpRequestId1)
            {
                gBuildText += "Updated: " + llGetTimestamp();
                if (status == 200 && llSubStringIndex(body, "<status>") != -1)
                {
                    gBuildText += "\nGrid: " + cutString(body, "status");
                    gBuildText += " | Inworld: " + cutString(body, "inworld");
                    gBuildText += "\nSignups: " + cutString(body, "signups");
                    gBuildText += " | Logged in past 60 days: " + cutString(body, "logged_in_last_60");
                }
                gHttpRequestId2 = llHTTPRequest("http://status.secondlifegrid.net/history.rss", [HTTP_BODY_MAXLENGTH, 4096], "");
            }
            else if (request_id == gHttpRequestId2)
            {
                if (status == 200 && llSubStringIndex(body, "<item>") != -1)

        }
    }

  9. 19 hours ago, panterapolnocy said:

    If by "grid status" you understand users online and for example last report posted on https://status.secondlifegrid.net/ then this thingy may help you to get started with your "digital clock" project. That is also a crude example of parsing contents of the response body @Wulfie Reanimator was talking about few messages above.

     

    
    key gHttpRequestId1;
    key gHttpRequestId2;
    string gBuildText;
    
    checkData()
    {
        gBuildText = "";
        gHttpRequestId1 = llHTTPRequest("http://secondlife.com/xmlhttp/secondlife.php", [HTTP_BODY_MAXLENGTH, 4096], "");
    }
    
    string cutString(string theData, string theTag)
    {
        integer cutStart = llSubStringIndex(theData, "<" + theTag + ">") + llStringLength("<" + theTag + ">");
        integer cutEnd = llSubStringIndex(theData, "</" + theTag + ">") - 1;
        return llGetSubString(theData, cutStart, cutEnd);
    }
    
    default
    {
    
        state_entry ()
        {
            llSetTimerEvent(3600);
            checkData();
        }
    
        on_rez(integer sp)
        {
            llResetScript();
        }
    
        timer()
        {
            checkData();
        }
    
        touch_start(integer sp)
        {
            key targetAvatar = llDetectedKey(0);
            if (llGetAgentSize(targetAvatar) != ZERO_VECTOR)
            {
                llRegionSayTo(targetAvatar, 0, gBuildText);
            }
            else
            {
                llInstantMessage(targetAvatar, gBuildText);
            }
        }
    
        http_response(key request_id, integer status, list metadata, string body)
        {
            if (request_id == gHttpRequestId1)
            {
                gBuildText += "Updated: " + llGetTimestamp();
                if (status == 200 && llSubStringIndex(body, "<status>") != -1)
                {
                    gBuildText += "\nGrid: " + cutString(body, "status");
                    gBuildText += " | Inworld: " + cutString(body, "inworld");
                    gBuildText += "\nSignups: " + cutString(body, "signups");
                    gBuildText += " | Logged in past 60 days: " + cutString(body, "logged_in_last_60");
                }
                gHttpRequestId2 = llHTTPRequest("http://status.secondlifegrid.net/history.rss", [HTTP_BODY_MAXLENGTH, 4096], "");
            }
            else if (request_id == gHttpRequestId2)
            {
                if (status == 200 && llSubStringIndex(body, "<item>") != -1)
                {
                    string commitData = cutString(body, "item");
                    gBuildText += "\n---\n" + cutString(commitData, "title");
                    gBuildText += "\n" + cutString(commitData, "link");
                    gBuildText += "\n" + cutString(commitData, "pubDate");
                }
                llSetText(gBuildText, <1,1,1>, 1);
            }
        }
    
    }

    this is what I am after but I would like it on the prim like this is this possible? I  do like how you added the signups as well as the how many users are inworld as well

     

    photo.png

  10. 1 hour ago, Wulfie Reanimator said:

    To answer the question directly, you need to parse the contents of body down to the parts you want. You may need a bigger HTTP_BODY_MAXLENGTH.

    To actually do that, you should first inspect what the exact response is. (Manually, so you know what to expect.) From there, you need llGetSubString and llSubStringIndex to find what exactly to use from the response.

     

    2 hours ago, Nova Convair said:

    What do you use to display a web-url? A Browser. llSetText is no browser.

    Shared media is a browser and Rolig already posted a link about that.

    You probably want to look at this, maybe you find something for you:

    http://wiki.secondlife.com/wiki/World_API

    Hi guys thanks for the reply what I want to do is create a prim that I can put a grid status info into via a script and it shows up as a digital clock and it gives me information with the grid status every hour is there a type of script that I need to do this i may need help with creating the script hopeless at a script making

  11. On 6/25/2014 at 4:00 PM, Amethyst Jetaime said:

    Most mesh clothing creators only sell mesh models for use in SL and provide a UV and AO map you use to create the textures for them in a graphics program swuch as gimp or photoshop.

    Some though also offer a version that includes a .dae file.  With these you get a notecard that gives you a website address and password where you can download the file onto your own hard drive and import it into Blender.  These are generally a lot more expensive than the first  kind.

    Lastly, at least one popular creator and maybe more, only sells the models but if you go to their website you can purchase the .dae file for RL money.  These too are a lot more expensive then then buying just the models.

    any time that you can get from the marketplace that i can buy with a .dae file please link them thanks

  12. 47 minutes ago, Rolig Loon said:

    If you are looking for a ready-made script, your chances are slim.  Because you have to piece longer songs together by gluing 10-second clips to each other, it's usually a custom job. You can hire a scripter to write something for you by posting in the InWorld Employment forum. This LSL Scripting forum is a gathering place for scripters to talk to each other, trading ideas and moaning about things that don't work.

     

    thanks so much

  13. Hiya

    I am trying to find a script that will play a full song as a walker I have however uploaded it under 10 seconds and put in into a prim but every script I buy wont work to play a full song

     

    Thanks

×
×
  • Create New...