Difference between revisions of "LlMapDestination"

From Second Life Wiki
Jump to navigation Jump to search
(added caveat, notes, minor minor wording changes. moved comment to prevent page scrolling)
 
(28 intermediate revisions by 12 users not shown)
Line 1: Line 1:
{{LSL_Function
{{LSL_Function
|inject-2={{Issues/SVC-3455}}{{Issues/SVC-1038}}{{Issues/SVC-1795}}{{Issues/VWR-2060}}{{Issues/VWR-7331}}
{{LSL Function/position|pos|region=*}}
{{LSL Function/position|look_at|local=*}}
|func_id=309|func_sleep=1.0|func_energy=10.0
|func_id=309|func_sleep=1.0|func_energy=10.0
|func=llMapDestination|sort=MapDestination
|func=llMapDestination|sort=MapDestination
|p1_type=string|p1_name=simname|p1_desc=Region name
|p1_type=string|p1_name=simname|p1_desc=Region name
|p2_type=vector|p2_name=pos|p2_desc=[[Viewer_coordinate_frames#Global|Global]] or [[Viewer_coordinate_frames#Region|Region]] coordinates
|p2_type=vector|p2_name=pos
|p3_type=vector|p3_name=look_at|p3_desc=not used
|p3_type=vector|p3_name=look_at|p3_desc= (not used)
|func_footnote=(NOTE: '''look_at''' currently does nothing)
|func_footnote=(NOTE: {{LSLP|look_at}} currently does nothing)
|func_desc=Opens world map centered on '''simname''' with '''pos''' highlighted.<br />Only works for scripts [[attach]]ed to avatar, or during {{LSLGC|Touch|touch}} events.
|func_desc=Opens world map centered on {{LSLP|simname}} with {{LSLP|pos}} highlighted.<br />Only works for scripts [[attach]]ed to avatar, or during {{LSLGC|Touch|touch}} events.
|return_text
|return_text
|spec
|spec
|caveats=
|caveats=
* if '''simname''' is ommited, map will open centered on object, but '''pos''' will not be higlighted
* if {{LSLP|simname}} is {{HoverText|omitted|an empty string: {{String}}}} or invalid, the map will open centered on object, but {{LSLP|pos}} will not be highlighted. Since this function requests the client to perform a task, there is no way for script to know if it has failed.
* '''pos''' is sometimes replaced with incorrect data. See [https://jira.secondlife.com/browse/VWR-2060 VWR-2060] for details/workaround.
|constants
|constants
|examples=<pre>
|examples=
//Click the object this script is in and your map opens up in the middle of Oasis.
<syntaxhighlight lang="lsl2">
string simName = "Help Island Public";
vector tpDest = <128.0, 128.0, 24.0>;
vector lookAt = ZERO_VECTOR;
 
default
default
{
{
    touch_start(integer num)
    state_entry()
    {
    {
          llMapDestination("Oasis", <128, 128, 0>, ZERO_VECTOR);
        // set white, opaque floattext with teleport destination
    }
        llSetText("click to teleport\nto '" + simName + "'", <1.0, 1.0, 1.0>, (float)TRUE);
    }
 
    touch_start(integer num_detected)
    {
        key id = llDetectedKey(0);
 
        string oldSlurlPrefix = "http://slurl.com/secondlife/";
        string newSlurlPrefix = "http://maps.secondlife.com/secondlife/";
        string slurlSuffix = llEscapeURL(simName)
            + "/" + (string)llRound(tpDest.x)
            + "/" + (string)llRound(tpDest.y)
            + "/" + (string)llRound(tpDest.z);
 
        llInstantMessage(id, oldSlurlPrefix + slurlSuffix);
        llInstantMessage(id, newSlurlPrefix + slurlSuffix);
 
        llMapDestination(simName, tpDest, lookAt);
    }
}
}
</pre>
</syntaxhighlight>
|helpers
|helpers
|also_functions=
|also_functions=
{{LSL DefineRow||[[llRequestInventoryData]]|}}
{{LSL DefineRow||[[llRequestInventoryData]]|}}
{{LSL DefineRow||[[llMapBeacon]]|}}
|also_tests
|also_tests
|also_events
|also_events
|also_articles
|also_articles
|notes=
|notes=
* '''pos''' will work with [[Viewer_coordinate_frames#Global|Global]] coordinates. (eg. as returned by [[llRequestInventoryData]])
* {{LSLP|pos}} will work with [[Viewer_coordinate_frames#Region|Region]] coordinates not inside {{LSLP|simname}}. (like those returned by [[llRequestInventoryData]])
* if called from an event other than touch, it only works for the owner.
* if called from non {{LSLGC|Touch|touch}} events, it only works for the {{LSLGC|Owner|owner}}.
* if called from touch, it may only work for the first or last touch in the event queue (example: num_touched > 1)
* if called from touch, it may only work for the first or last touch in the event queue (example: {{Mono|num_touched > 1}})
* if called inside an [[attachment]], it only works for the owner.
|permission
|permission
|inventory
|inventory
Line 40: Line 66:
|cat3=Avatar
|cat3=Avatar
|cat4=Touch
|cat4=Touch
|issues
}}
}}

Latest revision as of 12:36, 14 October 2024

Summary

Function: llMapDestination( string simname, vector pos, vector look_at );
1.0 Forced Delay
10.0 Energy

Opens world map centered on simname with pos highlighted.
Only works for scripts attached to avatar, or during touch events.

• string simname Region name
• vector pos position in region coordinates
• vector look_at position in local coordinates (not used)

(NOTE: look_at currently does nothing)

Caveats

  • This function causes the script to sleep for 1.0 seconds.
  • if simname is omitted or invalid, the map will open centered on object, but pos will not be highlighted. Since this function requests the client to perform a task, there is no way for script to know if it has failed.

Examples

string simName = "Help Island Public";
vector tpDest = <128.0, 128.0, 24.0>;
vector lookAt = ZERO_VECTOR;

default
{
    state_entry()
    {
        // set white, opaque floattext with teleport destination
        llSetText("click to teleport\nto '" + simName + "'", <1.0, 1.0, 1.0>, (float)TRUE);
    }

    touch_start(integer num_detected)
    {
        key id = llDetectedKey(0);

        string oldSlurlPrefix = "http://slurl.com/secondlife/";
        string newSlurlPrefix = "http://maps.secondlife.com/secondlife/";
        string slurlSuffix = llEscapeURL(simName)
            + "/" + (string)llRound(tpDest.x)
            + "/" + (string)llRound(tpDest.y)
            + "/" + (string)llRound(tpDest.z);

        llInstantMessage(id, oldSlurlPrefix + slurlSuffix);
        llInstantMessage(id, newSlurlPrefix + slurlSuffix);

        llMapDestination(simName, tpDest, lookAt);
    }
}

Notes

  • pos will work with Region coordinates not inside simname. (like those returned by llRequestInventoryData)
  • if called from non touch events, it only works for the owner.
  • if called from touch, it may only work for the first or last touch in the event queue (example: num_touched > 1)
  • if called inside an attachment, it only works for the owner.

See Also

Functions

•  llRequestInventoryData
•  llMapBeacon

Deep Notes

Signature

function void llMapDestination( string simname, vector pos, vector look_at );