Jump to content

Quistess Alpha

  • Posts

  • Joined

  • Last visited

Everything posted by Quistess Alpha

  1. The main trick is that to put no-trans animations into a thing, that thing needs to be rezzed in-world and not worn. if @Majbeline or anyone else needs a trigger animation via gesture script, I've done exactly that before. . .(but was probably before I adopted my reasonable inventory sorting structure, would probably be faster to re-write than to find it. . .)
  2. Just for reference, and because I wouldn't trust a closed-source LSL script to do anything related to security. . . string myEmail = "test@example.com"; default { attach(key ID) { if(ID) { // you should always wear this script, so use rlv to prevent yourself from accidentally detaching it: llOwnerSay("@detach=n"); llEmail(myEmail,"Secondlife Login", "You have logged in or attached your security device\n"+ llGetTimestamp() ); } } } nothing "faulty or outdated" about something that simple.
  3. Several points that are usually said in response to posts like this: Read the posts in the Inworld employment forum. Many (most?) of them are job postings with details about what skills you'd need and specific instructions for how to apply. Why do you want to work? Be forewarned that the "best" (highest linden to time ratio) way of making lindens is to have a real-life job and use your real-life money to buy them. Similar to #2, What do you want to do, and what skills do you have? While some SL jobs are "entry level" (club stuff and I think the medical roleplay are), a good number of the better jobs expect you to have some specific skill, which you would be able to demonstrate by providing past examples of you performing that skill. If you're new, you might want to also try taking some building classes (at Builder's Brewery, or the Ivory Tower for example) and or learn some other content-creation skills. Even if it doesn't land you a job, being able to (for example) whip up a basic ice-cream cone from scratch comes in handy every once in a while.
  4. Wow, Interesting to see how much was already there in the beginning. I would have placed my bet that the vehicle functions were a latter addition.
  5. Yeah, I ran into this a bit as well recently (using Furware) . If the background is not solid, setting it to alpha masking fixes the issue.
  6. well, maybe? not entirely understanding you. https://en.wikipedia.org/wiki/Dot_product generally when I use the dot product, I multiply a directional vector by itself, which results in the squared distance of that vector. Squared distance (quadrance) is in many cases a more computationally efficient value to work with than the actual distance of a vector.
  7. I generally agree, but in my current mental formatting guidelines for myself(which I don't always follow. . .) , I'm allowing a single statement after an if without curly brackets if it fits on one line. // bad formatting: if(ID==llGetOwner()) return; // ok formatting: if(ID==llGetOwner()) return;
  8. That's what I was saying. it's not hard to write that loop, but it's tedious.
  9. It's my understanding any member may donate tier. if your friend's role doesn't have the "Accounting: Pay group liabilities and recieve group dividends" ability, they won't well, get payments from the group or ever need to pay anything to the group.
  10. adding on to that, if you (the OP) are still getting false negatives, try adding people who don't seem to be wearing your attachment to a separate list, and double check that list in the next sensor cycle.
  11. Taking that at face value, you're admitting that there's systemic racism in said dem cities.
  12. To be perfectly fair, making scripts not "crap out" when links are changed is a PITA. it's not at all hard, but typing out the name of each individual part of an object your script needs to interact with 3 or 4 times is obnoxious. (give the link a name/description; global variable for the link number; if("name"==linkname)gVar=linknumber...)
  13. I'd add the avatar's ID to a global list and set a timer (llSetTImerEvent) for 5~10 seconds, then test for the attachment after the timer goes off. Or, alternatively, if you don't think it would be that much of a problem, maybe add a llSleep(); right before the attachment check.
  14. Just because there are examples of a thing, (Ex. black congress people) doesn't mean those things appear as frequently as one would expect all other things being equal. Not the place for this discussion, so I should probably just drop it Buuuut. . . if there's no systematic racism, how do you explain:
  15. it's going to look clippy and basic unless you have some very specifically rigged hair. Also, any animation where one person touches a specific spot on another person, is well, hard to do unless custom made for your shape, due to limitations in SL. (Also also, this is in the wrong section.)
  16. Even worse, "fully loaded" is to some degree relative to each individual observer: you might look fine to one person, but a forever-cloud to another.
  17. if the angle is reasonably small, you can get away with sin(a) ~= a. which honestly, I was thinking of recommending for largeish angles as well. (still marginally accurate at 45 degrees = 0.78 radians; sin = 0.7071; tan = 1.0 )
  18. Odd that they are tolerating SL though. . .
  19. The more I examine it, the more I'm coming to the conclusion that Rolig's method is a bit off. (trig is hard) I think you actually want offset = distance* tan(angle); Also be sure not to use angles too close to +/- 90 degrees. (or if you want to use both trig functions: . . .) rotateZ(float dist,float ang) { // return a vector with length dist and angle ang from the x-axis. // be sure ang is in radians. return dist*<llCos(ang),llSin(ang),0>; } rotateY(float dist, float ang) { return dist*<llCos(ang),0,llSin(ang)>; }
  20. Huh, I agree your example is much more nonsensical. I suppose we have different definitions of "transpose". in my example I showed that while llAtan2 is "supposed" to be used in y,x order, reversing the argument order gives a result which is to my mind, sensible, but certainly non-standard. "transpose" in that context meaning changing the order of a single ordered thing (the components of a single vector). I'm not sure of a context where "transpose" means switching arguments between two different things, in linear algebra for example "transpose" is a unary operation acting on a single matrix (although you could argue the transposition switches components between different component vectors of the matrix. . .)
  21. You could do it the fancy rotation way: vector start = <2,3,1>; vector end = <2,5,1>; // example data. // rotate end 5 degrees about the z axis ("to the left") // on a circle with center at start: float angle = 5*DEG_TO_RAD; // would be better to do in radians directly but easier this way for an exmaple. end = start + (end-start)*llAxisAngle2Rot(<0,0,1>,angle); // . . . // rotating "up" or "down" is a bit trickier, but this is how I would interpret // "rotate end up 5 degrees with respect to start" float angle = 5*DEG_TO_RAD; vector cross = (end-start)%<0,0,1>; // vector that points 'to the right' of end-start // in the case where (end-start) is a vector with X as the only non-zero componenet, you coud just set cross to <0,1,0>; end = start + (end-start)*llAxisAngle2Rot(cross,angle);
  22. Um, actually. . . if you transpose the arguments to llAtan2() Don't you get the clock-angle? vector clock_00 = <0,1,0>; // points up. (when viewed birds-eye) vector clock_03 = <1,0,0>; // points to the right. vector clock_06 = <0,-1,0>; // points down vector clock_09 = <-1,0,0>; llAtan2(clock_00.x,clock_00.y) // returns 0 degrees past noon. llAtan2(clock_03.x,clock_03.y) // returns PI_BY_TWO degrees past noon. llAtan2(clock_06.x,clock_06.y) // returns PI degrees past noon. llAtan2(clock_09.x,clock_09.y) // returns PI+PI_BY_TWO degrees past noon.
  23. I mean that vX does not represent the center /point/ of the cone, it represents the center /vector/ (edit: axis) of the cone (the center point would suffice if the tip is at <0,0,0>) I.e. if your sensor is facing east, vX = <1,0,0>; your code will not do what you intend it to do. inline-test without returns: if( (vDiff*vDiff)<(fRange*fRange) ) { if( llRot2Angle(llRotBetween(vDiff,llRot2Fwd(rSensor)))< fAngle ) { // sensor with rotation rSensor can see the target. } } It's important to distinguish between vectors that represent positions and vectors that represent /changes/ in position, or abstract directions. in my code I usually name my positional variables something like posX, for the position of X, although I haven't come up with a good nomenclature for abstract vectors.
  24. and what I said was you should instead have that as vector vX = <1,0,0> * rSensorRot;
  • Create New...