Jump to content

Erik Verity

Resident
  • Posts

    126
  • Joined

  • Last visited

Everything posted by Erik Verity

  1. You made a good point in that return is often a throw-away command; that's one detail I had actually forgotten about. I think most of the time it is good for making it easier to understand what a scriptor's intentions are, and can be a little more readable if it can replace one or more layers of nested if conditions. In the example where I used it: touch_start(integer num){ if(time) { //Tell the toucher they have to wait return; } //run any code when no one needs to wait} it could have simply been thrown away and replaced by surrounding the rest of the event's code inside an else block. I like your example, but after looking at it a little bit, I realized the advantage again is in giving a clear understanding of what you want to happen, but it is still an example of a throw-away - if it were not there, the function as shown will still return at that point.
  2. There are 2 usage forms - the keyword by itself, and the keyword followed by a value (1 - return; and 2 - return value; ). In either case, once encountered, script execution leaves the function or event from which it was called, returning to the previous scope. The wiki gives a good explanation altogether, but the sentence stating that it returns execution to the previous scope, by itself isn't exactly correct. Inside a function, if used inside an inner block such as an if condition or for loop, the previous scope would still be inside that same function, just outside of the inner block in which it was used, which is not where the flow would return to. It will always cause flow to leave the entire function or event from which it was called. Technically, you can think of the return keyword as always being used at the end of an event or function, but not being required because it is assumed by the LSL compiler when the end of a function or event is reached. The only time it is required is inside a function that has to return a value (return someValue; ) - at that point it will end the function returning the value following it. If it is encountered at some point before the end of a function or event, any code following it is ignored. It is often used as a shortcut to end a function or event prematurely in cases where the code following it does not need to be executed. Except when used inside a function that needs to return a value, they keyword should only be used by itself followed by a semi-colon. http://wiki.secondlife.com/wiki/Return edited to remove the smileys
  3. First, I apologize since what I wrote came across a little different, more harsh, and more targetted than I intended. I did mean to reply to you, but not ONLY you. Also, I will add that I've seen a lot of your posts across the forums and generally assume you to be one of the more informed than average posters, if I disagree with you, please don't take it as insulting because that's not my intentions. My first line in that post was in response to (mostly) the subject question and your answer to that: How long does it take to take an obvious copybotter down from the Marketplace? It is difficult and time consuming to 1) figure out who the real creators are and 2) contact them all with the information. I only have one accuasation directed to you, but again, it's not ONLY to you. Everyone seems to think it is LL's responsibility to combat IP Rights violations, and that they can do more than they do. It also seems to be claimed by many that they do not ban accounts of repeat offenders. This last one is what I am saying is accusing them of violating the law - and none of them are true that I can see. It has always been the responsibility of the creators (or their legal representatives) to defend, or take actions against violations of, their IP Rights, and no one else carries that burden. Online Service Providers can only be in the position of being one of those you can take actions against - or not. Historically, they would have been just as guilty as any physical store distributing counterfeit products even though they did not create them. Then the digital age came around and after a few court cases where some of them were found guilty in court of being in violation, the industry took their case to the U.S. Congress - it was basically proven that it wasn't possible for them to police content in the same way a physical store always had been able to. If you read through the one article pointing to the redbubble site, there is a good example of how impossible it is - and they only demonstrated dealing with images; the textures and models of a 3D world overshadows their case quite a bit. The DMCA legislation was enacted to protect the Service Providers from legal actions of IP Rights holders - not to protect to the creators - although it requires them to help the creators to an extent in order to satisfy the law. If they truly were able to do substantially more to prevent the distribution of infringing content, they technically would not be entitled to DMCA protection in the first place. The only way I can think of that they could really do more would be to ban all user-created content in exchange for contracted provider content. They could then police it all and would not be eligible or have a need for DMCA protection. The one accusation that I think is a little serious is saying that LL does not ban accounts of repeat offenders. That is one of the main legal requirements of their eligibility for DMCA protection. That is also why I say that details of events regarding these stores that people say are thriving, repeat offenders are just not known. If they reallly are involved in content theft, it is most likely that the IP Rights owners are not aware of it, and no take-down claim has ever been filed, or never followed through with if contested. Multiple accounts can only have limited ability to work against it - once investigated, there are too many ways to pinpoint a real world identity - especially if money trading is included. I'm not aware of the case of the cars you all are talking about, but it makes me wonder what IP Rights are involved - I'm even thinking that the only rights holders might be some auto manufacturers whose works are being imitated. If that's the case, even creators who you think are the rights holders might only be the first to have violated them. Other than those manufacturers, who would have the authority to file a claim in this case? And if that really is the case, then the autos created in likeness of real world vehicles would look alike no matter who made the first even when made from "scratch" by someone else. If that's not the case, just contact who you believe is the original creator. If you don't know who they are, then you can't say the seller you see is not him or her, or authorized by them.
  4. If you KNOW it's copy-botted, then you must know who the real creator is, or who their authorized agents are. If you don't know that, then how do you know it's copy-botted at all? How do you know the store you see isn't legally allowed to sell it either by agreement with the creator or being an agent of the creator? You keep throwing it all at LL and still ignore the fact that the entire procedure is prescribed by law. You can come back with the "no it's not" all you want, and I won't keep it up, because it''s useless. I'll add some links to info since nobody ever seems to look for themselves, but it's up to you to find out. Strange how everyone can know something is an illegal copy without knowing who the real creator is - when even experts might need to check source files used in its creation for some cases to tell themselves. Only the creator or their agent can file a DMCA, not because it is LL's rule, but because that is the law. They have to take a product down with the first DMCA take-down notice they receive because that is what the law says is the next step (and "expeditiously", which is generally regarded as within 24 hours). They have to put it back up if a counter claim is filed, because it is the law. The original claimant has submit a subpoena (done through a real world court with your evidence of filing a DMCA take-down request to LL) to LL which requires them to disclose the real world identity of the other party to you for further legal action on YOUR part. I would be careful about accusing anyone, including LL of being in violation of the law - it is defamatory and there is no reason for anyone, including LL to allow others to go that far when they can legally retaliate. The law also requires LL to suspend/ban accounts that are repeat offenders. Notice university procedures sound familiar: http://copyright.lib.utexas.edu/dmcaisp.html This one gives a fairly easy exlanation in my opinion: http://itlaw.wikia.com/wiki/DMCA_Safe_Harbors A different OSP(Online Service Provider) giving an explanation - start from Part 1 if you wish, but the area we are all familar with is Title II of the legislation. http://www.redbubble.com/people/byron/journal/8795202-the-beginners-guide-to-copyright-and-dmca-part-2 and a US gov pdf: http://www.copyright.gov/legislation/dmca.pdf
  5. Selling items for a little higher price on SLMarketplace than in-world, to make up for the extra cost of commissions is not inflating prices compared to in-world prices. That would be leveraging prices (to costs). I know some sellers who have that as routine pricing - adding 5% to cover costs of MP vs. their in-world store. That is not an "inflated" price. In-world store costs can vary greatly, including whether you are paying only a small rent for space in someone else's store or a small parcel, to buying a region, which can make MP costs higher or lower than the other way around. An example of inflating prices would be selling something for twice the price on MP compared to the outside website you have which you are allowed to link to, or an in-world store; that would be both 1) an attempt to drive cutomers away from MP and to your selling location, and 2) using MP in reality only for advertising. If prices had to be identical or lower, there is no good reason that it was not worded that way. I think it might actually be illegal to require exact same pricing or less than other places in that respect; not allowing "inflated" pricing is reasonable. If you have an in-world store already, and had no intentions of closing it depending on MP sales, the cost of maintaining the store being relevant would be debatable, and the cost of MP can be seen as a real, added cost.
  6. I never said they are not allowed to take down anythoing they wish - but if they decide to take down anything at all from a rightful creator while enabling someone who is infringing the creator's IP rights to distribute it, they are both subject to lawsuit AND VIOLATING THE LAW. They can remove anything temporary when an initial claim is filed, and still have to backtrack if a counter claim follows. It is then up to the courts, IF it is followed up on by those filing the claims. SecretsOfSL wrote: It is their choice to do the bare minimum required by law; they are not required to do the bare minimum. I'm going to guess you meant to say "they are not required to do ONLY the bare minimum? No, they can stop everyone from distributing it through their network or they can follow the gudelines of the law. They absolutely cannot attempt to make any judgements on their own and punish who they see fit. That WILL put them in violation of the law. They abslutely are not allowed to act in any way shape or form as if they can decide who is legally right or wrong in these cases. They ARE allowed to ban any account with repeated or multiple accusations of theft - that's still not the same thing as deciding any specific legal or civil action in place of a court of law. I have no idea of what case you are talking about - seriously, it's nothing but a rumor from an anonymous forum poster so far, and has nothing to do with who has a legal right or responsibility to do anything about IP rights infringement. I've never sold anything I made yet - never even tried to sell anything, but as soon as I understood what I was doing, it made no sense to stay on that route instead of switching to mesh. I've spent a lot of time now (over a year) learning mesh and texturing techniques and still have not finished a single product yet, although more than one are close. When I am done, I will probably put then up for sale, might even make a new account to do it with - depends on if I think it will be best to have a commercial account separate or not. Either way, I will be going from creating nothing at all to suddenly having some nice mesh creations as far as anyone else could see. Suggest I'm a thief and I'll file an AR. Let me see anything I create copied or distributed other than how I choose and I will file a DMCA and follow up through civil court - criminal if it applies (which I believe it will). If the store is still open with stolen content for sale, then the real creator has done nothing about it, plain and simple. It is just as likely that they are legitimate creators and you and anyone else claiming different are outright wrong. If you aren't the true creator, you don't know. If you are, you can prove it, and nobody else can.
  7. As long as sellers keep ignoring the legal process, stay ignorant of it altogether, and/or continue to blame everyone but themselves for failure to act, not very much will change. It really is not the responsibility of a buyer at all, other than what they can actually know beyond a doubt; sometimes it takes experts examining a creator's source files to make a determination so it's hardly possible to really know at all. I am not a gamer, never was before coming to SL, wouldn't have recognized a single thing from another game, and I don't think I am in a small minority. If I had had to deal with this when I was new, the extra learning process alone would have kept the thrill of playing (and paying) from ever being known. I signed up originally to just have fun, to escape the seriousness of the real world. I had my first lesson about IP infringement when some parts of outfits I had purchased at a large, inworld store suddenly failed to rez. I couldn't figure it out myself, so I went back to the store I bought them from and asked one of theirt rep's, who referred me to someone who was handling the problem. I was told that some of the texture packs they had purchased from a supplier were the subject of a DMCA claim and LL had taken them off world. They apologized, and in no time at all, they sent me replacements for everything affected. I can't see a buyer having any more repercussions than that - risk losing what you paid for even though you may have had no clue. Even if it were possible for LL to police everything sold on MP, (get real - you're talking about millions of items that they still couldn't make an accurate judgement on themselves anyway), it would be illegal. The guidelines they follow are the law - if you don't believe it, stay ignorant and suffer. It isn't that hard to find out for yourself. The only one who can file a DMCA is a creator or someone legally acting on their behalf. If LL acted on anyone else's claim or suspicion, again, they would be breaking the law. The reason they don't allow making accusations inworld or this forum, is because of defamatory injuries. Even in SLU, which isn't bound by LL TOS, the wrong accusations have happened more than once, followed by 'oops' and aplogies (only for those that really were believed to be false - still, how are they supposed to know for sure?) The harm is real world damages, and is dealt with by real world (U.S.) law. LL has to accept the claims and counter-claims if they are filed, and react the way they are required to, and they are forbidden from making their own rules on how to settle it. If you don't look around for theft of your products yourself, there is no way to stop it from happening. If you don't file a DMCA take-down notice when you should, nothing gets started. If you don't follow it up with a real world court action, the offender is free to do it again with nothing on their record, even if they don't contest that one claim. From what I've read, it really is a crime that is taken seriously if you persue it, which can also lead to jail time. People convicted of crimes on the internet, especially repeating them, can be barred from even connecting to the internet or using a computer. Everything mesh or texture related that I made can be proven by the sources on my computer which will be multiple files starting from their simplest beginnings. Nobody else has them and nobody else can do anything but guess whether or not they exist. I really wish that creators would complain more about having lost some money from paying a court filing cost once in a while instead of what they lost in potential income because everyone with no legal ground to stand on is doing anything about it.
  8. Open Search, type "freebies" (without quotes), choose places from the drop-down menu and you should get a long list. There have always been a lot of free stores.
  9. BTW, I've been able to make this work without asking permissions every single time simply by having the object which rezzes its own inventory be the one with the permissions. Then you only need to ask once in its own on_rez() event - but it will still depend on how you need to use it. The object with the permissions will need to be included in those that are being linked, even if it has to be followed with llBreakLink() to remove only itself from the linkset. If the object with permissions is not wanted to be part of the linkset, you might have to test to see if you can guarantee which will be the root after unlinking itself, if it matters. Since you asked about asking permission from the toucher, I'm assuming they would also be the owner, or else you are able to make sure there won't be an issue with rez rights when the owner is not around.
  10. I see it still happening - The period at the end is combining with the link - when that happens, you can right click it, copy (or copy link location, w/e), and then just paste it into a new tab where you can remove the dot from the end. http://community.secondlife.com/t5/Creation/rez-linked-prims-from-inventory-on-a-touch-event-without-asking/qaq-p/2114181 ETA: Ok, not still happening, but I tried again from one of the bad copies
  11. Then I won't say that's it exclusively, but I have never seen it happen yet in a small group on my end. It still is not total BS - try to create an inworld object any way you want and see if you can get it to send a message to even 100 different avatars with no one seeing a delay. You can't do it.
  12. I would not do that unless you can be certain it is a viewer related issue - I just tested that version of FS and it worked fine. It wasn't a foolproof test since I stopped after the 3rd, (now that I think about it), but when it was happening to me, it was always only 2 that would work before having to relog. You might need to check and be sure of the order of events and details. If it really is only specific files, then who knows, maybe those files really are corrupt and contributing to the problem, or maybe it is a graphics card issue. There already is a jira about that problem. Specifically, the file open dialog would not appear on screen after a certain number of uploads; it took the focus of the software anyway, with no way to respond to it since you couldn't see it. I was told it was fixed in the latest versions and it appears to me that it is. ETA: You can find my post about in the Second Life Server section - it was not limited to a specific viewer. I think this thread was moved since you are asking about a problem that most likely has nothing to do with the SL viewer.
  13. Actually it is almost the whole problem. The scripted objects that replace group chat will only work flawlessly if a lot of their functions are separate from the viewer software - and without the same numbers of people to communicate to. If they always have to go through SL servers for each direction of communication and to the same numbers of people, the SL group chats will outperform them easily. When I test my own http objects, the communication is quick - most of the time. Every so often there is a delay and you can't predict it, although I still haven't seen it last longer than 15 or 20 seconds. If the receivers are getting the message through the web, they are bypassing SL servers. Going through the same servers for one person to send while everyone receiving uses their own internet connection is not a fair comparison at all. There is no inworld object replacing a group chat that is servicing anywhere near the same numbers of chatters. If even one group with thousands of members, and possibly hundreds connected at the same time were to use one, it would be very well-known and most large groups would be using them. The single biggest factor is the shear number of connections - inside the software much less. Group chats with a lot of online members are the slow ones. I can go in small groups and there is no noticeable lag. The very large groups are the ones suffering.
  14. How would it be possible for a Linden to diagnose your personal network connection? If high ping time were the fault of an SL server, wouldn't everyone in the same sim experience it also? One more question - since when is a Linden balance as shown from a beta grid supposed to ever be real? I thought those were always fake.
  15. It might help to say which version of the viewer you're using - a lot of older ones will crash on image uploads (such as the 2nd or 3rd upload after 1 or 2 with no problem). I actually haven't uploaded images with latest FS, but I believe that issue was resolved. I also know it sounds simple, but the only time I have trouble getting the esc. to work is when I don't realize that SL is not the active window even though it's on top. Other than that, it's also easy to change how the camera reacts using the camera controls or through preferences. I believe how to change it will be different depending on your viewer.
  16. There is never a listen handle left open before opening another in the script I published. All listen handles are closed when responded to, or after a the timer runs out. There is no exception to this in that script. if(time) enforces it - the time variable has its exclusive relationship with the timer on purpose - a float with no math ever being done with its value to allow imprecision.. If someone does not respond to a dialog or clicks ignore, the next user still has to wait on the timer to close the listener. I also still see closing a listener immediately before opening one in the touch as allowing them the object to be broken when it is in use unless other steps are taken to prevent it.
  17. Taaruf wrote: Thats the reason why im gonna stick with the old script, it was easier edit the messages, it showed more clear which line was from which category. Stick with it if you want but that isn't what you asked for when you first came in, and it only had 2 buttons to react to. Of course that was easy to figure out. The last time I was near a group of furries, they were all wildly clicking on each other's tails - something that will cause problems with your script as it is. It is still easy for it to be laggy, make errors, and contribute to your being asked to leave (or ejected) from a lot of sims. Taaruf wrote: The only thing i wanted on that one was the name of the object to disappear in chat once the message came up. Originally that's all you asked for. Then you came back wanting to know how to add more options and reactions, some of them that include changing its name still again. All of these things, asked separately, makes the logic for the script change, and can easily mean an entire re-write, not just a simple edit. Wait until you try to have a few more than 3 buttons and see how mangled the dialog is when it is clicked. There is a good reason you were told to try to understand what it was doing and why. I would have even made changes to the one I wrote to make it a little more readable and able to add some more options, but you would still need to try to understand it a little more yourself. This part of the forum isn't for writing and giving away free (or commercial) scripts - its for helping people write their own. No one had to offer the scripts they did; it was done out of kindness. Taaruf wrote: Guess thats impossible since we r on page 3 and still not solved =D I'm sure at least 2 of them did exactly what you originally asked for; Rolig wasn't able to test hers inworld before offering it to you, but I'm pretty sure Leprekhan's does exactly that. I tested mine inworld and it worked fine. I would still see it this morning and easily see how to improve it for readability and editability, but why? You would need to try to understand it yourself or someone else helping will be a never-ending job.
  18. It's fair to say which you use depends on the flow you need. I don't know how LSL compiler worked 5 years ago, but this works now the way it does in other languages in all cases I've seen; each has its purpose. if - can work by itself without any else or else if following it. If the condition is not met, the block is just not entered, but the condition is always evaluated for true or false. Using ifs when and else or else if is appropriate means the script will always evaluate the condition for true or false - even if it does not need to. else - an ultimatum. If used, it must directly follow either an if or else if. If the if or else if(s) it follows had a condition that evaluated as true, all blocks that follow, including this one, will be skipped over. If none of the previous conditions were true, this will ALWAYS be entered. Using it depends on if you absolutely have to have something happen if the conditions before it were not met. If nothing has to happen when the earlier conditions are false, this does not need to exist. If this is used, it is always the 'end of the line' - a required alternative after an if or ending a series of else ifs. else if - beneficial to prevent scripts from reading through multiple conditions when it does not need to. Its condition is never evaluated (skipped over) when an if or else if directly before it was true. When this one is true, the script skips over any else ifs or else that follows, not needing even to read the condition.
  19. It is an attachment. A lot of places check memory limits on avatar attachments now days. Give them a fairly accurate figure instead of looking bloated. I checked using llGetUsedMemory() at the end of the listen event - 8812 as is, a little lower when checked from timer. Without the limit, it appears as a full 64k to other scripts that are checking - 8 times higher than it is.
  20. There are many ways to create these, but when you add options, it gets a little bit more complicated each time. I wrote a simple one but left it alone since you had a lot of responses. Simple verbs in the button list will work as it is, but for something like "Cut off" to be turned into "cuts off" in the response, you have to do a little more work with the strings in the listen event responses. integer channel;integer listener;float time = 0.0;string user;string owner;//Global list not needed in this simple form, but easy to customizelist buttons = ["Bite","Pull","CANCEL"];//I only drop a last name if it is Residentstring dropResident(string name){ integer index = llSubStringIndex(name, " Resident");//Be sure the blank space is there. if (index > 0) { name = llDeleteSubString(name, index, -1); } return name;}default{ state_entry() { owner = dropResident(llKey2Name(llGetOwner())); channel = (integer)(llFrand(-1000000000.0) - 1000000000.0);//Don't listen to anyone else's tail llSetMemoryLimit(9000); //If you change the script - repair this } touch_start(integer total_number) { if (time) //Wait their turn - don't listen to answer { llDialog(llDetectedKey(0),"\n\n" + user + " is playing with " + owner + "'s tail.",["OK"],channel + 1); return; } key id = llDetectedKey(0); user = dropResident(llKey2Name(id)); llSetObjectName(user); llDialog(id,"\n\nChoose an option:",buttons,channel); listener = llListen(channel,"",id,""); llSetTimerEvent(time = 20.0); } listen(integer channel,string name,key id,string msg) { llListenRemove(listener); llSetTimerEvent(time = 0.0); msg = llToLower(msg); if (msg != "cancel") { llSay(0,"/me " + msg + "s " + owner + "'s tail."); llDialog(id,"\n\nChoose an option:",buttons,channel); listener = llListen(channel,name,id,""); llSetTimerEvent(time = 20.0); } } timer() { llSetTimerEvent(time = 0.0); llListenRemove(listener); } attach(key id) { llResetScript(); }} ETA: You can check value for id in the attach event as in Rolig's script if you prefer - this will reset both on attach and detach.
  21. For an attachment, I would just change the name to that of the clicker in the touch event before responding. Then the "/me" will reflect the name of the toucher. Changing the name of an attachment while worn does not servive taking it back into inventory (its name will revert back to what it was originally). If it were for an object that is not attached, then a global value to hold its permanant name, set in the state_entry would be used, along with a user function to change its name, speak, and change it back. Since a tail is an attachment, the quick name change when touched should work fine. ETA: Even a user function isn't absolutely needed in the other case, but might be a little more organized.
  22. Personally, I think Rolig gave good answers and options to the OP. What I don't understand is how closing a listener in a touch event immediately before opening one - without tracking whether or not the object is in use first - prevents having an occassionally broken object (the tag game I mentioned in the earlier post). I agree that when the listen is on a very negative channel, the urgency to close it really isn't there regarding lag - only if you were to constantly open new ones without closing any. The last example she gave me would be a broken object if the listener were closed even once - I understood that to be a script with a listener always open on a very negative channel (granted, multiple objects, but I think that's common and needed more than realized); the logic in the listen event decided how to react. First, a script needs to work as intended. Second would be to make it reasonably efficient. Having too many listeners building up will break both of those rules eventually. An object that might not respond because active users' listeners being closed breaks rule #1. I don't think there is any one size fits all solution - understand how they work and do the best you can with your situation. Keeping the script simple helps all the way around.
  23. Thank you, and good answers, Rolig. But they still bring my question to mind - If you are scripting it so that only one user can interact with it at a time, isn't it practically assured you will either 1: always have the listener closed before ever releasing the object for someone else to use; or 2: always have a single listener open on a discrete negative channel, which will have little if any simulator impact? I can see closing a listener as the first step to opening a new one being workable in the second scenerio. I have used a boolean such as isInUse before; keeping track of it to turn it false would have happened with closing the listener at the same time. The other possibility you mentioned still seemed to me that you were offering it as an alternative to closing a listener at the same time as opening a new one, rather than in conjunction with it - or else you would still be closing out an active user.
  24. I'm not going to try to resurrect disagreements, and will admit I probably should not have even posted in the other thread a piece of something tested that was not organized even half well enough to say what was intended. I will now ask how, using the method you are suggesting for closing a listen handle before opening one will prevent this problem, which shown to me a couple years ago when I actually did suggest the same thing to a few creators at the same time: Any time at all that there are more than one person who might wish to interract with the object, especially through clicking - How do you prevent a game of tag for control of the object? Person 1 clicks - is given a listen handle; Person 2 - who doesn't even have to know about person 1 -- clicks and shuts off Person1's listener. Person 1 and 2 can play the tag game only 1 time or many times coming to the same conclusion: The object is broken or only works sometimes. Covering for this can happen in ways such as boolean variable to determine if its in use, but then that has to be regulated; it easily turns into more script work for something that should be kept fairly simple to begin with.
  25. Qwalyphi Korpov wrote: It still shows a number of prims when you check About Land/Objects to see what you have. So unless you provide a rental tool that counts "Land Impacts" against a rental limit I'd stay with prims. No, it does not, and has not ever since the change to LI for accounting came about. All rental tools and About Land show LI. The number of prims in the makeup of any object actually isn't anyone's business except the creator and anyone with modify rights - all accounting is done by LI.
×
×
  • Create New...