Jump to content

Ruthven Ravenhurst

Resident
  • Posts

    491
  • Joined

  • Last visited

Everything posted by Ruthven Ravenhurst

  1. You could also try llListenControl if you do want to turn the listen on/off
  2. you would grant permission to the child link, and to the rezzer. then drop the child link into the rezzer. the other option is not to link the children, just have them move into place and communicate with hidden channels to start the animation. and a third is have a fully linked version inside the rezzer, and when you want it animated, rez our the linked version and make the rezzer invisible
  3. And of course, as I mentioned above, I was over thinking it. Instead of a targeting type cross-hair. I used what looks like just a plain 2 lines crossed. The texture is actually a solid alpha with an outline. When using vector touchST = llDetectedTouchST (and reversing with touchST = -touchST), the corners meet exactly where I'm touching, creating what looks like a cross-hair. So I didn't have to scale, or do any math to offset accounting for it being scaled
  4. No, I got that figured out. It's the texture itself I'm having trouble with. I clicked on the bottom right of the color picker, but see how the crosshair rolls over to the other corners? After giving it some thought, I don't think the solution would work, because then the vector returned would throw off the color desired. unless I need to do some math to figure that out?
  5. **Edit** I think I figured out the solution I needed. I turned a square prim on its side and cut it to B = 0.375 and E = 0.625, so when the texture moves, all it sees is 1/4 of it, rather than the whole thing. (setting the repeats to something other than 1.0 doesn't work, it just throws off where the center should be) I've seen some color pickers on huds that have an overlaid texture of a crosshair that moves with the mouse. I'm trying to figure out how to offset the texture as desired without the crosshair rolling over to the opposite side/corner. Any help?
  6. That wasn't quite what I meant. I meant more on the sizing of things. I've found that sizing say a scaling bar with a width of 0.01, when zoomed in looks big enough, but then on attach, not so much. I think I was over thinking it though, lol. I just decided to attach a blank cube to my hud. Scale it to the size I want the final hud to be. Then drop it on my work table and build the hud in front of it using the size as a reference. But I do like your idea of working on it in gimp. That'll allow me to put things together offline. Then later on make any adjustments to the prims in world. The other reason I ask is because I'm using Mesh Studio that turns your link set into a mesh. I know it calculates vertices from their positions in world, and wasn't sure how it would work when attached. I'm using it to build the layout, then going to mesh it in pieces, such as different tabs, or additional panels on the tabs, such as saved color swatches, since there's a limit of 8 faces on mesh
  7. Waking up an old thread. When building a hud, is there a relative camera position one could use to get a "preview" of the hud without having to attach it? You can't add links to an attachment, so when building the hud, and deciding on the layout you may or may not need additional prims/buttons. This could be as simple as granting camera permissions to a central prim of the hud and allowing it to set your camera params as you build. Just don't want to detach and rez/drop the hud every time I want to make a change to the link set.
  8. Ok, but what is the purpose of the prim water? When/how does it get used? I'm just asking, because you may be able to just commands on a hidden channel for the water to show/hide when necessary, and skip the whole transferring of inventory bit altogether.
  9. Does the water need to be a separate prim/object? You could have the water as an invisible prim that's part of the bucket, and when it's meant to be holding water, you could make the water prim visible.
  10. I would take it a little further and store the ID of the person setting it up, so that it will only respond to chat issued by objects owned by them. if it's reset by the next owner, or if the next owner ends up with a copy/trans version, when trying to set it up, it won't work for them if they don't have the other items to use with it hope this helps key stored_id;//store the event coordinator's UUID here, automatically done below integer chan = -12345;//this number used for testing purpose, set channel to something not easily guessed integer handle; string scriptname; integer acceptibleperms() { integer perms = llGetInventoryPermMask(scriptname,MASK_NEXT); if((perms & PERM_TRANSFER && perms & PERM_COPY)){return FALSE;} return TRUE; } debug_perms() { llListenRemove(handle); llOwnerSay("Next owner perms for: " + scriptname + " need to be set to either copy only or transfer only to be usable"); } default { state_entry() { scriptname = llGetScriptName(); if(acceptibleperms()) { stored_id = llGetOwner(); string name = llKey2Name(stored_id); llOwnerSay("Perms set. This object will now only listen to objects owned by: " + name); handle = llListen(chan,"","",""); //add any other things you want to happen in state_entry() when in operational mode } else { state locked; } } touch_start(integer total_number) { //whatever Touch stuff you want to happen when in operrational mode } listen(integer chan, string name, key id, string message) { if(llGetOwnerKey(id) == stored_id) { //do stuff that applies to the intention of the script listening to objects owned by the stored_id } else { //do stuff if the speaking object isn't owned by the stored_id, such as if chat commands by the customer are necessary } } changed(integer change) { if(change & CHANGED_INVENTORY) { if(acceptibleperms()) { state default; } else { state locked; } } } } state locked { state_entry() { debug_perms(); } changed(integer change) { if(change & CHANGED_INVENTORY) { if(acceptibleperms()) { state default; } else { debug_perms(); } } } }
  11. As for the one passed on/sold to the client's customer, how are they to set it up? You could sell it to your client in a locked state as copy/trans. Have them in the setup set the perms of the script to either no copy or no trans. On a changed event it will detect changed inventory. (CHANGED_INVENTORY is triggered by adding/removing things from the object's inventory, and by changing the permanent of something in the inventory.) It can then check the perms of itself and see if it is set to no cop or no trans (for next user) and switch to a usable state. If not, stay in or change to the locked state.
  12. The elevator I'm using is done with KFM actually. I thought about using the seat method, but didn't want to limit it to how ever many seats are put into the object. And for "realism" think of say an escalator. You walk up and start moving with it automatically. Or the stairs in Hogwarts. Say you're walking up a flight of stairs and they start moving, you'll move with them, but won't necessarily keep walking. Or a moving sidewalk, you step on, it moves along its path while you stand and then step off when you get to your destination
  13. After reading the wiki, I see that it persists other than relog. I suppose I could swap between llSetAnimationOverride("Walking", "stand"); And llSetAnimationOverride("Walking", "walk"); And on detach (not relog) or with a toggle off with a touch I could use llResetAnimationOverride
  14. I ran across that when I saw llGetAnimationOverride. I don't know why I didn't think to use it. How is it applied? Does it replace the combination of llStopAnimation and llTriggerAnimation? Once it's set, does it stop once permissions are released by either de-rez, or script reset?
  15. I made an elevator/lift that moves up and down as well as side to side to get to a specific location. Not relevant, as it's already done a bunch of different ways. What I want to do is stop the avatar from playing the walking animation when the elevator is moving them along the x and y axis. I tried to write a hud/attachment script that would work sort of like an AO. On a timer it would check if the walking anim is playing, and stop it. Using the controls to turn on/off the timer. It didn't seem to work, or perhaps I had the timer running too fast for the control event to run?
  16. I figured out another solution by reversing the logic in this comment what I have now is: integer isFacing(vector avpos) { vector myPos = llGetPos(); rotation myRot = llGetRot(); vector facing; vector target = llVecNorm( avpos - myPos); float dp; if(giXisBigger) { facing = llRot2Left(myRot); dp = facing*target; } else { facing = llRot2Fwd( myRot); dp = -(facing*target);//had to reverse the dp when Y axis is bigger to make door swing the right direction } return ( dp > 0 ); } and I use it in place of WhereAmI
  17. Yep, I used it on both. I also put in an owner say to see what WhereAmI was returning. Unlinked, it was always returning 0. Linked (yes as a child), is was always returning 1
  18. The point of this one is that it is supposed to be bi-swing, a door that swings in both directions, as mentioned in the description above. A bar/saloon door, or a restaurant kitchen door for examples
  19. I'm not sure what I'm doing wrong. I didn't change anything in this script. I just installed it in my closed door. I tested it by clicking, walking through, letting it close. Then clicking it again. It opens in the same direction no matter which side of the door I'm on
  20. Ha, nevermind, no rotation needed. I need to multiply the original offset by the new radius. float radius = 1.0; float max = 5.0; list linknums; list localposdef; default { state_entry() { integer num = llGetNumberOfPrims(); do { string name = llGetLinkName(num); if(llToLower(name) == "ribbon") { linknums += [num]; localposdef += llGetLinkPrimitiveParams(num,[PRIM_POS_LOCAL]); } } while(num-- > 1); } touch_start(integer total_number) { radius += 0.1; if(radius > max){radius = 0;} integer num = llGetNumberOfPrims(); do { string name = llGetLinkName(num); if(llToLower(name) == "ribbon") { integer idx = llListFindList(linknums,[num]); if(~idx) { vector pos = llList2Vector(localposdef,idx); pos = <pos.x*radius,pos.y*radius,pos.z>;//multiply x and y times radius, and retain the original z position llSetLinkPrimitiveParamsFast(num,[PRIM_POS_LOCAL,pos]); } } } while(num-- > 1); } }
  21. I'm trying to figure out how to move child prims outward from the center of the root based on their initial local position. I'm terrible with rotations, and I'm sure that's what this script needs to figure out the new position, so I'm not sure how to go about it. If I'm going about it all wrong, what would you suggest? Basically, I have say, a center pillar with satellite spheres around it at varying heights. I want them to retain the height (z offset), but move outward based on a given radius along the X and Y axis. Currently what it's doing is moving them all in the same direction, which obviously isn't right float radius = 0.25; float max = 1.5; list linknums; list localposdef; default { state_entry() { integer num = llGetNumberOfPrims(); do { string name = llGetLinkName(num); if(llToLower(name) == "ribbon") { linknums += [num]; localposdef += llGetLinkPrimitiveParams(num,[PRIM_POS_LOCAL]); } } while(num-- > 1); } touch_start(integer total_number) { radius += 0.1; if(radius > max){radius = 0;} integer num = llGetNumberOfPrims(); do { string name = llGetLinkName(num); if(llToLower(name) == "ribbon") { integer idx = llListFindList(linknums,[num]); if(~idx) { vector pos = llList2Vector(localposdef,idx); pos = <radius,radius,0>+pos; llSetLinkPrimitiveParamsFast(num,[PRIM_POS_LOCAL,pos]); } } } while(num-- > 1); } }
  22. Right, there are commands you have to use to activate it. But with a bit of understanding, you can change it so it becomes physical when you sit, and non-physical when you stand up
  23. I recommend CasperSafe. You can use 1 orb and set specific areas. You can set admins, ban lists, guest lists, etc. It also has a web interface for viewing the list of visitors. It's still somewhat new, but Casper is a great scripter and made this product well
  24. I'm looking for frames in the style below. Not necessarily as detailed, and as low LI as possible, preferable no more than 3-4 LI. I want them full perm to resell as frames/mirrors, but also with the background panel as a separate face to use as a vendor. Multiple frames in single mesh in a vendor style is ideal as well (small side panels, and large center panel)
×
×
  • Create New...