LlMapDestination/ja

From Second Life Wiki
Jump to navigation Jump to search

要約

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

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

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

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

警告

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

サンプル

//スクリプトが入っているオブジェクトをクリックすると、世界地図が開き、 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
この翻訳は 原文 と比べて古いですか?間違いがありますか?読みにくいですか?みんなで 修正 していきましょう! (手順はこちら)
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。