Jump to content

Bugs Larnia

Resident
  • Posts

    85
  • Joined

  • Last visited

Everything posted by Bugs Larnia

  1. Would it not be much easier to periodically check whether the current date matches the one you need (which I think is what @DoteDote Edison is referring to). This is a script I made in 2015 for a quick and easy notecard-based rezday calendar.... it's a bit rough around the edges, but I was in a hurry and never got back to it. list lstRezdays; list lstCelebrants; list lstDayToCheck; list lstMonthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; integer intLine; string strNote; string strText; PerformChecks() { strText = ""; string strDate = llGetDate(); integer intDay = (integer)llGetSubString(strDate, 8, 9); integer intMonth = (integer)llGetSubString(strDate, 5, 6); integer i; do { string strDateToCheck = CalcDate(intDay, intMonth, i); CheckList(strDateToCheck, i); } while(++i <= 14); } CheckList(string strDateToCheck, integer intDifference) { integer i; for (i = 0; i < llGetListLength(lstRezdays); ++i) { string strDate = llList2String(lstRezdays, i); if (strDate == strDateToCheck) { if (intDifference) { strText += (llList2String(lstCelebrants, i) + " in " + (string)intDifference + " days\n"); } else { strText += (llList2String(lstCelebrants, i) + ": TODAY!!!\n"); } } } SetText(strText); } ClearLists() { lstRezdays = []; lstCelebrants = []; } SetText(string strText) { llSetText(strText, <0.0, 1.0, 0.0>, 1.0); } string CreateDateString(integer intDay, integer intMonth) { string strDay; string strMonth; if (intDay >= 10) { strDay = (string)intDay; } else { strDay = "0" + (string)intDay; } if (intMonth >= 10) { strMonth = (string)intMonth; } else { strMonth = "0" + (string)intMonth; } return (strDay + "-" + strMonth); } string CalcDate(integer intDay, integer intMonth, integer intIncrement) { integer intMax = llList2Integer(lstMonthDays, intMonth - 1); integer intNewDate = intDay + intIncrement; if (intNewDate > intMax) { intNewDate = intNewDate - intMax; ++intMonth; } return CreateDateString(intNewDate, intMonth); } default { state_entry() { SetText("Configuring..."); ClearLists(); intLine = 0; if (llGetInventoryNumber(INVENTORY_NOTECARD) == 0) { llOwnerSay("No notecard detected."); return; } strNote = llGetInventoryName(INVENTORY_NOTECARD, 0); llGetNotecardLine(strNote, intLine); } changed(integer change) { if (change & (CHANGED_OWNER | CHANGED_INVENTORY)) { llResetScript(); } } dataserver(key req, string data) { if (data != EOF) { if ((data != "") && (llGetSubString(data, 0, 0) != "#")) { list lstEntry = llCSV2List(data); lstCelebrants += llList2String(lstEntry, 0); lstRezdays += llList2String(lstEntry, 1); } llGetNotecardLine(strNote, ++intLine); } else { state ready; } } } state ready { state_entry() { SetText(""); PerformChecks(); llSetTimerEvent(24 * 3600); } timer() { PerformChecks(); } changed(integer change) { if (change & (CHANGED_OWNER | CHANGED_INVENTORY)) { llResetScript(); } } } Example of notecard:
  2. Bots are the way to go if you want to keep the information inworld. If it's simply storage, you can also use Google Drive, though it takes some setting up. I made a notecard for this once (and yes, I see the irony of that in relation to this post) (Please note that IDs in this example have been randomly generated and are non-functional and Ema Nymton's name is fictional and any relation to a real Ema Nymton is unintentional yet epically cool ) Of course, this example was made for logging something like an avatar, but you can set up your own form as you see fit.
  3. If you really want to be fancy (not that scripters would *ever* do that 😁), you can also address people with their first names only: default { touch_start(integer start_param) { key avatar = llDetectedKey(0); string name = llDetectedName(0); string firstName = llList2String(llParseString2List(name, [" "], []), 0); llSay(0,"Hello, " + firstName + "! Your display name is " + llGetDisplayName(avatar) + " and your user name is " + name + "."); llSay(0, llGetDisplayName(avatar) + " touched the box."); llSay(0, firstName + " touched the box."); } }
  4. Another snippet (which may be a bit faster in big inventories) is to create the list as per @Tattooshop and @Innula Zenovka's suggestions, but instead of the check in the loop, add a deletion clause after. This prevents the check for the item to be excluded running for every item in prim inventory. With small prim inventories this makes no difference, but if your prim has a large inventory, this might impact performance. I often use this to exclude the giver script as below list glInventoryToGive; CreateInventoryList() { glInventoryToGive = []; integer iInvCount = llGetInventoryNumber(INVENTORY_ALL); if (iInvCount == 1) //Only this script present, so exit { return; } integer i; for (i = 0; i < iInvCount; ++i) { glInventoryToGive += llGetInventoryName(INVENTORY_ALL, i); } i = llListFindList(glMyInventoryList, [llGetScriptName()]); //Find this script, because we don't want to give that if (~i) { glMyInventoryList = llDeleteSubList(glMyInventoryList, i, i); //Item is in the list, so delete from the list } } In the above example, you can replace llGetScriptName() with your object's name.
  5. Are you sure it's complaining about string length and not the number of buttons (which also has a max of 12)?
  6. There are two other options you could consider: 1. Creating two lists: one with full names (for giving) and one for the buttons (truncated) - e.g.: list glInventory; list glButtons; CreateLists() { glInventory = []; glButtons = []; integer i; integer iInventoryCount = llGetInventoryNumber(INVENTORY_ALL); if (iInventoryCount == 1) //Only this script present { return; } for (i = 0; i < iInventoryCount; ++i) { string sName = llGetInventoryName(INVENTORY_ALL, i); glInventory += sName; glButtons += llGetSubString(sName, 0, 11); } i = llListFindList(glInventory, [llGetScriptName()]); //Remove this script from the lists if (~i) { glInventory = llDeleteSubList(glInventory, i, i); glButtons = llDeleteSubList(glButtons, i, i); } } GiveInventoryItem(key pkId, string psMessage) //Where pkId is the recipient key and psMessage is the selected button from the listen() event { integer iIndex = llListFindList(glButtons, psMessage); if (~iIndex) { llGiveInventory(pkId, llList2String(glInventory, iIndex)); } } Sorry for any code indentation flukes... the code window is....iffy. Obviously, you'd need to use glButtons in the menu as the button list. I did not put that into this snippet. 2. Using a not dissimilar idea as above, but using numbers for the buttons and using the menu text to display a legend. It's a bit more complex, but usually more descriptive.
  7. You basically can use the script above, but instead of the llSetTexture(message, side); you can use llRegionSayTo like @Innula Zenovka suggested, but instead of the name, you can use llGetInventoryKey to send the texture UUID directly to the eye prim. This way, you can keep the textures in the HUD and not move them to the eye prim. It would look something like this: llRegionSayTo(llGetOwner(), -12345, (string)llGetInventoryKey(message)); Where -12345 is the channel you use to communicate with the eyes and message the name of the texture as per your original script. This is presuming you don't need to add the side that needs to change or that it's hard-coded in the eye prim script. The eye prim can then use a listener like Innula's (with the same channel as the sender) to recast the UUID back to a key and use llSetTexture to set it.
  8. Hi @Brett Linden! Will this be soonish, or did you guys send them to Help Island Public as a hazing ritual? 😜
  9. I think I'm just going to wait a while and see what actually is going to happen. It could get worse, it could get better. SL has been through much and is still here, and thriving. Plus, I have cupcakes, so all is well with the world.
  10. Yeah, I heard the bleep from Whizzy's post just as I hit the button
  11. And as I hit post, the communique is there Thanks for the link @Whirly Fizzle
  12. I have not seen detailed communiques from LL, but I imagine that their first priority is solving the issue. Honestly, I can't recall the last time an outage this big happened for so long
  13. "One does not simply walk away from Second Life" -Boromir at the Council of Elrond The Fellowship of the Ring, off-camera dialog
  14. We have dedicated security staff in our lands. People can report infractions of our rules and the TOS to them. We are currently in a review of their guidelines and a question that has arisen is: is it allowed for the staff to file an AR on an event that was reported to them, but they did not witness themselves? If not, kindly provide the paragraph in the TOS or affiliated documents that apply. I searched, but I could not find a definitive answer.
  15. Well, I'm going to do something odd and reply to the first post, as that generally lists what the thread is about. Personally, I would really want to see last names come back. I loved seeing groups like the Forwzy Family and the Larnia Lineage (yes, I made those up), and it was always a nice topic to start conversation with, if you met a 'brother' or 'sister'. As for the community titles (yes, Cinn, you can have Official SL Mischief Maker), I think they would be as big a mistake as the old rating system. Not to mention that community titles exist. Those communities are commonly referred to as "groups" - most of them now without functional chat, but that is another issue. As so much seems to happen on "The Feeds", wherever these mythical flows of information may be, I am not quite clear as to the current status. Would anyone be so kind as to post a short summary or the latest link to "The Feeds"?
  16. This is once again a power-grab by Linden Labs. TPVs have been at the edge of innovation and tend to be faster, more reliable and less laggy than the standard viewer. Furthermore, Linden Lab has never yet been able to 'work with' any of the residents or resident groups, as has been made painfully clear by the Community Gateway program. This is little more than a thinly veiled attempt to prevent new residents from getting a choice of a better viewer. My question really boils down to: when will Linden Lab finally start paying heed to their residents and start to fix the problems instead of bullying those that try to? (SVC-1509 for example)
  17. I am retracting my comment. It was not well voiced.
  18. All right. A short reply then. 1. I am fairly puzzled by your 50kg sack reference, since that would seem to suggest that the LL programmers you praise to highly (and rightly so), do not perform hard work, nor do educators, health professionals, and any other folk who do not perform this particular kind of manual labor. 2. I do believe my critizism was aimed at the policy makers who institute policy that will result in shrinking the SL user base, therefore creating less job security for the programmers and other staff employed at Linden Labs. 3. For me, SL is not about making money. I never ended the month in the plus since the day I arrived. It is a service I use and which I can reasonably expect to be civil and reasonable adequate. If not, I do have the right to make my complaints - which LL acknowledges. 4. Making mistakes is part of the game. So is learning from them. They started something wonderful which we all helped develop. That does not exempt them from critisizm if they do make mistakes. And they started these blogs for that. 5. My brother is also a programmer and he is teaching me, so I know it is not easy at all - and I never claimed it was. Once again, this point is contradictory since the current policies as stated in the original blog are detrimental to the non-profit and educational sectors and beneficial to the economical forces in SL - that which you call 'the Rockefellers'. Now that we have established that we agree on a great many points, let us end this discussion, since it has no further value. I do wish you a wonderful Second Life and will strive to keep the experience of others as positive as possible. Love & Giggles!
  19. Thank you for that enlightened and well-thought through and eloquently phrased input, Rocker. We've been helping to improve SL for the 2 years that I have been here. My commercial exploits are negligible, if any, and we've spent a lot of time, effort and money on helping to make SL a better place. I'm just getting very tired to see that all the hard work done by us and many others gets frustrated time, time and time again by short-sighted, short-term gain politics propagated by Linden Labs. So yes...after the umpteenth time, I get cranky. I'm in SL and, for the time being, I will stay. It's the non-profit and educational sims I know that are *forced* to move by these price increases. If you had read my post thoroughly, then you would have realized that. Still, like me, you have the right to place your opinion on this website and I will not take it personally. Love & Giggles, Bugs
  20. Once again, Linden Labs is showing their mixture of increasing short-sightedness, greed, and stupidity. After the CGs, the TeenSL joining (i.e. add teens to the more expensive economy of main SL where they need to spend more), we have this: the people who are motivated by their ideals and doing right in the world, being chased out in favor of consumers. Many of the people I heard who own sims like this, are moving to other virtual worlds, such as 3rd Rock, OpenSim, Inworldz or OpenSIMulator. Unlike the old days, when SL was the only virtual world of importance, we now have alternatives that are growing in ever-increasing pace, fueled by residents who have gained their experience here. Linden Labs stated that they want to reduce lag. Chasing 75% of your residents out of SL would probably work grand. . What I find laughable is that the ONLY comment from LL so far is a deletion of a post. They're not even responding to the blogs anymore, since they appear to have no answers to give. Second Life. It had such potential.
×
×
  • Create New...