Jump to content

Sabrina Tamerlane

Resident
  • Posts

    130
  • Joined

  • Last visited

Posts posted by Sabrina Tamerlane

  1. When it was working, your script was finishing like this:

     

            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);
            }
        
    
        }
    } 

    At the end you had 3 '}'. Where are they now?

    When you write a script you put lines into blocks. A line is ended by ';' and a block begins with '{' and finishes with '}'. If the compiler complains, it is because it can neither recognize a line or a block. The 3 '}' at the end mean that 3 blocks are finishing. One of them comes is the else block, one other is the http_response block and the last one is the state default. When a block starts it begins with a '{' and finishes with a '}'.

  2. You are almost there but it's not finished. Replace this line:

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

    with these 2 lines:

                list lines = llParseString2List(gBuildText, ["\n"], []) ;
                llMessageLinked(LINK_THIS,DISPLAY_STRING, llList2String(lines, 0),"0");

    As you can see we use llParseString2List to break the text in multiple lines. This should display the first line.

    • Like 3
  3. Oh, I knew that problem would arise but I didn't tell you because that would have been too much to handle.

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

    This prints the text on the first line of the board. If you wanted to print on the second life then you need to replace the "0" with a "1", because lines are numbered "0", "1", "2" and so on...

    So you have got some homework to do before it works.

    One way is to find how many characters are actually printed on the first line. You can do that manually by counting them or by looking at the documentation or the source code.

    Once you know how long is a line then you need to split your string in shorter strings so that it would fit on the board.

    But there is a simpler way, by using this function: http://wiki.secondlife.com/wiki/LlParseString2List

    It should be a good idea to use "\n" as separator.

    Once you have your list then you just need to loop over it and print each line on the board.

    So, first things first, you should use llParseString2List()

    Then you will need to count how many elements are in the list.

    And third you will need to use a for loop to display each element in the list line by line

     

     

    • Like 2
  4. Oh, that was the closing brace from the next line! You need that one. I suggest you do it again. Take back the script that was working and add the line again. Because the error displayed says (75, 132) where 75 is the line number of the error, and 132 is the column number. So, there must be some garbage after that brace. I didn't think much of it when you have shown that error but now I realize that it was not caused by the brace, but by something else after it. You could double click on the error to see what it was but the simplest is to restart from where it was working and add the line another time.

  5. You were almost there you just needed to copy some lines from your previous post:

     

     //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);
            }
        
    
        }
    } 

     

    • Like 2
  6. 2 minutes ago, Drakonadrgora Darkfold said:

    you could still edit that picture and then remove the watermark. its not hard to do really. or by using the copy of it where its not show and then copy that copy it wont show up because the other data may be removed at that point.

    even watermarks are not fool proof methods to stop people from copying others artwork.

    Absolutely, this is why I never claimed that  it would solve all the issues, but it would prevent copybotters from downloading your creation and uploading it back to SL right away. At least, now they would have to work for that. For example your avatar key could be printed invisibly on the picture but I am sure there are more efficient methods than that.

    • Like 1
  7. 1 minute ago, Kyrah Abattoir said:

    Your solution ASSUMES that the original uploader not only has the right to upload that texture, but holds the copyright on said texture.

    There is a reason why the DMCA requires the copyright holder to file the notification themselves: We cannot assume that it is an illegitimate use until the copyright holder has stated that it is.

    And that's just stupid, there is no reason to force people to duplicate textures/assets that are identical.

    People who use textures from free texture sites do not own the copyright on those textures and therefore have no right to dictate the usage for the copy they uploaded in SL.

    It's not the act of copying SL content that is the problem, it is copying content without the permission of its creator. The tool isn't the problem, the intent is.

     

    If someone use a modified client to export from SL content they made, they are within their right to do so, even if they aren't the original uploader.

    It does not assume anything. Nobody prevents you to file a DMCA when necessary. You may have missed my edit where I said that watermarking could be optional. However I don't think that using a modified client to export textures complies to the terms of service of Second Life, so it would be more efficient and legal to have an option that would make the texture public, with its key and rights to save to disk.

  8. 1 hour ago, Kyrah Abattoir said:

    Would it?

    A tech solution cannot guess licensing subtleties.

    For example, many people who are using "manuel bastioni lab" (MB lab) and MakeHuman disregard the fact that all models outputed by it are dual licensed under AGPL and a CC license. Both those licenses allow copying by 3rd parties, and therefore, copying content made with MB Lab/Makehuman is (potentially) legal, regardless of what the person who uploaded it claims.

    Some creators (that I will not name) just want a simple way to fuel their shopping habits and their idea of 'original work' involves downloading other people's freebies, from turbosquid, the unity store, or deviantart, putting them in SL and slapping a price on it. You can't really claim ownership of this kind of work can you?

    MBLab bodies are definitely not textures and not copybotted either. Watermarking textures would prevent someone from downloading a texture from SL and then uploading it as "creator". That would not fix all the issues but that would hinder seriously copybotters in that they would have to upload copybotted mesh without textures so everyone would notice the theft. Furthermore, it would allow you to add a signature texture in your package that would mention "Kyrah Abattoir Original Product" and while it could be counterfeited it would not be as simple as downloading/uploading. Also, it does not have to be done by LL, you can watermark your textures yourself, but if the textures were watermarked and the upload of these blocked afterwards  then copybot as we know it would be seriously limited.

    Now if two people would download the same texture from "somefreetexturessite.com" then both textures would be watermarked differently, but a third person would have to go to that site and would not be able to grab this very texture with a copybot viewer from SL.

    ETA: you can also make the watermarking optional if it so much of an issue, but the simplest is that if you got a licensed product, you should give a notecard with the license terms and where you got the files.

  9. Back in time, there was a wonderful free cloth made by Nephilaine Protagonist of Pixel Dolls, crochet dress I think? When I got this it was my first decent outfit and then I've become a regular customer of Pixel Dolls for years. Many designers give items for free and they are rewarded with customer loyalty: you get the free cloth or bodypart as a newbie and then you come back later for more!

    Roleplay Sims also give starter items and another reason would be the promotion of your shop by adding a landmark to the box.

    • Like 1
×
×
  • Create New...