Reply
Recognized Resident
Sarraah Epin
Posts: 2
0 Kudos

Elevator scripts

I had a quick browse of the forums and couldn't find anything that would answer my query, so I am going to post my specific problem.

 

I am trying to create an elevator at around 1500m up (I know height probably won't matter) with floors approximately 150 meters apart.  I am aware that llMovetoTarget will only work for distances of 64m and that llSetPos only works to 10 meters.  If I had only two floors, this wouldn'tbe an issue, however, my elevator has four floors and my rudimentry knowledge of scripts sadly doesn't cover this situations.  I would rather have a non phys lift as it's inside a square shaft and I found my early experiments ended up at all sorts of angles, but phys is still an option.

 

Preferably it would work from a menu, which I don't have any trouble making, the issues I am having is the four floors issue.  Any help would be appreciated, thank you in advance!

Rolig Loon
Posts: 25,004
Registered: ‎10-05-2009
0 Kudos

Re: Elevator scripts

Reply to Sarraah Epin - view message

When it is finally available, the new llSetKeyFramedAnimation function may be your bet bet for smooth motion with a non-physical object.  It's in LC sims now, I believe, in beta.  Failing that, you could maybe use something like safe_jumpPos to make a hop most of the way between floors and then do a series of small llSetPos steps to make a graceful decelleration over the last 10m or so, just for the effect.

Not as dumb as I look
Void Singer
Posts: 7,475
Registered: ‎05-28-2009
0 Kudos

Re: Elevator scripts

Reply to Sarraah Epin - view message

honestly with floors that far apart, I'd go with posJump (found on the LSL_Portal)... just be sure NOT to use the "Fast" version of the function if you immediately unseat the riders, as it doesn't give physics enough time to catch up and the avs are likely to bounce around a bit if you do (for non-avatar uses "Fast" is fine)

llSetKeyframeAnimation llSetKeyframeMotion is available on LeTigre right now, but still has a few bugs.

- Farewell to your ports and good luck to you all
Recognized Resident
Sarraah Epin
Posts: 2
0 Kudos

Re: Elevator scripts

Reply to Sarraah Epin - view message

Thank you for those suggestions, they are not functions I have ever used (My scripting tends to be limits to doors, airlock sequences and other sci-fi-ish stuff!) so I will certianly have to look into them.

 

In the meantime however, I found an interesting script that I totally don't understand, but that I found able ot adapt to my own means by putting all of the destinations in my own sim. Specifically the post on the following page by Travis Lambert.  I added more buttons to the dialog and ifs to function as each floor.  It's hardly graceful, but it does move between distant floors.

 

http://forums-archive.secondlife.com/54/8d/109523/3.html

Honored Resident
Eve Neutron
Posts: 20
0 Kudos

Re: Elevator scripts

Reply to Sarraah Epin - view message

you can move in a loop until you reach target, 

everytime, you will take your current position and add 60m

that will solve your problem. :smileyhappy:

Void Singer
Posts: 7,475
Registered: ‎05-28-2009
0 Kudos

Re: Elevator scripts

Reply to Sarraah Epin - view message

posJump is warpPos on steroids.... it's faster, smaller, and suffers less limitations

- Farewell to your ports and good luck to you all
Yingzi Xue
Posts: 211
Topics: 3
Kudos: 5
Registered: ‎10-05-2009
0 Kudos

Re: Elevator scripts

[ Edited ]

Reply to Sarraah Epin - view message

I have had an elevator script-set for builders on the market since 2008.  In that time the product matured and this very feature was requested by one customer, so I set about writing a method to overcome the 64m distance limitation.

The methods mentioned so far are for non-physical movement, which requires the person be seated in the elevator.  You can get around the seated animation by stopping it and using a stand animation instead, but in my opinion this deviates from the fun and purpose of an elevator.

My elevator script-set was based around physical movement, which was limited by the 64m distance from A to B.  I got around it by having the script divide the distance into more manageable spurts, but due to the nature of physical movement (acceleration and deceleration), the movement was slightly herky jerky.  I was able to buffer this to not be so dramatic using distance checking.  It all seemed to work great... UNTIL...

One of my customers tried to make a space needle.  Going up the elevator worked fine, but on the way down the elevator would gain so much momentum that it would free-fall.  What I hadn't known up until that point was that gravity, downward movement speed and distance caused the elevator object to accelerate to the point of breaking free from the move function and plummeting to the ground.  I worked on methods to buffer the effects of gravity with speed modifiers, but I was never able to get it to work right.

Ultimately, I removed the limitation bypass code completely and reversed the product back to 64m limitation.  Is it possible to get it working correctly?  Maybe, with the proper math, but to be honest the limitation is there for a reason, possibly LL foresaw the loss of control of physical objects moving at great distances, especially from a high point to a low point.

At distances greater than 64m, I suggest non-physical movement.  You lose the elevator ride effect, but it gets you where you need to go, which is the ultimate goal.