Jump to content

Quistess Alpha

Resident
  • Posts

    3,869
  • Joined

  • Last visited

Everything posted by Quistess Alpha

  1. If your system can make use of an experience, I'd recommend the Key-value-pair functions over using google sheets. . .
  2. You shouldn't collect the initial information for every step in the for loop, just once before the loop.
  3. While I think of it though, linkset data makes coordinating which 'helper script' to use a fair bit easier: each sub script advertises (with linkset data keys) the key of the avatar it has permisison to animate and the unix-time of the last animation start/stop it did. when the main script wants to do an animation, it loops through all the advertisements, making note of the lowest unix-time until either it finds a sub-script with permissions, and directs that one to do the animation, or it runs out of advertisements and asks the sub-script with the lowest unix-time to do the animation (causing a new permission request dialog for the avatar, and forgetting whoever it had permission for before)
  4. ~I like individually requesting perms per avatar in a single script, but unfortunately, that does mean a separate confirmation dialog per animation.
  5. I think you might need to combine them into a single blender object.
  6. If the idea is to not let the people who are sharing the animations keep them, I'd just have the HUD of the main person play all of the animations. the downside would be a manual permissions request for each played animation. As far as I know, in any scenario where you give the animations to the other person, (inside a HUD for example) it's ~possible for them to "steal" them for personal use.
  7. It's really hard to understand what you're trying to do, but to extend a rod without moving one of it's ends, you either slice the rod in half with the PRIM_SLICE attribute (or the build menu) and double the lengths you want it to have, or, you translate the rod by a factor of half of the difference between the lengths, llSetPos(0.5*(lengthNew-lengthOld)*llRot2Up(llGetRot()) + llGetPos()); or so for maintaining the +z edge, reverse the order of New and Old for maintaining the -z edge.
  8. The script as written seems to work as intended when you split it into the correct parts for each object, so I'm not sure what your problem there is. As for making it work automatically when the object is moved, since we don't have an event that triggers when an object's position is changed* you have to poll the position periodically and check the change against a global variable. //Listener integer gChanChat = -17; default { state_entry() { llListen(gChanChat,"","",""); } listen(integer Channel, string Name, key ID, string Text) { vector pos = (vector)Text; if(pos) // script heard a valid vector that wasn't <0,0,0>. { llOwnerSay(Text); } } } //moving object integer gChanChat = -17; vector gPosOld; default { state_entry() { llSetTimerEvent(0.5); } timer() { vector posNew = llGetPos(); if(gPosOld!=posNew) { gPosOld=posNew; llSay(gChanChat,(string)posNew); } } touch_start(integer c) // superfluous. { llSay(gChanChat,(string)llGetPos()); } } * moving_end() has inconsistent behavior, I wouldn't recommend relying on it.
  9. is also probably throwing an error because buildingNames is of type list, and llGetNotecardLine returns type key. You need a dataserver event to read from a notecard.
  10. in LSL 'void' isn't a valid type. to declare a user defined function with no type, just omit the type. Also in LSL, all user-defined functions must be declared before the 'default' state, so, copy that whole block up to the beginning of the script after variable declarations.
  11. Oh, so, adult themed event regions? new mainland or adult-friendly bellisaria would be nice (Yes, people can and do adult in beli, but I know anecdotally a few people who have shied away from it because the rules are just vague enough that "a" land is "safer" for adulting.)
  12. https://en.wikipedia.org/wiki/The_Sims_Online shut down in 2008? ETA; https://en.wikipedia.org/wiki/The_Sims_Mobile still exists though.
  13. Minecraft, Roblox. . . GTA5? and of course, yes you can "but it doesn't XYZ" to disqualify them, but those are the only vague qualifiers (and GTA5 is only a honorable mention because my first SL friend said she did some work in the modding scene there) unless you count all the things without user-generated-content.
  14. everything is *ETA: I lied* full-perm but some of it has (probably unintentional) slam-bit. I.E. you can mod it as much as you want while it's worn, but if you rez it in-world, it (the rezzed copy after taken to inventory) suddenly becomes no-copy no-mod and/or no-transfer. ETA: actually, some of the outfits are no-mod no-transfer even in inventory. Why can't I resize your delilah glasses @Jeremiah Linden @alexandria linden (weird that a single-object mesh can have a different inventory and object creator)
  15. Seems a bit odd and backwards, but I don't know much about the technical details of how it works. I guess that explains why the mirror's own shadow isn't reflected though.
  16. Not sure why you'd use mesh for just a flat plane when cube prims work perfectly well. Check that both the x and y scale are set to 1 in the script? default { state_entry() { llSetLinkTextureAnim(LINK_SET,ANIM_ON|LOOP|SMOOTH,0, 1, 1, // these must both be one or you will get a seam. 0.0, 1.0, 0.5 ); } } Also check that the mapping mode on the relevant faces is "Default" not "Planar". Rotation of the texture on all faces must also be 0 (or a multiple of 90 degrees) Also the start time needs to be synchronized. try linking them together and using a single script. (potentially unlinking afterwards.)
  17. I think I asked for something similar a while back and they said no. . . but nobody gets what they don't ask for, so it can't hurt!
  18. I've seen llEuler2Rot* used as a substitute for x/y/z axis rotations, but IMHO it's not really correct in a semantic sense, and makes things more confusing if you want to do a diagonal instead. * so, for example llEuler2Rot(DEG_TO_RAD*<-10,0,0> ); is the same as llAxisAngle2Rot(<1,0,0>,-10*DEG_TO_RAD); but llEuler2Rot(DEG_TO_RAD*<5,5,0>); is not the same as llAxisAngle2Rot(<1,1,0>,5*DEG_TO_RAD);
  19. Yeah, funny enough the in-world editor lets you add indentation to a group of lines with highlight+tab, but I haven't figured out how to remove indentaiton with the in-world editor ( if I'm doing large restructuring like that, I'd probably be using vim anyway though)
  20. Longer answer: Euler-Vectors: the x,y,z values you see in the build menu are a "euler vector" representation of the root prim's rotation. If you move the root prim, everything else in the linkset automatically moves with it without doing anything special. To get the script to tell you what you would otherwise see in the build menu: // N.B. llGetRot() and llGetRootRotation() are the same for scripts in the root prim. llOwnerSay((string)(RAD_TO_DEG*llRot2Euler(llGetRootRotation()))); To rotate the object such that it shows some specific values: llSetRootRotation(DEG_TO_RAD*<x,y,z>); and IMHO those are the only things one 'ought' to do with those numbers. In some very nice cases you can get away with adding a few degrees, but most of the time, that just makes confusing things happen. long story short, the numbers are 'kind of like' pitch,yaw, and roll, but, they're not, and there's really not a good human-brain compatible way to think about them. Vectors: (I promise this is relevant): While all vectors are 'the same' in that doing math with them is always the same, in a practical sense they often "represent" two rather different things: a "Position Vector" represents some spot in the world that the script cares about (like where something is, or wants to be) and a "Difference Vector" represents some change in position, like a speed/force/acceleration, or just 'one meter up'. The most basic operations with vectors are to add a difference to a position to get a new position (ex. llGetPos()+<0,0,1> is one meter above wherever the object is) or take the difference of two positions to get a difference (ex. llDetectedPos(0)-llGetPos(); is the direction the object would have to go to get to wherever the detected thing is.) Rotations: Similarly, all rotations are 'the same' mathematically, but they represent two rather different things, an "orientation rotation" represents how something is orientated in 3d space, and a "difference rotation" represents some change in orientation. It's less obvious how to make a valid rotation from just numbers, so we have some useful functions like llAxisAngle2Rot() to make rotations instead of typing them out in numbers directly. Rotations are different than vectors in that instead of using '+' to combine them, you use '*' and combining in a different order means a different thing. the most basic rotation operations are orientation*difference, to change an orientation based on the world's axes (or in the case of a child prim, the axes of the root prim!) , and difference*orientation to change the orientation based on the intrinsic axes of the original orientation. while not nearly as common, you can also take a 'difference' of two orientations orientationB/orientationA to get a difference rotation representing the simplest change to get from orientationA to orientationB. Maybe that was TMI. . .
  21. The main must haves: Syntax highlighting, or 'did I type 'rotataiton' instead of 'rotation' again? auto-indentation (pressing enter, the next line automatically has enough spaces on it to bring you to position) Nice things: Tooltips (please remind me again what order the arguments to the llSetLinkTexture() function are, because they're different than the order used in llSLPPF( PRIM_TEXTURE ... ) ) auto-complete (never really used this, but I can see it coming in handy?) basically I just use it to catch really 'obvious' errors while I'm typing so I don't have to fix them in the compile stage as well.
  22. Short answer: Set the rotation to rotationRepresentingTenDegreesOnSomeAxis*whateverThePreviousRotaitonWas in that order, so: llSetRot(llAxisAngle2Rot(<1,0,0>,-10*DEG_TO_RAD)*llGetRot()); from the root prim, or similar with llSetLinkPrimitiveParamsFast(1,[PRIM_ROTATION ...]);
  23. I'm pretty sure "Social island" has exactly that? There was a weird statue that you had to spot a few things on to learn to move the camera and an awful to control boat. I used (3 years ago now?) the game points (tracked on an experience-attached HUD) to "buy" some bad hair I'll never wear again, and a pair of flats that weren't half bad.
  24. It should now! (sent you a new one and added it to marketplace listing contents)
×
×
  • Create New...