Jump to content

Quistess Alpha

Resident
  • Posts

    3,994
  • Joined

  • Last visited

Everything posted by Quistess Alpha

  1. I managed to get it after trying again (several times), not sure if I just hit my own cache or something though.
  2. No, I don't think so. (Trying to explain logic is hard, or I'd be more verbose.) If they don't ~leave at about the same time , that could cause a minor "issue". If this were a widely used thing and that were a common complaint, the easy hack fix would be to llSleep(0.5); at the beginning of the collision_end() event. llSetStatus() has no forced delay, and llVolumeDetect() has no llSLPPF equivalent. If anything, llSetStatus is better than llSet.. because it doesn't have a list argument. (list instantiation is a bit slow)
  3. Just to pinpoint the problem, did you try dropping it from about the same height without breaking links? a hacky solution might be using llSetHoverHeight to never actually hit the ground?
  4. There are a lot of annoying places that expect it to be owner only. none of them seem hard to fix, but it would be a tad tedious to debug. main points for a quick hack-together fix: replace all llOwnerSay("text"); with llRegionSayTo(llGetLinkKey(llGetNumberOfPrims()),0,"text"); or similar (could be more efficient with global variables). replace llListen(ListenCh, OwnerName, NULL_KEY, ""); with llListen(ListenCh,"","",""); remove if(llGetOwnerKey(id) != Owner) return; remove if(sitting != llGetOwner()) { // llWhisper(0, NonOwnerMessage); llUnSit(sitting); }else replace llRequestPermissions(Owner, with llRequestPermissions(sitting, There may be other necessary changes in scripts in child prims.
  5. nd == "Number detected" or, how many people started/stopped colliding with the thing in that instant, which not especially useful to you unless you try and use the information to try and fix annoying edge-cases: a group-member and a non-group-member try to go through at the exact same time. someone TP's away while inside. #2 is especially annoying. Last time I tried something kinda like this, the best work-around seemed to be only using collisions as a hint to start llSensorRepeat(). -- Don't fix what isn't broken, but FWIW, llSetStatus(STATUS_PHANTOM, ONOFF); and llVolumeDetect(ONOFF); serve similar purposes. I'd use volume detect unless I had a reason not to, but it shouldn't make much difference in this case. also, I don't think there's a need to check the phantomness of the object before turning it one way or the other, default { collision_start(integer nd) { if(llDetectedGroup(0)) { // 0 is the first collision detected llSay(0, "Detected someone of the same group! WELCOME!"); llVolumeDetect(TRUE); // Become un-solid } else { llSay(0, "You shall not pass without our group active :) ! "); llVolumeDetect(FALSE); } } collision_end(integer nd) { llVolumeDetect(FALSE); } }
  6. Is it in state_entry()? function calls aren't allowed outside an event.
  7. I don't think finding sandboxes is that big an issue*, but it would be nice if there were a list of/ category for open sandboxes in the in-world destination guide, and if the "you cannot create objects here, the landowner does not allow it" message was more prominent (it appears in the upper right corner, is pretty small and blink and you'll miss it) and had a link to said list. *It's been a bit since my new-user experience, but I managed to find the ivory tower and such easily enough during my early weeks.
  8. So, if you have a script that does something there's not much you can do unless you can edit the script (you probably already know this, ). A single script in the root 'make the touched link glow' might look something like this: default { touch_start(integer n) { integer link = llDetectedLinkNumber(0); // which link was touched? if(link==1) return; // do nothing if the root was touched. float glow = llList2Float(llGetLinkPrimitiveParams(link,[PRIM_GLOW,0]),0); // was it glowing? glow = 0.05 * (glow==0.0); // if it wasn't glowing, we want it to glow, if it was, we want it to not. llSetLinkPrimitiveParamsFast(link,[PRIM_GLOW,ALL_SIDES,glow]); } } for this sort of thing, I usually differentiate the action based on the name or description of the touched link: default { touch_start(integer n) { integer link = llDetectedLinkNumber(0); // which link was touched? if(link==1) return; // do nothing if the root was touched. string name = llGetLinkName(link); if("glow"==name) { float glow = llList2Float(llGetLinkPrimitiveParams(link,[PRIM_GLOW,0]),0); // was it glowing? glow = 0.05 * (glow==0.0); // if it wasn't glowing, we want it to glow, if it was, we want it to not. llSetLinkPrimitiveParamsFast(link,[PRIM_GLOW,ALL_SIDES,glow]); }else if("turn"==name) { rotation orientation = llList2Rot(llGetLinkPrimitiveParams(link,[PRIM_ROT_LOCAL]),0); orientation = <0,0,0.71,0.71>*orientation; // turn 90 degrees on its local z axis. llSetLinkPrimitiveParamsFast(link,[PRIM_ROT_LOCAL,orientation]); } } } // if you can't make it all one script and need all of the scripts in every link of the object to be notified, you need to use a link_message: // script in root: default { touch_start(integer total_number) { llMessageLinked(LINK_SET,0,"Touched",""); } } // script in child prim default { link_message(integer SendersLink, integer Value, string Text, key ID) { llSay(0, "Touched "+(string)llGetLinkName(LINK_THIS)); } } or, if you just want everything to glow: llSetLinkPrimitiveParamsFast(LINK_SET,[PRIM_GLOW,ALL_SIDES,glow]);
  9. As far as know, they can enter anything they want. If it were me, I'd use a 'zero-width space' as the separator. https://en.wikipedia.org/wiki/Zero-width_space ETA: Apparently, the forum software does not like ZWSP's. Now that we have llChar, you could just use llChar(0x200B);
  10. Sounds like a decent first project if you want to figure it out yourself. the main pieces: list inventory; integer nItems = llGetInventoryNumber(INVENTORY_ALL); integer i; for(;i<nItems;++i) { inventory+= llGetInventoryName(INVENTORY_ALL,i); } llGiveInventoryList(llDetectedKey(0),"Folder name",inventory); if( llVecDist( llDetectedPos(0),llGetPos() ) < someDistance) { // then... } Assuming the object is set to the group to check: if(llDetectedGroup(0)) { // then... } group checking is a bit awkward because you can only check against the ~active group.
  11. Even better, the script has pretty obvious sections for when the door opens and closes, you could add a different sound for each. MoveDoor() { if(!bOpen) { /* some code*/ llPlaySound("Door opening sound",1.0); }else { /* some code*/ llPlaySound("Door closing sound",1.0); } /* more code*/ }
  12. they don't have "children's sizes" (fit for common kids bodies) but [hate this] has some decent ones (no-transfer though): https://marketplace.secondlife.com/stores/25598
  13. Yes, as long as llGenerateKey() doesn't fluke and return NULL_KEY, if(llGenerateKey()){/*always executes*/}else{/*never executes*/}
  14. Yup, but it only works if the type of the value is key. As per the wiki on the if statement: https://wiki.secondlife.com/wiki/If
  15. The real problem is one step back: Where are your customers getting a name of an item without a working slurl to directly in-front of the relevant vendor? If that's too hard to fix, perhaps add an additional vendor with literally everything in your store searchable by product name?
  16. Silly me imagined using the position of the prims as the spacer rather than whitespace characters, dope. figuring out the correct spacing for each letter seems error prone and tedious. Good job!
  17. Just some irrelevant style notes, but n should probably be a local variable in this case, not a global one. I'd do away with n altogether and just apply the modulus to the counter: iCounter = (1+iCounter)%iMax;
  18. And adding on to that, since the hovertext font is not monospace (Every letter has a slightly different width), the ability to have per-letter rainbow colors and the ability to change the text arbitrarily are (more or less) mutually exclusive, not to mention the letters won't fit together horizontally nicely unless it's a HUD or you're looking at it straight on.
  19. They let you, if you enable the right setting, but that doesn't mean it can't be problematic. The worst that could probably happen is a corrupted cache, but still I generally have my alts logged in on a different viewer in an abundance of caution.
  20. All you have to do is sign up for another account at https://join.secondlife.com/ the hard part is keeping them all logged in simultaneously.
  21. Seems it's not released on the main grid (or at least not whatever sim version my house is on), and I'm too lazy to check the beta grid.
  22. not a recommendation, but: https://marketplace.secondlife.com/p/Multi-Love-Pose-MLPV24/11023468 (documentation) https://wiki.secondlife.com/wiki/MLPV2
  23. Just for my own fun, I wrote a slightly different script that does the same thing. The only difference that should actually matter is that I synced to llGetTime() rather than an incremented global step variable: float time = 6.0; float height = 2.0; float angle = .5; integer isRunning = FALSE; vector gPosA; vector gPosB; rotation gRotA; rotation gRotB; vector cosInterp(float time, float rate, vector posA, vector posB) { float ct = 0.5*(1+llCos(time*TWO_PI/rate)); return ct*posA + (1-ct)*posB; } rotation cosRotInterp(float time, float rate, rotation rA, rotation rB) { float ct = 0.5*(1+llCos(time*TWO_PI/rate)); return <ct*rA.x + (1-ct)*rB.x, ct*rA.y + (1-ct)*rB.y, ct*rA.z + (1-ct)*rB.z, ct*rA.s + (1-ct)*rB.s>; } default { state_entry() { gPosA = llGetPos(); gPosB = gPosA + <0,0,height>; gRotA = ZERO_ROTATION; gRotB = llAxisAngle2Rot(<0,0,1>, angle); //llSetTimerEvent(0.044); } touch_end(integer n) { llResetTime(); llSetLinkPrimitiveParamsFast(LINK_THIS, [ PRIM_POSITION,gPosA, PRIM_LINK_TARGET, 2, PRIM_ROT_LOCAL, gRotA ]); llSetTimerEvent(0.044*(isRunning=!isRunning)); } timer() { float t = llGetTime(); vector pos = cosInterp(t,time,gPosA, gPosB); rotation rot = cosRotInterp(t,time,gRotA, gRotB); llSetLinkPrimitiveParamsFast(LINK_THIS, [ PRIM_POSITION,pos, PRIM_LINK_TARGET, 2, PRIM_ROT_LOCAL, rot ]); } }
  24. I'm not seeing that when I just put the script in 2 linked cubes. Perhaps you could share a video of how it looks to you?
×
×
  • Create New...