Jump to content

Prokofy Neva

Resident
  • Posts

    5,457
  • Joined

  • Last visited

Everything posted by Prokofy Neva

  1. Actually, the answer I got on this was that I put it in the wrong sub-category. The rule appears to be that if there is a category like, say, RENTALS, and it has sub-categories like DEVELOPED and UNDEVELOPED land, you have to stick it in a sub-category, and can't put your listing and its enhanced ad in that top category. I guess that makes sense but I wonder if it is fairly policed.
  2. The claim that Lindens were "shutting down server development" merely because they shut down the *view* of multiple bug reports and removed interactivity was never logical or justified. You didn't attack that as off topic, however. There isn't much more to say about the Lindens closing the JIRA because...it's closed now. Make your own JIRA. So the discussion is about the larger issues, and in that sense, my critique of the problem of open source cultishness is relevant here. My banning from the JIRA isn't a good thing; it's an example of the failure of this "science". If a person reporting a bug in good faith that is acknowledged as a bug by both the original coder and by employee no. 2 as a real bug is then hounded off the boards because another Linden likes the bug effect and think removal of it is a feature-removal request, then we've illustrated the heart of the problem.
  3. Yeah, I understand the literal meeting of the word "orthogonal". But in our context, it's a cult word that was popularized by the Lindens and caught on among the scripters. I watched this phenomenon over the years. I have never heard the word "orthogonal" before or since, outside of math class...until of course I began to listen to the speeches of Alec Ross, head of "Innovation" for the US State Department -- and of course he picked it up from Silicon Valley. Philosophy and politics are areasof human thought that don't easily lend themselves to the reductiveness of math and science, so saying you think some argument doesn't apply because it doesn't fit a rigid parallel notion and seems "at right angles" to "the point" is merely a way of saying "I disagree with you" and trying to make it "science". My conceptual arguments against open source *culture* are in fact relevant and very important because they help you to see why the JIRA was eventually closed, and why this was logical from the perspective of open source culture, in fact. I have always said in compressed fashion that open source=closed society; now we see it in living colour.
  4. No, it's not "dishonest" or "hypocritical" to use open source scripts while denouncing open source *culture*. After all I buy Chinese-manufactured sneakers for my kids because they're much cheaper, but I denounce Chinese oppression of Tibet and dissidents. It's about normalcy and practicality, something that Internet-rooted people often have trouble grasping. I use this script because it's the only open source script there is in Second Life, and it's one that I was in fact able to get fixed. I'd love more competition in this arena, but it's always been an area where monopolists and greed hold sway. Several of the big rental script companies combine this service with a mandatory hookup to their website where they grab all your data and then give you the convenience of seeing your own data -- for a percentage cut. No thank you to the cut, and no thank you to the turning over of data to other people who scrape and manipulate it. This is a chronic problem in SL. I realize these are subtle concepts and they may go over your head but normal people in the real world are forced to make pragmatic decisions and work with what they have. The minute someone *else* makes a *different or better* open source script, I'll change to it in a heart-beat. The minute someone makes a rental system that doesn't involve me having to be tied to their website, I'll look at it. So often these great merchandisers go out of business -- the reason that open sourceniks often cite for their cult is that proprietary scripts are "locked" and when the people go out of business, you can't access them. True enough, except open source scripters go out of business or refuse to serve customers far, far more often, in my experience. This is also a research and learning exercise for me. I'm seeing that my worst criticisms of open source are in fact borne out. There isn't any "community" -- only a gaggle of neuralgic and easily-offended freaks who shriek if you criticize their script and criticize you of entitlement-happy dishonesty if you put out the request to fix a broken script in their realm. I don't need "coddling" nor do I expect even gruff answers to questions. I get them, in fact, because there are at least enough obsessives on the forums that within 24 hours someone will look at a script and answer a question, which says more about their need to feel needed than altruism, but no matter. But then what happens is that the inevitable occurs: patch or GTFO, there's the door, etc. etc. Qie tells me that I haven't answered questions -- by which he means I haven't run experiments on sims to replicate the bug to his satisfaction and documented it -- hours of work. Working with software *is* work. It should be paid work. The scripts shouldn't be copyable if someone can then get paid for that hard work. This is a religious matter, however, and I don't expect to change your faith precepts. But the real challenge for all of your castigating me for my critique of the open source software movement is to explain away your own intellectual dishonesty in championing open source, but not being able to explain why these open source devotee friends of yours, the Lindens, have so many times gone against the letter and spirit of your movement. They're the ones who took all your hard work and monetarized it in the creation of a special viewer sold to the CBS/Electric Sheep CSI sim projects, remember? Well, a dual license or some such thing enabled that, but the fact is, you were all chumps for working for the Man for free. They're the ones who took a viewer in an ostensible open source open development setting, and locked it up from view for 18 months (viewer 2) while they completely changed and ruined it, without only a few NDA'd elites being able to look at it, but certainly not the commuuuunity. They're the ones that suddenly said, sorry, 1.23 is dead, and we don't care that you're developing on that version your way, and we don't care that we declared "Dia de Liberacion" in our day and claimed Second Life could tolerate multiple, different versions of the software running on various servers. That affected every TPV and they had to scramble. They're the ones who have now closed off the interactive bug tracker, hobbling scientific collaboration and TPV work. All of these impulses came out of the CULTURE of open source. Every single one is dictated by the Benign Dictator. Yet you go on calling *me* intellectually dishonest for criticizing this software cult.
  5. Oh, yeah? Sure there's a point, *if that's where the money is*. We all realize that. Digital sales are the hope of the Internet. The question is whether as a business-to-business agreement, LL has a fee it will pay Valve, that is a flat fee, or based on something else. Per sign-up? Per sale of digital goods? The deal with EA.com faltered *just on this question* if you read the New York Times. Valve didn't like EA.com just being content to selling the game and giving a cut to Valve of each individual subscription sale; if there were further downstream digital goods sold, they wanted a cut of that, too. EA.com doesn't have user-generated content in games, so it was game-god content. But the same issue applies to the user made content in SL. Valve will want a piece of this, in one way or another. Either per sale, or per Lindex exchange transaction, or something. Note that the CEO hired a Greek economist (!) to study virtual game currencies and sales on the margins of games. So he is serious about this. CTL?
  6. I'm not sure if I follow you. Whether someone acquires Lindens inworld from others as gifts or as proceeds from sales, or whether he goes and buys Lindens, they are still worth the same amount -- the LindEx indeed determines that uniform value. I saw something Desmond Shang wrote to the effect that he believed that if you bought Linden dollars, you couldn't cash them back out -- you could only cash out those from other residents. But that's not true. The LindEx is a place to sell any Linden, regardless of where or how you got it. While technically true as a legal issue, SL isn't "play money". Technically, it's a license to access content. That license has a variable place on a marketplace. The $500 is still worth the same in dollars whether you cash it out or not. The only way for it to become a different value is if there is inflation, which used to occur, and still does occur I imagine, through Supply Linden coming on to the LindEx and printing and selling money. So $1000 might not be worth $3.70 when all cashed out and all fees paid to Paypal, but only $3.50 The way a cut could be taken is the way Linden Lab already takes it -- at the point of sale. They take out their percentage, and if you sell a thing on the marketplace for $100, you don't get that full $100, but you get $95 or whatever it is that is left over after the commission. The commission could increase, if LL has to pay Valve, or there could be a second, Valve commission. What you're saying seems to indicate that at the level of the LindEx, the cashout, Valve could charge something. That would only be the case of Valve takes over the LindEx. And I guess that's my prediction. They see the value of game currency exchanges. People want to exchange the World of Warcraft loot for some other game's guilders. And they can do that on a big game currency exchange, like ICM or the old Gaming Open Market which helped the Linden dollar acquire real value.
  7. Well, look, there's no such thing in life as a free lunch. Either Linden Lab pays Steam for the privilege of listing its software there, or Steam finds Second Life so compelling it pays Linden Lab for that wonder. Somehow, I think it's the former. And...what is the nature of the deal? Does it take the form of cuts of sales? Either as a piece of the aggregate, or per sale? On the Marketplace? Through the view through sales? Or? Let's say an existing Steam customer wants to download SL and go on it and explore and shop. He doesn't make a new SL account, he uses his existing Steam account. That's the beauty and convenience of Steam. So...where/how does he buy Lindens? Presumably he downloads SL with a Steam Viewer. That Steam viewer takes him to the Lindex from the viewer, right? Or? How will it all work? Gwyn speculates that maybe we will all have a Steam log-on.
  8. Gwyn's piece: http://gwynethllewelyn.net/2012/08/21/full-steam-ahead-for-new-horizons/
  9. I got an odd message telling me that an item in my store was removed because of inaccurate advertising. Huh? It's a landmark for sale for $0 -- which is the cludge the Lindens themselves invented for us to all list land rentals. It's a landmark to $500 town house rentals in Free Tibet, a community I have with Asian themes. I can't figure out what is wrong with this, as it's like other landmarks to rentals that have been left still active. Huh? And where can you go to appeal these? Does filing a customer service relate to the Marketplace?
  10. The story in the New York Times today talks about the Valve, makers of Steam, where Second Life will soon be listed in the "creation tools" section apparently, but in an environment of games perused by 40 million customers. The article mentions that EA killed a deal with Valve because they wanted revenue from the sale of digital goods. We don't know the nature of the deal LL is making with Valve now, but we should ask sooner rather than later whether this includes any notion of "sales tax" or even something as drastic as the LindEx going under the control of another company, or serving as some kind of Metaverse game currency exchange. http://www.nytimes.com/2012/09/09/technology/valve-a-video-game-maker-with-few-rules.html?_r=2&pagewanted=2&hp Last year, the company had a dust-up with Electronic Arts over Steam’s policy of taking a cut of all revenue generated from a game, like the sale of virtual goods, even after a player has bought the game. As a result, E.A. is not selling a number of its latest games through Steam. Valve says that without such a policy, developers could easily game the Steam system by making all their software free and charging consumers for additional content later. It is worth pointing out, too, that E.A. last year began competing directly against Steam by starting its own online game store, Origin. My understanding of this news about Steam at first was that it is like a mere listing of SL in a directory. But it may be more than that. Does LL pay for this privilege? Does Steam pay for this privilge? Gwyn Llewelyn has an article about Steam in which she asks whether in fact we will all be logging on now via Steam.com or whatever. So what does this move entail?
  11. 1. Open Source culture is reprehensible. It's authoritarian. It's what led both to the awful practices and atmospherics that led the Lindens to shut the JIRA interactivity down; and it is that very culture as well that led to them shutting it down for their own reasons. All in all, a lose-lose. 2. I don't offer rental rebates, I offer 4 week discounts, that's different. But I'll take it as a generic premise. You can't compare a business practice that involves giving customers a break, like in a volume discount, with undermining the very concept of enterprise itself by giving away things for free. And that's what happened -- one scripter undermined the proprietary business of others by releasing a script into the wild, thereby undermining their business, but he and others who came afterward in this magical "community" of opensourceness didn't supply due diligence and customer support. THAT is the problem. The same thing happened with the free TV script released -- I could really bend your ear on that one! I'm all for scripts that provide basic "utilities" like opening doors or taking notecards or supplying a drink animation as being open source. That makes sense. No one is going to improve on them, really, and putting them into a proprietary situation only takes advantage of newbies. But rentals scripts, TV scripts, other kinds of things like that are more complex, have different features, meet different needs, and there is no need to undermine the *business of proprietary script making* which is *legitimate* and at the heart of Second Life, through ideological warfare via sabotage. THAT is what I'm talking about. A) if you go back to my blog post and see what I wrote, I didn't deal with anyone "rudely" -- that's your judgement B) if a script doesn't work and it is due to hasty and erratic work of a scripter, regardless of their niceness or friend status, you have to criticize them and tell them to do it over. The very "iterative" nature of scripts make all scripters rather casual -- they hastily hack through things over and over until it works rather than thinking through consequences. If they had to pay $10 for each blank script they opened, like texture designers have to pay $10 for uploads, it might make them more careful.
  12. If you did some research and read the whole blog, you should then point out that: o people claim they can fix things casually in a "community," and then do sloppy, irresponsible work. Where's the quality control? There isn't o the previous script writer ran a predatory proprietary rental script system taking a cut of every rental transaction of his hapless patrons, then open-sourced his script to destroy the business of another proprietary script maker competing with him. "Thuggery" is indeed the word to describe here, and it's typical of the Wild West of Second Life especially in its earlier days o another proprietary rental script scripter also turned to griefing and robbing people in the banking schemes. This is Second Life! The Lindens fortunately moved in and banned banking and stock schemes; they also created a TPV policy and other things. They run a tighter ship now. This isn't about "attitude," it's about reporting the bad behaviour of others. Nobody is obliged to help me. But what you indicate is that no open source scripter can ever be criticized for bad behavior, predatory behaviour, destructive behaviour, casual and sloppy behaviour. And that's what's wrong with your openness, Perrie. It's not open. It's a cult.
  13. Orthogonal is one of the open source cult words, Qie, did you realize that? You take my assessment and think about it narrowly and literally, as if it is merely about how code is made and publicized to others. But it's about an entire culture and way of life and mindset, not merely whether or not you publicize code. It's how you make the code that counts. Open source pretends it is open and democratic in making code. It is anything but. It is autocratic and arbitrary. Bug-tracking isn't an industry standard. There are probably few other software products in the world that had a public JIRA in which ANYONE could file a bug and a comment. Most of these types of trackers are internal only, and if opened up at all to users, only to contractors or app engineers or some clubhouse set of elites who are cleared as part of the geek tribe. You may castigate Apple for not having an open JIRA, but it isn't open source software running its phones, so it doesn't need a public JIRA, it has employees for that. Does Android have a public JIRA? Can I go on it? That's the test. You've having a discussion about open source versus proprietary, but I'm analyzing how fake open source culture pretending to be "open to anybody" really isn't -- and so it ends in tiers as it has now with the JIRA. The totalitarians can't take the open discussion that undermines their power; they shut it down. As for my remarks about my lovely open source script, it's a perfect example of how fake the sense of community is. It's like when the Diaspora* devs give this failing social network to "the community". They might as well say "the garbage heap of history". They dump it out there in the wild and see who picks it up, maybe seagulls. The rental script was in fact released to undermine the proprietary business of other rental script makers; it was once a proprietary script that in fact made millions for the scriptwriter, because he sold it at a high cost, or a low cost with an option to give him a percentage of each rental. The early economy of Second Life was primarily made up of such predatory proprietary rental-script percentages. There wasn't enough competition -- there were only two such scripts. Then a third competitor came along, and then one of the former monopolists released his script to damage the business of others. That's open source at its heart. And there isn't anybody to fix it, now that it is "open" and "in the community". If you pay someone, they fix it. Not so freebie open source dreck. I don't expect anyone to do a single thing for me for free -- I'm just calling out how fake it is to have open source scripts in SL which really mean in fact that nothing is worked on, because it depends on the good will of volunteers, and that isn't really the great thing you imagine. As you "asking twice," you asked in fashion that sure sounded hypothetical. Er, more information about the distribution of the failures? Why, Qie? That would involve policing thousands of rental boxes and tabulating their failures manually. I don't have a master automated system like Hippo because I refuse to turn over my rental data to a script baron in SL. Those interested in tinkering with this could make a set of 100 boxes and track it themselves -- or not. If I report a bug that is happening on sims regularly enough to be a nuisance, AND others who ARE scripters say they have heard this is a bug, that should be enough to interest people (after all, it's likely not just my script's mechanisms). There is something to do with the version of the channel the sim is on or something, because not all boxes are affected. I found that when I used proprietary rental script systems, I was deliberately sabotage and savaged by other proprietary rental systems in the most awful way, by stealing key words and negative advertising with my business name as a key word. I also used a proprietary rental script of someone who went on to become a serial griefer and thief and was banned permanently from SL. So that was why I put my "business critical" system on an open source script that in fact got fixed at least twice by "the community," i.e. individual kind volunteers. It's not that big a deal, Qie. Rental scripts are only reminder boxes. Payments could go into any prim with a dirt-simple payment script! The real transaction is recorded by Linden Lab in "My Accounts" and that's what's important.
  14. No, I continue to be a big critic of open source and actually oppose it as inferior and the opposite of what it claims. I see this closure of the multilateral nature of the JIRA to be in fact exemplary of how open source always leads to close society. http://secondthoughts.typepad.com/second_thoughts/2012/09/the-lindens-destroy-democracy-with-jira-closure-and-kill-off-totalitarians-who-ran-it.html As I noted there, about being banned from the JIRA in 2009, so that I couldn't even read any entries: So just as everyone got to feel what it was like to be banned from the forums when General and Political Science were closed, never to return as they once were, so now everyone is Prokofy. You should have cared what happened to me -- it was going to happen to you in three years' time... I vehemently oppose open source culture. Of course, I make use of open source scripts. Why not? They're there. I also pay for scripts -- and then they work better and i get better customer service. I'm still waiting for the um, "community" to figure out what's wrong with my lovely Hank Ramos open source rental script : )
  15. That's an interesting interpretation I hadn't thought of. I saw it as just more removal of such vestiges of democracy as remain. They took out voting. Now they are taking out the very view of any and all JIRAs. You will only be able to see your own bug report, no one else's? That's absurd. That's not scientific. So much for "open" source? It means all these people who become involved in the issues of the day are cut off. It's undemocratic. And I won't listen to any lectures about how software companies "don't have to be" democracies. They do, when they make social media, because they have people in it. We should be able to shape the world we pay for and inhabit virtually.
  16. But the rental box isn't using the avatar's actual name. It's merel capturing his UUID and using that. That even appears on the box description. So that would be a standard size and it wouldn't matter what the length of his name is. To be sure, the avatar's name shows up if you click on it, but that's probably because it's fetched from the UUID, no?
  17. are you saying you reset the sim, or reset the scripted items? How does the new pathfinding thing relate to timing? And AFAIK, this time freeze preceded the new pathfinding tools.
  18. Nothing happens at all, the rental cube freezes in time and no reminders go out as far as I know.
  19. You could look at Brown, which is a Linden-zoned sim, with a suburban design, and my group's tenants are there and are friendly. But if you are looking for more of a community with more people, you might try the Linden Homes system at least to start.
  20. Here's a free open-source rental script originally created by Hank Ramos and modified by Gabriele Graves. Neither of them seem to come inworld much so I thought I'd ask here. I have it placed at various infohubs and stores and it is quite popular with newbies in particular. It works pretty well (Gabriele fixed it so that it can offer 4-week discount payments and take payments ahead) but now it has an issue that I understand other rental scripts also suffer from -- timing glitches. (There may be a JIRA but I can't locate it). The issue is the "timer" -- that is, the paid state freezes and it never elapses, it just stays as is in some (but not all) cases; it also doesn't survive sim resets and can revert to a previous state (which it didn't used to do). However, it survives returns to inventory and keeps on ticking, which is a great feature. (There's one other odd thing -- griefers are able to resize it even when it is not in share). Any ideas why this is happening (it's some recent Linden patch) and/or the JIRA related to it? //Rental Script v1.5.3 //by Hank Ramos //Options vector rentalOffset = <0,0,10>; float updateInterval = 60.0; //seconds string infoNotecard = "Rent This Space Info"; //Variables string tierName; float rentalCost; float discountTime; integer primCount; integer rentalVolume; float refundFee; key renterID; string renterName; float rentalTime; integer listenQueryID; vector initPos; vector initScale; integer count; integer lineCount; key readKey; string rentalGrade; integer primAllotment; //Constants float ONE_WEEK = 604800.0; float ONE_DAY = 86400.0; float ONE_HOUR = 3600.0; float DISCOUNT_PERCENT = 10.0; dispString(string value) { llSetText(value, <1,1,1>, 1); } sendReminder(string message) { llInstantMessage(renterID, "Your lease located in " + llGetRegionName() + " (" + (string)initPos.x + "," + (string)initPos.y + "," + (string)initPos.z + ") will expire " + message); } saveData() { list saveData; vector storageVector; saveData += renterID; saveData += renterName; saveData += llRound(rentalTime); storageVector = initPos * 1000; saveData += "<" + (string)llRound(storageVector.x) + "," + (string)llRound(storageVector.y) + "," + (string)llRound(storageVector.z) + ">"; storageVector = initScale * 1000; saveData += "<" + (string)llRound(storageVector.x) + "," + (string)llRound(storageVector.y) + "," + (string)llRound(storageVector.z) + ">"; saveData += llRound(discountTime); llSetObjectDesc(llDumpList2String(saveData, "|")); } string getTimeString(integer time) { integer days; integer hours; integer minutes; integer seconds; days = llRound(time / 86400); time = time % 86400; hours = (time / 3600); time = time % 3600; minutes = time / 60; time = time % 60; seconds = time; return (string)days + " days, " + (string)hours + " hours, " + (string)minutes + " minutes"; // + ":" + (string)seconds; } integer setupDialogListen() { integer chatChannel = (integer)llFrand(2000000); llListenRemove(listenQueryID); listenQueryID = llListen(chatChannel, "", NULL_KEY, ""); return chatChannel; } updateTimeDisp() { dispString("Leased by: " + renterName + "\nTime Remaining: " + getTimeString(llRound(rentalTime))); } dispData() { llSay(0, "========================"); llSay(0, "Rental Space Information"); llSay(0, "========================"); llSay(0, "This space is currently leased by " + renterName); llSay(0, "The current rental price is L$" + (string)((integer)rentalCost) + " per week."); llSay(0, "This space will be open for lease in " + getTimeString(llRound(rentalTime)) + "."); llSay(0, "Memory Free: " + (string)llGetFreeMemory()); } default { state_entry() { state initialize; } } state initialize { state_entry() { llSetTimerEvent(300); llOwnerSay("Waiting to obtain Debit Permissions."); llRequestPermissions(llGetOwner(), PERMISSION_DEBIT); } run_time_permissions(integer permissions) { //Only wait for payment if the owner agreed to pay out money if (permissions & PERMISSION_DEBIT) { state loadSettings; } } on_rez(integer start_param) { llResetScript(); } timer() { llRequestPermissions(llGetOwner(), PERMISSION_DEBIT); } touch_start(integer total_number) { integer x; for (x = 0; x < total_number; x += 1) { if (llDetectedKey(x) == llGetOwner()) { llResetScript(); } } llSay(0, "Waiting to obtain Debit Permissions from Owner."); } state_exit() { llSetTimerEvent(0); llSay(0, "Initialized."); } } state loadSettings { state_entry() { integer found = FALSE; integer x; count = 0; lineCount = 0; list savedList = llCSV2List(llGetObjectDesc()); if (llGetListLength(savedList) == 4) { rentalGrade = llList2String(savedList, 0); } else { rentalGrade = llGetObjectDesc(); } for (x = 0; x < llGetInventoryNumber(INVENTORY_NOTECARD); x += 1) { if (llGetInventoryName(INVENTORY_NOTECARD, x) == "Settings") { found = TRUE; } } if (found) { llOwnerSay("Reading Settings Notecard..."); readKey = llGetNotecardLine("Settings", lineCount); } else { llOwnerSay("Settings Notecard Not Found."); llResetScript(); } } dataserver(key requested, string data) { integer integerData; float floatData; if (requested == readKey) { if (data != EOF) { if ((llSubStringIndex(data, "#") != 0) && (data != "") && (data != " ")) { integerData = (integer)data; floatData = (float)data; if (count == 0) { tierName = data; } else if (count == 1) { if (integerData >= 0) { rentalCost = integerData; } else { rentalCost = 0; } } else if (count == 2) { if (integerData >= 1) { primCount = integerData; } else { primCount = 1; } } else if (count == 3) { if (integerData >= 16) { rentalVolume = integerData; } else { rentalVolume = 16; } } else if (count == 4) { if (integerData >= 0) { refundFee = integerData; } else { refundFee = 0; } } else if (count == 5) { rentalOffset = (vector)data; } else if (count == 6) { infoNotecard = data; } count += 1; } lineCount += 1; readKey = llGetNotecardLine("Settings", lineCount); } else { llOwnerSay("==============="); llOwnerSay("Settings Loaded"); llOwnerSay("==============="); llOwnerSay("Space Name: " + tierName); llOwnerSay("Rental Cost: L$" + (string)llRound(rentalCost)); llOwnerSay("Prim Count: " + (string)primCount); llOwnerSay("Space Volume: " + (string)rentalVolume + " sqm"); llOwnerSay("Refund Fee: L$" + (string)refundFee); llOwnerSay("==============="); llOwnerSay("Ready for Service!"); list savedList = llParseString2List(llGetObjectDesc(), ["|"], []); if (llGetListLength(savedList) == 6) { renterID = llList2Key(savedList, 01); renterName = llList2String(savedList, 1); rentalTime = llList2Integer(savedList, 2); initPos = (vector)llList2String(savedList, 3) / 1000; initScale = (vector)llList2String(savedList, 4) / 1000; discountTime = llList2Integer(savedList, 5); state rented; } else { renterID = NULL_KEY; renterName = "Nobody"; rentalTime = 0; initPos = llGetPos(); initScale = llGetScale(); discountTime = 0; state idle; } } } } } state idle { state_entry() { llSetObjectDesc(""); llSetTexture("rentthisspace", ALL_SIDES); llSetScale(initScale); llSetPos(initPos); integer fourweekdiscount = (integer)(((float)rentalCost * 4.0) * (DISCOUNT_PERCENT / 100.0)); integer fourweekrentalprice = (integer)(((float)rentalCost * 4.0) - fourweekdiscount); llSetPayPrice((integer)rentalCost, [ (integer)(rentalCost * 1.0), (integer)(rentalCost * 2.0), (integer)(rentalCost * 3.0), (integer)fourweekrentalprice]); llSetTimerEvent(updateInterval); dispString(tierName + "\nLease this space for L$" + (string)llRound(rentalCost) + " per week.\n" + (string)rentalVolume + " sq meters\n" + (string)primCount + " prims\nPay this Sign to begin your lease."); } moving_end() { initPos = llGetPos(); } changed(integer change) { if (change & CHANGED_SCALE) { initScale = llGetScale(); } } touch_start(integer num_detected) { integer x; integer chatChannel; for (x = 0; x < num_detected; x += 1) { if (llDetectedKey(x) == llGetOwner()) { llDialog(llGetOwner(), "Owner Options. Select one of the options below...", ["Info", "Reset"], setupDialogListen()); return; } } llSay(0, "Lease this space for L$" + (string)llRound(rentalCost) + " per week. " + (string)rentalVolume + " sq meters. " + (string)primCount + " prims. Pay this Sign to begin your lease."); for (x = 0; x < num_detected; x += 1) { llGiveInventory(llDetectedKey(x), infoNotecard); } } listen(integer channel, string name, key id, string message) { if (message == "Reset") { llResetScript(); } else if (message == "Info") { llListenRemove(listenQueryID); dispData(); llSay(0, "Lease this space for L$" + (string)llRound(rentalCost) + " per week. " + (string)rentalVolume + " sq meters. " + (string)primCount + " prims. Pay this Sign to begin your lease."); llGiveInventory(id, infoNotecard); } } money(key id, integer amount) { if (amount >= rentalCost) { renterID = id; renterName = llKey2Name(renterID); integer fourweekdiscount = (integer)(((float)rentalCost * 4.0) * (DISCOUNT_PERCENT / 100.0)); integer fourweekrentalprice = (integer)(((float)rentalCost * 4.0) - fourweekdiscount); if (fourweekrentalprice == amount) { rentalTime = ONE_WEEK * (rentalCost * 4) / rentalCost; discountTime = rentalTime; } else { rentalTime = ONE_WEEK * amount / rentalCost; discountTime = 0; } saveData(); llSay(0, "Thank you " + renterName + " for leasing! Your lease will expire in " + getTimeString((integer)rentalTime) + "."); state rented; } else { llSay(0, "This space costs L$" + (string)rentalCost + " to rent. Refunding paid balance."); llGiveMoney(id, amount); } } } state rented { state_entry() { llSetTexture("infosign", ALL_SIDES); llSetScale(<0.5, 0.5, 0.5>); llSetPos(initPos + rentalOffset); updateTimeDisp(); llResetTime(); llSetTimerEvent(updateInterval); } touch_start(integer num_detected) { integer x; key detectedKey; for (x = 0; x < num_detected; x += 1) { detectedKey = llDetectedKey(x); if (detectedKey == llGetOwner()) { llDialog(detectedKey, "Lease Options. Select one of the options below...", ["Refund Time", "Info", "Release", "Reset"], setupDialogListen()); } else if (detectedKey == renterID) { llDialog(detectedKey, "Lease Options. Select one of the options below...", ["Refund Time", "Info"], setupDialogListen()); } else { dispData(); llGiveInventory(detectedKey, infoNotecard); } } } money(key id, integer amount) { if ((id == renterID)||(id == llGetOwner())) { float addTime; integer fourweekdiscount = (integer)(((float)rentalCost * 4.0) * (DISCOUNT_PERCENT / 100.0)); integer fourweekrentalprice = (integer)(((float)rentalCost * 4.0) - fourweekdiscount); if (fourweekrentalprice == amount) { addTime = ONE_WEEK * (rentalCost * 4) / rentalCost; discountTime += addTime; } else addTime = ONE_WEEK * amount / rentalCost; rentalTime += addTime; llInstantMessage(id, "Adding " + getTimeString(llRound(addTime)) + " to your lease. Lease Time is Now: " + getTimeString(llRound(rentalTime)) + "."); saveData(); updateTimeDisp(); } else { llInstantMessage(id, "Refunding Money..."); llGiveMoney(id, amount); llInstantMessage(id, "This space is currently leased by " + renterName + ". This space will be open for lease in " + getTimeString(llRound(rentalTime)) + "."); } } listen(integer channel, string name, key id, string message) { integer refundAmount; llListenRemove(listenQueryID); if (message == "Info") { dispData(); llGiveInventory(id, infoNotecard); } else if (message == "Refund Time") { llDialog(id, "Are you sure you want to TERMINATE your lease and refund your money, minus a L$" + (string)refundFee + " fee?", ["YES", "NO"], setupDialogListen()); } else if (message == "YES") { float discount = (float)rentalCost * (DISCOUNT_PERCENT / 100.0); integer discountCost = (integer)((float)rentalCost - discount); refundAmount = llRound((((rentalTime - discountTime)/ ONE_WEEK) * rentalCost) + ((discountTime / ONE_WEEK) * discountCost) - refundFee); llInstantMessage(renterID, "Refunding L$" + (string)refundAmount + ", which includes a L$" + (string)refundFee + " termination fee."); llGiveMoney(renterID, refundAmount); llInstantMessage(llGetOwner(), "LEASE REFUNDED: leased by " + renterName + " located in " + llGetRegionName() + " (" + (string)initPos.x + "," + (string)initPos.y + "," + (string)initPos.z + ") has ended. Refunded L$" + (string)refundAmount + "."); state idle; } else if (message == "Release") { llDialog(id, "Are you sure you want to TERMINATE this lease with NO REFUND?", ["Yes", "No"], setupDialogListen()); } else if (message == "Yes") { llInstantMessage(llGetOwner(), "LEASE TERMINATED: leased by " + renterName + " located in " + llGetRegionName() + " (" + (string)initPos.x + "," + (string)initPos.y + "," + (string)initPos.z + ") has ended. Refunded L$0."); state idle; } else if (message == "Reset") { llResetScript(); } } timer() { float timeElapsed = llGetAndResetTime(); if (timeElapsed > (updateInterval * 4)) { timeElapsed = updateInterval; } rentalTime -= timeElapsed; saveData(); updateTimeDisp(); //Process Reminders if (rentalTime <= 0) { llInstantMessage(llGetOwner(), "LEASE EXPIRED: leased by " + renterName + " located in " + llGetRegionName() + " (" + (string)initPos.x + "," + (string)initPos.y + "," + (string)initPos.z + ") has expired."); state idle; } if ((rentalTime <= ONE_DAY)&&(rentalTime >= ONE_DAY - (updateInterval*2))) { sendReminder("in one day."); } else if ((rentalTime <= ONE_HOUR*12)&&(rentalTime >= ONE_HOUR*12 - (updateInterval*2))) { sendReminder("in 12 hours."); } else if ((rentalTime <= ONE_HOUR)&&(rentalTime >= ONE_HOUR - (updateInterval*2))) { sendReminder("in one hour."); } } }
  21. Turn on highlight/transparent and that might show up the object to grab it better or use the land menu to see if there are strangers' prims on the land.
  22. Just to add to this, I replied to Frankie that one thing to check is whether any one individual prim in a linked set is put in "share" which can make the entire build or house or whatever returnable. I haven't seen this particular exploit, but here are the ones I'm seeing now: o griefer can rapidly rez prims and force owner's prims back into inventory (i.e. the griefer is not returning the prims, but pushing his own prims on the server, and forcing prims already there back into inventory -- this is an old bug I thought was fixed but may be back again) o griefer can rez prims on land that has "no build, no group build, no object entury, no group object entry" o griefer can rez prims on land from which he is banned o griefer can rez prims on land closed entirely to public or even group access o typing the griefer's name into the ban list doesn't work to prevent his rezzing of prims or returning to the land o using eject/ban on the spot seems to work, however In my case, the griefers enter an open group and obtain just the basic "tenant" status that does not have rights to remove or add to the band list, so they are overriding group rules as they are supposed to be set. I'm not going to close my group, however, as I see that they can go on griefing given their ability to override the group settings and they can always stand on Linden roads or Linden land and grief from there.
  23. There are definitely rogue viewers around that can spoof or mimic or access the Linden god-mode and do things that "can't" seem to be done under the regular group land rules. I've continously seen exploits involving overriding both group rules and land settings to place grief objects and to inject the owner's own name into the ban list without having the group powers for that. I haven't seen this return exploit, but I do want to suggest some alternative explanations: o there has long been a bug that seems fixed on and off over the years that involves the return of objects to inventory when a sim is spammed with griefer objects. While supposedly there should be a "last on, first off" mode where a griefer's own objects would return to inventory if he over-spammed, what happens is that older items set to the group get forced back. So possibly the griefer is just spamming the land rapidly with his own prims, blowing yours off. There is supposed to be normally a message and function that says "can't rez because parcel is full," but something definitely overrides this as I've had it happen lately o even if only one tiny prim that you can't even see linked is in "share," it will "infect" the whole linked set and make it returnable. There is also a bug in the group tools whereby even people who are not granted in the group the right to return group-set objects can return them if they are in share. Example -- a prefab house with a window switch put in "share" makes the entire house returnable, even though if you examine the whole object's menu, you don't see that it is in "share". o a social hack could be involved whereby somebody gained control of your account and merely logs on to your account to return prims. There aren't remedies for this. But one possible remedy is to maintain a high prim count so that it is not easy for a griefer to come and inject a lot of prims on to the sim rapidly. I don't know the threshold or how this is triggered.
  24. Ok, I got that to work. Thanks ! But it seems a bit trigger happy. Also, I wonder why on your sample you have a coordinate like "110.5" Shouldn't it be a plain number without a decimal point? anyway, I put in the plain numbers and it worked. When you click on it, the prim disappears from view. So the issue isn't the distance (1500 meters) at least on that one.
×
×
  • Create New...