Difference between revisions of "LlMapDestination/ja"

From Second Life Wiki
Jump to navigation Jump to search
(New page: {{multi-lang}}{{LSL_Function/ja |func_id=309|func_sleep=1.0|func_energy=10.0 |func=llMapDestination|sort=MapDestination |p1_type=string|p1_name=simname|p1_desc=リージョン名 |p2_type=...)
 
 
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{multi-lang}}{{LSL_Function/ja
{{Issues/SVC-1038}}{{Issues/SVC-1795}}{{Issues/VWR-2060}}{{Issues/VWR-7331}}{{LSL_Function/ja
|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=リージョン名
|p1_type=string|p1_name=simname|p1_desc=地域名
|p2_type=vector|p2_name=pos|p2_desc=[[Viewer_coordinate_frames/ja#Region|リージョン]]構成
|p2_type=vector|p2_name=pos|p2_desc=[[Viewer_coordinate_frames/ja#Region|リージョン]] 座標
|p3_type=vector|p3_name=look_at|p3_desc=未使用
|p3_type=vector|p3_name=look_at|p3_desc=未使用
|func_footnote=('''look_at'''は通常使用しません。注意しましょう)
|func_footnote=(注意: '''look_at''' は現在何もしません)
|func_desc='''pos'''を強調した'''simname'''を中央にした世界地図を開きます。<br />オブジェクトに[[attach/ja|装着]]されたスクリプト、もしくは{{LSLGC|Touch/ja|touch}}イベントの間のみ作動します。.
|func_desc='''simname''' を中心として、 '''pos''' がハイライト表示された世界地図を開きます。<br />アバターに {{LSLG/ja|attach|装着}} されたスクリプト、もしくは {{LSLGC/ja|Touch|タッチ系}} イベントの中でのみ動作します。
|return_text
|return_text
|spec
|spec
|caveats=
|caveats=
* '''simname'''が省略された場合、地図はオブジェクトを中心として開きますが、'''pos'''は強調されないでしょう。
* '''simname''' が{{HoverText|省略された|空の文字列: {{String}}}}か不正な場合、地図はオブジェクトを中心として開きますが、 '''pos''' はハイライト表示されません。この関数はクライアントに処理を行うように依頼するため、これが失敗したかを知るすべがないためです。
|constants
|constants
|examples=<lsl>
|examples=<source lang="lsl2">//スクリプトが入っているオブジェクトをクリックすると、世界地図が開き、 Oasis の真ん中を表示します。
//Click the object this script is in and your map opens up in the middle of Oasis.
default
default
{
{
Line 20: Line 19:
           llMapDestination("Oasis", <128, 128, 0>, ZERO_VECTOR);
           llMapDestination("Oasis", <128, 128, 0>, ZERO_VECTOR);
     }
     }
}
}</source>
</lsl>
<source lang="lsl2">
// touch_start で、インベントリの中の最初のランドマークの名前で、テレポートマップを取得します。
// 注意:  名前、地域、位置データが入っているランドマークが必要です。
//        正確な書式は "名前, 地域 (x, y, z)" です。ランドマークの名前が
//        長すぎると、位置データが最後から削られ、誤った位置が設定されてしまいます。
default
{
    touch_start(integer num)
    {
          // インベントリで最初に見つかったランドマークの名前を解析して、
          // カンマ区切りのリストにします。
          list lstTemp = llParseString2List(llGetInventoryName(
              INVENTORY_LANDMARK,0),[","],[]);
 
          // リストの長さを取得して 3 を引き、地域名が含まれている要素を割り出します。
          // リストの最後から検索することで、ランドマークの名前の中のカンマが悪さをして
          // リストを破壊したりしないようにします。
          integer intElement = llGetListLength(lstTemp)-3;
 
          // リストの要素から地域名を取得し、文字列の中の不要な文字を取り除いて
          // 先頭と末尾のスペースを取り除きます。
          string strSimname = llStringTrim(llGetSubString(llList2String(lstTemp,
              intElement),0,llSubStringIndex(llList2String(lstTemp,intElement),"(")-1),
              STRING_TRIM);   
 
          // ランドマークの中からベクトルを抽出します。文字列の中で "(" がある位置の次の文字から
          // 最後から 2 番目の文字までを切り出します。
          vector vecVector = (vector)("<"+llGetSubString(llGetInventoryName(
              INVENTORY_LANDMARK,0),llSubStringIndex(llGetInventoryName(
              INVENTORY_LANDMARK,0),"(")+1,-2)+">");
         
          // 抽出したデータを使用してテレポートマップを表示します。
          llMapDestination(strSimname,vecVector,ZERO_VECTOR);
    }
}</source>
|helpers
|helpers
|also_functions=
|also_functions=
{{LSL DefineRow||[[llRequestInventoryData/ja|llRequestInventoryData]]|}}
{{LSL DefineRow||{{LSLG/ja|llRequestInventoryData}}|}}
|also_tests
|also_tests
|also_events
|also_events
|also_articles
|also_articles
|notes=
|notes=
* '''pos'''は'''simname'''内ではない[[Viewer_coordinate_frames/ja#Region|リージョン]]構成でも動くでしょう。 ([[llRequestInventoryData/ja|llRequestInventoryData]]で返されるような具合です)
* '''pos''' は '''simname''' にない [[Viewer_coordinate_frames/ja#Region|リージョン]] 座標でも動作します。({{LSLG/ja|llRequestInventoryData}} で返されるような値)
* オーナ以外のtouchイベントで呼ばれた場合、オーナのみ作動します。
* {{LSLGC/ja|Touch|タッチ系}} 以外のイベントから呼び出された場合、 {{LSLGC/ja|Owner|オーナー}} に対してのみ動作します。
* touchで呼ばれた場合、イベントキューの最初もしくは最後でのみ動くでしょう。(例: num_touched > 1)
* タッチで呼び出された場合、イベントキューの最初もしくは最後のタッチでのみ動きます。(例: num_touched > 1)
* {{LSLG|attachment|アタッチメント}} の中から呼び出された場合、オーナーに対してのみ動作します。
|permission
|permission
|inventory
|inventory
|negative_index
|negative_index
|cat1=Dialog/ja
|cat1=Dialog
|cat2=Attachment/ja
|cat2=Attachment
|cat3=Avatar/ja
|cat3=Avatar
|cat4=Touch/ja
|cat4=Touch
|bugs={{LSL DefineRow|Unresolved|{{JIRA|VWR-2060}}|'''pos'''が時折違う内容で置き換えられる (対策案あり) }}
|issues
}}
}}

Latest revision as of 04:17, 25 February 2016

要約

関数: llMapDestination( string simname, vector pos, vector look_at );

simname を中心として、 pos がハイライト表示された世界地図を開きます。
アバターに 装着 されたスクリプト、もしくは タッチ系 イベントの中でのみ動作します。

• string simname 地域名
• vector pos リージョン 座標
• vector look_at 未使用

(注意: look_at は現在何もしません)

警告

  • この関数は 1.0 秒間、スクリプトを停止します。
  • simname省略されたか不正な場合、地図はオブジェクトを中心として開きますが、 pos はハイライト表示されません。この関数はクライアントに処理を行うように依頼するため、これが失敗したかを知るすべがないためです。

Important Issues

~ All Issues ~ Search JIRA for related Bugs
   llMapDestination in attachments opens a map on owner's screen even when touched by someone else
   llMapDestination pos parameter is sometimes replaced with incorrect data (workaround included)
   height in pos is capped to 1000m (code patch included)

サンプル

//スクリプトが入っているオブジェクトをクリックすると、世界地図が開き、 Oasis の真ん中を表示します。
default
{
     touch_start(integer num)
     {
          llMapDestination("Oasis", <128, 128, 0>, ZERO_VECTOR);
     }
}
// touch_start で、インベントリの中の最初のランドマークの名前で、テレポートマップを取得します。
// 注意:  名前、地域、位置データが入っているランドマークが必要です。
//        正確な書式は "名前, 地域 (x, y, z)" です。ランドマークの名前が
//        長すぎると、位置データが最後から削られ、誤った位置が設定されてしまいます。
default
{
     touch_start(integer num)
     {
          // インベントリで最初に見つかったランドマークの名前を解析して、
          // カンマ区切りのリストにします。
          list lstTemp = llParseString2List(llGetInventoryName(
               INVENTORY_LANDMARK,0),[","],[]);

          // リストの長さを取得して 3 を引き、地域名が含まれている要素を割り出します。
          // リストの最後から検索することで、ランドマークの名前の中のカンマが悪さをして
          // リストを破壊したりしないようにします。
          integer intElement = llGetListLength(lstTemp)-3;

          // リストの要素から地域名を取得し、文字列の中の不要な文字を取り除いて
          // 先頭と末尾のスペースを取り除きます。
          string strSimname = llStringTrim(llGetSubString(llList2String(lstTemp,
               intElement),0,llSubStringIndex(llList2String(lstTemp,intElement),"(")-1),
               STRING_TRIM);    

          // ランドマークの中からベクトルを抽出します。文字列の中で "(" がある位置の次の文字から
          // 最後から 2 番目の文字までを切り出します。
          vector vecVector = (vector)("<"+llGetSubString(llGetInventoryName(
               INVENTORY_LANDMARK,0),llSubStringIndex(llGetInventoryName(
               INVENTORY_LANDMARK,0),"(")+1,-2)+">");
          
          // 抽出したデータを使用してテレポートマップを表示します。
          llMapDestination(strSimname,vecVector,ZERO_VECTOR);
     }
}

注意点

  • possimname にない リージョン 座標でも動作します。(llRequestInventoryData で返されるような値)
  • タッチ系 以外のイベントから呼び出された場合、 オーナー に対してのみ動作します。
  • タッチで呼び出された場合、イベントキューの最初もしくは最後のタッチでのみ動きます。(例: num_touched > 1)
  • アタッチメント の中から呼び出された場合、オーナーに対してのみ動作します。

関連項目

関数

•  llRequestInventoryData

特記事項

All Issues

~ Search JIRA for related Issues
   Throttle llMapDestination to prevent "map bombing".
   llMapDestination in attachments opens a map on owner's screen even when touched by someone else
   llMapDestination pos parameter is sometimes replaced with incorrect data (workaround included)
   height in pos is capped to 1000m (code patch included)

Signature

function void llMapDestination( string simname, vector pos, vector look_at );
この翻訳は 原文 と比べて古いですか?間違いがありますか?読みにくいですか?みんなで 修正 していきましょう! (手順はこちら)
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。