Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

Long Distance Teleporting.

Katier Reitveld
M2 News Manager
Join date: 13 Sep 2005
Posts: 412
07-16-2007 18:40
Hi guys,

I have a Client who wants to be able to TP people over a long ( number of sims ) distance.

From what I can tell this doesn't work too well, is awkward and not nearly as clean as a sit/target TPer.

What is the best way of sending someone to a location that the person wants to go to.

I'm guessing the simple giving of a landmark is the easiest way but the client would rather it acted more like a sit transporter.

Any suggestions or help would be appreciated, thankyou.
Talarus Luan
Ancient Archaean Dragon
Join date: 18 Mar 2006
Posts: 4,831
07-16-2007 19:36
llMapDestination teleporting is the only good way, really, which is basically a scripted landmark. Can even feed it landmark data from inv.
Qie Niangao
Coin-operated
Join date: 24 May 2006
Posts: 7,138
07-16-2007 19:38
Unless the client owns all the sims it will traverse, warpPos is almost certain to encounter a parcel with one permission or another that will foil it. And even if they do own the whole path, everything I've read suggests that crossing sim boundaries with warpPos is tricky business, with risk of very unhappy passengers.

Which pretty much leaves two alternatives, but neither much like a "sit transporter." One is the landmark dispenser, the other llMapDestination.
Katier Reitveld
M2 News Manager
Join date: 13 Sep 2005
Posts: 412
07-17-2007 00:15
Thankyou both, pretty much what I expected.
Marcel Cromulent
Registered User
Join date: 28 Jan 2007
Posts: 10
07-18-2007 00:20
I am also experimenting with transporting using a sit-teleporter over a sim boundary. In my case, there is full control over both involved sims. My strategy is to use the warpPos script to get close to the sim boundary, set the prim physical, float over the boundary, set the prim non/physical, wapPos out and unsit the avatar.

There are several things that can go wrong, which you can prevent. It can happen that the second warpPos goes wrong, because the prim believes it is still in the first sim, and
interpretes the coordinates accordingly. To solve this, one can check the region name before the second jump. After a second or so, the prim will recognise what region it is in. This works fine for a prim without rider, but when we add a sitting avatar, things get more complex.

Another problem is that when you unsit the avatar, the avatar might not be aware of where the prim is. From the point of the avatar, it looks like it is left behind, sitting on a ghostly prim, and not being able to stand up. From the point of the prim, it looks like it has arrived, and that the avatar it sucessfully un-sat, because there is no avatar sitting on it. This particular scenario seems to be prevented by checking if the prim can sense the avatar before unsitting it. Eventually, the avatar will catch up.

The main problem, which I do not understand, is that the avatar somtimes gets un-sat at a completely irrelevant position, usually at an illegal position. Then you can do nothing but spin morously somewhere high up in the air. Sometimes you can teleport out to safety by using the map, but sometimes I have had to reconnect. From the point of view of the prim, the teleport has been a complete sucess. It has even sensed the avatar at the point of arrival, before unsitting it.

If you throw in enough llSleep() the third problem seems to vanish, but I don't feel safe about this, Does anyone know a way of making sure that you do not get sent out into limbo?
Gaynor Gritzi
Registered User
Join date: 16 Aug 2006
Posts: 48
07-21-2007 12:41
I had the limbo problem when working with a much shorter range teleporter that moved around. It seems some part of theTP/Prim combination "remembers" the sim it was rezzed in and tries to tp (unsuccesfully if in a different sim) to it - and the only way out was to do a ResetScript.

You could try doing this after the sim crossing - though what this'll do for the rest of your code I really don't know.
Boss Spectre
Registered User
Join date: 5 Sep 2005
Posts: 229
07-21-2007 13:53
I don't think there is any advantage to being physical when you cross a sim line, you can just target your warp to coord -1 or 256 (1m into the next sim) and then you should get a changed() event which tells you that you changed regions, after which you can carry on.

If you do set physical, you might want to do llSetStatus(STATUS_ROTATE_X | STATUS_ROTATE_Y | STATUS_ROTATE_Z, FALSE) to make sure that any collisions in the crossing don't accidentally rotate your prim.
Marcel Cromulent
Registered User
Join date: 28 Jan 2007
Posts: 10
07-22-2007 02:01
From: Gaynor Gritzi
I had the limbo problem when working with a much shorter range teleporter that moved around. It seems some part of theTP/Prim combination "remembers" the sim it was rezzed in and tries to tp (unsuccesfully if in a different sim) to it - and the only way out was to do a ResetScript.

You could try doing this after the sim crossing - though what this'll do for the rest of your code I really don't know.


This sounds very interesting. Can you be more specific about when and how you did the reset, and what the effect was? I can't really imagine how a reset of the script can help the avatar though, since the scipt in not IN the avatar, but if I get desperate enough I'll try it out..:)

The reset in itself is no big problem. For instance, you use the description of the prim or a different script in the same prim to store information about what to do after the reset.
Marcel Cromulent
Registered User
Join date: 28 Jan 2007
Posts: 10
07-22-2007 02:12
From: Boss Spectre
I don't think there is any advantage to being physical when you cross a sim line, you can just target your warp to coord -1 or 256 (1m into the next sim)


This is very logical, but it does not work. If warp to -1, most of the time, the avatar gets into a state where you can't do much except disconnet. I have described the symptoms here: http://wiki.secondlife.com/wiki/User_talk:Fox_Diller .

If we solve this, maybe it will be possible to throw out the step of setting the object physical. As things are now, at least it seems to increase the statistical probability that you survive without having to relog.

If you teleport an object, chances are much better, but from time to time it happens that one of these got stuck at the border, and you have to go there with a screwdriver and pry it loose.

From: Boss Spectre
and then you should get a changed() event which tells you that you changed regions, after which you can carry on.


I do a LOT of checking at the border, including listening to change(). But the problem is that you are in deep troubles already at the moment when you arrive in the new sim, so it is too late to check then. You would need to check whether the crossing is safe or not BEFORE you pass the border.

From: Boss Spectre

If you do set physical, you might want to do llSetStatus(STATUS_ROTATE_X | STATUS_ROTATE_Y | STATUS_ROTATE_Z, FALSE) to make sure that any collisions in the crossing don't accidentally rotate your prim.


Definitely. I agree.

An interesting point is the following. If I do first do WarpPos and then shift to physical, sometimes I am left behind at the original position, but with a physical prim. A frustrated kick will move it around. So the avatar knows that the prim is physical, but not that it is in a different location.

As far as I know, everything physical happens in the server, so the client must be obtaining correct information on the server about the prim, but incorrect information about
the surroundings.