Jump to content

Erwin Solo

Resident
  • Posts

    1,212
  • Joined

  • Last visited

  • Days Won

    4

Everything posted by Erwin Solo

  1. Aye. The object has to be no-mod, else the user can simply remove the script from the object. If the object is no-mod, the user can't reset the script. The aspect of the conversation that has been very helpful to me is to know that I need to remind my customer that they have to make the objects no-mod. That being said, I like the idea of testing for "key SpecialPerson = <UUID>;" in the state_entry(). I believe that the no-reset of no-mod objects is enforced by the Region Server and not merely by the Third-Party Viewer Policy https://secondlife.com/corporate/tpv.php#priv2 so that even illicit/non-conforming Third Party Viewers can't circumvent. Correct me if I'm wrong, please.
  2. Oh, like duh! You're right. I'm glad I posted this.
  3. A friend wanted a script for perishable goods. She's making flowers, milk, etc., food that requires cooking (mix of ingredients, etc.) for roleplay. She wanted a script for which her products "age" and delete themselves, even if stored in inventory. Additionally, she wants the 'lifetime' of the perishables to reset if give from one avatar to another. Here is what I did for her. Some of you scripting black belts feel free to tell me what I could have consolidated or done better. // Erwin Solo 2019-05-23 // Autodelete script that remembers time spent in inventory. // Uses Unix Clock, which will fail on 19-January-2038 for 32 bit integers. // See https://en.wikipedia.org/wiki/Year_2038_problem. // I could hack around the 19-January-2038 bug, but hope we'll have generally agreed to solution. integer TimeToLive = 7200; // enter time you want inventory to live in seconds float gTimer = 3600; // timer runs every hour for low script load. Okay to set lower for testing. // enter UUID of person who you want to be immune from the timeouts // Must be in quotes. Example, "62d718f6-e00b-49ca-b434-338f712fd03a" for Erwin Solo key SpecialPerson = "62d718f6-e00b-49ca-b434-338f712fd03a"; // ======================================== // Don't change anything below here // ======================================== key Owner = NULL_KEY; // Owner determined by script at initialization integer BirthTime = 0; // to be calculated at initialization integer DieTime =0; // to be calculated at runtime integer CurrentTime =0; // to be calculated at runtime default { state_entry() { Owner = llGetOwner(); llSetTimerEvent (gTimer); BirthTime = llGetUnixTime(); DieTime = BirthTime + TimeToLive; // Time object should die } on_rez( integer start_param ) { if (Owner != llGetOwner()) // if owner has changed, reset script to re-establish BirthTime and DieTime { llResetScript(); } llSetTimerEvent (gTimer); if ( Owner != SpecialPerson ) // if owner is not the special person { CurrentTime = llGetUnixTime(); if ( CurrentTime > DieTime ) { llDie(); // object deletes itself } } } timer() { if ( Owner != SpecialPerson ) // if owner is not the special person { CurrentTime = llGetUnixTime(); if ( CurrentTime > DieTime ) { llDie(); // object deletes itself } } } }
  4. There is a reasonably large supply of mesh models available on the internet for purchase via credit card or paypal. Just google up phrases like collada files for sale, blender files for sale, 3ds max files for sale, maya max files for sale, 3d model files for sale.
  5. A few people have contacted me saying that they are not scripters but that they want to use this script, and needed support. To make such interaction easier, I put a free version of the script embedded in two objects: a Door (for collision use) and a Teleporter Pad (for touch/sit use). Listing URL: http://marketplace.secondlife.com/p/ES-Bump-Teleporter-Experience-Based-Teleport-even-Off-SIM-Gridwide/14209701
  6. Yeah, it had a couple of errors that I easily worked through. Void apparently didn't test it. It also had some ideas that I'd never seen before--like adjusting for time dilation. I really miss Void being around. I miss having someone around to bring up non-obvious things. The whole backstory of why is documented elsewhere in the forums; no need to repeat it.
  7. This is what worked well for me. Your mileage may vary. // Erwin Solo 2018-09-28 // Based on Void Singer 2011-10-25 at <this url> float vFltSndLen = 8.5; //-- length of each sound file in sequence (last one can be any length, but 10 seconds or less of course) list vLstSndNms = ["A", "B", "C"]; //-- names of all the sound files in order integer vIdxSndNum =0; //-- used to track which sound to play default { state_entry() { llVolumeDetect( TRUE ); // sets object up for collision detect llSetSoundQueueing( TRUE ); } on_rez(integer start_param) { // Restarts the script every time the object is rezzed llResetScript(); } changed(integer change) { if ( change & CHANGED_OWNER | CHANGED_REGION_START ) { llResetScript(); } } collision_start ( integer num_detected ) // -- Object used at my landing point. People land on it. { if (!vIdxSndNum) { vIdxSndNum = (-llGetListLength( vLstSndNms )); llPreloadSound (llList2String( vLstSndNms, vIdxSndNum)); //-- Preload first sound. Causes one second delay llPlaySound( llList2String( vLstSndNms, vIdxSndNum ), 1.0 ); llResetTime(); llSetTimerEvent( 1.0 ); //-- pad the start time for the next sound } } collision_end( integer num_detected ) // -- Object used at my landing point. // -- People walk away from it and sound plays again, // -- or continues, depending on how quickly they move. { if (!vIdxSndNum) { vIdxSndNum = (-llGetListLength( vLstSndNms )); llPlaySound( llList2String( vLstSndNms, vIdxSndNum ), 1.0 ); llResetTime(); llSetTimerEvent( 1.0 ); //-- pad the start time for the next sound } } timer() { if (++vIdxSndNum) { llPlaySound( llList2String( vLstSndNms, vIdxSndNum ), 1.0 ); llSetTimerEvent( 0.9* (vFltSndLen - (llGetAndResetTime() - vFltSndLen) ) ); //-- time will never be less than 90% of actual sound length thanks to time dilation //-- this ensures that we continually adjust to hit the realtime mark to load for //-- sound queueing via llSetSoundQueueing( TRUE ); } else { llSetTimerEvent( 0.0 ); } } }
  8. Well, I've learned that when Void speaks, the thing to to is listen. I got this script to work, after fixing a couple of typos. I'm impressed by the adjustments for time dilation. I am not quite following the rationale for doubling the vFltSndLen. I got long sound gaps with 2*vFltSndLen, and stepped back to 1*vFltSndLen as shown below. Can someone help me understand Void's logic? I have noticed that she doesn't post much anymore. float vFltSndLen = 9.733; //-- length of each sound file in sequence (last one can be any length). // -- My sound happens to be 29.2 seconds, so I sliced it into 3 parts in Audacity // of 9.733 seconds, sacrificing the last 0.001 of trail-off music. list vLstSndNms = ["A", "B", "C"]; //-- names of all the sound files in order integer vIdxSndNum =0; //-- used to track which sound to play default { state_entry() { llVolumeDetect( TRUE ); vFltSndLen *= 1.0; // Void says "-- double length now so the timer function is simpler " this it the part I don't understand. "vFltSndLen *= 1.0" works better for me. llSetSoundQueueing( TRUE ); } collision_end( integer num_detected ) // I am triggering with collision_end not touch. Use touch if you prefer. { if (vIdxSndNum) { // llSay( 0, "wait for it to finish" ); } else { vIdxSndNum = (-llGetListLength( vLstSndNms )); // I had never used negative indexes before, but I get it and I like it! llPlaySound( llList2String( vLstSndNms, vIdxSndNum ), 1.0 ); llResetTime(); llSetTimerEvent( 1.0 ); //-- pad the start time for the next sound } } timer() { if (++vIdxSndNum) { llPlaySound( llList2String( vLstSndNms, vIdxSndNum ), 1.0 ); llSetTimerEvent( vFltSndLen - (llGetAndResetTime() - vFltSndLen) ); //-- time will never be less than actual sound length thanks to time dilation //-- this ensures that we continually adjust to hit the realtime mark loading just after pad time //-- and shouldn't fail unless the average dilation was below ~0.6 } else { llSetTimerEvent( 0.0 ); } } }
  9. My question. SANSAR's native support for Maya software is great. Can we have that capability in SL? In SL, most of us find the best way to get Maya models into SL is to pass them through Blender first. It seems a shame to have to run output from a top-tier solid modeling program (Maya) through the rather clunky Blender freeware just to get models into SL.
  10. My question. SANSAR's native support for Maya software is great. Can we have that capability in SL? In SL, most of us find the best way to get Maya models into SL is to pass them through Blender first. It seems a shame to have to run output from a top-tier solid modeling program (Maya) through the rather clunky Blender freeware just to get models into SL.
  11. I have the latest version as a freebie on marketplace also, if you are more comfortable with something already packaged up.
  12. I would like a copy, please.
  13. The original poster did not say $1200. The original poster said, "Accepting offers to sell. ***You pay $600 transfer fee*** Please Notecard inworld... make me an offer. Let's talk." Grandfathered Region is $195 per month. New region is $249 a month, for $54 savings per month. $54 savings per month pays back the $600 transfer fee in 11.1 months (= $600 / $54). Back when grandfathered Regions saved $100 per month (= $295 - $195), they would commonly sell for a range of $1000 to $600 to the owner plus $600 transfer fee (a range of $1200 to $1600), which was a range of 12 to 16 months in payback time (12 months =$1200 / $100. 16 months = $1600 / $100). Obviously, selling price must also be adjusted for pro-rated value of remaining monthly tier of ranging from $8.30 per day (=$249 / 30 day month) to $6.29 per day (=$195 / 31 day month), depending on how one values the remaining tier.
  14. Used the search tool in the Linden Viewer (or third party viewer). Each has a separate mainland search function. You can search for the parmeters you are looking for like size and region rating (i.e., Adult, Moderate, General) and sort by price. You can then TP to each parcel. This is a gridwide search tool.
  15. Sometimes they will move the 4 meter x 4 meter (16 sq meter) plot out of the middle of your land to the edge of your property. Submit support ticket and hope for the best.
  16. New SIM from Linden Labs costs $349, which includes the first month's tier of $249 [Note 1]. So, it only costs $100 to get a new SIM from the labs, which just happens to be exactly the same as the transfer fee [Note 2]. Only reason to buy a transferred SIM is if one wants to keep the current build and current roleplay theme. Note 1: Note 2: https://secondlife.com/corporate/pricing.php
  17. Use a search engine for "Explains Why Last Names For Second Life Avatars Were Removed" or "Looking Back: Why Did Linden Lab Get Rid of Last Names" or similar for some interesting reading.
  18. I was able to get the Blender approach to function. I did not experience the problem you report. Maybe I just got lucky, however I am no longer using the technique. However, I found another way to do what I wanted that seems easier. I hope technical support managed to fix your region.
  19. Search YouTube for Video number Nl2QdNyOsME . Search YouTube for Video number TyR1XOF3qoA . External links tend to disappear from these forums, but those numbers will take you right to older YouTube tutorials on Blender and terraform maps.
  20. Well, its not clear which forum this should go in. Is there a plug-in for editing Terrain RAW files in Blender or Maya (I use Maya LT)? By "Terrain RAW file" I mean the term in the sense of http://wiki.secondlife.com/wiki/Tips_for_Creating_Heightfields_and_Details_on_Terrain_RAW_Files . By Blender or Maya plug-in, I mean something like the 2011 solution for Blender that you get if you search YouTube for Video number Nl2QdNyOsME . I'm just looking to get some guidance before I go off searching.
  21. No, this is a script library. This was an open source contribution to the community. Nothing more; nothing less. I've been using this approach for a few weeks now and it has really cut down on the script load on my Region/SIM with no ill effects. I'm certainly not claiming this technique is good for every application, but its been great for mine. Some people seem concerned about unused declarations for the Rez2 API. Having the Rez2 API already typed in is convenient for me when I want to modify the script to do something else. If I don't use one of them, the compiler removes them from the run time image automatically.
  22. My advice is go inworld and do what you like to do. Then over time you will meet people who like to do the same things. If you like music, for example, go to dance clubs featuring music that you like. If you like art, then go hang around the art exhibits. If you like making things, then go to the Ivory Tower of Prims or Builders Brewery.
  23. Oh, now I see! I tell it 256x256 and 13 channels, and then I have the RGB, Red, Green, and Blue channels up top, just like I needed! Thanks so much! Problem solved.
×
×
  • Create New...