OsTeleportAgent
From OpenSimulator
m (Minor edit to script to use CHANGED_REGION_START instead of 256) |
|||
(7 intermediate revisions by 2 users not shown) | |||
Line 38: | Line 38: | ||
if(change & CHANGED_OWNER) | if(change & CHANGED_OWNER) | ||
llResetScript(); | llResetScript(); | ||
− | else if (change & | + | 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); | ||
− | + | llRegionSayTo(avatar, 0,"Teleporting you to : "+Destination); | |
osTeleportAgent(avatar, Destination, LandingPoint, LookAt); | osTeleportAgent(avatar, Destination, LandingPoint, LookAt); | ||
} | } | ||
− | + | } | |
− | // teleport to region at west, 10m from current and facing west | + | </source> |
+ | <source lang="lsl"> | ||
+ | // | ||
+ | // Example teleport to region at west, 10m from the border to current and facing west | ||
+ | // | ||
default | default | ||
{ | { | ||
Line 63: | Line 67: | ||
key avatar = llDetectedKey(0); | key avatar = llDetectedKey(0); | ||
vector pos = llGetPos(); | vector pos = llGetPos(); | ||
− | + | llRegionSayTo(avatar, 0, "Teleporting you there"); | |
osTeleportAgent(avatar, <-10, pos.y, pos.z + 1>,<-1,0,0>); | 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. |
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) | |
Teleports an agent to the specified location
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 |