Jump to content

Profaitchikenz Haiku

Resident
  • Posts

    2,834
  • Joined

  • Last visited

Everything posted by Profaitchikenz Haiku

  1. Must have been tough growing up with a |Mum who'd tear you into little shreds where most would just send you up to your room.
  2. I am suggesting that if you are going to replace a single entry in a list the two numbers for start and end of the slice should be identical. i.e Event_id, Event_id Lower down in that same script you do it right, I was pointing out that the first time you use it you are potentially getting it wrong. Double-check the LSL wiki definition of llListReplaceList.
  3. Are you sure about this? You're going to replace a slice in pClimbers with [id], starting at position Event_id and ending at position 1? Are you expecting Event_id to always be 1? If so then fine, but supposing Event_id is 0, 2 or 3?
  4. Slightly irrelvant I know, but I'm not sure it's correct to have return statements inside an event, as it's not actually been called from elsewhere nor is it expected to return a value. I see one possible problem, your changed event first of all grabs the key of the highest link number regardless of whether there has been a change in the number of objects. It then might do stuff with it depending on if changed_link is raised. So let's imagine for a moment you have managed to get two climbers sitting on the rope. One gets up, jumps off, or is plucked by a swooping roc... Changed now fires, and you grab the highest link number key, which is actually the remaining climber, who must therefore already have been checked over, etc, but you then proceed to do all the checking again. It might be simpler to keep track of how many extra sitters there are so each time a changed event is raised you know at once if you are dealing with a new addition or a deer-departing (roll on Aimee)
  5. According to that, what was sent (op) was then received as str and it'#s a perfect match, so where's the problem? According to your code, op is what is going to be sent as a link message and str is what is received in the link receiving it?
  6. I do not see that in the output you showed. No lines start with "op:" Slow down, do one thing at a time, double-check what you are doing, if necessary write down what you expect to see and then examine what you actually see against your stated wish.
  7. Fascinatingly, the problem isn't the browser, it's the Operating system. On Linux (Lubuntu or Raspberry Pi), Chromium-browser, Vivaldi and Firefox all show the limited set of icons On Windows 10 (Firefox) I see the full range. And yes, I tried deleting coolies for the SL forums in Linux. Deleting things and going for a fresh start is so yesterday. Remember the days of dial-ups when you complained to Pipex about connectivity and they said "Re-install TCPIP"? So you said "But I'm on Linux". And they said "Re-install Windows"
  8. What you are printing out as an owner say is not what you are then sending through as a linked message: That's saying one thing But that string there is totally different. I suggest you form the string to be sent in the link message outside the actual call, so you can chat it out by llOwnerSay, then you have half a chance of debugging it.
  9. That's probably it, I've switched back from the Raspberry Pi400 with it's awful unpredictable keyboard but HDMI screen top an old Linux box on 1280x1024, and just adding a dozen of so pixels got me the icon. However, it could also be that I now have to see a summary of this thread to the right of the window which is grabbing almost a third of the screen width, and that's another thing I can't find a setting for in the profile. ETA: Back on the Pi400, browser window full HDMI size, and still no extra icons. Tried Chromium- Firestorm, Vivaldi, no change. Tried the suggestion in the Forums Advice of zooming out or in, no change. Searched all my possible settings, none offer the option to customise the post edit window. I see icons for Bold, Italic, Underline (but no strikeout), embed a link, quote, emoji (but no code) two possible listing views, preview, and that's it. Half the top space used up, remainder blank. It's not as if I'm a total Tonka-toy regarding posts, I've thrown up enough code snippets in the past to know how it OUGHT to be. Y'all gonna have ter git used ter unformatted code from now on And if anybody is tempted by the thought of a Raspberry Pi 400 - DON'T. You'll need to think about adding a second keyboard so where's the F in Point? (There ain't one.) I think I'll go back to lynx
  10. I had a think about Quistessa's suggestion of OBJECT_SIT_COUNT and realised it is actually helpful here because it saves the need to store the count of the object prims when no avatar is seated on it. Get the total number of prims, subtract from it the count of seated avatars, add 1, and thaty's the first avatar link number, the number of prims is the last avatar link number... (Note, I got this idea whilst in the bath, must take more baths*) (Why can't I get a code-embed option now?) // prototype script to find out which bum is on which seat key owner; list seats = [ "seat 1", <1.0, 0.0, 0.4>, ZERO_ROTATION, "seat 2", <0.0, 0.5, 0.4>, ZERO_ROTATION, "seat 3", <-1.0, 0.0, 0.4>, ZERO_ROTATION ]; integer lastSeated; key myKey; default { state_entry() { owner = llGetOwner(); myKey = llGetKey(); lastSeated = llList2Integer(llGetObjectDetails(myKey,[OBJECT_SIT_COUNT]),0); } changed(integer change) { if( change & CHANGED_LINK) { integer nowSitting = llList2Integer(llGetObjectDetails(myKey,[OBJECT_SIT_COUNT]), 0); if( nowSitting > 0 && (nowSitting != lastSeated)) { integer firstAvatar = llGetNumberOfPrims(); integer lastAvatar = (firstAvatar - nowSitting) + 1; // think about it integer index; list params; key uuid; for(index = firstAvatar; index >= lastAvatar; index--) { uuid = llGetLinkKey(index); if( llGetAgentSize(uuid) != ZERO_VECTOR) { params = llGetLinkPrimitiveParams(index, [PRIM_POS_LOCAL, PRIM_ROT_LOCAL]); integer whichSeat; integer maxSeat = llGetListLength(seats) / 3; for( whichSeat = 0; whichSeat < maxSeat; whichSeat += 3) { if( llVecDist(llList2Vector(seats, whichSeat + 1), llList2Vector(params, 0)) < 0.001) // safer than comparing against a vector? { llOwnerSay(llKey2Name(uuid) + " is sat on " + llList2String(seats, whichSeat) ); whichSeat = maxSeat; } } } lastSeated = nowSitting; } else lastSeated = 0; // nowSitting was 0 } } } } * (Note to self on taking more baths... Pro - get goiod ideas Con - look what happened to the captain of the Golgafrincham B ark Con - Marat got killed while in the bath More cons than pros... OK, maybe just stay with the same number of baths for now
  11. In this instance it isn't really as much of a help to the OP to know that 3 avatars are sat on the object as it is to know that the total number of objects has changed from say 18 to 21, because it then means 19, 20 and 21 are the ones to fiddle about with.. If the un-sat-upon object has 18 prims these will be numbered 1 to 18. If the object prim count is now 21 it not only means that 3 avatars are sat on the object, but quite crucially, link numbers 19, 20 and 21 are (most likely) avatars. The safety check is for each of those three children is to pass their key to llGertAgentSize and make sure a non-zero vector is returned. (If it's zero then the object has been added to by building/scripted linking) Once it is certain that 19, 20 and 21 are avatars then their local pos and rot is available to both check that they're sitting where they ought to be, and allow adjustment if not.
  12. I can't help feeling you're making heavy weather of this. Can I suggest a simpler method of working out how many avatars are sitting on the link set? At the very start in state_entry, set a global variable integer build_size = llGetNumberOfPrims(); // Beware resetting the script with avatars already seated Then, inside changed, if( change & CHANGED_LINK) // only do your stuff inside this... integer numberOfAvatarsSeated = llGetNumberOfPrims() - build_size ; if (numberOfAvatarsSeated > 0) // you have uuids to check. Any child prim with a link number > build_size is an avatar seated on the link set. You can either work forwards from build_size or backwards from llGetNumberOfPrims to get each child key and confirm it is an avatar using llGetAgentSize(). Once you know it's an avatar, get local pos and rot and start jiggling them about. I'm intrigued by your project, I keep imagining you're making a long curved washing line or telephone line that birds can perch on?
  13. From the code you have posted that means for some reason a jump to exit2 occurred. That would imply found_me was set to NULL_KEY by the (not shown) function that was supposed to get the key of the new linked object.
  14. Most obvious reason is that a jump to exit2 is being taken and so the ownersays never get reached. Add diagnostics to announce if it's talking the jump to check this.
  15. Most of that code has to go into the changed event, it's unlikely to work properly in a seperate routine.
  16. The only other explanation that comes to mind is that you somehow triggered message throttling and so could get nothing working in that region, but going elsewhere would obviously show no problems.
  17. This is analogous to the monkey bottle trap. Once the monkey has clasped the fruit or nuts it won't release it, no matter what. Humans are no different on the basic level, when they have an idea they'll keep staring straight at it and won't break their gaze. Sometimes, though, you have to back away and sneak round the back of something to get the better of it. My advice to the OP is, as always, simplify it, break it into chunks, test each chunk individually. And most of all, assume LSL is more likely to be right than you are
  18. It's always worth looking at the bounding boxes display and the physics display in these sorts of puzzles. When I was helping somebody who was struggling to get through a doorway we looked at the bounding box of her RuthToo mesh body and saw that in addition to the tall cube enclosing the torso and legs, there was an extra bounding box across the body from side to side that enclosed where the arms would be if the body was in a T-pose animation, well over double the width of the torso bounding box. If you are trying to sit an additional avatar on a single multi-seat prim and the spot that they are clicking on or the intended seat offset is within the bounding box of an already seated avatar, you might get the "no room to sit" message. Similarly, if the physics shape of a nearby object falls partially across the seating area, you may also get a failure to sit. Wulfie gave a very detailed explanation of why you can and can't sit on things ages ago, when I believe a piano stool was giving problems. From my own observations, the issue there was that the physics shape of a skybox garden occluded part of the piano seat. Regarding adding 8 individual prims for seats, why not do so but set them to convex hull? You might then only incur a 4LI overhead?
  19. If you don't need to animate the extra bones that came with Bento then Qavimator is quite easy to learn. The fluidity of motion is usually achievable by just setting the starting and ending joint positions with enough spare frames between them such that if one limb moves incorrectly you can insert an intermediate position for it, but in general the motion between start and end positions is similar to the open and closed doors in SecondLife: the mind fills in the bits between the start and end. If however you need specific hand animations, expressions, or clever feet positions, you're not going to get that out of the basic Qavimator. QavimatorBeta does it, but it's a tough one to use.
  20. If you are moving the pose objects using llSetPos or SetRegionPos in increments using a timer you can expect some jerkiness when avatar presence increases, because the timers will be slowed or paused according to loading. If you are using KeyFramedmotion then you will be less affected by avatar loading, with one exception: If the KFM command is issued at the exact time that an avatar with scripts enters the region and causes one of the momentary freezes, the KFM might be delayed. Similarly, if you are expecting a moving_end event and it happens to coincide with an avatar-arrival spike, the moving end will be delayed. Once the KFM command has been issued and is in hands of the server, movement seems far less affected by avatar presence than I had been expecting. It is the beginning and the end that shows the most susceptibility.
×
×
  • Create New...