OsTeleportAgent

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
m (Minor edit to script to use CHANGED_REGION_START instead of 256)
 
(14 intermediate revisions by 2 users not shown)
Line 4: Line 4:
 
|delay=0.5
 
|delay=0.5
 
|additional_info=
 
|additional_info=
'''osTeleportAgent''' has a 0.5 second delay if the teleport is not allowed, or when the destination is to a location in the same region as the Agents current region.<br>
+
'''osTeleportAgent''' has a 0.5 second delay if the teleport is not allowed, or when the destination is to a location in the same region as the Agents current region. A teleport to other region has a 5 second delay<br>
For teleports within region consider using [[osLocalTeleportAgent]]
+
For teleports within region, in particular NPC agents, consider using [[osLocalTeleportAgent]]
 
|function_syntax= osTeleportAgent(key agent, string regionName, vector position, vector lookat)<br />
 
|function_syntax= osTeleportAgent(key agent, string regionName, vector position, vector lookat)<br />
 
osTeleportAgent(key agent, integer regionX, integer regionY, vector position, vector lookat)<br />
 
osTeleportAgent(key agent, integer regionX, integer regionY, vector position, vector lookat)<br />
Line 38: Line 38:
 
     if(change & CHANGED_OWNER)
 
     if(change & CHANGED_OWNER)
 
       llResetScript();
 
       llResetScript();
     else if (change & 256) // that bit is set during a region restart
+
     else if (change & CHANGED_REGION_START) // that bit is set during a region restart
 
       llResetScript();
 
       llResetScript();
 
   }
 
   }
Line 48: Line 48:
 
   {
 
   {
 
     key avatar = llDetectedKey(0);
 
     key avatar = llDetectedKey(0);
     llInstantMessage(avatar, "Teleporting you to : "+Destination);
+
     llRegionSayTo(avatar, 0,"Teleporting you to : "+Destination);
 
     osTeleportAgent(avatar, Destination, LandingPoint, LookAt);  
 
     osTeleportAgent(avatar, Destination, LandingPoint, LookAt);  
 +
  }
 +
}
 +
</source>
 +
<source lang="lsl">
 +
//
 +
// Example teleport to region at west, 10m from the border to current and facing west
 +
//
 +
default
 +
{
 +
  state_entry()
 +
  {
 +
    llOwnerSay("OS Teleportal Active");
 +
  }
 +
  touch_start(integer num_detected)
 +
  {
 +
    key avatar = llDetectedKey(0);
 +
    vector pos = llGetPos();
 +
    llRegionSayTo(avatar, 0, "Teleporting you there");
 +
    osTeleportAgent(avatar, <-10, pos.y, pos.z + 1>,<-1,0,0>);
 
   }
 
   }
 
}</source>
 
}</source>
|description=Teleports an agent to the specified location.  
+
|description=Teleports an agent to the specified location<br>
 +
* position is the location relative to destination region reference corner<br>
 +
* lookAt is the direction the avatar should look. Z value is ignored. For example to face north use <0,1,0><br>
  
 
The first variant is able to teleport to any addressable region, including [[hypergrid]] destinations.  
 
The first variant is able to teleport to any addressable region, including [[hypergrid]] destinations.  
Line 58: Line 79:
 
The second variant teleports to a region in the local grid; the region coordinates are specified as region cells (not as global coordinates based on meters).  
 
The second variant teleports to a region in the local grid; the region coordinates are specified as region cells (not as global coordinates based on meters).  
  
The third variant teleports within the current region.
+
The third variant teleports within the current region. Since version 0.9.2.0 it can also teleport to a nearby region if position does point to one
  
 
For osTeleportAgent() to work, the owner of the prim containing the script must be the same as the parcel that the avatar is currently on.   
 
For osTeleportAgent() to work, the owner of the prim containing the script must be the same as the parcel that the avatar is currently on.   

Latest revision as of 08:30, 16 July 2022

osTeleportAgent(key agent, string regionName, vector position, vector lookat)

osTeleportAgent(key agent, integer regionX, integer regionY, vector position, vector lookat)
osTeleportAgent(key agent, vector position, vector lookat)

Teleports an agent to the specified location
  • position is the location relative to destination region reference corner
  • lookAt is the direction the avatar should look. Z value is ignored. For example to face north use <0,1,0>

The first variant is able to teleport to any addressable region, including hypergrid destinations.

The second variant teleports to a region in the local grid; the region coordinates are specified as region cells (not as global coordinates based on meters).

The third variant teleports within the current region. Since version 0.9.2.0 it can also teleport to a nearby region if position does point to one

For osTeleportAgent() to work, the owner of the prim containing the script must be the same as the parcel that the avatar is currently on.

If this isn't the case then the function fails silently.

See also osTeleportOwner, and if you receive an error see how to enable OS functions.

Threat Level Severe
Permissions ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
Extra Delay 0.5 seconds
Example(s)
// Example osTeleportAgent Script
//
// Set Destination as described below, There are a Few Options depending on Application:
// IN GRID Teleport 
// Destination = "1000,1000"; = Using In-Grid Map XXXX,YYYY coordinates
// Destination = "RegionName"; = Using RegionName
// HyperGrid Teleport (region must be HG Enabled)
// Destination = "TcpIpAddr:Port:RegionName"; = Using the Target/Destination IP Address
// Destination = "DNSname:Port:RegionName"; = Using the Target/Detination DNSname
// Note: RegionName is Optionally Specified to deliver Avatar to specific region in an instance.
// 
// ========================================================================================
// === SET DESTINATION INFO HERE ===
//
string Destination = "LBSA Plaza"; // your target destination here (SEE NEXT LINES) Can Be
vector LandingPoint = <128.0, 128.0, 50.0>; // X,Y,Z landing point for avatar to arrive at
vector LookAt = <0.0, 1.0, 0.0>; // which way they look at when arriving
//
default
{
  on_rez(integer start_param)
  {
    llResetScript();
  }
  changed(integer change) // something changed, take action
  {
    if(change & CHANGED_OWNER)
      llResetScript();
    else if (change & CHANGED_REGION_START) // that bit is set during a region restart
      llResetScript();
  }
  state_entry()
  {
    llWhisper(0, "OS Teleportal Active");
  }
  touch_start(integer num_detected) 
  {
    key avatar = llDetectedKey(0);
    llRegionSayTo(avatar, 0,"Teleporting you to : "+Destination);
    osTeleportAgent(avatar, Destination, LandingPoint, LookAt); 
  }
}
//
// Example teleport to region at west, 10m from the border to current and facing west
//
default
{
  state_entry()
  {
    llOwnerSay("OS Teleportal Active");
  }
  touch_start(integer num_detected) 
  {
    key avatar = llDetectedKey(0);
    vector pos = llGetPos();
    llRegionSayTo(avatar, 0, "Teleporting you there");
    osTeleportAgent(avatar, <-10, pos.y, pos.z + 1>,<-1,0,0>); 
  }
}
Notes
osTeleportAgent has a 0.5 second delay if the teleport is not allowed, or when the destination is to a location in the same region as the Agents current region. A teleport to other region has a 5 second delay

For teleports within region, in particular NPC agents, consider using osLocalTeleportAgent

Personal tools
General
About This Wiki