-
Posts
130 -
Joined
-
Last visited
Content Type
Forums
Blogs
Knowledge Base
Posts posted by Sabrina Tamerlane
-
-
You should check that you have as many opening brackets '{' than closing ones '}'.
-
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.
- 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
- 2
-
DISPLAY_NAME is defined at the top of your file, it should be ok. Maybe someone else can figure what is going wrong?
-
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.
-
Why would you add a closing brace at the end of the line?
-
Don't edit those master and slave scripts, just make sure you have them. Do that in your own script.
-
Okay, then under:
llSetText(gBuildText, <1,1,1>, 1);
add this line:
llMessageLinked(LINK_THIS,DISPLAY_STRING, gBuildText,"0");
- 2
-
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.
-
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); } } }
- 2
-
You have the solution in your own posts, because you forgot to copy part of the code you had.
-
Make sure that you have well closed the if block as Rolig said. If you are in doubt check if you have the same number of '{' and '}'.
-
KT Kingsley is correct, but you will also have to remove anything that puts the script to sleep if you want a regular timing.
-
With an OCR LL could see that it has your mark.
- 1
-
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.
- 1
-
I was talking about watermarks, not secret keys. Here is a simple example showing how to do one:
-
8 minutes ago, Whirly Fizzle said:
Wouldn't work.
Just get the UUID of the texture & apply it via UUID. No upload necessary.
Skin creators have watermarked their textures for years, yet people still rip skin textures.You are right, I didn't think of that.
-
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.
-
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.
-
If LL would implement some kind of invisible watermark system, at least for textures then it would solve part of the issue.
-
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.
- 1
http request
in LSL Scripting
Posted
When it was working, your script was finishing like this:
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 '}'.