Jump to content

elleevelyn

Resident
  • Posts

    592
  • Joined

  • Last visited

Everything posted by elleevelyn

  1. you right about this, i had a look. I should spend more time learning about how LSL actual works rather than just assume it works like other interrupt event driven languages that I am used too
  2. the reason why Auto-return is set to 0 when we transfer land is to avoid an entire build being returned when we deed the parcel to group or transfer the parcel to an alt or friend who wants to keep the build changing it so that Autoreturn is set if we don't opt out is going to cause more problems that what is worth tbf to the current Land Lindens who look after mainland they are pretty good at setting Auto-return on private parcels when there is a mess of other people's stuff,. detracting the neighbours enjoyment of their own lands
  3. just a wish i wish there to be a way to check whether the notecard is cached. Something like integer yes = llIsNotecardCached(notecardName) and when this function is called the notecard in cache is moved to the front so is last out of the cache thank you Any Linden who might read this
  4. yes if we going to be reading notecard in more than one place then a user-defined function, if not then inline it in either case then I think we left with something like this string notecardISAM(string notecard, integer line) { llGetNumberOfNotecardLines(notecard); integer retry = -3; // retry 3 times string data; do { /* alternatively llGetNumberOfNotecardLines(notecard); could go here, and we thrash it upto retry times */ data = llGetNotecardLineSync(notecard, line); if (data == NAK) { // non-eventblocking pause before we retry float pause = llGetTime() + 0.1; while (llGetTime() < pause); } } while (retry++ && data == NAK); return data; } it can still return NAK but this would be no different to a standard ISAM system in how we then deal with it we could also make it smarter where we monitor cache performance. Adjusting retry and pause in response
  5. constructor competitions have largely gone by the wayside since mesh objects came in. Is still the odd prim speed-building contests, just not in the numbers there used to be since Skill Gaming policy came in then wagering on games of skill is a controlled activity and requires a Skill Gaming region since the advent of sophisticated bots then activities like racing (horses, cars, etc) for money has largely disappeared pretty much all that is left in a competition sense are free-to-participate yacht regattas and some few other vehicle type races in terms of board games then pretty much the only competitive feel left inworld are free-to-play games with Hi-Score leaderboards leaderboards can also be found on some car racing tracks, some fewer equestrian events like barrel racing and showjumping, and some golf, skeet, archery,, etc Linden also provide free-to-play games with competitive elements also. See inworld for more info: http://maps.secondlife.com/secondlife/Portal Park 1/97/159/54
  6. i think a get lucky ISAM strategy can be viable under light/moderate server load. A safe method can be something like // data handler function handleData(string data) { if (data != EOF) { ... do something with this notecardLine of data ... } } // a prior call to set up the cache llGetNumberOfNotecardLines(); // under light/moderate load then more times than not this // will result in something other than NAK string data = llGetNotecardLineSync(notecardName, notecardLine); if (data != NAK) handleData(data); else notecardQuery = llGetNotecardLine(notecardName, notecardLine); dataserver(key query, string data) { if (query == notecardQuery) handleData(data); }
  7. yes you onto it it just shows in a horrible way what is needed when we don't use the dataserver event in combination with llGetNotecardLineSync(). Is in the not-the-same-as-the-last algorithm class. Example of: // thrash it until nextnumber is not equal to thisnumber. // How likely is it that they will always be equal ? // Not likely, until the one time it is float thisnumber = llFrand(1.0); float nextnumber; do { nextnumber = llFrand(1.0); } while (nextnumber == thisnumber);
  8. just because I can and I got nothing better to do😸 @OhWellDoItAgain; string data; integer continue; do { llGetNotecardLinesCount(); data = llGetNotecardLineSync(notecardName, notecardLine); if (data == NAK) { // thrash it upto 10,000 times but yanno :) continue = ++continue % 10000; } else continue = FALSE; } while (continue); if (data == NAK) { jump OhWellDoItAgain; }
  9. is some nuances that have to be catered for. Like Rider Linden had to change Damage to be a property of the prim (from being a script property) when he developed llRezObjectWithParams. This was to save server time in identifying objects deliivering/receiving damage without having to interrogate the script(s) within. And I think Linden would want to save time in the same way with the vehicle object for this purpose
  10. you are channeling Crusher Collins now !! (google new zealand politician) Ms Collins is total ruthless when it comes to hooligan car drivers :😲
  11. based on llGetObjectDetails then I think vehicle type is a property of the script, is not a property of the prim. So I think vehicle for this purpose would be any prim sat on
  12. about carparking at my inworld shop (if I had one, which I never) Big sign: "Free parking for paying customers. Please pay the parking meter L$10 for 1 hour. You can park for as many hours as you want ok. When you buy something in my shop then I refund your parking fee. if you don't pay the parking fee then your vehicle be towed away by Return-To--Lost&Found Towing Services. Thankyou and happy shopping !!" 😻
  13. the times have gotten shorter since LDPW took over the upkeep back in the day when Governor Linden was responsible then the times were all over the place, including in some places Auto-return = 0 the issue with the longer times was vehicle abandonment and lost prims, You be going down the highway and then can't go any further because next Parcel Full due to abandoned vehicles and random prims lost by builders on the region
  14. on mainland roads they are mostly either 5 or 10 minutes
  15. just on this each object does have its own Auto-return timer. Instantiated when the object is rezzed or enters with or without agent sitting so maybe thats a way to for this to work. Parcel setting option: Start Auto-return timer when object is not sat on edit: so forpublic right-of-ways on mainland which are typically Auto return = 5 minutes. Stand and timer starts. Sit and timer stops. Stand again and timer starts over.
  16. i actual gave this some thought would have to be a parcel setting that owner can set or not as they prefer something like option: Pause Auto-return while object owner on parcel a issue could be one or more persons filling up all the available LI (Parcel full) blocking other people on vehicles from entering the parcel. Can see this happening for example on Blake Sea where people are playing war games. So public parcels probably not have this enabled can see it enabled on some private owned parcels where car parks or boat marinas are provided, airports also
  17. yeah that ^^ maybe not make your alt too gorgeous or might end up crash your boat into the dock because too much ogle 😺
  18. pretty much yes. The more I look at this then I can only see issues trying to deal with NAK in a custom loop yes can do retry but what do we do when the retry constantly returns NAK ? Working with the assumption tnat this won't happen is basically gambling. And I am myself not into writing gambling code for a data retrieval program. If we break out of the retry loop then what ? Do we save the line numbers we missed and go back and get them later ? If try to mitigate with llSleep then how long do we sleep it for ? If we do sleep it then none of the other events are going to fire while the script is sleeping is all super messy are custom loops
  19. i had a quick play with the script. It detects me ok when I am within sensor range. It doesn't detect me when I am in a corner of the box where the sensor being a sphere, doesn't reach when working with sensing agent presence inside a box then the sensor sphere is best to encompass the entire box, which we can do by setting the sensor range (radius) to half the diagonal of the box. And then checking for agent position inside the box, so that any agent detected outside the box is excluded some longhand example functions which show a way this can be done (assumes script is in the box prim) float getBoxHalfDiagonal() { // return half the box diagonal vector pos = llGetPos(); vector scale = llGetScale() * 0.5; vector topcorner = pos + scale; vector bottomcorner = pos - scale; return llVecDist(topcorner, bottomcorner) * 0.5; } integer isInBox(vector position) { // is position inside the box ? vector pos = llGetPos(); vector scale = llGetScale() * 0.5; vector topcorner = pos + scale; vector bottomcorner = pos - scale; return (position.x <= topcorner.x) & (position.x >= bottomcorner.x) & (position.y <= topcorner.y) & (position.y >= bottomcorner.y) & (position.z <= topcorner.z) & (position.z >= bottomcorner.z); } default { ... set sensor range to getBoxHalfDiagonal sensor(integer detected) { integer yes = isInBox(llDetectedPos(...)); } }
  20. Linden Viewer: Preferences \ Notifications \ When my friends log in or out with TPV then should be similar
  21. reading the feedback from those doing testing then unless there is further changes from Linden in how the cache works, for a one-time sequential read/write into LinksetData then I be going with this code. Which is a more tidy version of what I posted earlier when the cache is available then use it, when it isn't then continue getting data with standard llGetNotecardLine and dataserver event // global string notecardName; integer notecardLine; key notecardQuery; state default { state_entry() { notecardQuery = llGetNotecardLine(notecardName, notecardLine); } dataserver(key query, string data) { if (query == notecardQuery) { while (data != EOF) { ... write data to LinksetData ... data = llGetNotecardLineSync(notecardName, ++notecardLine); if (data == NAK) { notecardQuery = llGetNotecardLine(notecardName, notecardLine); return; } } } } }
  22. looks like Qie was pretty spot on with Pattern 1 in how this is going to work for sequential reads
  23. is not on Main Server release, nor on Le Tigre. if is on anything on Main Grid then be on Magnum, otherwise Beta Grid. With a Premium account then should be able to access region: "Magnum Sandbox A" and check not sure if is even on Magnum tho as Signal Linden said on 13 January 2024 is "In Progress" https://feedback.secondlife.com/scripting-features/p/add-llgetnotecardlinefast the LSL wiki entry went up on 17 January also just read the following exchange on there. maybe primer1 will come by here and shed more light so if this holds true then at least we know how the caching is triggered
  24. yes this makes sense both for the /* -- maybe and /* -- but not edit add: altho if it didn't wait for some X time when fetching the notecard to cache then wouldn't it always NAK on the very 1st llGetNotecardLineSync call ? I can't actually test this as i can't go to a Linden Magnum sandbox and I dunno where elsewhere there might be a Magnum region
×
×
  • Create New...