User:Toy Wylie/RLV Documentation/tpto
From Second Life Wiki
Second Life Wiki > Toy Wylie/RLV Documentation/tpto
@tpto
Purpose
Teleports the user to the destination immediately, without questions. @tploc=n and @unsit=n will block this attempt. The location format is:
- X/Y/Z
Example 1
// simple example with a fixed, pre-calculated destination default { state_entry() { llOwnerSay("Touch this box to teleport to Toy's Toys."); } touch_start(integer num) { if(llDetectedKey(0)==llGetOwner()) { llOwnerSay("@tpto:179068/254564/24=force"); } } }
Example 2
// a more complex example to teleport to any location on the grid integer listener; integer channel; key regionRequest; string location; vector position; removeListener() { if(listener!=0) { llListenRemove(listener); listener=0; } llSetTimerEvent(0.0); } init() { listener=0; regionRequest=NULL_KEY; llOwnerSay("Touch this box to set your teleport location."); } default { on_rez(integer num) { llResetScript(); } state_entry() { init(); } touch_start(integer num) { if(llDetectedKey(0)!=llGetOwner()) return; if(location!="") { llOwnerSay("@tpto:"+location+"=force"); init(); return; } if(listener!=0) { llOwnerSay("We are still waiting for a location to be teleported to."); return; } if(regionRequest!=NULL_KEY) { llOwnerSay("We are still waiting for the region data to arrive."); return; } channel=(integer) (llFrand(100)+10); listener=llListen(channel,"",llDetectedKey(0),""); llSetTimerEvent(30.0); llOwnerSay("Please say your teleport location on channel "+(string) channel+" within the next 30 seconds. For example: /"+(string) channel+" Mode/124/100/24"); } listen(integer channel,string name,key sender,string message) { list params=llParseString2List(message,["/"],[]); if(llGetListLength(params)!=4) { llOwnerSay("Please make sure to say your destination in the following format: Region/X/Y/Z where X, Y and Z are the coordinates in the region you want to teleport to."); return; } removeListener(); position.x=llList2Float(params,1); position.y=llList2Float(params,2); position.z=llList2Float(params,3); string region=llList2String(params,0); regionRequest=llRequestSimulatorData(region,DATA_SIM_POS); } dataserver(key k,string data) { if(k==regionRequest) { regionRequest=NULL_KEY; if(data=="" || data==EOF) { llOwnerSay("Could not request region data. Please try again."); return; } data=(string) ((vector) data+position); list params=llParseString2List(data,["<",","," ",">"],[]); location=llDumpList2String(params,"/"); llOwnerSay("Location set. Touch the prim to teleport."); } } timer() { removeListener(); llOwnerSay("Listener timeout. Please touch this box again to start over."); } }

