Jump to content

Teleporting out of SIM with incremental doesn't work.


VirtualKitten
 Share

You are about to reply to a thread that has been inactive for 858 days.

Please take a moment to consider if this thread is worth bumping.

Recommended Posts

Hi everyone I met some one interesting that knows a math Wizz so that might be helpful.

I am still puzzled by teleports : I have code that through a series of positions to get to a destination . But this fails if it gets to a sim border. it reports a strange error stack flow sometimes or it just gets to edge of sim border and stops:

CODE

}
// This routine do the actual transport 
 _llTelePort( vector destpos) 
{  
    if(destpos == ZERO_VECTOR) return;
    // Compute the number of jumps necessary 
    integer jumps = (integer)(llVecDist(destpos, llGetPos()) / 10.0) + 1; 
    //Try and avoid stack/heap collisions 
    if (jumps >= 2147483646 ) 
    {
        llOwnerSay("To many jumps required to teleport :" +(string)jumps);
        return; 
    } //  1km should be plenty 
    list rules = [ PRIM_POSITION, destpos ];  //The start for the rules list 
    integer count = 1; 
    while ( ( count = count << 1 ) < jumps) 
        rules = (rules=[]) + rules + rules;   //should tighten memory use. 
         llSetPrimitiveParams( rules + llList2List( rules, (count - jumps) << 1, count) ); 
}

Now I can use     llMapDestination( but it puts up a wretched map  http://maps.secondlife.com/secondlife/Elven Forest/242/214/22 which will allow me to click on it to tp . it also has problems and only works for the owner as an  in a scripted attachment as in a sit  . How is this able to do this as its not clear how it is getting to destination  when stepping cannot sadly the Second life commands use experience and are not accessible. Is there a back door? I am sure there must be one that allows you to circumvent this without being forced to use a map ? again llTeleportAgent( will only teleport the owner .This function cannot be used in a script in an object attached using llAttachToAvatarTemp. Sitting avatars cannot be teleported using this function. You must llUnSit them first. This is hopeless.

 

Edited by VirtualKitten
Link to comment
Share on other sites

Throw away this obsolete script and replace it with something simpler and less laggy based on llSetRegionPos().

EDIT: In light of the edit to the question, it seems the intent is to teleport outside the region. Either llMapDestination or llTeleportAgent are really the general-purpose choices there, with some specialized cases when the destination is in a region that's contiguous with the location of the teleporter. In those special cases, some tricks can work, with different tricks prone to more or fewer failures depending on the distance and specific object geometry (and even land ownership) between source and destination. This sort of teleportation is an ancient and tedious topic, but reverting to warpPos and its ilk is just too hideous to contemplate.

Edited by Qie Niangao
Link to comment
Share on other sites

Thanks Qie .I tried this but don't have it working either i just used 

 integer hasMoved = llSetRegionPos(destpos)  


As in

Quote
integer _llTelePort( vector destpos) {
     integer hasMoved = llSetRegionPos(destpos);
     return hasMoved;
}

 

any ideas?

 

I am getting SURL passed to me

listen(integer ch, string name, key id, string msg) 
    {
        list params = llParseString2List(msg,["|"],[""]);
        if (ch == ourch && llList2String(params,0)== "SURL:") {
            SURL = llList2String(params,1);
          //  llOwnerSay("Got" + SURL);
            list listURL = llParseString2List(SURL,["/"],[""]);
            gRegionName = llList2String(listURL,3);
            gRegionVector = <llList2Float(listURL,4),llList2Float(listURL,5),llList2Float(listURL,6)>;
           // llOwnerSay("Region Name:" +gRegionName + ", Region vector:" + (string)gRegionVector);
        
        }
        
    }

 

Edited by VirtualKitten
Link to comment
Share on other sites

I've only seen that function used in a sit teleporter. I don't think it can work in an attachment, if that's what you were trying, but maybe somebody knows differently.

llTeleportAgent works in an attachment  or anything else owned by the to-be-teleported agent, or (much better) in an Experience script with a touch, collision, or any other event that triggers the script.

Or, clicking chat and choosing to teleport, using the viewer URI namespace, something like this:

default
{
    touch_start(integer num_detected)
    {
        string destRegion = llGetRegionName();    // or your favorite region
        vector destPos = <50, 100, 50>;
        llRegionSayTo(llDetectedKey(0), 0, "secondlife://"+llEscapeURL(destRegion)
            +"/"+(string)destPos.x
            +"/"+(string)destPos.y
            +"/"+(string)destPos.z
            );
    }
}

The string could just be a constant, of course.

Link to comment
Share on other sites

Have a look at the caveats of llSetRegionPos and see if any of these match your object:

Quote
  • position is more than 10m off region or above 4096m.
    • The x & y components of position must be in the range [-10.0, 266.0].[1]
    • The z component must be in the range [0.0, 4096].
  • the object is dynamic (has physics enabled).
  • the object can not move to position due to parcel/region restrictions (object entry rules, prim limits, bans, etc).
  • the object is an avatar attachment.

Teleporting an agent would have to be done either using llMapDestination (which doesn't seem ideal for your use), through a permanent attachment to the avatar via llTeleportAgent (You may find RLV functions useful for this, as RLV can handle receiving the object in inventory and equipping it to the avatar), or via an Experience (again, via llTeleportAgent)

Link to comment
Share on other sites

2 minutes ago, VirtualKitten said:

Qie is this one better

 

\

// This routine do the actual transport 
_llTelePort( vector destpos, string url) {
    
     llRegionSayTo(llDetectedKey(0), 0, url);
    
}

 

I don't understand this at all. It seems to be a user function, which would preclude using llDetected* functions. It doesn't seem to use destpos, and it's unclear what's in the "url" parameter.

  • Like 1
Link to comment
Share on other sites

the url is an surl from the landmark sch as SURL = "http://maps.secondlife.com/secondlife/Enchanted%20Estates/34/44/30"

 

    dataserver(key _QueryId, string _data) 
    {
        if (_QueryId== req)        
        {            
            Absolute = llGetRegionCorner() + (vector)_data;    
            local_pos =   (vector)_data;    
            vector grid = Absolute / 256.0;            
            req= llHTTPRequest("https://cap.secondlife.com/cap/0/b713fe80-283b-4585-af4d-a3b7d9a32492?"                      + "var=name&grid_x=" + (string)llFloor(grid.x)+ "&grid_y=" + (string)llFloor(grid.y), [], "");        
      }   

 

Link to comment
Share on other sites

llSetRegionPos(destpos);

Hi everyone this as the name suggests is only tp'ing me inter region ok . How do i go inter sim with tp port not using that wretched map. Also there a problem using  llSetTextureAnim( on  circle2>cirlcle object faces ? I changed this from a square now i get no animation on face  nothing i could do to get this back working it just looked a mess.

Link to comment
Share on other sites

59 minutes ago, VirtualKitten said:

inter sim

llSetRegionPos isn't going to help much there. It can go slightly out-of-bounds in order to transfer an object into an adjacent region, but it can't specify an exact location in that region (only somewhere along it's border).

You'd need to use llTeleportAgent to specify an exact location to teleport to.

Link to comment
Share on other sites

3 hours ago, Jenna Huntsman said:

Have a look at the caveats of llSetRegionPos and see if any of these match your object:

Teleporting an agent would have to be done either using llMapDestination (which doesn't seem ideal for your use), through a permanent attachment to the avatar via llTeleportAgent (You may find RLV functions useful for this, as RLV can handle receiving the object in inventory and equipping it to the avatar), or via an Experience (again, via llTeleportAgent)

I afraid teleport Agent is rubbish see caveats http://wiki.secondlife.com/wiki/LlTeleportAgent

 

Link to comment
Share on other sites

2 hours ago, VirtualKitten said:

I afraid teleport Agent is rubbish see caveats http://wiki.secondlife.com/wiki/LlTeleportAgent

 

back in the day when Experiences were first introduced there were Land-Scope and Grid-Scope Experiences. From the Knowledge base:

 

Quote

 

Land-Scope and Grid-Scope

Also visible on the Experience Profile window is whether or not an experience is land-scope or grid-scope.

The difference between the two is a matter of where the experience is accessible.

A land-scope experience is only available in regions which have specifically enabled it to be active; it isn't active anywhere else.

A grid-scope experience is available in all regions by default, and is only unavailable in regions which have specifically blocked it.

At this time, Resident-owned experiences may only be set to land-scope.

 

the Grid-Scope Experiences was nerfed/removed by Linden after only about two weeks, as llTeleportAgent in a temp attachment become a pretty massive greifing vector.  Invite (social engineer) some person to join the Experience (like is a club for cool people or some such). Then temp attach an object to them on their accepting the invite. The script then randomly teleport them to multiple destinations as fast as the attached script could do so.  The Teleport screen that is invoked by the viewer made it very difficult to detach the grief object, the consequence for most people caught like this, was that they would crash out of SL. And crash out again when logging back in to a script-enabled parcel

so Linden nerfed/removed the ability of residents to use the Grid-Scope Experience

and we are stuck with what we have

to teleport a person to another region then a) the person has to own the teleport script, or b) an object rezzed on the Land-Scope parcel can teleport the Experience member to another parcel or region. And the destination parcel has to be enabled for a Land-Scope Experience (of which the person is a member) for the rezzed script to teleport them from there to another destination

 

Edited by Mollymews
crash again
Link to comment
Share on other sites

1 hour ago, Mollymews said:

back in the day when Experiences were first introduced there were Land-Scope and Grid-Scope Experiences. From the Knowledge base:

 

the Grid-Scope Experiences was nerfed/removed by Linden after only about two weeks, as llTeleportAgent in a temp attachment become a pretty massive greifing vector.  Invite (social engineer) some person to join the Experience (like is a club for cool people or some such). Then temp attach an object to them on their accepting the invite. The script then randomly teleport them to multiple destinations as fast as the attached script could do so.  The Teleport screen that is invoked by the viewer made it very difficult to detach the grief object, the consequence for most people caught like this, was that they would crash out of SL. And crash out again when logging back in to a script-enabled parcel

so Linden nerfed/removed the ability of residents to use the Grid-Scope Experience

and we are stuck with what we have

to teleport a person to another region then a) the person has to own the teleport script, or b) an object rezzed on the Land-Scope parcel can teleport the Experience member to another parcel or region. And the destination parcel has to be enabled for a Land-Scope Experience (of which the person is a member) for the rezzed script to teleport them from there to another destination

 

I think you might have your history mixed up with the llTeleportAgent() perms hack of June 4th 2012, which had nothing to do with experiences.

LL wasn't planning on offering grid-scope experiences to the public when we beta tested experiences in July 2014.

Also, destinations don't have to have experiences allowed for an experience to be able to teleport someone there.

  • Thanks 1
Link to comment
Share on other sites

1 hour ago, Lucia Nightfire said:

I think you might have your history mixed up with the llTeleportAgent() perms hack of June 4th 2012, which had nothing to do with experiences.

LL wasn't planning on offering grid-scope experiences to the public when we beta tested experiences in July 2014.

Also, destinations don't have to have experiences allowed for an experience to be able to teleport someone there.

yes i might be misremembering about temp attachments and teleport

the big attack came in 2015 for the few days after Grid-Scope Experiences were released to the public.  Once accepting the Experience then could/can llAttachToAvatar without any further interaction by the wearer (now owner). Any place that the greifer could rez an object. The script of which would continue to run on any script-enabled parcel thereafter

 

creatives were planning on going big with Grid-Scope Experiences then a few days later Linden nerfed it

here is a pic from one creative who was big into the beta development program and had lots of hope for doing all kinds of creatives things with Grid-Scope. Their Grid-Scope got nerfed a few days after Grid-Scope went public, same as everyone else at the time

[i scribbled out the identifiers because this creative is not a griefer]

grid-scope.jpg.f050fb3978c5717822df53d0eb7e681a.jpg

 

edit add: so my previous b) above is wrong as Lucia points out

 

Edited by Mollymews
Link to comment
Share on other sites

16 minutes ago, Mollymews said:

yes i might be misremembering about temp attachments and teleport

the big attack came in 2015 for the few days after Grid-Scope Experiences were released to the public.  Once accepting the Experience then could/can llAttachToAvatar without any further interaction by the wearer (now owner). Any place that the greifer could rez an object. The script of which would continue to run on any script-enabled parcel thereafter

 

creatives were planning on going big with Grid-Scope Experiences then a few days later Linden nerfed it

here is a pic from one creative who was big into the beta development program and had lots of hope for doing all kinds of creatives things with Grid-Scope. Their Grid-Scope got nerfed a few days after Grid-Scope went public, same as everyone else at the time

[i scribbled out the identifiers because this creative is not a griefer]

grid-scope.jpg.f050fb3978c5717822df53d0eb7e681a.jpg

 

edit add: so my previous b) above is wrong as Lucia points out

 

Grid scope experiences never "went public", though.

The few dozen beta testers had their Land Scope experiences elevated to Grid Scope status when the beta period ended.

These few dozen were the only non-Linden accounts to own a Grid Scope experience.

If someone gave Contributor rights to someone else who later went rogue and caused the experience to be shut down, that didn't affect everyone else's Grid Scope experience.

There are several who still use them to this day.

Edited by Lucia Nightfire
Link to comment
Share on other sites

Yes but its hopeless the map system.  Why cant we have an api without this wretched map and address the destination by script dialogue from land marks.  if they made 

llSetRegionPos(destpos);

 to remove redundant code like mine and others and some lag region hopping. Why was this not thought through. to provide inter-sim travel. Currently there seems no way to jump to a sim to another sim from script object that you don't own  on a sim to another unless you use this wrenched map route which looks daft in roleplay . The only thing I found was https://lslwiki.digiworldz.com/lslwiki/wakka.php?wakka=GlobalCoordinate but I don't think sims are always co-joined if your using 

llGetRegionCorner() then trying to jump to next sim it doesn't seem to work. If the system is changing SURL to Global Coordinates

 

if this script has PERMISSION_TELEPORT as requested permission with llRequestPermissions are granted for llSetRegionPos(destpos); why not for llTeleportAgent () why then will it only teleport owner when it has permissions  from the seat event.

Edited by VirtualKitten
Link to comment
Share on other sites

18 minutes ago, VirtualKitten said:

[…] I don't think sims are always co-joined

Right, so we really need to understand the specifics of what you're trying to do. It's not as if there's a dearth of teleporter scripts out there, but some are suited for one situation, some for others. If trying to teleport across void space where there are no regions, that constrains the options. And the options most automatic for users are necessarily constrained to Experiences—that's a feature, not a bug—because it can be very disruptive for somebody to find themselves teleported by a script they didn't consciously activate, so use of such stealth teleportation must be approved by the user (granting Experience permissions) and eligible for revoking by the Lab (if the scripter creates an abusive Experience).

If that's "rubbish" then perhaps a different hobby would be more suitable.

You mentioned "roleplay" and that suggests a very easy, non-Experience-based use of llTeleportAgent: an object such as a HUD or combat script or whatever that every roleplayer will always have attached (not temp-attached) and handy. But this all was suggested many posts ago, so maybe whatever the specific application, it won't support such a device.

Having to explicitly obtain and attach such a device is one way the griefing risk of llTeleportAgent is constrained; for that very reason, other void-spanning alternatives necessarily require additional user interaction. You'd already dismissed the simple and common llMapDestination() approach so I suggested the "click on URI in chat history" approach, but that was suggested many posts back, and it does involve an extra click for users even if they're already watching chat history so it's only suitable for some applications.

Link to comment
Share on other sites

I have no use for llMapDestination() it puts up a map that can be clicked on by others its not a direct teleport and in game play looks totally unprofessional  as it calls a window outside of Secondlife  . I can concede it has  uses from a link from Market place that is all . My Avatars are not temp seated seated is also another phrase for linked to the avatar

please note from http://wiki.secondlife.com/wiki/LlMapDestination

Issue Type-Bug.gif Status-Open.gif SVC-3455 A     llMapDestination ignores look_at parameter
Issue Type-Bug.gif Status-In Progress.gif SVC-1795 A     llMapDestination in attachments opens a map on owner's screen even when touched by someone else
Issue Type-Bug.gif Status-Open.gif VWR-2060 A     llMapDestination pos parameter is sometimes replaced with incorrect data (workaround included)
Issue Type-Bug.gif Status-In Progress.gif VWR-7331 A     height in pos is capped to 1000m (code patch included)

 

 

Clearly 

http://wiki.secondlife.com/wiki/LlTeleportAgenthttp://wiki.secondlife.com/wiki/LlMapDestination and there appears to be be no 

 

Edited by VirtualKitten
Link to comment
Share on other sites

Also this website deleted part of my post above. Quit frankly no one using my scripts can be teleported without it being offered to them in dialog so why would they experience random tp through my portal ? You seem to infer avatars are silly when they are not .

You seem yourself in several posts on this forum arguing this same point maybe you forgot! 

Also  we require a version of http://wiki.secondlife.com/wiki/LlTeleportAgent or http://wiki.secondlife.com/wiki/LlTeleportAgenthttp://wiki.secondlife.com/wiki/LlMapDestination; for cross border sim travel :) that have the same caveats as each other and llSetRegionPos(destpos) which does work in region for anyone seated with out caveats. Is it now the Linden case that these caveats on similar API are not the same as on other API of similar activity?

I am also aware llOwnerSay("@tpto:"+to_say+"=force") will only tp to_say  if RP is in use.

 

Edited by VirtualKitten
Link to comment
Share on other sites

Well i tried

// This routine do the actual transport 
_llTelePort( vector destpos, string url) {
    
     vector lookAt = ZERO_VECTOR;
     string oldSlurlPrefix = "http://slurl.com/secondlife/";
     string newSlurlPrefix = "http://maps.secondlife.com/secondlife/";
     string slurlSuffix = llEscapeURL(gRegionName)
            + "/" + (string)llRound(destpos.x)
            + "/" + (string)llRound(destpos.y)
            + "/" + (string)llRound(destpos.z);
     
     llTeleportAgent(teleportee,gRegionName,destpos, lookAt);
     //llSetRegionPos(destpos);
    
}

It asked me a polite message to tp  then said "Teleport failed: landmark name provided but assets is missing or invalid."

gRegionName is calculated elsewhere from SURL from landmark:

 list params = llParseString2List(msg,["|"],[""]);

 SURL = llList2String(params,1);
  
 list listURL = llParseString2List(SURL,["/"],[""]);
 gRegionName = llList2String(listURL,3);
 gRegionVector = <llList2Float(listURL,4),llList2Float(listURL,5),llList2Float(listURL,6)>;

 

Edited by VirtualKitten
Link to comment
Share on other sites

If you're teleporting within the region, instead of gRegionName, use the empty string ("") for the second argument to llTeleportAgent(). Or, if you're trying to teleport outside the region, you either need to use a landmark (where the name of the landmark asset would go in that second argument), or you need to switch to llTeleportAgentGlobalCoords() which is very similar except it uses global coordinates of the destination region in addition to the region coordinates of the destination within that region. This is all documented in the wiki article for llTeleportAgentGlobalCoords() including one easy way to get those global coordinates.

Link to comment
Share on other sites

22 minutes ago, VirtualKitten said:

Well i tried

// This routine do the actual transport 
_llTelePort( vector destpos, string url) {
    
     vector lookAt = ZERO_VECTOR;
     string oldSlurlPrefix = "http://slurl.com/secondlife/";
     string newSlurlPrefix = "http://maps.secondlife.com/secondlife/";
     string slurlSuffix = llEscapeURL(gRegionName)
            + "/" + (string)llRound(destpos.x)
            + "/" + (string)llRound(destpos.y)
            + "/" + (string)llRound(destpos.z);
     
     llTeleportAgent(teleportee,gRegionName,destpos, lookAt);
     //llSetRegionPos(destpos);
    
}

It asked me a polite message to tp  then said "Teleport failed: landmark name provided but assets is missing or invalid."

Because you're trying to tell llTeleportAgent to use a landmark asset (inventory item; in your case you're giving gRegionName ) which overrides the region coords you're giving it. Replace the command with something like:

llTeleportAgent(teleportee,"",destpos, lookAt);

As Qie says, there's another command to send someone to another region entirely (without needing to use an LM)

Edited by Jenna Huntsman
Link to comment
Share on other sites

You are about to reply to a thread that has been inactive for 858 days.

Please take a moment to consider if this thread is worth bumping.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...